---
description: Autonomous wrapper that runs the creating-go-cli blueprint unattended. One kickoff interview, then self-drives through trckr tickets, parallel worker/QA agents, and 10 phases to a released, Claude-integrated CLI with zero babysitting.
category: general
---
flowchart TD
_HEADER_["
Creating Go CLI (Autonomous)
Autonomous wrapper that runs the creating-go-cli blueprint unattended. One kickoff interview, then self-drives through trckr tickets, parallel worker/QA agents, and 10 phases to a released, Claude-integrated CLI with zero babysitting.
"]:::headerStyle
classDef headerStyle fill:none,stroke:none
subgraph _MAIN_[" "]
%% Phase 0: Kickoff (one-time user interaction)
subgraph Kickoff["Phase 0: Kickoff (one-time user interaction)"]
CHECK_CREDS[Check 1: Credentials
1Password lookup] & CHECK_API[Check 2: API Scope
endpoint inventory] & CHECK_HOST[Check 3: Hosting
GitHub or Gitea?] & CHECK_NAME[Check 4: Tool Name
binary, module, env var]
CHECK_CREDS & CHECK_API & CHECK_HOST & CHECK_NAME --> CONSOLIDATED_Q{Missing Info?}
CONSOLIDATED_Q -->|Yes| ASK_USER[Ask One
Consolidated Question]
ASK_USER --> KICKOFF_DONE[Kickoff Complete]
CONSOLIDATED_Q -->|No| KICKOFF_DONE
end
%% Phase 0.5: GOAL.md + trckr Setup
subgraph GoalSetup["Phase 0.5: GOAL.md + trckr Setup"]
KICKOFF_DONE --> WRITE_GOAL[Write GOAL.md
phases, criteria, resources]
WRITE_GOAL --> TRCKR_INIT[trckr init
--project TOOL]
TRCKR_INIT --> SCOPE_TICKETS[Scope Tickets
BUILD-1 through BUILD-CI
with dependencies]
SCOPE_TICKETS --> SET_HEARTBEAT[Set Heartbeat
reminder every 10min]
end
%% Heartbeat (always running)
subgraph Heartbeat["Heartbeat (always running)"]
HB_REMINDER[reminder 10min] --> HB_CHECK{Workers
Responsive?}
HB_CHECK -->|Yes| HB_REMINDER
HB_CHECK -->|Unresponsive
2x nudge| HB_KILL[Kill + Respawn
clearer instructions]
HB_KILL --> HB_REMINDER
HB_CHECK -->|Over 20min since
last commit| HB_CHECKPOINT[Commit + Push
Checkpoint]
HB_CHECKPOINT --> HB_REMINDER
end
%% PLOW Loop: Scan
subgraph PlowScan["PLOW Loop: Scan"]
SET_HEARTBEAT --> SCAN_QUEUE[trckr issue list
--status todo]
SCAN_QUEUE --> QUEUE_CHECK{Queue Status?}
QUEUE_CHECK -->|Tickets ready| BATCH_PICK
QUEUE_CHECK -->|All blocked| BLOCKED_REPORT[Report Blocked
to user via ntfy]
QUEUE_CHECK -->|Empty| FINAL_QA_START
end
%% PLOW Loop: Batch
subgraph PlowBatch["PLOW Loop: Batch Selection"]
BATCH_PICK[Pick Parallelizable
max 3, deps satisfied
no file conflicts]
end
%% PLOW Loop: Per-Ticket (parallel)
subgraph PlowTicket["PLOW Loop: Per-Ticket (parallel)"]
BATCH_PICK --> RESEARCH_CHECK{Unfamiliar
API/Pattern?}
RESEARCH_CHECK -->|Yes| RESEARCH_AGENT[[task-research-analyst
opus]]
RESEARCH_AGENT --> SPAWN_IMPL
RESEARCH_CHECK -->|No| SPAWN_IMPL[[task-executor
sonnet, worktree]]
SPAWN_IMPL --> SPAWN_QA[[code-verification-qa
sonnet]]
SPAWN_QA --> QA_RESULT{QA Pass?}
QA_RESULT -->|Pass| TICKET_DONE[Mark Ticket Done]
QA_RESULT -->|Fail, cycle 1-2| FEEDBACK[Feed QA Feedback
to new implementor]
FEEDBACK --> SPAWN_IMPL
QA_RESULT -->|Fail, cycle 3+| RESPAWN[Kill + Respawn
with clearer instructions]
RESPAWN --> SPAWN_IMPL
end
%% PLOW Loop: Merge
subgraph PlowMerge["PLOW Loop: Merge + Smoke"]
TICKET_DONE --> MERGE_ORDER[Merge Branches
in dependency order]
MERGE_ORDER --> SMOKE_TEST[[code-verification-qa
make build, make test]]
SMOKE_TEST --> SMOKE_RESULT{Smoke Pass?}
SMOKE_RESULT -->|Pass| CHECKPOINT[Checkpoint:
WORKLOG + GOAL.md
commit + push]
SMOKE_RESULT -->|Fail| SMOKE_FAIL[STOP: ntfy user
worklog failure]
CHECKPOINT --> SCAN_QUEUE
end
%% Blocked Path
subgraph BlockedPath["When Blocked"]
BLOCKED_REPORT --> DEEP_RESEARCH[[task-research-analyst
internet-researcher
ast-parsing]]
DEEP_RESEARCH --> UNBLOCKED{Unblocked?}
UNBLOCKED -->|Yes| SCAN_QUEUE
UNBLOCKED -->|No| WORKLOG_STUCK[Worklog: stuck]
WORKLOG_STUCK --> STUCK_PUSH[Commit + Push]
STUCK_PUSH --> STUCK([Stuck: Report to User])
end
%% Phase 7: Final QA (6 Reviewers)
subgraph FinalQA["Phase 7: Final QA (6 Parallel Reviewers)"]
FINAL_QA_START[All BUILD-1..12 Done] --> REV1[[R1: Agent-Forward
Patterns]] & REV2[[R2: GNU Standards
Compliance]] & REV3[[R3: Man Page
Quality]] & REV4[[R4: Common Agent
Mistakes Audit]] & REV5[[R5: Test Coverage
and Quality]] & REV6[[R6: Brew Formula
and Release]]
REV1 & REV2 & REV3 & REV4 & REV5 & REV6 --> REVIEW_RESULT{All 6 Pass?}
REVIEW_RESULT -->|Any fail| CREATE_FIX[Create BUILD-FIX-N
tickets per failure]
CREATE_FIX --> SCAN_QUEUE
REVIEW_RESULT -->|All pass| CLAUDE_INT_START
end
%% Phase 8: Claude Integration
subgraph ClaudeInt["Phase 8: Claude Integration"]
CLAUDE_INT_START[Begin Integration] --> SKILL_ADD[tool skill add
install SKILL.md]
SKILL_ADD --> UPDATE_ENFORCER[Update skill-enforcer.py
+ settings.json]
UPDATE_ENFORCER --> UPDATE_REFS[Update skills-reference
+ tool-inventory.md]
UPDATE_REFS --> JSET_SYNC[jset sync-all]
JSET_SYNC --> NOTIFY_DONE[ntfy: DONE
all 6 reviewers passed
brew installs, skill works]
NOTIFY_DONE --> DONE([Done])
end
%% Click tooltips for every node
click CHECK_CREDS "#" "**Check 1: Credentials**\nLook up API key in 1Password:\n`op item list --vault Agents`\n`op item get 'service' --fields label=credential`\n\nIf not found, stop and ask user to add the key before proceeding."
click CHECK_API "#" "**Check 2: API Scope**\nResearch the complete endpoint list for the target API.\nPresent all N resources and ask:\n'All N resources or a specific subset?'"
click CHECK_HOST "#" "**Check 3: Hosting**\nDetermine where the repo lives:\n- GitHub (public, GoReleaser)\n- Gitea (private, bump-tap workflow)\n\nThis affects release automation and brew formula setup."
click CHECK_NAME "#" "**Check 4: Tool Name**\nConfirm:\n- Binary name (e.g., `exa-cli`)\n- Go module path (e.g., `github.com/roboalchemist/exa-cli`)\n- Env var prefix (e.g., `EXA`)\n\nThese are used throughout the codebase."
click CONSOLIDATED_Q "#" "**Missing Info?**\nAfter all 4 parallel checks complete, determine if anything is missing.\nIf so, ask ONE consolidated question covering all gaps.\nAfter kickoff: no further user input required."
click ASK_USER "#" "**Ask One Consolidated Question**\nCombine all missing info into a single question.\nThis is the ONLY user interaction in the entire workflow.\nSurface blockers immediately rather than assuming."
click KICKOFF_DONE "#" "**Kickoff Complete**\nAll information gathered. From this point forward,\nthe workflow is fully autonomous.\nNo further user input required."
click WRITE_GOAL "#" "**Write GOAL.md**\nCreate GOAL.md at the project root with:\n- Phased goals (Foundation, Commands, Tests, Docs, Release, DoD, Review, Integration)\n- Success criteria per phase\n- Available resources (skill, API docs, credentials, hosting)\n- Status markers per phase\n\nThis is the authoritative plan document."
click TRCKR_INIT "#" "**trckr init**\nInitialize the trckr project:\n`trckr init --project TOOL`\n\nThis creates the local issue database for tracking all BUILD tickets."
click SCOPE_TICKETS "#" "**Scope Tickets**\nCreate BUILD-1 through BUILD-CI tickets in dependency order:\n- BUILD-1: Scaffold (go.mod, Makefile)\n- BUILD-2: pkg/api (HTTP client)\n- BUILD-3: pkg/auth (env var chain)\n- BUILD-4: pkg/output (table/JSON)\n- BUILD-5: cmd/root.go + built-ins\n- BUILD-6: Resource commands\n- BUILD-7..9: Unit, integration, smoke tests\n- BUILD-10: Skill + docs\n- BUILD-11: Release automation\n- BUILD-12: Definition of Done\n- BUILD-R1..R6: 6 reviewers\n- BUILD-CI: Claude integration"
click SET_HEARTBEAT "#" "**Set Heartbeat**\nStart the reminder chain: every 10 minutes.\nNever let it lapse.\n\nOn each fire:\n1. Check worker agents for output\n2. Nudge unresponsive workers (2x max)\n3. Kill and respawn if still stuck\n4. Checkpoint if over 20min since last commit\n5. Set another reminder"
click HB_REMINDER "#" "**Heartbeat: reminder 10min**\nThe pulse of the workflow. Fires every 10 minutes.\nChecks worker health, forces checkpoints,\nensures no agent is silently stuck."
click HB_CHECK "#" "**Workers Responsive?**\nOn each heartbeat:\n- Is each worker producing output?\n- Has any worker gone silent?\n- Has it been over 20min since last commit?\n\nUnresponsive after 2 nudges = kill and respawn."
click HB_KILL "#" "**Kill + Respawn**\nWorker unresponsive after 2 nudges.\nKill and respawn with:\n- Clearer, more specific instructions\n- Smaller scope if task was too large\n- Additional context from WORKLOG.md"
click HB_CHECKPOINT "#" "**Commit + Push Checkpoint**\nForced checkpoint when over 20min since last commit.\nUpdate WORKLOG.md and GOAL.md phase statuses,\nthen commit and push."
click SCAN_QUEUE "#" "**Scan Queue**\n`trckr issue list --status todo --project TOOL`\n\nThree outcomes:\n- Tickets with deps satisfied -> pick a batch\n- All tickets blocked -> research to unblock\n- Queue empty -> all tickets done, proceed to Final QA"
click QUEUE_CHECK "#" "**Queue Status?**\nEvaluate the ticket queue:\n- Ready tickets: deps satisfied, can be worked\n- All blocked: every remaining ticket has unmet deps\n- Empty: all BUILD tickets are done"
click BATCH_PICK "#" "**Pick Parallelizable Batch**\nSelect up to 3 tickets that can run simultaneously:\n- Dependencies must be satisfied\n- No overlapping file modifications\n- Max 3 in parallel to avoid merge conflicts"
click BLOCKED_REPORT "#" "**Report Blocked**\nAll remaining tickets are blocked.\nNotify user via ntfy, then attempt deep research\nto find a way forward."
click RESEARCH_CHECK "#" "**Unfamiliar API/Pattern?**\nBefore implementation, assess if the ticket\ntouches unfamiliar APIs or patterns.\nIf yes, spawn a research agent first to\ngather context and prevent wasted tokens."
click RESEARCH_AGENT "#" "**Research Agent**\nSpawn `task-research-analyst` (opus model).\nResearch unfamiliar APIs, gather docs,\nfind patterns from similar tools.\nPass summary to the implementor."
click SPAWN_IMPL "#" "**Implementation Agent**\nSpawn `task-executor` (sonnet model) in a git worktree.\nThe worker receives:\n- Ticket description and acceptance criteria\n- Research summary (if available)\n- Path to project and API key location\n- Instructions to load `creating-go-cli` skill\n\nMust commit all changes and run `make build` to confirm compilation."
click SPAWN_QA "#" "**QA Agent**\nSpawn `code-verification-qa` (sonnet model).\nVerifies the implementation against ticket acceptance criteria.\n- PASS: update ticket status to done\n- FAIL: comment with specific failures and repro commands"
click QA_RESULT "#" "**QA Pass?**\nThree outcomes:\n- Pass: ticket marked done, proceed to merge\n- Fail (cycle 1-2): feed QA feedback to new implementor\n- Fail (cycle 3+): kill and respawn with clearer instructions"
click TICKET_DONE "#" "**Ticket Done**\nQA passed. Ticket status updated to done.\nWorktree branch ready for merge."
click FEEDBACK "#" "**Feed QA Feedback**\nPass the specific failure details from QA\nback to a new implementor in the same worktree.\nRepeat until QA passes."
click RESPAWN "#" "**Kill + Respawn**\nAfter 2 failed impl-QA cycles, kill the implementor\nand respawn with clearer, more specific instructions.\nMay also reduce scope or try a different approach."
click MERGE_ORDER "#" "**Merge in Dependency Order**\nAfter all tickets in the batch pass QA:\n`git checkout main`\n`git merge BRANCH`\n`git push origin main`\n`git worktree remove WORKTREE_PATH`\n\nMerge branches in dependency order to avoid conflicts."
click SMOKE_TEST "#" "**Post-Batch Smoke Test**\nDispatch `code-verification-qa` agent:\n`make build`\n`make test`\n\nVerify main is still green after the merge.\nDo NOT update ticket statuses."
click SMOKE_RESULT "#" "**Smoke Pass?**\nIf smoke test passes: checkpoint and continue the PLOW loop.\nIf it fails: STOP immediately, log to worklog, notify user via ntfy."
click CHECKPOINT "#" "**Checkpoint**\nAfter each successful batch:\n1. Update WORKLOG.md (tickets done, issues)\n2. Update GOAL.md phase statuses\n3. `git commit` + `git push`\n4. Reset heartbeat reminder\n5. Loop back to scan for more tickets"
click SMOKE_FAIL "#" "**Smoke Test Failed**\nSTOP the workflow. This is a critical failure.\n- Log details to WORKLOG.md\n- `ntfy send 'go-cli-build' 'STUCK: smoke test failed'`\n- Report to user for manual intervention"
click DEEP_RESEARCH "#" "**Deep Research**\nWhen all tickets are blocked, research harder:\n- `task-research-analyst` with multiple angles\n- `internet-researcher` for web resources\n- `ast-parsing` to trace execution paths\n- Check GitHub issues, community forums"
click UNBLOCKED "#" "**Unblocked?**\nDid research find a way forward?\n- Yes: loop back to scan queue\n- No: log to worklog and report stuck"
click WORKLOG_STUCK "#" "**Worklog: Stuck**\nLog what was tried and why it failed.\nAdd to GOAL.md Lessons Learned section."
click STUCK_PUSH "#" "**Commit + Push**\nCommit the stuck state so no work is lost."
click STUCK "#" "**Stuck: Report to User**\nAll research avenues exhausted.\n`ntfy send 'go-cli-build' 'STUCK: manual intervention needed'`\n\nThis is the only terminal failure state."
click FINAL_QA_START "#" "**All BUILD Tickets Done**\nBUILD-1 through BUILD-12 are all merged.\nReady to run the 6 parallel reviewers\nfrom the creating-go-cli skill."
click REV1 "#" "**Reviewer 1: Agent-Forward Patterns**\nVerify the CLI is agent-friendly:\n- `--output json` on every command\n- `--fields` for column selection\n- `--jq` for inline filtering\n- Structured error output\n- Exit codes follow conventions\n\nUses criteria from `reference/agent-patterns.md`"
click REV2 "#" "**Reviewer 2: GNU Standards Compliance**\nVerify GNU flag conventions:\n- `--help`, `--version`, `--verbose`, `--quiet`\n- Short flags for common operations\n- `--` to end flag parsing\n- Consistent flag naming across commands\n\nUses criteria from `reference/standards.md`"
click REV3 "#" "**Reviewer 3: Man Page Quality**\nVerify documentation quality:\n- `tool docs` outputs comprehensive help\n- Examples for every command\n- All flags documented\n- Consistent formatting\n\nUses criteria from `reference/standards.md`"
click REV4 "#" "**Reviewer 4: Common Agent Mistakes Audit**\nCheck for anti-patterns agents commonly introduce:\n- Unused imports or variables\n- Commented-out code\n- TODO/FIXME left behind\n- Inconsistent error handling\n- Copy-paste artifacts"
click REV5 "#" "**Reviewer 5: Test Coverage and Quality**\nVerify test infrastructure:\n- Unit tests at 90%+ coverage\n- Integration tests cover every command\n- Cross-product: command x output-format\n- `READONLY=1` gate works\n- `make test` passes clean\n\nUses criteria from `reference/testing.md`"
click REV6 "#" "**Reviewer 6: Brew Formula and Release**\nVerify release pipeline:\n- GoReleaser or bump-tap workflow configured\n- `brew install --build-from-source` works\n- Binary runs after install\n- Version flag matches tag\n- CI workflow present and green"
click REVIEW_RESULT "#" "**All 6 Pass?**\nAll 6 reviewers must pass to proceed.\n- Any failure: create BUILD-FIX-N tickets and loop back to PLOW\n- All pass: advance to Claude Integration"
click CREATE_FIX "#" "**Create Fix Tickets**\nFor each reviewer failure, create a BUILD-FIX-N ticket\nwith specific issues to address.\nLoop back to PLOW to fix them."
click CLAUDE_INT_START "#" "**Begin Claude Integration**\nAll 6 reviewers passed. The CLI is ready\nfor integration into the Claude Code environment."
click SKILL_ADD "#" "**Install Skill**\nRun `tool skill add` to install the embedded SKILL.md\ninto `~/.claude/skills/tool/SKILL.md`.\nVerify the file exists and is uppercase."
click UPDATE_ENFORCER "#" "**Update Enforcer + Settings**\nAdd binary name to `~/.claude/hooks/skill-enforcer.py` tool list.\nAdd `Bash(tool:*)` to `~/.claude/settings.json` allowed tools."
click UPDATE_REFS "#" "**Update Reference Files**\nAdd row to `~/.claude/rules/skills-reference-personal.md`.\nAdd entry to `creating-go-cli` skill's `reference/tool-inventory.md`."
click JSET_SYNC "#" "**jset sync-all**\nSync the updated Claude configuration to all machines:\n`jset sync`\n`jset sync-all`\n\nEnsures every machine has the new skill."
click NOTIFY_DONE "#" "**Notify: DONE**\n`ntfy send 'go-cli-build' 'DONE: tool built, reviewed, released, installed. All 6 reviewers passed.'`\n\nThe workflow is complete."
click DONE "#" "**Done**\nThe Go CLI tool is:\n- Built and tested (90%+ coverage)\n- Reviewed by 6 specialized reviewers\n- Released via brew formula\n- Integrated into Claude Code\n- Synced to all machines via jset"
%% Color classes by phase
classDef kickoff fill:#d1ecf1,stroke:#7ec8d8
classDef goalsetup fill:#e8daef,stroke:#b07cc6
classDef heartbeat fill:#fff3cd,stroke:#f0c040
classDef scan fill:#dfe6ff,stroke:#5b7bce
classDef batch fill:#ffeaa7,stroke:#e0c040
classDef ticket fill:#fce4d6,stroke:#e08050
classDef merge fill:#d5f5e3,stroke:#5cb85c
classDef blocked fill:#f8d7da,stroke:#e06070
classDef review fill:#e8daef,stroke:#b07cc6
classDef integration fill:#d4edda,stroke:#5cb85c
classDef terminal fill:#d4edda,stroke:#5cb85c
classDef stuck fill:#f8d7da,stroke:#e06070
class CHECK_CREDS,CHECK_API,CHECK_HOST,CHECK_NAME,CONSOLIDATED_Q,ASK_USER,KICKOFF_DONE kickoff
class WRITE_GOAL,TRCKR_INIT,SCOPE_TICKETS,SET_HEARTBEAT goalsetup
class HB_REMINDER,HB_CHECK,HB_KILL,HB_CHECKPOINT heartbeat
class SCAN_QUEUE,QUEUE_CHECK scan
class BATCH_PICK,FINAL_QA_START batch
class RESEARCH_CHECK,RESEARCH_AGENT,SPAWN_IMPL,SPAWN_QA,QA_RESULT,TICKET_DONE,FEEDBACK,RESPAWN ticket
class MERGE_ORDER,SMOKE_TEST,SMOKE_RESULT,CHECKPOINT merge
class BLOCKED_REPORT,DEEP_RESEARCH,UNBLOCKED,WORKLOG_STUCK,STUCK_PUSH blocked
class SMOKE_FAIL stuck
class REV1,REV2,REV3,REV4,REV5,REV6,REVIEW_RESULT,CREATE_FIX review
class CLAUDE_INT_START,SKILL_ADD,UPDATE_ENFORCER,UPDATE_REFS,JSET_SYNC,NOTIFY_DONE integration
class DONE,STUCK terminal
end
style _MAIN_ fill:none,stroke:none,padding:0
_HEADER_ ~~~ _MAIN_