--- 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_