claude-code-pilot 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/install.js +267 -250
- package/manifest.json +5 -18
- package/package.json +5 -7
- package/src/agents/build-error-resolver.md +114 -0
- package/src/agents/ccp-advisor-researcher.md +104 -0
- package/src/agents/ccp-assumptions-analyzer.md +105 -0
- package/{gsd/agents/gsd-codebase-mapper.md → src/agents/ccp-codebase-mapper.md} +7 -7
- package/{gsd/agents/gsd-debugger.md → src/agents/ccp-debugger.md} +125 -8
- package/{gsd/agents/gsd-executor.md → src/agents/ccp-executor.md} +31 -20
- package/{gsd/agents/gsd-integration-checker.md → src/agents/ccp-integration-checker.md} +2 -2
- package/{gsd/agents/gsd-nyquist-auditor.md → src/agents/ccp-nyquist-auditor.md} +3 -3
- package/{gsd/agents/gsd-phase-researcher.md → src/agents/ccp-phase-researcher.md} +127 -13
- package/{gsd/agents/gsd-plan-checker.md → src/agents/ccp-plan-checker.md} +57 -21
- package/{gsd/agents/gsd-planner.md → src/agents/ccp-planner.md} +61 -23
- package/{gsd/agents/gsd-project-researcher.md → src/agents/ccp-project-researcher.md} +33 -6
- package/{gsd/agents/gsd-research-synthesizer.md → src/agents/ccp-research-synthesizer.md} +11 -11
- package/{gsd/agents/gsd-roadmapper.md → src/agents/ccp-roadmapper.md} +39 -10
- package/src/agents/ccp-ui-auditor.md +439 -0
- package/src/agents/ccp-ui-checker.md +300 -0
- package/src/agents/ccp-ui-researcher.md +357 -0
- package/{gsd/agents/gsd-verifier.md → src/agents/ccp-verifier.md} +81 -15
- package/src/agents/cpp-build-resolver.md +90 -0
- package/src/agents/cpp-reviewer.md +72 -0
- package/src/agents/database-reviewer.md +91 -0
- package/src/agents/docs-lookup.md +68 -0
- package/src/agents/flutter-reviewer.md +243 -0
- package/src/agents/go-build-resolver.md +94 -0
- package/src/agents/go-reviewer.md +76 -0
- package/src/agents/java-build-resolver.md +153 -0
- package/src/agents/java-reviewer.md +92 -0
- package/src/agents/kotlin-build-resolver.md +118 -0
- package/src/agents/kotlin-reviewer.md +159 -0
- package/src/agents/planner.md +212 -0
- package/src/agents/python-reviewer.md +98 -0
- package/src/agents/pytorch-build-resolver.md +120 -0
- package/src/agents/refactor-cleaner.md +85 -0
- package/src/agents/rust-build-resolver.md +148 -0
- package/src/agents/rust-reviewer.md +94 -0
- package/src/agents/typescript-reviewer.md +112 -0
- package/src/available-rules/README.md +80 -0
- package/src/available-rules/cpp/coding-style.md +44 -0
- package/src/available-rules/cpp/hooks.md +39 -0
- package/src/available-rules/cpp/patterns.md +51 -0
- package/src/available-rules/cpp/security.md +51 -0
- package/src/available-rules/cpp/testing.md +44 -0
- package/src/available-rules/csharp/coding-style.md +72 -0
- package/src/available-rules/csharp/hooks.md +25 -0
- package/src/available-rules/csharp/patterns.md +50 -0
- package/src/available-rules/csharp/security.md +58 -0
- package/src/available-rules/csharp/testing.md +46 -0
- package/src/available-rules/java/coding-style.md +114 -0
- package/src/available-rules/java/hooks.md +18 -0
- package/src/available-rules/java/patterns.md +146 -0
- package/src/available-rules/java/security.md +100 -0
- package/src/available-rules/java/testing.md +131 -0
- package/src/available-rules/kotlin/hooks.md +17 -0
- package/src/available-rules/rust/coding-style.md +151 -0
- package/src/available-rules/rust/hooks.md +16 -0
- package/src/available-rules/rust/patterns.md +168 -0
- package/src/available-rules/rust/security.md +141 -0
- package/src/available-rules/rust/testing.md +154 -0
- package/src/commands/aside.md +164 -0
- package/src/commands/build-fix.md +62 -0
- package/src/commands/ccp/add-backlog.md +76 -0
- package/{gsd/commands-gsd → src/commands/ccp}/add-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/add-tests.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/add-todo.md +4 -4
- package/{gsd/commands-gsd → src/commands/ccp}/audit-milestone.md +3 -3
- package/src/commands/ccp/audit-uat.md +24 -0
- package/src/commands/ccp/autonomous.md +41 -0
- package/{gsd/commands-gsd → src/commands/ccp}/check-todos.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/cleanup.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/complete-milestone.md +9 -9
- package/{gsd/commands-gsd → src/commands/ccp}/debug.md +14 -9
- package/src/commands/ccp/discuss-phase.md +64 -0
- package/src/commands/ccp/do.md +30 -0
- package/src/commands/ccp/execute-phase.md +59 -0
- package/src/commands/ccp/fast.md +30 -0
- package/src/commands/ccp/forensics.md +56 -0
- package/{gsd/commands-gsd → src/commands/ccp}/health.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/help.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/insert-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/list-phase-assumptions.md +2 -2
- package/src/commands/ccp/manager.md +39 -0
- package/{gsd/commands-gsd → src/commands/ccp}/map-codebase.md +7 -7
- package/src/commands/ccp/milestone-summary.md +51 -0
- package/{gsd/commands-gsd → src/commands/ccp}/new-milestone.md +8 -8
- package/{gsd/commands-gsd → src/commands/ccp}/new-project.md +8 -8
- package/src/commands/ccp/next.md +24 -0
- package/src/commands/ccp/note.md +34 -0
- package/{gsd/commands-gsd → src/commands/ccp}/pause-work.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/plan-milestone-gaps.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/plan-phase.md +9 -7
- package/src/commands/ccp/plant-seed.md +28 -0
- package/src/commands/ccp/pr-branch.md +25 -0
- package/{gsd/commands-gsd → src/commands/ccp}/progress.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/quick.md +10 -8
- package/{gsd/commands-gsd → src/commands/ccp}/remove-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/research-phase.md +17 -12
- package/{gsd/commands-gsd → src/commands/ccp}/resume-work.md +3 -3
- package/src/commands/ccp/review-backlog.md +61 -0
- package/src/commands/ccp/session-report.md +19 -0
- package/src/commands/ccp/set-profile.md +12 -0
- package/{gsd/commands-gsd → src/commands/ccp}/settings.md +5 -5
- package/src/commands/ccp/ship.md +23 -0
- package/src/commands/ccp/stats.md +18 -0
- package/src/commands/ccp/thread.md +127 -0
- package/src/commands/ccp/ui-phase.md +34 -0
- package/src/commands/ccp/ui-review.md +32 -0
- package/{gsd/commands-gsd → src/commands/ccp}/update.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/validate-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/verify-work.md +5 -5
- package/src/commands/code-review.md +40 -0
- package/src/commands/context-budget.md +29 -0
- package/src/commands/cpp-build.md +173 -0
- package/src/commands/cpp-review.md +132 -0
- package/src/commands/cpp-test.md +251 -0
- package/src/commands/docs.md +31 -0
- package/src/commands/e2e.md +364 -0
- package/src/commands/eval.md +120 -0
- package/{ecc → src}/commands/evolve.md +2 -2
- package/src/commands/go-build.md +183 -0
- package/src/commands/go-review.md +148 -0
- package/src/commands/go-test.md +268 -0
- package/src/commands/gradle-build.md +70 -0
- package/src/commands/harness-audit.md +71 -0
- package/src/commands/kotlin-build.md +174 -0
- package/src/commands/kotlin-review.md +140 -0
- package/src/commands/kotlin-test.md +312 -0
- package/src/commands/orchestrate.md +231 -0
- package/src/commands/plan.md +114 -0
- package/src/commands/prompt-optimize.md +38 -0
- package/src/commands/prune.md +25 -0
- package/src/commands/python-review.md +297 -0
- package/{ecc → src}/commands/quality-gate.md +1 -1
- package/src/commands/refactor-clean.md +80 -0
- package/src/commands/rules-distill.md +11 -0
- package/src/commands/rust-build.md +187 -0
- package/src/commands/rust-review.md +142 -0
- package/src/commands/rust-test.md +308 -0
- package/{ecc → src}/commands/sessions.md +10 -10
- package/src/commands/setup-pm.md +80 -0
- package/{kit → src}/commands/setup.md +45 -19
- package/src/commands/skill-create.md +172 -0
- package/src/commands/skill-health.md +51 -0
- package/src/commands/tdd.md +328 -0
- package/src/commands/test-coverage.md +69 -0
- package/src/commands/update-codemaps.md +72 -0
- package/src/commands/update-docs.md +84 -0
- package/{gsd/hooks/gsd-context-monitor.js → src/hooks/ccp-context-monitor.js} +3 -3
- package/src/hooks/ccp-prompt-guard.js +96 -0
- package/{gsd/hooks/gsd-statusline.js → src/hooks/ccp-statusline.js} +7 -7
- package/src/hooks/ccp-workflow-guard.js +94 -0
- package/src/hooks/config-protection.js +141 -0
- package/{kit → src}/hooks/kit-check-update.js +7 -4
- package/src/hooks/mcp-health-check.js +620 -0
- package/{ecc/scripts → src}/hooks/run-with-flags-shell.sh +1 -1
- package/{ecc/scripts → src}/hooks/run-with-flags.js +74 -13
- package/src/hooks/session-end-marker.js +29 -0
- package/{ecc/scripts → src}/hooks/session-end.js +83 -40
- package/{ecc/scripts → src}/hooks/session-start.js +75 -9
- package/{ecc/scripts → src}/lib/hook-flags.js +8 -4
- package/{ecc/scripts → src}/lib/project-detect.js +2 -1
- package/{ecc/scripts → src}/lib/session-manager.d.ts +5 -1
- package/{ecc/scripts → src}/lib/session-manager.js +202 -92
- package/{ecc/scripts → src}/lib/utils.d.ts +23 -1
- package/{ecc/scripts → src}/lib/utils.js +91 -3
- package/{gsd/get-shit-done/bin/gsd-tools.cjs → src/pilot/bin/ccp-tools.cjs} +257 -86
- package/{gsd/get-shit-done → src/pilot}/bin/lib/commands.cjs +1 -1
- package/src/pilot/bin/lib/config.cjs +444 -0
- package/src/pilot/bin/lib/core.cjs +1190 -0
- package/src/pilot/bin/lib/init.cjs +1281 -0
- package/src/pilot/bin/lib/model-profiles.cjs +67 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/phase.cjs +2 -2
- package/src/pilot/bin/lib/security.cjs +382 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/state.cjs +1 -1
- package/src/pilot/bin/lib/uat.cjs +282 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/verify.cjs +10 -10
- package/{gsd/get-shit-done → src/pilot}/references/continuation-format.md +16 -16
- package/{gsd/get-shit-done → src/pilot}/references/decimal-phase-calculation.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/git-integration.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/git-planning-commit.md +4 -4
- package/src/pilot/references/mcp-servers.json +153 -0
- package/{gsd/get-shit-done → src/pilot}/references/model-profile-resolution.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/references/model-profiles.md +20 -20
- package/{gsd/get-shit-done → src/pilot}/references/phase-argument-parsing.md +4 -4
- package/{gsd/get-shit-done → src/pilot}/references/planning-config.md +15 -15
- package/{gsd/get-shit-done → src/pilot}/references/ui-brand.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/verification-patterns.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/DEBUG.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/UAT.md +3 -3
- package/src/pilot/templates/UI-SPEC.md +100 -0
- package/{gsd/get-shit-done → src/pilot}/templates/VALIDATION.md +1 -1
- package/src/pilot/templates/claude-md.md +122 -0
- package/{gsd/get-shit-done → src/pilot}/templates/codebase/architecture.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/codebase/structure.md +13 -13
- package/{gsd/get-shit-done → src/pilot}/templates/context.md +4 -4
- package/src/pilot/templates/copilot-instructions.md +7 -0
- package/{gsd/get-shit-done → src/pilot}/templates/debug-subagent-prompt.md +4 -4
- package/src/pilot/templates/dev-preferences.md +21 -0
- package/{gsd/get-shit-done → src/pilot}/templates/discovery.md +2 -2
- package/src/pilot/templates/discussion-log.md +63 -0
- package/{gsd/get-shit-done → src/pilot}/templates/phase-prompt.md +12 -12
- package/{gsd/get-shit-done → src/pilot}/templates/planner-subagent-prompt.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/templates/project.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/research.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/state.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/summary-complex.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/workflows/add-phase.md +11 -11
- package/{gsd/get-shit-done → src/pilot}/workflows/add-tests.md +15 -15
- package/{gsd/get-shit-done → src/pilot}/workflows/add-todo.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/workflows/audit-milestone.md +24 -16
- package/src/pilot/workflows/audit-uat.md +109 -0
- package/src/pilot/workflows/autonomous.md +891 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/check-todos.md +10 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/cleanup.md +3 -3
- package/{gsd/get-shit-done → src/pilot}/workflows/complete-milestone.md +19 -16
- package/{gsd/get-shit-done → src/pilot}/workflows/diagnose-issues.md +9 -4
- package/{gsd/get-shit-done → src/pilot}/workflows/discovery-phase.md +8 -8
- package/src/pilot/workflows/discuss-phase-assumptions.md +653 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/discuss-phase.md +407 -49
- package/src/pilot/workflows/do.md +104 -0
- package/src/pilot/workflows/execute-phase.md +821 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/execute-plan.md +79 -28
- package/src/pilot/workflows/fast.md +105 -0
- package/src/pilot/workflows/forensics.md +265 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/health.md +34 -11
- package/src/pilot/workflows/help.md +775 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/insert-phase.md +10 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/list-phase-assumptions.md +4 -4
- package/src/pilot/workflows/manager.md +362 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/map-codebase.md +27 -17
- package/src/pilot/workflows/milestone-summary.md +223 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/new-milestone.md +135 -33
- package/{gsd/get-shit-done → src/pilot}/workflows/new-project.md +152 -79
- package/src/pilot/workflows/next.md +97 -0
- package/src/pilot/workflows/node-repair.md +92 -0
- package/src/pilot/workflows/note.md +156 -0
- package/src/pilot/workflows/pause-work.md +177 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/plan-milestone-gaps.md +10 -11
- package/src/pilot/workflows/plan-phase.md +859 -0
- package/src/pilot/workflows/plant-seed.md +169 -0
- package/src/pilot/workflows/pr-branch.md +129 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/progress.md +95 -34
- package/{gsd/get-shit-done → src/pilot}/workflows/quick.md +33 -21
- package/{gsd/get-shit-done → src/pilot}/workflows/remove-phase.md +14 -14
- package/{gsd/get-shit-done → src/pilot}/workflows/research-phase.md +18 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/resume-project.md +37 -18
- package/src/pilot/workflows/session-report.md +146 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/set-profile.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/workflows/settings.md +75 -22
- package/src/pilot/workflows/ship.md +228 -0
- package/src/pilot/workflows/stats.md +60 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/transition.md +57 -17
- package/src/pilot/workflows/ui-phase.md +302 -0
- package/src/pilot/workflows/ui-review.md +165 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/update.md +88 -58
- package/{gsd/get-shit-done → src/pilot}/workflows/validate-phase.md +24 -17
- package/{gsd/get-shit-done → src/pilot}/workflows/verify-phase.md +26 -15
- package/{gsd/get-shit-done → src/pilot}/workflows/verify-work.md +89 -37
- package/{ecc → src}/rules/common/agents.md +1 -0
- package/{ecc → src}/rules/common/coding-style.md +21 -0
- package/src/skills/agentic-engineering/SKILL.md +63 -0
- package/src/skills/ai-first-engineering/SKILL.md +51 -0
- package/src/skills/ai-regression-testing/SKILL.md +385 -0
- package/src/skills/api-design/SKILL.md +523 -0
- package/src/skills/architecture-decision-records/SKILL.md +179 -0
- package/src/skills/backend-patterns/SKILL.md +598 -0
- package/src/skills/benchmark/SKILL.md +87 -0
- package/src/skills/blueprint/SKILL.md +90 -0
- package/src/skills/browser-qa/SKILL.md +81 -0
- package/src/skills/claude-api/SKILL.md +337 -0
- package/src/skills/codebase-onboarding/SKILL.md +233 -0
- package/src/skills/coding-standards/SKILL.md +530 -0
- package/src/skills/context-budget/SKILL.md +135 -0
- package/{ecc → src}/skills/continuous-learning-v2/SKILL.md +2 -2
- package/{ecc → src}/skills/continuous-learning-v2/agents/observer-loop.sh +1 -1
- package/src/skills/cpp-coding-standards/SKILL.md +723 -0
- package/src/skills/cpp-testing/SKILL.md +324 -0
- package/src/skills/database-migrations/SKILL.md +429 -0
- package/src/skills/deep-research/SKILL.md +155 -0
- package/src/skills/deployment-patterns/SKILL.md +427 -0
- package/src/skills/django-patterns/SKILL.md +734 -0
- package/src/skills/django-security/SKILL.md +593 -0
- package/src/skills/django-tdd/SKILL.md +729 -0
- package/src/skills/django-verification/SKILL.md +469 -0
- package/src/skills/docker-patterns/SKILL.md +364 -0
- package/src/skills/documentation-lookup/SKILL.md +90 -0
- package/src/skills/e2e-testing/SKILL.md +326 -0
- package/src/skills/exa-search/SKILL.md +103 -0
- package/src/skills/frontend-patterns/SKILL.md +642 -0
- package/src/skills/golang-patterns/SKILL.md +674 -0
- package/src/skills/golang-testing/SKILL.md +720 -0
- package/src/skills/java-coding-standards/SKILL.md +147 -0
- package/src/skills/jpa-patterns/SKILL.md +151 -0
- package/src/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/src/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/src/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/src/skills/kotlin-patterns/SKILL.md +711 -0
- package/src/skills/kotlin-testing/SKILL.md +824 -0
- package/src/skills/laravel-patterns/SKILL.md +415 -0
- package/src/skills/laravel-security/SKILL.md +285 -0
- package/src/skills/laravel-tdd/SKILL.md +283 -0
- package/src/skills/laravel-verification/SKILL.md +179 -0
- package/src/skills/mcp-server-patterns/SKILL.md +67 -0
- package/src/skills/perl-patterns/SKILL.md +504 -0
- package/src/skills/perl-testing/SKILL.md +475 -0
- package/src/skills/postgres-patterns/SKILL.md +147 -0
- package/src/skills/prompt-optimizer/SKILL.md +397 -0
- package/src/skills/python-patterns/SKILL.md +750 -0
- package/src/skills/python-testing/SKILL.md +816 -0
- package/src/skills/rust-patterns/SKILL.md +499 -0
- package/src/skills/rust-testing/SKILL.md +500 -0
- package/src/skills/safety-guard/SKILL.md +69 -0
- package/src/skills/search-first/SKILL.md +161 -0
- package/src/skills/security-review/SKILL.md +495 -0
- package/src/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/src/skills/security-scan/SKILL.md +165 -0
- package/src/skills/springboot-patterns/SKILL.md +314 -0
- package/src/skills/springboot-security/SKILL.md +272 -0
- package/src/skills/springboot-tdd/SKILL.md +158 -0
- package/src/skills/springboot-verification/SKILL.md +231 -0
- package/src/skills/tdd-workflow/SKILL.md +410 -0
- package/ecc/scripts/hooks/session-end-marker.js +0 -15
- package/gsd/LICENSE +0 -21
- package/gsd/commands-gsd/discuss-phase.md +0 -90
- package/gsd/commands-gsd/execute-phase.md +0 -41
- package/gsd/commands-gsd/join-discord.md +0 -18
- package/gsd/commands-gsd/reapply-patches.md +0 -123
- package/gsd/commands-gsd/set-profile.md +0 -34
- package/gsd/get-shit-done/bin/lib/config.cjs +0 -169
- package/gsd/get-shit-done/bin/lib/core.cjs +0 -492
- package/gsd/get-shit-done/bin/lib/init.cjs +0 -710
- package/gsd/get-shit-done/workflows/execute-phase.md +0 -459
- package/gsd/get-shit-done/workflows/help.md +0 -489
- package/gsd/get-shit-done/workflows/pause-work.md +0 -122
- package/gsd/get-shit-done/workflows/plan-phase.md +0 -560
- package/gsd/hooks/gsd-check-update.js +0 -81
- package/kit/CLAUDE.md +0 -43
- package/kit/commands/kit/update.md +0 -46
- package/kit/mcp.json +0 -10
- package/kit/rules/code-style.md +0 -24
- /package/{ecc → src}/agents/architect.md +0 -0
- /package/{ecc → src}/agents/code-reviewer.md +0 -0
- /package/{ecc → src}/agents/doc-updater.md +0 -0
- /package/{ecc → src}/agents/e2e-runner.md +0 -0
- /package/{ecc → src}/agents/security-reviewer.md +0 -0
- /package/{ecc → src}/agents/tdd-guide.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/testing.md +0 -0
- /package/{ecc → src}/commands/checkpoint.md +0 -0
- /package/{ecc → src}/commands/learn.md +0 -0
- /package/{ecc → src}/commands/model-route.md +0 -0
- /package/{ecc → src}/commands/resume-session.md +0 -0
- /package/{ecc → src}/commands/save-session.md +0 -0
- /package/{kit → src}/commands/setup-refresh.md +0 -0
- /package/{kit → src}/commands/tool-guide.md +0 -0
- /package/{ecc → src}/commands/verify.md +0 -0
- /package/{ecc → src}/contexts/dev.md +0 -0
- /package/{ecc → src}/contexts/research.md +0 -0
- /package/{ecc → src}/contexts/review.md +0 -0
- /package/{ecc → src}/examples/CLAUDE.md +0 -0
- /package/{ecc → src}/examples/django-api-CLAUDE.md +0 -0
- /package/{ecc → src}/examples/go-microservice-CLAUDE.md +0 -0
- /package/{ecc → src}/examples/rust-api-CLAUDE.md +0 -0
- /package/{ecc → src}/examples/saas-nextjs-CLAUDE.md +0 -0
- /package/{ecc → src}/examples/user-CLAUDE.md +0 -0
- /package/{ecc/scripts → src}/hooks/check-hook-enabled.js +0 -0
- /package/{ecc/scripts → src}/hooks/evaluate-session.js +0 -0
- /package/{ecc/scripts → src}/hooks/pre-compact.js +0 -0
- /package/{ecc/scripts → src}/hooks/suggest-compact.js +0 -0
- /package/{ecc/scripts → src}/lib/package-manager.d.ts +0 -0
- /package/{ecc/scripts → src}/lib/package-manager.js +0 -0
- /package/{ecc/scripts → src}/lib/resolve-formatter.js +0 -0
- /package/{ecc/scripts → src}/lib/session-aliases.d.ts +0 -0
- /package/{ecc/scripts → src}/lib/session-aliases.js +0 -0
- /package/{ecc/scripts → src}/lib/shell-split.js +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/frontmatter.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/milestone.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/roadmap.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/template.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/checkpoints.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/questioning.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/tdd.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/concerns.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/conventions.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/integrations.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/stack.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/testing.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/config.json +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/continue-here.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/milestone-archive.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/milestone.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/requirements.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/ARCHITECTURE.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/FEATURES.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/PITFALLS.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/STACK.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/SUMMARY.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/retrospective.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/roadmap.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary-minimal.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary-standard.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/user-setup.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/verification-report.md +0 -0
- /package/{ecc → src}/rules/common/development-workflow.md +0 -0
- /package/{ecc → src}/rules/common/git-workflow.md +0 -0
- /package/{ecc → src}/rules/common/hooks.md +0 -0
- /package/{ecc → src}/rules/common/patterns.md +0 -0
- /package/{ecc → src}/rules/common/performance.md +0 -0
- /package/{ecc → src}/rules/common/security.md +0 -0
- /package/{ecc → src}/rules/common/testing.md +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/agents/observer.md +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/agents/start-observer.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/config.json +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/hooks/observe.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/detect-project.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -0
- /package/{ecc → src}/skills/strategic-compact/SKILL.md +0 -0
- /package/{ecc → src}/skills/strategic-compact/suggest-compact.sh +0 -0
- /package/{ecc/skills/verification-loop-SKILL.md → src/skills/verification-loop/SKILL.md} +0 -0
|
@@ -7,11 +7,11 @@ You are a thinking partner, not an interviewer. The user is the visionary — yo
|
|
|
7
7
|
<downstream_awareness>
|
|
8
8
|
**CONTEXT.md feeds into:**
|
|
9
9
|
|
|
10
|
-
1. **
|
|
10
|
+
1. **ccp-phase-researcher** — Reads CONTEXT.md to know WHAT to research
|
|
11
11
|
- "User wants card-based layout" → researcher investigates card component patterns
|
|
12
12
|
- "Infinite scroll decided" → researcher looks into virtualization libraries
|
|
13
13
|
|
|
14
|
-
2. **
|
|
14
|
+
2. **ccp-planner** — Reads CONTEXT.md to know WHAT decisions are locked
|
|
15
15
|
- "Pull-to-refresh on mobile" → planner includes that in task specs
|
|
16
16
|
- "Claude's Discretion: loading skeleton" → planner can decide approach
|
|
17
17
|
|
|
@@ -105,16 +105,36 @@ Phase: "API documentation"
|
|
|
105
105
|
- Scope (roadmap defines this)
|
|
106
106
|
</gray_area_identification>
|
|
107
107
|
|
|
108
|
+
<answer_validation>
|
|
109
|
+
**IMPORTANT: Answer validation** — After every AskUserQuestion call, check if the response is empty or whitespace-only. If so:
|
|
110
|
+
1. Retry the question once with the same parameters
|
|
111
|
+
2. If still empty, present the options as a plain-text numbered list and ask the user to type their choice number
|
|
112
|
+
Never proceed with an empty answer.
|
|
113
|
+
|
|
114
|
+
**Text mode (`workflow.text_mode: true` in config or `--text` flag):**
|
|
115
|
+
When text mode is active, **do not use AskUserQuestion at all**. Instead, present every
|
|
116
|
+
question as a plain-text numbered list and ask the user to type their choice number.
|
|
117
|
+
This is required for Claude Code remote sessions (`/rc` mode) where the Claude App
|
|
118
|
+
cannot forward TUI menu selections back to the host.
|
|
119
|
+
|
|
120
|
+
Enable text mode:
|
|
121
|
+
- Per-session: pass `--text` flag to any command (e.g., `/ccp:discuss-phase --text`)
|
|
122
|
+
- Per-project: `ccp-tools config-set workflow.text_mode true`
|
|
123
|
+
|
|
124
|
+
Text mode applies to ALL workflows in the session, not just discuss-phase.
|
|
125
|
+
</answer_validation>
|
|
126
|
+
|
|
108
127
|
<process>
|
|
109
128
|
|
|
110
|
-
**Express path available:** If you already have a PRD or acceptance criteria document, use `/
|
|
129
|
+
**Express path available:** If you already have a PRD or acceptance criteria document, use `/ccp:plan-phase {phase} --prd path/to/prd.md` to skip this discussion and go straight to planning.
|
|
111
130
|
|
|
112
131
|
<step name="initialize" priority="first">
|
|
113
132
|
Phase number from argument (required).
|
|
114
133
|
|
|
115
134
|
```bash
|
|
116
|
-
INIT=$(node "$HOME/.claude/
|
|
135
|
+
INIT=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" init phase-op "${PHASE}")
|
|
117
136
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
137
|
+
AGENT_SKILLS_ADVISOR=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" agent-skills ccp-advisor 2>/dev/null)
|
|
118
138
|
```
|
|
119
139
|
|
|
120
140
|
Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`, `plan_count`, `roadmap_exists`, `planning_exists`.
|
|
@@ -123,22 +143,32 @@ Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phas
|
|
|
123
143
|
```
|
|
124
144
|
Phase [X] not found in roadmap.
|
|
125
145
|
|
|
126
|
-
Use /
|
|
146
|
+
Use /ccp:progress to see available phases.
|
|
127
147
|
```
|
|
128
148
|
Exit workflow.
|
|
129
149
|
|
|
130
150
|
**If `phase_found` is true:** Continue to check_existing.
|
|
151
|
+
|
|
152
|
+
**Auto mode** — If `--auto` is present in ARGUMENTS:
|
|
153
|
+
- In `check_existing`: auto-select "Skip" (if context exists) or continue without prompting (if no context/plans)
|
|
154
|
+
- In `present_gray_areas`: auto-select ALL gray areas without asking the user
|
|
155
|
+
- In `discuss_areas`: for each discussion question, choose the recommended option (first option, or the one marked "recommended") without using AskUserQuestion
|
|
156
|
+
- Log each auto-selected choice inline so the user can review decisions in the context file
|
|
157
|
+
- After discussion completes, auto-advance to plan-phase (existing behavior)
|
|
131
158
|
</step>
|
|
132
159
|
|
|
133
160
|
<step name="check_existing">
|
|
134
161
|
Check if CONTEXT.md already exists using `has_context` from init.
|
|
135
162
|
|
|
136
163
|
```bash
|
|
137
|
-
ls ${phase_dir}/*-CONTEXT.md 2>/dev/null
|
|
164
|
+
ls ${phase_dir}/*-CONTEXT.md 2>/dev/null || true
|
|
138
165
|
```
|
|
139
166
|
|
|
140
167
|
**If exists:**
|
|
141
|
-
|
|
168
|
+
|
|
169
|
+
**If `--auto`:** Auto-select "Update it" — load existing context and continue to analyze_phase. Log: `[auto] Context exists — updating with auto-selected decisions.`
|
|
170
|
+
|
|
171
|
+
**Otherwise:** Use AskUserQuestion:
|
|
142
172
|
- header: "Context"
|
|
143
173
|
- question: "Phase [X] already has context. What do you want to do?"
|
|
144
174
|
- options:
|
|
@@ -154,11 +184,13 @@ If "Skip": Exit workflow
|
|
|
154
184
|
|
|
155
185
|
Check `has_plans` and `plan_count` from init. **If `has_plans` is true:**
|
|
156
186
|
|
|
157
|
-
|
|
187
|
+
**If `--auto`:** Auto-select "Continue and replan after". Log: `[auto] Plans exist — continuing with context capture, will replan after.`
|
|
188
|
+
|
|
189
|
+
**Otherwise:** Use AskUserQuestion:
|
|
158
190
|
- header: "Plans exist"
|
|
159
191
|
- question: "Phase [X] already has {plan_count} plan(s) created without user context. Your decisions here won't affect existing plans unless you replan."
|
|
160
192
|
- options:
|
|
161
|
-
- "Continue and replan after" — Capture context, then run /
|
|
193
|
+
- "Continue and replan after" — Capture context, then run /ccp:plan-phase {X} to replan
|
|
162
194
|
- "View existing plans" — Show plans before deciding
|
|
163
195
|
- "Cancel" — Skip discuss-phase
|
|
164
196
|
|
|
@@ -175,9 +207,9 @@ Read project-level and prior phase context to avoid re-asking decided questions
|
|
|
175
207
|
**Step 1: Read project-level files**
|
|
176
208
|
```bash
|
|
177
209
|
# Core project files
|
|
178
|
-
cat .planning/PROJECT.md 2>/dev/null
|
|
179
|
-
cat .planning/REQUIREMENTS.md 2>/dev/null
|
|
180
|
-
cat .planning/STATE.md 2>/dev/null
|
|
210
|
+
cat .planning/PROJECT.md 2>/dev/null || true
|
|
211
|
+
cat .planning/REQUIREMENTS.md 2>/dev/null || true
|
|
212
|
+
cat .planning/STATE.md 2>/dev/null || true
|
|
181
213
|
```
|
|
182
214
|
|
|
183
215
|
Extract from these:
|
|
@@ -188,7 +220,7 @@ Extract from these:
|
|
|
188
220
|
**Step 2: Read all prior CONTEXT.md files**
|
|
189
221
|
```bash
|
|
190
222
|
# Find all CONTEXT.md files from phases before current
|
|
191
|
-
find .planning/phases -name "*-CONTEXT.md" 2>/dev/null | sort
|
|
223
|
+
(find .planning/phases -name "*-CONTEXT.md" 2>/dev/null || true) | sort
|
|
192
224
|
```
|
|
193
225
|
|
|
194
226
|
For each CONTEXT.md where phase number < current phase:
|
|
@@ -223,12 +255,53 @@ Structure the extracted information:
|
|
|
223
255
|
**If no prior context exists:** Continue without — this is expected for early phases.
|
|
224
256
|
</step>
|
|
225
257
|
|
|
258
|
+
<step name="cross_reference_todos">
|
|
259
|
+
Check if any pending todos are relevant to this phase's scope. Surfaces backlog items that might otherwise be missed.
|
|
260
|
+
|
|
261
|
+
**Load and match todos:**
|
|
262
|
+
```bash
|
|
263
|
+
TODO_MATCHES=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" todo match-phase "${PHASE_NUMBER}")
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Parse JSON for: `todo_count`, `matches[]` (each with `file`, `title`, `area`, `score`, `reasons`).
|
|
267
|
+
|
|
268
|
+
**If `todo_count` is 0 or `matches` is empty:** Skip silently — no workflow slowdown.
|
|
269
|
+
|
|
270
|
+
**If matches found:**
|
|
271
|
+
|
|
272
|
+
Present matched todos to the user. Show each match with its title, area, and why it matched:
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
Found {N} pending todo(s) that may be relevant to Phase {X}:
|
|
276
|
+
|
|
277
|
+
{For each match:}
|
|
278
|
+
- **{title}** (area: {area}, relevance: {score}) — matched on {reasons}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Use AskUserQuestion (multiSelect) asking which todos to fold into this phase's scope:
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
Which of these todos should be folded into Phase {X} scope?
|
|
285
|
+
(Select any that apply, or none to skip)
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**For selected (folded) todos:**
|
|
289
|
+
- Store internally as `<folded_todos>` for inclusion in CONTEXT.md `<decisions>` section
|
|
290
|
+
- These become additional scope items that downstream agents (researcher, planner) will see
|
|
291
|
+
|
|
292
|
+
**For unselected (reviewed but not folded) todos:**
|
|
293
|
+
- Store internally as `<reviewed_todos>` for inclusion in CONTEXT.md `<deferred>` section
|
|
294
|
+
- This prevents future phases from re-surfacing the same todos as "missed"
|
|
295
|
+
|
|
296
|
+
**Auto mode (`--auto`):** Fold all todos with score >= 0.4 automatically. Log the selection.
|
|
297
|
+
</step>
|
|
298
|
+
|
|
226
299
|
<step name="scout_codebase">
|
|
227
300
|
Lightweight scan of existing code to inform gray area identification and discussion. Uses ~10% context — acceptable for an interactive session.
|
|
228
301
|
|
|
229
302
|
**Step 1: Check for existing codebase maps**
|
|
230
303
|
```bash
|
|
231
|
-
ls .planning/codebase/*.md 2>/dev/null
|
|
304
|
+
ls .planning/codebase/*.md 2>/dev/null || true
|
|
232
305
|
```
|
|
233
306
|
|
|
234
307
|
**If codebase maps exist:** Read the most relevant ones (CONVENTIONS.md, STRUCTURE.md, STACK.md based on phase type). Extract:
|
|
@@ -244,12 +317,12 @@ Extract key terms from the phase goal (e.g., "feed" → "post", "card", "list";
|
|
|
244
317
|
|
|
245
318
|
```bash
|
|
246
319
|
# Find files related to phase goal terms
|
|
247
|
-
grep -rl "{term1}\|{term2}" src/ app/ --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" 2>/dev/null | head -10
|
|
320
|
+
grep -rl "{term1}\|{term2}" src/ app/ --include="*.ts" --include="*.tsx" --include="*.js" --include="*.jsx" 2>/dev/null | head -10 || true
|
|
248
321
|
|
|
249
322
|
# Find existing components/hooks
|
|
250
|
-
ls src/components/ 2>/dev/null
|
|
251
|
-
ls src/hooks/ 2>/dev/null
|
|
252
|
-
ls src/lib/ src/utils/ 2>/dev/null
|
|
323
|
+
ls src/components/ 2>/dev/null || true
|
|
324
|
+
ls src/hooks/ 2>/dev/null || true
|
|
325
|
+
ls src/lib/ src/utils/ 2>/dev/null || true
|
|
253
326
|
```
|
|
254
327
|
|
|
255
328
|
Read the 3-5 most relevant files to understand existing patterns.
|
|
@@ -272,6 +345,15 @@ Analyze the phase to identify gray areas worth discussing. **Use both `prior_dec
|
|
|
272
345
|
|
|
273
346
|
1. **Domain boundary** — What capability is this phase delivering? State it clearly.
|
|
274
347
|
|
|
348
|
+
1b. **Initialize canonical refs accumulator** — Start building the `<canonical_refs>` list for CONTEXT.md. This accumulates throughout the entire discussion, not just this step.
|
|
349
|
+
|
|
350
|
+
**Source 1 (now):** Copy `Canonical refs:` from ROADMAP.md for this phase. Expand each to a full relative path.
|
|
351
|
+
**Source 2 (now):** Check REQUIREMENTS.md and PROJECT.md for any specs/ADRs referenced for this phase.
|
|
352
|
+
**Source 3 (scout_codebase):** If existing code references docs (e.g., comments citing ADRs), add those.
|
|
353
|
+
**Source 4 (discuss_areas):** When the user says "read X", "check Y", or references any doc/spec/ADR during discussion — add it immediately. These are often the MOST important refs because they represent docs the user specifically wants followed.
|
|
354
|
+
|
|
355
|
+
This list is MANDATORY in CONTEXT.md. Every ref must have a full relative path so downstream agents can read it directly. If no external docs exist, note that explicitly.
|
|
356
|
+
|
|
275
357
|
2. **Check prior decisions** — Before generating gray areas, check if any were already decided:
|
|
276
358
|
- Scan `<prior_decisions>` for relevant choices (e.g., "Ctrl+C only, no single-key shortcuts")
|
|
277
359
|
- These are **pre-answered** — don't re-ask unless this phase has conflicting needs
|
|
@@ -281,6 +363,23 @@ Analyze the phase to identify gray areas worth discussing. **Use both `prior_dec
|
|
|
281
363
|
|
|
282
364
|
4. **Skip assessment** — If no meaningful gray areas exist (pure infrastructure, clear-cut implementation, or all already decided in prior phases), the phase may not need discussion.
|
|
283
365
|
|
|
366
|
+
**Advisor Mode Detection:**
|
|
367
|
+
|
|
368
|
+
Check if advisor mode should activate:
|
|
369
|
+
|
|
370
|
+
1. Check for research_before_questions config:
|
|
371
|
+
```bash
|
|
372
|
+
RESEARCH_MODE=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" config-get workflow.research_before_questions 2>/dev/null || echo "false")
|
|
373
|
+
```
|
|
374
|
+
ADVISOR_MODE = `RESEARCH_MODE` is `"true"` → true, otherwise → false
|
|
375
|
+
|
|
376
|
+
2. If ADVISOR_MODE is true, resolve model for advisor agents:
|
|
377
|
+
```bash
|
|
378
|
+
ADVISOR_MODEL=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" resolve-model ccp-advisor-researcher --raw)
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
If ADVISOR_MODE is false, skip all advisor-specific steps — workflow proceeds with existing conversational flow unchanged.
|
|
382
|
+
|
|
284
383
|
**Output your analysis internally, then present to user.**
|
|
285
384
|
|
|
286
385
|
Example analysis for "Post Feed" phase (with code and prior context):
|
|
@@ -314,7 +413,9 @@ We'll clarify HOW to implement this.
|
|
|
314
413
|
- [Decision from Phase M that applies here]
|
|
315
414
|
```
|
|
316
415
|
|
|
317
|
-
**
|
|
416
|
+
**If `--auto`:** Auto-select ALL gray areas. Log: `[auto] Selected all gray areas: [list area names].` Skip the AskUserQuestion below and continue directly to discuss_areas with all areas selected.
|
|
417
|
+
|
|
418
|
+
**Otherwise, use AskUserQuestion (multiSelect: true):**
|
|
318
419
|
- header: "Discuss"
|
|
319
420
|
- question: "Which areas do you want to discuss for [phase name]?"
|
|
320
421
|
- options: Generate 3-4 phase-specific gray areas, each with:
|
|
@@ -368,15 +469,163 @@ For "Organize photo library" (organization task):
|
|
|
368
469
|
☐ Folder structure — Flat, nested by year, or by category?
|
|
369
470
|
```
|
|
370
471
|
|
|
371
|
-
Continue to discuss_areas with selected areas.
|
|
472
|
+
Continue to discuss_areas with selected areas (or advisor_research if ADVISOR_MODE is true).
|
|
473
|
+
</step>
|
|
474
|
+
|
|
475
|
+
<step name="advisor_research">
|
|
476
|
+
**Advisor Research** (only when ADVISOR_MODE is true)
|
|
477
|
+
|
|
478
|
+
After user selects gray areas in present_gray_areas, spawn parallel research agents.
|
|
479
|
+
|
|
480
|
+
1. Display brief status: "Researching {N} areas..."
|
|
481
|
+
|
|
482
|
+
2. For EACH user-selected gray area, spawn a Task() in parallel:
|
|
483
|
+
|
|
484
|
+
Task(
|
|
485
|
+
prompt="First, read @~/.claude/agents/ccp-advisor-researcher.md for your role and instructions.
|
|
486
|
+
|
|
487
|
+
<gray_area>{area_name}: {area_description from gray area identification}</gray_area>
|
|
488
|
+
<phase_context>{phase_goal and description from ROADMAP.md}</phase_context>
|
|
489
|
+
<project_context>{project name and brief description from PROJECT.md}</project_context>
|
|
490
|
+
|
|
491
|
+
Research this gray area and return a structured comparison table with rationale.
|
|
492
|
+
${AGENT_SKILLS_ADVISOR}",
|
|
493
|
+
subagent_type="ccp-advisor-researcher",
|
|
494
|
+
model="{ADVISOR_MODEL}",
|
|
495
|
+
description="Research: {area_name}"
|
|
496
|
+
)
|
|
497
|
+
|
|
498
|
+
All Task() calls spawn simultaneously — do NOT wait for one before starting the next.
|
|
499
|
+
|
|
500
|
+
3. After ALL agents return, SYNTHESIZE results before presenting:
|
|
501
|
+
For each agent's return:
|
|
502
|
+
a. Parse the markdown comparison table and rationale paragraph
|
|
503
|
+
b. Verify all 5 columns present (Option | Pros | Cons | Complexity | Recommendation) — fill any missing columns rather than showing broken table
|
|
504
|
+
c. Verify option count is reasonable (2-4 options acceptable)
|
|
505
|
+
d. Rewrite rationale paragraph to weave in project context and ongoing discussion context that the agent did not have access to
|
|
506
|
+
e. If agent returned only 1 option, convert from table format to direct recommendation: "Standard approach for {area}: {option}. {rationale}"
|
|
507
|
+
|
|
508
|
+
4. Store synthesized tables for use in discuss_areas.
|
|
509
|
+
|
|
510
|
+
**If ADVISOR_MODE is false:** Skip this step entirely — proceed directly from present_gray_areas to discuss_areas.
|
|
372
511
|
</step>
|
|
373
512
|
|
|
374
513
|
<step name="discuss_areas">
|
|
514
|
+
Discuss each selected area with the user. Flow depends on advisor mode.
|
|
515
|
+
|
|
516
|
+
**If ADVISOR_MODE is true:**
|
|
517
|
+
|
|
518
|
+
Table-first discussion flow — present research-backed comparison tables, then capture user picks.
|
|
519
|
+
|
|
520
|
+
**For each selected area:**
|
|
521
|
+
|
|
522
|
+
1. **Present the synthesized comparison table + rationale paragraph** (from advisor_research step)
|
|
523
|
+
|
|
524
|
+
2. **Use AskUserQuestion:**
|
|
525
|
+
- header: "{area_name}"
|
|
526
|
+
- question: "Which approach for {area_name}?"
|
|
527
|
+
- options: Extract from the table's Option column (AskUserQuestion adds "Other" automatically)
|
|
528
|
+
|
|
529
|
+
3. **Record the user's selection:**
|
|
530
|
+
- If user picks from table options → record as locked decision for that area
|
|
531
|
+
- If user picks "Other" → receive their input, reflect it back for confirmation, record
|
|
532
|
+
|
|
533
|
+
4. **After recording pick, Claude decides whether follow-up questions are needed:**
|
|
534
|
+
- If the pick has ambiguity that would affect downstream planning → ask 1-2 targeted follow-up questions using AskUserQuestion
|
|
535
|
+
- If the pick is clear and self-contained → move to next area
|
|
536
|
+
- Do NOT ask the standard 4 questions — the table already provided the context
|
|
537
|
+
|
|
538
|
+
5. **After all areas processed:**
|
|
539
|
+
- header: "Done"
|
|
540
|
+
- question: "That covers [list areas]. Ready to create context?"
|
|
541
|
+
- options: "Create context" / "Revisit an area"
|
|
542
|
+
|
|
543
|
+
**Scope creep handling (advisor mode):**
|
|
544
|
+
If user mentions something outside the phase domain:
|
|
545
|
+
```
|
|
546
|
+
"[Feature] sounds like a new capability — that belongs in its own phase.
|
|
547
|
+
I'll note it as a deferred idea.
|
|
548
|
+
|
|
549
|
+
Back to [current area]: [return to current question]"
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
Track deferred ideas internally.
|
|
553
|
+
|
|
554
|
+
---
|
|
555
|
+
|
|
556
|
+
**If ADVISOR_MODE is false:**
|
|
557
|
+
|
|
375
558
|
For each selected area, conduct a focused discussion loop.
|
|
376
559
|
|
|
377
|
-
**
|
|
560
|
+
**Research-before-questions mode:** Check if `workflow.research_before_questions` is enabled in config (from init context or `.planning/config.json`). When enabled, before presenting questions for each area:
|
|
561
|
+
1. Do a brief web search for best practices related to the area topic
|
|
562
|
+
2. Summarize the top findings in 2-3 bullet points
|
|
563
|
+
3. Present the research alongside the question so the user can make a more informed decision
|
|
564
|
+
|
|
565
|
+
Example with research enabled:
|
|
566
|
+
```
|
|
567
|
+
Let's talk about [Authentication Strategy].
|
|
568
|
+
|
|
569
|
+
Best practices research:
|
|
570
|
+
- OAuth 2.0 + PKCE is the current standard for SPAs (replaces implicit flow)
|
|
571
|
+
- Session tokens with httpOnly cookies preferred over localStorage for XSS protection
|
|
572
|
+
- Consider passkey/WebAuthn support — adoption is accelerating
|
|
573
|
+
|
|
574
|
+
With that context: How should users authenticate?
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
When disabled (default), skip the research and present questions directly as before.
|
|
578
|
+
|
|
579
|
+
**Text mode support:** Parse optional `--text` from `$ARGUMENTS`.
|
|
580
|
+
- Accept `--text` flag OR read `workflow.text_mode` from config (from init context)
|
|
581
|
+
- When active, replace ALL `AskUserQuestion` calls with plain-text numbered lists
|
|
582
|
+
- User types a number to select, or types free text for "Other"
|
|
583
|
+
- This is required for Claude Code remote sessions (`/rc` mode) where TUI menus
|
|
584
|
+
don't work through the Claude App
|
|
585
|
+
|
|
586
|
+
**Batch mode support:** Parse optional `--batch` from `$ARGUMENTS`.
|
|
587
|
+
- Accept `--batch`, `--batch=N`, or `--batch N`
|
|
588
|
+
|
|
589
|
+
**Analyze mode support:** Parse optional `--analyze` from `$ARGUMENTS`.
|
|
590
|
+
When `--analyze` is active, before presenting each question (or question group in batch mode), provide a brief **trade-off analysis** for the decision:
|
|
591
|
+
- 2-3 options with pros/cons based on codebase context and common patterns
|
|
592
|
+
- A recommended approach with reasoning
|
|
593
|
+
- Known pitfalls or constraints from prior phases
|
|
594
|
+
|
|
595
|
+
Example with `--analyze`:
|
|
596
|
+
```
|
|
597
|
+
**Trade-off analysis: Authentication strategy**
|
|
598
|
+
|
|
599
|
+
| Approach | Pros | Cons |
|
|
600
|
+
|----------|------|------|
|
|
601
|
+
| Session cookies | Simple, httpOnly prevents XSS | Requires CSRF protection, sticky sessions |
|
|
602
|
+
| JWT (stateless) | Scalable, no server state | Token size, revocation complexity |
|
|
603
|
+
| OAuth 2.0 + PKCE | Industry standard for SPAs | More setup, redirect flow UX |
|
|
604
|
+
|
|
605
|
+
Recommended: OAuth 2.0 + PKCE — your app has social login in requirements (REQ-04) and this aligns with the existing NextAuth setup in `src/lib/auth.ts`.
|
|
606
|
+
|
|
607
|
+
How should users authenticate?
|
|
608
|
+
```
|
|
378
609
|
|
|
379
|
-
|
|
610
|
+
This gives the user context to make informed decisions without extra prompting. When `--analyze` is absent, present questions directly as before.
|
|
611
|
+
- Accept `--batch`, `--batch=N`, or `--batch N`
|
|
612
|
+
- Default to 4 questions per batch when no number is provided
|
|
613
|
+
- Clamp explicit sizes to 2-5 so a batch stays answerable
|
|
614
|
+
- If `--batch` is absent, keep the existing one-question-at-a-time flow
|
|
615
|
+
|
|
616
|
+
**Philosophy:** stay adaptive, but let the user choose the pacing.
|
|
617
|
+
- Default mode: 4 single-question turns, then check whether to continue
|
|
618
|
+
- `--batch` mode: 1 grouped turn with 2-5 numbered questions, then check whether to continue
|
|
619
|
+
|
|
620
|
+
Each answer (or answer set, in batch mode) should reveal the next question or next batch.
|
|
621
|
+
|
|
622
|
+
**Auto mode (`--auto`):** For each area, Claude selects the recommended option (first option, or the one explicitly marked "recommended") for every question without using AskUserQuestion. Log each auto-selected choice:
|
|
623
|
+
```
|
|
624
|
+
[auto] [Area] — Q: "[question text]" → Selected: "[chosen option]" (recommended default)
|
|
625
|
+
```
|
|
626
|
+
After all areas are auto-resolved, skip the "Explore more gray areas" prompt and proceed directly to write_context.
|
|
627
|
+
|
|
628
|
+
**Interactive mode (no `--auto`):**
|
|
380
629
|
|
|
381
630
|
**For each area:**
|
|
382
631
|
|
|
@@ -385,7 +634,9 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
|
|
|
385
634
|
Let's talk about [Area].
|
|
386
635
|
```
|
|
387
636
|
|
|
388
|
-
2. **Ask
|
|
637
|
+
2. **Ask questions using the selected pacing:**
|
|
638
|
+
|
|
639
|
+
**Default (no `--batch`): Ask 4 questions using AskUserQuestion**
|
|
389
640
|
- header: "[Area]" (max 12 chars — abbreviate if needed)
|
|
390
641
|
- question: Specific decision for this area
|
|
391
642
|
- options: 2-3 concrete choices (AskUserQuestion adds "Other" automatically), with the recommended choice highlighted and brief explanation why
|
|
@@ -399,12 +650,21 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
|
|
|
399
650
|
- Include "You decide" as an option when reasonable — captures Claude discretion
|
|
400
651
|
- **Context7 for library choices:** When a gray area involves library selection (e.g., "magic links" → query next-auth docs) or API approach decisions, use `mcp__context7__*` tools to fetch current documentation and inform the options. Don't use Context7 for every question — only when library-specific knowledge improves the options.
|
|
401
652
|
|
|
402
|
-
|
|
653
|
+
**Batch mode (`--batch`): Ask 2-5 numbered questions in one plain-text turn**
|
|
654
|
+
- Group closely related questions for the current area into a single message
|
|
655
|
+
- Keep each question concrete and answerable in one reply
|
|
656
|
+
- When options are helpful, include short inline choices per question rather than a separate AskUserQuestion for every item
|
|
657
|
+
- After the user replies, reflect back the captured decisions, note any unanswered items, and ask only the minimum follow-up needed before moving on
|
|
658
|
+
- Preserve adaptiveness between batches: use the full set of answers to decide the next batch or whether the area is sufficiently clear
|
|
659
|
+
|
|
660
|
+
3. **After the current set of questions, check:**
|
|
403
661
|
- header: "[Area]" (max 12 chars)
|
|
404
|
-
- question: "More questions about [area], or move to next?"
|
|
662
|
+
- question: "More questions about [area], or move to next? (Remaining: [list other unvisited areas])"
|
|
405
663
|
- options: "More questions" / "Next area"
|
|
406
664
|
|
|
407
|
-
|
|
665
|
+
When building the question text, list the remaining unvisited areas so the user knows what's ahead. For example: "More questions about Layout, or move to next? (Remaining: Loading behavior, Content ordering)"
|
|
666
|
+
|
|
667
|
+
If "More questions" → ask another 4 single questions, or another 2-5 question batch when `--batch` is active, then check again
|
|
408
668
|
If "Next area" → proceed to next selected area
|
|
409
669
|
If "Other" (free text) → interpret intent: continuation phrases ("chat more", "keep going", "yes", "more") map to "More questions"; advancement phrases ("done", "move on", "next", "skip") map to "Next area". If ambiguous, ask: "Continue with more questions about [area], or move to the next area?"
|
|
410
670
|
|
|
@@ -420,10 +680,18 @@ Ask 4 questions per area before offering to continue or move on. Each answer oft
|
|
|
420
680
|
- Loop: discuss new areas, then prompt again
|
|
421
681
|
- If "I'm ready for context": Proceed to write_context
|
|
422
682
|
|
|
683
|
+
**Canonical ref accumulation during discussion:**
|
|
684
|
+
When the user references a doc, spec, or ADR during any answer — e.g., "read adr-014", "check the MCP spec", "per browse-spec.md" — immediately:
|
|
685
|
+
1. Read the referenced doc (or confirm it exists)
|
|
686
|
+
2. Add it to the canonical refs accumulator with full relative path
|
|
687
|
+
3. Use what you learned from the doc to inform subsequent questions
|
|
688
|
+
|
|
689
|
+
These user-referenced docs are often MORE important than ROADMAP.md refs because they represent docs the user specifically wants downstream agents to follow. Never drop them.
|
|
690
|
+
|
|
423
691
|
**Question design:**
|
|
424
692
|
- Options should be concrete, not abstract ("Cards" not "Option A")
|
|
425
|
-
- Each answer should inform the next question
|
|
426
|
-
- If user picks "Other" to provide freeform input (e.g., "let me describe it", "something else", or an open-ended reply), ask your follow-up as plain text — NOT another AskUserQuestion. Wait for them to type at the normal prompt, then reflect their input back and confirm before resuming AskUserQuestion
|
|
693
|
+
- Each answer should inform the next question or next batch
|
|
694
|
+
- If user picks "Other" to provide freeform input (e.g., "let me describe it", "something else", or an open-ended reply), ask your follow-up as plain text — NOT another AskUserQuestion. Wait for them to type at the normal prompt, then reflect their input back and confirm before resuming AskUserQuestion or the next numbered batch.
|
|
427
695
|
|
|
428
696
|
**Scope creep handling:**
|
|
429
697
|
If user mentions something outside the phase domain:
|
|
@@ -435,11 +703,23 @@ Back to [current area]: [return to current question]"
|
|
|
435
703
|
```
|
|
436
704
|
|
|
437
705
|
Track deferred ideas internally.
|
|
706
|
+
|
|
707
|
+
**Track discussion log data internally:**
|
|
708
|
+
For each question asked, accumulate:
|
|
709
|
+
- Area name
|
|
710
|
+
- All options presented (label + description)
|
|
711
|
+
- Which option the user selected (or their free-text response)
|
|
712
|
+
- Any follow-up notes or clarifications the user provided
|
|
713
|
+
This data is used to generate DISCUSSION-LOG.md in the `write_context` step.
|
|
438
714
|
</step>
|
|
439
715
|
|
|
440
716
|
<step name="write_context">
|
|
441
717
|
Create CONTEXT.md capturing decisions made.
|
|
442
718
|
|
|
719
|
+
**Also generate DISCUSSION-LOG.md** — a full audit trail of the discuss-phase Q&A.
|
|
720
|
+
This file is for human reference only (software audits, compliance reviews). It is NOT
|
|
721
|
+
consumed by downstream agents (researcher, planner, executor).
|
|
722
|
+
|
|
443
723
|
**Find or create phase directory:**
|
|
444
724
|
|
|
445
725
|
Use values from init: `phase_dir`, `phase_slug`, `padded_phase`.
|
|
@@ -470,17 +750,43 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
|
|
|
470
750
|
## Implementation Decisions
|
|
471
751
|
|
|
472
752
|
### [Category 1 that was discussed]
|
|
473
|
-
- [Decision or preference captured]
|
|
474
|
-
- [Another decision if applicable]
|
|
753
|
+
- **D-01:** [Decision or preference captured]
|
|
754
|
+
- **D-02:** [Another decision if applicable]
|
|
475
755
|
|
|
476
756
|
### [Category 2 that was discussed]
|
|
477
|
-
- [Decision or preference captured]
|
|
757
|
+
- **D-03:** [Decision or preference captured]
|
|
478
758
|
|
|
479
759
|
### Claude's Discretion
|
|
480
760
|
[Areas where user said "you decide" — note that Claude has flexibility here]
|
|
481
761
|
|
|
762
|
+
### Folded Todos
|
|
763
|
+
[If any todos were folded into scope from the cross_reference_todos step, list them here.
|
|
764
|
+
Each entry should include the todo title, original problem, and how it fits this phase's scope.
|
|
765
|
+
If no todos were folded: omit this subsection entirely.]
|
|
766
|
+
|
|
482
767
|
</decisions>
|
|
483
768
|
|
|
769
|
+
<canonical_refs>
|
|
770
|
+
## Canonical References
|
|
771
|
+
|
|
772
|
+
**Downstream agents MUST read these before planning or implementing.**
|
|
773
|
+
|
|
774
|
+
[MANDATORY section. Write the FULL accumulated canonical refs list here.
|
|
775
|
+
Sources: ROADMAP.md refs + REQUIREMENTS.md refs + user-referenced docs during
|
|
776
|
+
discussion + any docs discovered during codebase scout. Group by topic area.
|
|
777
|
+
Every entry needs a full relative path — not just a name.]
|
|
778
|
+
|
|
779
|
+
### [Topic area 1]
|
|
780
|
+
- `path/to/adr-or-spec.md` — [What it decides/defines that's relevant]
|
|
781
|
+
- `path/to/doc.md` §N — [Specific section reference]
|
|
782
|
+
|
|
783
|
+
### [Topic area 2]
|
|
784
|
+
- `path/to/feature-doc.md` — [What this doc defines]
|
|
785
|
+
|
|
786
|
+
[If no external specs: "No external specs — requirements fully captured in decisions above"]
|
|
787
|
+
|
|
788
|
+
</canonical_refs>
|
|
789
|
+
|
|
484
790
|
<code_context>
|
|
485
791
|
## Existing Code Insights
|
|
486
792
|
|
|
@@ -509,6 +815,12 @@ mkdir -p ".planning/phases/${padded_phase}-${phase_slug}"
|
|
|
509
815
|
|
|
510
816
|
[Ideas that came up but belong in other phases. Don't lose them.]
|
|
511
817
|
|
|
818
|
+
### Reviewed Todos (not folded)
|
|
819
|
+
[If any todos were reviewed in cross_reference_todos but not folded into scope,
|
|
820
|
+
list them here so future phases know they were considered.
|
|
821
|
+
Each entry: todo title + reason it was deferred (out of scope, belongs in Phase Y, etc.)
|
|
822
|
+
If no reviewed-but-deferred todos: omit this subsection entirely.]
|
|
823
|
+
|
|
512
824
|
[If none: "None — discussion stayed within phase scope"]
|
|
513
825
|
|
|
514
826
|
</deferred>
|
|
@@ -542,18 +854,19 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
|
|
|
542
854
|
|
|
543
855
|
---
|
|
544
856
|
|
|
545
|
-
##
|
|
857
|
+
## Next Up
|
|
546
858
|
|
|
547
859
|
**Phase ${PHASE}: [Name]** — [Goal from ROADMAP.md]
|
|
548
860
|
|
|
549
|
-
`/
|
|
861
|
+
`/ccp:plan-phase ${PHASE}`
|
|
550
862
|
|
|
551
863
|
<sub>`/clear` first → fresh context window</sub>
|
|
552
864
|
|
|
553
865
|
---
|
|
554
866
|
|
|
555
867
|
**Also available:**
|
|
556
|
-
- `/
|
|
868
|
+
- `/ccp:plan-phase ${PHASE} --skip-research` — plan without research
|
|
869
|
+
- `/ccp:ui-phase ${PHASE}` — generate UI design contract before planning (if phase has frontend work)
|
|
557
870
|
- Review/edit CONTEXT.md before continuing
|
|
558
871
|
|
|
559
872
|
---
|
|
@@ -561,10 +874,54 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
|
|
|
561
874
|
</step>
|
|
562
875
|
|
|
563
876
|
<step name="git_commit">
|
|
564
|
-
|
|
877
|
+
**Write DISCUSSION-LOG.md before committing:**
|
|
878
|
+
|
|
879
|
+
**File location:** `${phase_dir}/${padded_phase}-DISCUSSION-LOG.md`
|
|
880
|
+
|
|
881
|
+
```markdown
|
|
882
|
+
# Phase [X]: [Name] - Discussion Log
|
|
883
|
+
|
|
884
|
+
> **Audit trail only.** Do not use as input to planning, research, or execution agents.
|
|
885
|
+
> Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
|
|
886
|
+
|
|
887
|
+
**Date:** [ISO date]
|
|
888
|
+
**Phase:** [phase number]-[phase name]
|
|
889
|
+
**Areas discussed:** [comma-separated list]
|
|
890
|
+
|
|
891
|
+
---
|
|
892
|
+
|
|
893
|
+
[For each gray area discussed:]
|
|
894
|
+
|
|
895
|
+
## [Area Name]
|
|
896
|
+
|
|
897
|
+
| Option | Description | Selected |
|
|
898
|
+
|--------|-------------|----------|
|
|
899
|
+
| [Option 1] | [Description from AskUserQuestion] | |
|
|
900
|
+
| [Option 2] | [Description] | ✓ |
|
|
901
|
+
| [Option 3] | [Description] | |
|
|
902
|
+
|
|
903
|
+
**User's choice:** [Selected option or free-text response]
|
|
904
|
+
**Notes:** [Any clarifications, follow-up context, or rationale the user provided]
|
|
905
|
+
|
|
906
|
+
---
|
|
907
|
+
|
|
908
|
+
[Repeat for each area]
|
|
909
|
+
|
|
910
|
+
## Claude's Discretion
|
|
911
|
+
|
|
912
|
+
[List areas where user said "you decide" or deferred to Claude]
|
|
913
|
+
|
|
914
|
+
## Deferred Ideas
|
|
915
|
+
|
|
916
|
+
[Ideas mentioned during discussion that were noted for future phases]
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
Write file.
|
|
920
|
+
|
|
921
|
+
Commit phase context and discussion log:
|
|
565
922
|
|
|
566
923
|
```bash
|
|
567
|
-
node "$HOME/.claude/
|
|
924
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" commit "docs(${padded_phase}): capture phase context" --files "${phase_dir}/${padded_phase}-CONTEXT.md" "${phase_dir}/${padded_phase}-DISCUSSION-LOG.md"
|
|
568
925
|
```
|
|
569
926
|
|
|
570
927
|
Confirm: "Committed: docs(${padded_phase}): capture phase context"
|
|
@@ -574,7 +931,7 @@ Confirm: "Committed: docs(${padded_phase}): capture phase context"
|
|
|
574
931
|
Update STATE.md with session info:
|
|
575
932
|
|
|
576
933
|
```bash
|
|
577
|
-
node "$HOME/.claude/
|
|
934
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" state record-session \
|
|
578
935
|
--stopped-at "Phase ${PHASE} context gathered" \
|
|
579
936
|
--resume-file "${phase_dir}/${padded_phase}-CONTEXT.md"
|
|
580
937
|
```
|
|
@@ -582,7 +939,7 @@ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state record-session \
|
|
|
582
939
|
Commit STATE.md:
|
|
583
940
|
|
|
584
941
|
```bash
|
|
585
|
-
node "$HOME/.claude/
|
|
942
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" commit "docs(state): record phase ${PHASE} context session" --files .planning/STATE.md
|
|
586
943
|
```
|
|
587
944
|
</step>
|
|
588
945
|
|
|
@@ -593,18 +950,18 @@ Check for auto-advance trigger:
|
|
|
593
950
|
2. **Sync chain flag with intent** — if user invoked manually (no `--auto`), clear the ephemeral chain flag from any previous interrupted `--auto` chain. This does NOT touch `workflow.auto_advance` (the user's persistent settings preference):
|
|
594
951
|
```bash
|
|
595
952
|
if [[ ! "$ARGUMENTS" =~ --auto ]]; then
|
|
596
|
-
node "$HOME/.claude/
|
|
953
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" config-set workflow._auto_chain_active false 2>/dev/null
|
|
597
954
|
fi
|
|
598
955
|
```
|
|
599
956
|
3. Read both the chain flag and user preference:
|
|
600
957
|
```bash
|
|
601
|
-
AUTO_CHAIN=$(node "$HOME/.claude/
|
|
602
|
-
AUTO_CFG=$(node "$HOME/.claude/
|
|
958
|
+
AUTO_CHAIN=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" config-get workflow._auto_chain_active 2>/dev/null || echo "false")
|
|
959
|
+
AUTO_CFG=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" config-get workflow.auto_advance 2>/dev/null || echo "false")
|
|
603
960
|
```
|
|
604
961
|
|
|
605
962
|
**If `--auto` flag present AND `AUTO_CHAIN` is not true:** Persist chain flag to config (handles direct `--auto` usage without new-project):
|
|
606
963
|
```bash
|
|
607
|
-
node "$HOME/.claude/
|
|
964
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" config-set workflow._auto_chain_active true
|
|
608
965
|
```
|
|
609
966
|
|
|
610
967
|
**If `--auto` flag present OR `AUTO_CHAIN` is true OR `AUTO_CFG` is true:**
|
|
@@ -612,7 +969,7 @@ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" config-set workflow._auto_c
|
|
|
612
969
|
Display banner:
|
|
613
970
|
```
|
|
614
971
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
615
|
-
|
|
972
|
+
Pilot ► AUTO-ADVANCING TO PLAN
|
|
616
973
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
617
974
|
|
|
618
975
|
Context captured. Launching plan-phase...
|
|
@@ -620,7 +977,7 @@ Context captured. Launching plan-phase...
|
|
|
620
977
|
|
|
621
978
|
Launch plan-phase using the Skill tool to avoid nested Task sessions (which cause runtime freezes due to deep agent nesting — see #686):
|
|
622
979
|
```
|
|
623
|
-
Skill(skill="
|
|
980
|
+
Skill(skill="ccp:plan-phase", args="${PHASE} --auto")
|
|
624
981
|
```
|
|
625
982
|
|
|
626
983
|
This keeps the auto-advance chain flat — discuss, plan, and execute all run at the same nesting level rather than spawning increasingly deep Task agents.
|
|
@@ -629,28 +986,28 @@ This keeps the auto-advance chain flat — discuss, plan, and execute all run at
|
|
|
629
986
|
- **PHASE COMPLETE** → Full chain succeeded. Display:
|
|
630
987
|
```
|
|
631
988
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
632
|
-
|
|
989
|
+
Pilot ► PHASE ${PHASE} COMPLETE
|
|
633
990
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
634
991
|
|
|
635
992
|
Auto-advance pipeline finished: discuss → plan → execute
|
|
636
993
|
|
|
637
|
-
Next: /
|
|
994
|
+
Next: /ccp:discuss-phase ${NEXT_PHASE} --auto
|
|
638
995
|
<sub>/clear first → fresh context window</sub>
|
|
639
996
|
```
|
|
640
997
|
- **PLANNING COMPLETE** → Planning done, execution didn't complete:
|
|
641
998
|
```
|
|
642
999
|
Auto-advance partial: Planning complete, execution did not finish.
|
|
643
|
-
Continue: /
|
|
1000
|
+
Continue: /ccp:execute-phase ${PHASE}
|
|
644
1001
|
```
|
|
645
1002
|
- **PLANNING INCONCLUSIVE / CHECKPOINT** → Stop chain:
|
|
646
1003
|
```
|
|
647
1004
|
Auto-advance stopped: Planning needs input.
|
|
648
|
-
Continue: /
|
|
1005
|
+
Continue: /ccp:plan-phase ${PHASE}
|
|
649
1006
|
```
|
|
650
1007
|
- **GAPS FOUND** → Stop chain:
|
|
651
1008
|
```
|
|
652
1009
|
Auto-advance stopped: Gaps found during execution.
|
|
653
|
-
Continue: /
|
|
1010
|
+
Continue: /ccp:plan-phase ${PHASE} --gaps
|
|
654
1011
|
```
|
|
655
1012
|
|
|
656
1013
|
**If neither `--auto` nor config enabled:**
|
|
@@ -669,6 +1026,7 @@ Route to `confirm_creation` step (existing behavior — show manual next steps).
|
|
|
669
1026
|
- Each selected area explored until user satisfied (with code-informed and prior-decision-informed options)
|
|
670
1027
|
- Scope creep redirected to deferred ideas
|
|
671
1028
|
- CONTEXT.md captures actual decisions, not vague vision
|
|
1029
|
+
- CONTEXT.md includes canonical_refs section with full file paths to every spec/ADR/doc downstream agents need (MANDATORY — never omit)
|
|
672
1030
|
- CONTEXT.md includes code_context section with reusable assets and patterns
|
|
673
1031
|
- Deferred ideas preserved for future phases
|
|
674
1032
|
- STATE.md updated with session info
|