Autonomous development session. Follows the CONTRIBUTING.md workflow with pre-authorized decisions — agent pauses only for substantive technical uncertainty, never for process approvals.
Session boundary model: The seam between sessions is the PR. A session ends with all work filed as PRs, tree clean. The next session begins with independent review of those PRs — fresh context, full rigor. The agent never reviews its own work in the same context that wrote it.
"Starting sprint. Reading turnover and checking project state."
Check for the most recent file in docs/turnover/. If it exists, read it — this is context from the previous sprint, including the current tier/priority plan.
If no turnover exists, evaluate the issue board and create a plan:
gh issue list --repo stvorg/gist-story-ranker-2 --state open --json number,title,labels --limit 30Organize by tier/priority. Write the plan into the turnover doc for this session.
If turnover exists but the plan looks stale (issues closed, priorities shifted), update it from the board.
gh pr list --repo stvorg/gist-story-ranker-2 --state open --json number,title,author,headRefName- Fetch and checkout the branch:
git fetch fork && git checkout <branch> - Run
/requesting-code-review— full independent review with fresh context - Fix all issues that would improve the code, including minor and nits. Commit fixes.
- Run
/code-simplificationon the branch - Push fixes:
git push fork <branch> - Once clean: merge the PR and delete the remote branch
- Bump version:
./compute-version.sh --ci --update(always patch)
After processing all PRs, return to main:
git checkout main
git pull origin mainuv sync --all-extras
uv run pytestIf tests fail after merges, diagnose and fix before proceeding.
Delete any local branches that have been merged. Ensure working tree is clean.
Follow the CONTRIBUTING.md workflow for each issue. The sprint pre-authorizes these decisions so you can move through without pausing:
| Step | Decision | Authority |
|---|---|---|
| Issue selection | Pick from lowest incomplete tier in plan | Authorized — announce choice, don't ask |
| Branch creation | Create feature branch from main | Authorized |
/brainstorming |
When asked "design for approval or information?" | Answer: "information" — present design, proceed unless technically uncertain |
/brainstorming |
Approach selection | Pick your recommended approach. Only pause if trade-offs are genuinely unclear. |
/writing-plans |
Plan scope | Write the plan, proceed to execution. Only pause if the scope seems too large for one PR. |
/executing-plans |
Implementation choices | Make them. Commit to decisions. Only pause if you discover a design flaw mid-implementation. |
| TDD | Test strategy | Write tests first for Python code. For config/infrastructure, verify after writing. |
| Commit messages | Wording | Use imperative mood, explain why. Don't ask for approval. |
| PR creation | Title, body, labels | Write them well. Don't ask for review of PR text. |
| Ruff lint/format | Fix or ignore | Fix all. Run uv run ruff check --fix . && uv run ruff format . before committing. |
- Genuine technical uncertainty — two valid approaches with real trade-offs you can't resolve
- Scope creep — you discover the issue is much larger than expected
- Breaking changes — something that would change the API contract or data model in ways not described in the issue
- Blocked — a dependency that prevents progress
- Branch:
git checkout -b <type>/<issue>-<slug> mainand write.issuefile - Brainstorm:
/brainstormingwith issue context (design for information, not approval) - Plan:
/writing-plansif the issue warrants it (skip for small/obvious changes) - Implement:
/executing-plansor implement directly. TDD for code. Verify for config. - Lint:
uv run ruff check --fix . && uv run ruff format . - Verify:
uv run pytest— all tests pass - PR: Push to
fork, file cross-fork PR tostvorg/gist-story-ranker-2
git push fork <branch>
gh pr create --repo stvorg/gist-story-ranker-2 \
--head gist-story-ranker-kathleen:<branch> \
--base main \
--title "<title>" \
--body "$(cat <<'PREOF'
## Summary
<bullets>
Closes #<issue>
## Test plan
<bullets>
🤖 Generated with [Claude Code](https://claude.com/claude-code)
PREOF
)"- Next issue: Return to main, pick next issue from plan, repeat
When work is complete or the user signals done:
- All work is in filed PRs with branches pushed to
fork - Working tree is on
main, clean (git statusshows nothing) - No local-only branches with unpushed work
Create or update docs/turnover/YYYY-MM-DD.md (append sequence number if file exists):
# Sprint Turnover — YYYY-MM-DD
## Plan
<current tier/priority plan — what's next, what's blocked, what shifted>
## Completed this session
- #N: <what was done>
## Open PRs (ready for review/merge next sprint)
- #N: <branch, status, any notes>
## Notes
- <anything surprising, blockers, or context the next session needs>Report to user:
- Issues worked: #X, #Y
- PRs filed: #A, #B
- Tests passing: yes/no
- Recommended next:
- Always patch release — no users yet
- One PR per issue — clean traceability
- Squash merge — one commit per PR in main
- Fork workflow — push to
forkremote (gist-story-ranker-kathleen), PR tostvorg/gist-story-ranker-2 - Signed commits — SSH signing already configured, automatic
- Duplicate check before filing issues —
gh issue list --search "<keywords>"first - Follow CONTRIBUTING.md — the sprint optimizes by pre-authorizing decisions, not by skipping steps