session: pickup and wrap around the task flow, one disposable handoff (V-445)
task start and task pr already own the branch, the identity and the PR. What was missing sat on either side of them. pickup runs task start, reads TASK.md and any handoff, then restates the assumption set and stops. That pause is the point: every wasted session here began with an agent that inferred the goal instead of stating it back. wrap runs the tests, updates the durable docs, commits in slices, calls task pr, and records in Vikunja what task pr cannot know. HANDOFF.md is gitignored and injected by a SessionStart hook. It holds what the next agent needs to resume and nothing else. TASK.md is the brief for the branch and does not change. Anything that would still matter next week goes to Vikunja, CLAUDE.md or docs/. CLAUDE.md documented none of this, which is why an agent would rebuild it. It does now, including the two hooks in ~/.claude/hooks. .claude/ was ignored wholesale. The workflow is now tracked, because how a session behaves should be reviewed like code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+11
-2
@@ -50,7 +50,16 @@ opencode.json
|
||||
# Test coverage output
|
||||
coverage.out
|
||||
|
||||
# Agent worktrees and local agent state
|
||||
.claude/
|
||||
# Agent worktrees and local agent state. The workflow itself is tracked: the
|
||||
# hooks, the skills and the prose dictionary are how a session behaves, so they
|
||||
# get reviewed like code. Everything else under .claude/ is scratch.
|
||||
/.claude/*
|
||||
!/.claude/settings.json
|
||||
!/.claude/prose-dictionary.yaml
|
||||
!/.claude/skills/
|
||||
|
||||
# The disposable handoff. One session, then deleted. Never committed:
|
||||
# anything worth keeping belongs in Vikunja, CLAUDE.md or docs/.
|
||||
/HANDOFF.md
|
||||
/models/stt
|
||||
/models/tts
|
||||
|
||||
Reference in New Issue
Block a user