Use when concluding work on an open-ended goal to write iteration journal entry documenting work performed, decisions made, and state changes
Concludes an iteration by documenting work, decisions, blockers, and state changes in a comprehensive journal entry.
/plugin marketplace add tilmon-engineering/claude-skills/plugin install autonomy@tilmon-eng-skillsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Conclude the current iteration by reviewing the conversation, documenting what happened, and preparing state for the next iteration.
Core principle: Comprehensive journaling enables continuity. Future iterations depend on accurate state capture.
Use this skill when:
/end-iteration commandDO NOT use for:
| Step | Action | Tool |
|---|---|---|
| 1. Review conversation | Extract skills, decisions, artifacts | Manual review |
| 2. Identify stopping point | Why is this iteration ending? | User confirmation |
| 3. Complete journal entry | Update existing journal file | Read, Edit |
| 4. Update summary | If iteration 5, 10, 15, etc. | Task (journal-summarizer) |
| 5a. Git commit and tag | Commit journal to current branch | Bash |
| 5b. Announce completion | Confirm next steps | Direct output |
Review the full conversation to extract key information:
Skills & Workflows Used:
<invoke name="Skill"> tool callsExample findings:
### Skills & Workflows Used
- `brainstorming`: Designed pricing tier alternatives
- `hypothesis-testing`: Validated annual billing preference
- `internet-researcher`: Found competitor pricing data
Key Decisions Made:
Example:
### Key Decisions Made
- **Decision:** Implement usage-based pricing tier
**Rationale:** Research showed power users want to scale gradually
**Alternatives:** Flat enterprise tier (rejected: less flexible)
Artifacts Created/Modified:
Example:
### Artifacts Created/Modified
- `src/pricing/usage-tier.ts`: New usage-based pricing calculator
- `docs/pricing-strategy.md`: Documented pricing decision rationale
- Git commit: abc123f "Add usage-based pricing tier"
External Context Gathered:
Example:
### External Context Gathered
- Research: Competitor X charges $0.10/unit, Competitor Y charges $0.15/unit
- User feedback: "Annual discount of 20% drives conversions"
- Documentation: Stripe API supports usage-based billing natively
Reasoning & Strategy Changes:
Example:
### Reasoning & Strategy Changes
- Initially planned flat enterprise tier
- Research showed power users prefer scaling gradually
- Pivoted to usage-based model to reduce friction
- This aligns with SaaS best practices for 2026
Blockers Encountered:
Example:
### Blockers Encountered
- Stripe webhook integration unclear: need to consult API docs
- Finance team needs to approve pricing before launch
- Usage tracking infrastructure not yet built (dependency)
Open Questions:
Example:
### Open Questions
- Should we offer annual discount on usage-based tier?
- What's the right per-unit price point?
- Do we need a minimum monthly commit?
Determine why this iteration is ending:
Ask user to confirm:
"Suggested stopping point: [reason]. Should we end this iteration?"
Reasons:
- Subtask complete: [what was finished]
- Blocked on: [external dependency]
- Context approaching limit
- Natural break point: [why this makes sense]
User confirms → Proceed to write journal
User wants to continue → Return to work, don't end iteration yet
The journal file was created by starting-an-iteration. Now complete it:
Find current journal file:
# Use Glob to find iteration files
pattern: "autonomy/*/iteration-*.md"
Sort by iteration number and identify the most recent (should be today's date).
Read existing journal:
# Use Read to load current content
file: "autonomy/[goal-name]/iteration-NNNN-YYYY-MM-DD.md"
Journal will have:
Update Work Performed section:
Using findings from Step 1, update the Work Performed subsections.
If Work Performed is empty: Replace entire section with Step 1 findings.
If Work Performed has content (from checkpointing): Merge Step 1 findings with existing:
Fill Ending State section:
## Ending State
[What is the state NOW at iteration end?]
- Progress made during this iteration
- What's complete vs. what remains
- Updated metrics (if applicable)
- How well did we achieve the iteration intention?
- Recommended next steps for iteration N+1
Fill Iteration Metadata section:
## Iteration Metadata
- Context usage: [Note if approaching limits, if compaction occurred]
- Checkpoints: [How many times was checkpoint-iteration used?]
- Suggested next action: [What should iteration N+1 work on?]
Update file using Edit tool:
Check if summary update is needed:
Update summary every 5 iterations: 5, 10, 15, 20, etc.
If current iteration number % 5 == 0:
Dispatch journal-summarizer agent to update summary.md
Dispatch journal-summarizer:
Task tool with subagent_type: "autonomy:journal-summarizer"
Prompt: "Update summary.md for goal '[goal-name]' to include iterations 1-[N].
Previous summary covered iterations 1-[N-5].
Add new learnings, update metrics, note new blockers."
Model: haiku
Wait for agent to update summary.md
After journal is complete and summary is updated (if needed), commit to git:
Extract iteration metadata:
autonomy/[goal-name]/iteration-NNNN-YYYY-MM-DD.mdDetermine iteration status:
Analyze Ending State section to determine status:
Extract quantitative metrics:
Parse Ending State for metrics with numbers:
Metrics: [metric1], [metric2], ... or "None" if no metricsSummarize journal content:
Create 4-6 sentence summary from Work Performed and Ending State:
Build enhanced commit message:
journal: [goal-name] iteration NNNN
[2-3 line summary from Ending State - as before]
## Journal Summary
[4-6 sentence summary from step 4 above - what happened, what was learned, what changed]
## Iteration Metadata
Status: [active|blocked|concluded|dead-end]
Metrics: [quantitative metrics from step 3, or "None"]
Blockers: [summary from Blockers Encountered section, or "None"]
Next: [next iteration intention from Iteration Metadata section]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Stage files:
# Always stage journal file
git add autonomy/[goal-name]/iteration-NNNN-YYYY-MM-DD.md
# If summary was updated this iteration (iteration % 5 == 0)
git add autonomy/[goal-name]/summary.md
Create commit:
# Use heredoc for multi-line message with enhanced format
git commit -m "$(cat <<'EOF'
journal: [goal-name] iteration NNNN
[2-3 line summary from Ending State]
## Journal Summary
[4-6 sentence summary of iteration]
## Iteration Metadata
Status: [active|blocked|concluded|dead-end]
Metrics: [metrics or "None"]
Blockers: [blockers or "None"]
Next: [next iteration intention]
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
EOF
)"
Create annotated tag with branch-aware naming:
# Get current branch name
current_branch=$(git branch --show-current)
# Extract strategy name from branch
# For autonomy branches: "autonomy/experiment-a" → "experiment-a"
# For non-autonomy branches: use goal name as strategy
if [[ "$current_branch" =~ ^autonomy/ ]]; then
strategy_name=${current_branch#autonomy/}
else
# Use goal name from journal path
strategy_name="[goal-name]"
fi
# Tag format: autonomy/<strategy-name>/iteration-NNNN (4 digits, zero-padded)
git tag -a "autonomy/${strategy_name}/iteration-$(printf '%04d' NNNN)" \
-m "journal: [goal-name] iteration NNNN"
Handle errors gracefully:
Error reporting format:
⚠️ **Git Integration Warning:**
Failed to commit journal: [error message]
You can manually commit with:
git add autonomy/[goal-name]/iteration-NNNN-YYYY-MM-DD.md
git commit -m "journal: [goal-name] iteration NNNN ..."
git tag -a "autonomy/[strategy-name]/iteration-NNNN" -m "journal: [goal-name] iteration NNNN"
Success indicator:
autonomy/[strategy-name]/iteration-NNNN marks this iteration in git historyReport to user with git status:
If git operations succeeded:
**Iteration [N] complete for goal: [goal-name]**
✓ Journal committed and tagged: `autonomy/[strategy-name]/iteration-NNNN`
Journal entry: `autonomy/[goal-name]/iteration-NNNN-YYYY-MM-DD.md`
Branch: [current-branch-name]
Status: [active|blocked|concluded|dead-end]
## Summary of This Iteration
- **Work completed:** [Brief summary]
- **Key decisions:** [Major choices made]
- **Blockers:** [What's preventing progress]
- **Next steps:** [Recommended for iteration N+1]
---
**Ready to resume in next conversation with `/start-iteration`**
If git operations failed:
**Iteration [N] complete for goal: [goal-name]**
Journal entry written: `autonomy/[goal-name]/iteration-NNNN-YYYY-MM-DD.md`
⚠️ **Git Integration Warning:**
Failed to commit journal: [error message]
You can manually commit with:
git add autonomy/[goal-name]/iteration-NNNN-YYYY-MM-DD.md
git commit -m "journal: [goal-name] iteration NNNN ..."
git tag -a "autonomy/[strategy-name]/iteration-NNNN" -m "journal: [goal-name] iteration NNNN"
## Summary of This Iteration
- **Work completed:** [Brief summary]
- **Key decisions:** [Major choices made]
- **Blockers:** [What's preventing progress]
- **Next steps:** [Recommended for iteration N+1]
---
**Ready to resume in next conversation with `/start-iteration`**
The journal file was created by starting-an-iteration with:
Your job is to complete the journal, not create it from scratch.
If user ran /checkpoint-iteration during the iteration:
Critical: Future iterations depend entirely on this journal. Include:
Always use today's date (YYYY-MM-DD format):
# Get current date
date +%Y-%m-%d
Even if a section is empty, include it with a note:
### Blockers Encountered
None - iteration progressed smoothly
This shows the section was considered, not forgotten.
Automatic commits to current branch:
autonomy/<strategy-name>/iteration-NNNN for branch-aware navigationBranch-aware tagging:
autonomy/experiment-a/iteration-0015)Error handling:
What gets committed:
iteration-NNNN-YYYY-MM-DD.md journal filesummary.md (if iteration % 5 == 0)Tag benefits:
git checkout autonomy/experiment-a/iteration-0042git tag -l 'autonomy/experiment-a/*'git tag -l 'autonomy/*/*'| Mistake | Reality |
|---|---|
| "I'll create new journal file instead of updating existing" | NO. Journal was created by starting-an-iteration. Update it with Edit tool. |
| "I'll overwrite Work Performed that has checkpoint content" | NO. Merge with existing. Preserve checkpoint data. |
| "Journal is too detailed, I'll abbreviate" | NO. Be comprehensive. Future iterations need full context. |
| "No blockers this time, I'll skip that section" | NO. Write "None" to show you checked. |
| "Summary update can wait" | NO. If iteration % 5 == 0, update summary. |
| "I'll skip comparing against iteration intention" | NO. Ending State should assess how well intention was achieved. |
| "Git commit failed, so iteration failed" | NO. Journal writing is critical, git commit is helpful. Warn about git error but complete iteration. |
| "I'll create a new branch for the commit" | NO. Commit to current branch. User controls branching strategy. |
Once iteration is ended:
autonomy/iteration-NNNN (if git operations succeeded)/start-iterationThis skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.