Structured work mode for implementing complex tasks with phases. Use when user says "what next?" followed by "let's work on this" or "start working". Provides REFINE, IMPLEMENT, REVIEW, COMPLETE, and GITHUB_PR phases with gates and reflection checklists. Works with eddo-todo for task tracking.
Structured implementation phases for complex tasks. Uses eddo-todo for task management.
Load the eddo-todo skill first and set up variables:
# Inside Docker container:
EDDO="${PI_CODING_AGENT_DIR:-/home/agent/.pi/agent}/skills/eddo-todo/eddo-todo.js"
BRANCH=$(git branch --show-current 2>/dev/null || echo "none")
METADATA='{"agent:session":"YOUR_PI_SESSION_ID","agent:model":"YOUR_PI_MODEL","agent:cwd":"YOUR_PI_CWD","agent:branch":"'$BRANCH'"}'
Track all files you modify during implementation in the agent:files metadata field (array of relative paths). This enables the Eddo UI to show which files were touched per task.
Update metadata when you modify files:
# After modifying files, update the parent todo's metadata
$EDDO update $PARENT_ID -M '{"agent:session":"...","agent:files":["src/Button.tsx","src/utils.ts"]}' -m "Updated file list"
Get current file list from git:
# Files changed in current branch vs main
git diff --name-only main...HEAD
User: "what next?"
Agent: Suggests task from `$EDDO next`
User: "let's work on this" / "start working"
Agent: Enters work mode with structured phases
Start session:
$EDDO start <id> -M "$METADATA" -m "Starting REFINE phase"
$EDDO get <id>
Investigate:
$EDDO note <id> "Discovered X depends on deprecated Y"Create implementation plan as subtasks:
PARENT_ID="<todo-id>"
CONTEXT=$(git remote get-url origin 2>/dev/null | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git$/\1/' | sed 's/.*[:/]\([^/]*\/[^/]*\)$/\1/')
# Update parent with notes
$EDDO update $PARENT_ID -D "## Goal
Brief description
## Notes
Findings during investigation"
# Create subtasks (ALWAYS include -M metadata)
$EDDO create "Investigate current implementation" -c "$CONTEXT" -t gtd:next -p $PARENT_ID -M "$METADATA" -m "Subtask 1"
$EDDO create "Create new component" -c "$CONTEXT" -p $PARENT_ID -M "$METADATA" -m "Subtask 2"
$EDDO create "Update tests" -c "$CONTEXT" -p $PARENT_ID -M "$METADATA" -m "Subtask 3"
$EDDO create "User verification" -c "$CONTEXT" -p $PARENT_ID -M "$METADATA" -m "Subtask 4"
Why subtasks over markdown checkboxes:
next command when tagged gtd:nextLink GitHub issue (REQUIRED if exists):
REPO=$(git remote get-url origin 2>/dev/null | sed 's/.*[:/]\([^/]*\/[^/]*\)\.git$/\1/' | sed 's/.*[:/]\([^/]*\/[^/]*\)$/\1/')
ISSUE_NUMBER=42
$EDDO update $PARENT_ID \
-l "https://github.com/$REPO/issues/$ISSUE_NUMBER" \
-e "github:$REPO/issues/$ISSUE_NUMBER" \
-m "Linked to GitHub issue"
<reflection>
⚠️ **MANDATORY STOP - Output this checklist:**
## REFINE Phase Reflection
- [ ] Time tracking started on parent todo?
- [ ] Subtasks created as todos (not markdown checkboxes)?
- [ ] Subtasks include -M metadata?
- [ ] GitHub issue linked via --link and --external-id?
- [ ] Parent description updated with Goal/Notes?
Ready to proceed to IMPLEMENT? (y/n)
</reflection>
View progress:
$EDDO children $PARENT_ID
Execute subtasks:
$EDDO start <subtask-id> -m "Starting subtask"
# ... do the work ...
$EDDO note $PARENT_ID "Chose X over Y because Z performs better" # Log decisions
$EDDO complete <subtask-id> -m "Verified working"
$EDDO stop <subtask-id>
$EDDO update <next-subtask-id> -t gtd:next # Mark next as actionable
Track touched files:
After modifying files, update the parent todo's agent:files metadata:
# Get list of changed files (relative paths)
FILES=$(git diff --name-only main...HEAD | jq -R . | jq -s .)
# Update metadata (preserve existing fields, add/update agent:files)
$EDDO update $PARENT_ID -M "{\"agent:session\":\"$PI_SESSION_ID\",\"agent:model\":\"$PI_MODEL\",\"agent:cwd\":\"$PI_CWD\",\"agent:branch\":\"$BRANCH\",\"agent:files\":$FILES}" -m "Updated touched files"
Validate after changes:
User testing (if applicable):
Documentation:
Changeset (if project uses them):
---
'package-name': patch|minor|major
---
Concise single-line description for CHANGELOG.md
<reflection>
⚠️ **MANDATORY STOP - Output this checklist:**
## IMPLEMENT Phase Reflection
- [ ] All subtasks completed and verified working?
- [ ] Lint/test/typecheck all passing?
- [ ] Changeset created (if needed)?
- [ ] CLAUDE.md updated (if architecture changed)?
- [ ] agent:files metadata updated with touched files?
💭 Notes check: Any discoveries, decisions, or gotchas worth logging?
Ready to proceed to REVIEW? (y/n)
</reflection>
Self-assessment:
$EDDO note $PARENT_ID "Review caught edge case: empty array crashes map()"Visual validation (UI changes):
screencapture -x /tmp/screenshot.png # macOS
Read with read tool, compare Expected vs Actual.
Final validation:
$EDDO children $PARENT_ID # Verify all subtasks completed
Run all checks/tests again.
<gate> **STOP**: "All tests passing. Any issues to address? (describe or 'none')" </gate> <reflection> ⚠️ **MANDATORY STOP - Output this checklist:**## REVIEW Phase Reflection
- [ ] Self-review completed (bugs, edge cases, quality)?
- [ ] Visual validation done (if UI changes)?
- [ ] All checks/tests still passing?
- [ ] `children` shows all subtasks completed?
💭 Notes check: Any edge cases or gotchas discovered during review?
Ready to proceed to COMPLETE? (y/n)
</reflection>
Verify: All subtasks must be completed.
$EDDO children $PARENT_ID # Should show all ✓ completed
Finalize file tracking:
# Get final list of all changed files
FILES=$(git diff --name-only main...HEAD | jq -R . | jq -s .)
# Update metadata with final file list
$EDDO update $PARENT_ID -M "{\"agent:session\":\"$PI_SESSION_ID\",\"agent:model\":\"$PI_MODEL\",\"agent:cwd\":\"$PI_CWD\",\"agent:branch\":\"$BRANCH\",\"agent:files\":$FILES}" -m "Final file list"
Finish session:
$EDDO stop $PARENT_ID -m "Task complete"
Completion:
externalId: Do NOT run complete - GitHub sync handles itexternalId: $EDDO complete $PARENT_ID -m "Done"## COMPLETE Phase Reflection
- [ ] Time tracking stopped on parent?
- [ ] Parent todo completed (if no externalId)?
- [ ] All commits have descriptive messages?
- [ ] Changeset file committed?
- [ ] agent:files metadata finalized?
Ready to proceed to GITHUB_PR (or end)? (y/n)
</reflection>
Preflight:
git branch --show-current # Verify NOT on main
git status # Check for unstaged changes
main: STOP, ask to create feature branchCreate PR:
## GITHUB_PR Phase Reflection
- [ ] PR references GitHub issue?
- [ ] PR description is concise and clear?
- [ ] Branch is correct (not main)?
- [ ] All CI checks expected to pass?
Work mode complete. Confirm all items are ✅.
</reflection>
User: what next?
Agent: 🚀 "Add dark mode toggle" @eddoapp [gtd:next] - Want to work on this?
User: yes
Agent: [enters work mode]
- Starts time tracking
- Investigates codebase
- Adds note: "ThemeProvider uses CSS vars - can extend"
- Creates 4 subtasks
STOP: "Here's my plan. Approve? (y/n)"
User: go ahead
Agent: [implements step by step]
- Works on subtasks, completes when verified
- Adds notes for decisions
- STOP at milestones
[all subtasks completed]
All tests passing. Task complete!
1. Create PR? 2. Next todo? 3. Done?
User: create PR
Agent: [creates PR]
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer