settings:
initial_state: pending
disconnect_state: pending
blocking_states: [pending, assigned, working]
unknown_phase: warn
states:
pending:
exits: [assigned, working, cancelled]
timed: false
assigned:
exits: [working, pending, cancelled]
timed: false
prompts:
enter: |
A task has been assigned to you. Review and claim when ready.
working:
exits: [completed, failed, pending]
timed: true
prompts:
enter: |
You are now actively working on this task. Keep your thinking updated regularly using the `thinking` tool to show progress and allow coordination with other agents.
## Valid Next States
From `{{current_status}}` you can transition to:
{{valid_exits}}
Use `update(status="completed")` when done, `update(status="failed")` if blocked, or `update(status="pending")` to release without completing.
## Phase
Current phase: {{current_phase}}
Valid phases: {{valid_phases}}
Set a phase with `update(phase="implement")` to categorize the type of work you're doing.
exit: |
Before leaving working state:
- [ ] Unmark any files you marked
- [ ] Attach results or notes
- [ ] Log costs with `log_metrics()`
completed:
exits: [pending]
timed: false
prompts:
enter: |
Task completed. Results should be attached.
failed:
exits: [pending]
timed: false
prompts:
enter: |
Task failed. Please document:
- What was attempted
- What blocked progress
- Suggested next steps
cancelled:
exits: []
timed: false
phases:
explore:
prompts:
exit: |
Capture exploration findings before moving on.
Attach discoveries to parent task for sibling agents.
implement:
prompts:
enter: |
Implementation phase. Mark files before editing.
review:
prompts:
enter: |
## Code Review Checklist
- [ ] Tests pass
- [ ] No new warnings
- [ ] Documentation updated
test:
prompts:
enter: |
Testing phase. Verify the implementation works correctly.
security:
prompts:
enter: |
## Security Review
- [ ] Input validation
- [ ] Auth/authz checks
- [ ] No secrets in code
deliver: {}
triage: {}
diagnose: {}
design: {}
plan: {}
doc: {}
integrate: {}
deploy: {}
monitor: {}
optimize: {}
combos:
working+implement:
enter: |
You're implementing. Focus on:
- Follow existing patterns
- Write tests alongside code
- Keep commits atomic
working+review:
enter: |
Code review in progress:
- Check for correctness
- Look for edge cases
- Verify test coverage
attachments:
documentation:
note:
mime: text/plain
mode: append
description: General observations, comments, and context
when: Any time you want to record information for yourself or others
example: |
attach(task=id, type="note", content="Found existing helper in utils.rs")
plan:
mime: text/markdown
mode: replace
description: Design documents, approach outlines, specifications
when: Planning phase, design decisions, structured documentation
example: |
attach(task=id, type="plan", content="## Approach\n1. Refactor X\n2. Add Y")
context:
mime: text/plain
mode: replace
description: Essential context needed to understand or resume work
when: Handoffs, pausing work, or providing background
example: |
attach(task=id, type="context", content="Entry point is main.rs:42")
log:
mime: text/plain
mode: append
description: Chronological record of activities
when: Audit trails, long-running tasks, activity history
example: |
attach(task=id, type="log", content="10:30 - Started investigation")
structured:
result:
mime: application/json
mode: replace
description: Structured outcome data
when: Task completion, recording measurable outcomes
example: |
attach(task=id, type="result", content='{"status": "success", "items_processed": 42}')
meta:
mime: application/json
mode: replace
description: Task metadata, estimates, tracking data
when: Recording metrics, estimates, or custom fields
example: |
attach(task=id, type="meta", content='{"estimated_hours": 4}')
code:
commit:
mime: text/git.hash
mode: append
description: Git commit hash references
when: Linking tasks to commits
example: |
attach(task=id, type="commit", content="abc123f")
checkin:
mime: text/p4.changelist
mode: append
description: Perforce changelist references
when: Linking tasks to P4 changelists
example: |
attach(task=id, type="checkin", content="CL 12345")
diff:
mime: text/x-diff
mode: append
description: Code diffs for review or reference
when: Showing changes, review preparation
example: |
attach(task=id, type="diff", content="--- a/file.rs\n+++ b/file.rs\n...")
changelist:
mime: text/plain
mode: append
description: List of files modified
when: Summarizing scope of changes
example: |
attach(task=id, type="changelist", content="src/lib.rs\nsrc/main.rs")
operational:
output:
mime: text/plain
mode: append
description: Command or tool output
when: Test results, build output, diagnostics
example: |
attach(task=id, type="output", content="cargo test: 42 passed")
error:
mime: text/plain
mode: append
description: Error messages and failure information
when: Recording failures, blockers, issues
example: |
attach(task=id, type="error", content="Build failed: missing dependency")
gates:
gate/tests:
mime: text/plain
mode: append
description: Evidence that tests pass
when: Satisfying test gate requirements
example: |
attach(task=id, type="gate/tests", content="All tests passing")
gate/commit:
mime: text/plain
mode: append
description: Evidence of committed code
when: Satisfying commit gate requirements
example: |
attach(task=id, type="gate/commit", content="abc123f merged to main")
gate/review:
mime: text/plain
mode: append
description: Evidence of review approval
when: Satisfying review gate requirements
example: |
attach(task=id, type="gate/review", content="Approved by reviewer")