Every session, before doing any work:
pwd— confirm working directory- Read
docs/claude-progress.txt+git log --oneline -10— orient - Read
docs/agent-struggles.json— if unresolved entries exist, present to user - Read
docs/features.json— pick first"passes": falseentry - Run
./init.sh— start dev env - Run tests — verify app is healthy
- If broken → fix first. If clean → start Feature Development Sequence.
After Startup Sequence, work through the picked feature:
- Plan — read
docs/ARCHITECTURE.md+docs/STYLEGUIDE.md+docs/TESTING.md, then use/brainstormingto design the chosen feature fromdocs/features.json, then use/writing-plansto create implementation plan →docs/plans/active/<NNN>-<type>-<short-name>.md - Branch — create feature branch per Branching convention. Immediately push and open a draft PR (
gh pr create --draft) to reserve the PR number for other contributors' branch numbering. - Implement — using
/executing-plansskill - Review — code review using
/requesting-code-reviewskill, fix found issues - Manual Test — use browser automation and validate it works in the browser
- Complete — flip
passestotrueindocs/features.json, updatedocs/claude-progress.txt, move plan todocs/plans/completed/, commit - PR — push branch, open PR per Pull Requests convention
- Stop — wait for PR review. Rework per Received PR Reviews when asked.
For each comment: read the full text and its diff hunk context, make the fix, then re-read the comment and verify your change actually matches what was asked (placement, naming, scope — not just compilation). Reply in the thread stating what changed.
Create a feature branch per plan: <NNN>-<type>-<short-name> where <NNN> is determined by ./hack/next-plan-number.sh (next PR number on the remote) and <type> is the conventional commit type as per our Git Commit Guide. The plan file uses the same number. Example: 010-feat-function-list-empty-state. If we're on a feature branch already do nothing.
Open PRs via gh pr create using the template at .github/pull_request_template.md.
Title format: <Type>: <Sentence ending with a period.> — capitalize the type and the first word, end with a period. Example: Feat: Add function list page with empty state.
Types are the same as conventional commits but capitalized.
No em dashes (—) in PR titles or descriptions. Use commas, periods, or parentheses instead.
- One feature at a time
- Clean state at end (code suitable for merging to main)
- Update
docs/claude-progress.txtbefore session ends - Commit work to git before ending — follow
docs/references/commit-message-guide.mdstrictly
When you struggle, don't silently work around it. Log it to docs/agent-struggles.json — see docs/references/agent-struggles-readme.md for format.