| name | ship-feature |
| description | Pre-done checklist for any user-facing feature or behavior change in senda. Use before claiming a feature complete or committing — docs sweep (README, roadmap, index.html), test matrix, settings-modal and persistence gotchas. |
Ship a feature — pre-done checklist
Docs sweep (user-facing feature added/changed → ALL of these, not just one)
README.md — Features list.
docs/roadmap.md — move shipped items out of "Next".
docs/index.html — hand-maintained public landing page, curated feature-card grid. Append to existing card or add one, don't break grid.
- Grep
docs/ for feature area (architecture.md, flows.md, mock-server.md, testing.md, theming.md, …), update hits.
- Never hand-edit
CHANGELOG.md — release-please generates.
Test matrix
go test ./... # Go
cd frontend && bun run test # vitest
cd frontend && bun run typecheck # tsc --noEmit
cd frontend && bun run test:e2e # pre-push if UI touched (WebKit)
New form list touched → run editable-list runtime check (type 2+ chars into row input; see editable-list skill).
Recurring gotchas
- New field on
model.Collection → add to BOTH ReadMeta and SaveCollection in internal/store/store.go (explicit field copies) or silently won't persist.
- Two settings modals edit SAME
senda.meta.yaml: CollectionSettings.tsx = collection root only (proxy/TLS, default auth here), FolderSettings.tsx = sub-folders, NEVER opened for root — root-only UI there unreachable.
- New bound
Git*/meta App method touched by either modal → mirror in tests/visual/mock-backend.mjs.
bunx not npx; frontend deps via bun install.
- Commit messages: Conventional Commits, NO AI attribution trailers (
Co-Authored-By: Claude, Claude-Session:).
- All collection-config under
.senda/; secrets = any *.secret.yaml/.yml, local-only, never in git.