@sienklogic/plan-build-run 2.19.0 → 2.19.1
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/CHANGELOG.md +1265 -320
- package/CLAUDE.md +56 -34
- package/LICENSE +2 -1
- package/README.md +412 -177
- package/bin/install.js +2752 -0
- package/dashboard/bin/cli.cjs +96 -0
- package/dashboard/bin/stop.cjs +129 -0
- package/dashboard/eslint.config.js +37 -0
- package/dashboard/index.html +20 -0
- package/dashboard/package.json +27 -25
- package/dashboard/server/index.js +142 -0
- package/dashboard/server/lib/frontmatter.js +92 -0
- package/dashboard/server/middleware/static.js +35 -0
- package/dashboard/server/package.json +16 -0
- package/dashboard/server/routes/agents.js +213 -0
- package/dashboard/server/routes/config.js +64 -0
- package/dashboard/server/routes/health.js +95 -0
- package/dashboard/server/routes/incidents.js +78 -0
- package/dashboard/server/routes/intel.js +69 -0
- package/dashboard/server/routes/memory.js +107 -0
- package/dashboard/server/routes/planning.js +234 -0
- package/dashboard/server/routes/progress.js +77 -0
- package/dashboard/server/routes/projects.js +36 -0
- package/dashboard/server/routes/requirements.js +40 -0
- package/dashboard/server/routes/roadmap.js +69 -0
- package/dashboard/server/routes/sessions.js +70 -0
- package/dashboard/server/routes/status.js +25 -0
- package/dashboard/server/routes/telemetry.js +214 -0
- package/dashboard/server/services/file-watcher.js +105 -0
- package/dashboard/server/services/planning-reader.js +741 -0
- package/dashboard/server/test/cli.test.js +34 -0
- package/dashboard/server/test/frontmatter.test.js +104 -0
- package/dashboard/server/test/isolation.test.js +32 -0
- package/dashboard/server/test/planning-reader.test.js +151 -0
- package/dashboard/server/test/routes.test.js +91 -0
- package/dashboard/server/test/ws.test.js +81 -0
- package/dashboard/server/ws.js +96 -0
- package/dashboard/src/App.jsx +165 -0
- package/dashboard/src/components/charts/BudgetBars.jsx +42 -0
- package/dashboard/src/components/charts/ContextRadar.jsx +34 -0
- package/dashboard/src/components/charts/PhaseDonut.jsx +66 -0
- package/dashboard/src/components/charts/SuccessTrend.jsx +45 -0
- package/dashboard/src/components/charts/TokenChart.jsx +55 -0
- package/dashboard/src/components/charts/index.js +5 -0
- package/dashboard/src/components/config/CfgSection.jsx +93 -0
- package/dashboard/src/components/layout/Header.jsx +89 -0
- package/dashboard/src/components/layout/ProjectSwitcher.jsx +160 -0
- package/dashboard/src/components/layout/Sidebar.jsx +161 -0
- package/dashboard/src/components/ui/AutoModeBanner.jsx +138 -0
- package/dashboard/src/components/ui/BackButton.jsx +27 -0
- package/dashboard/src/components/ui/Badge.jsx +27 -0
- package/dashboard/src/components/ui/Card.jsx +23 -0
- package/dashboard/src/components/ui/ChartTooltip.jsx +48 -0
- package/dashboard/src/components/ui/CheckpointBox.jsx +110 -0
- package/dashboard/src/components/ui/CodeBlock.jsx +27 -0
- package/dashboard/src/components/ui/ConfidenceBadge.jsx +20 -0
- package/dashboard/src/components/ui/ConfirmModal.jsx +161 -0
- package/dashboard/src/components/ui/ConnectionBanner.jsx +60 -0
- package/dashboard/src/components/ui/ErrorBoundary.jsx +106 -0
- package/dashboard/src/components/ui/ErrorBox.jsx +107 -0
- package/dashboard/src/components/ui/KeyValue.jsx +33 -0
- package/dashboard/src/components/ui/LoadingSkeleton.jsx +84 -0
- package/dashboard/src/components/ui/MetricCard.jsx +58 -0
- package/dashboard/src/components/ui/NextUpBlock.jsx +92 -0
- package/dashboard/src/components/ui/NumberInput.jsx +44 -0
- package/dashboard/src/components/ui/PBRBanner.jsx +47 -0
- package/dashboard/src/components/ui/PipelineView.jsx +130 -0
- package/dashboard/src/components/ui/ProgressBar.jsx +28 -0
- package/dashboard/src/components/ui/ProgressDisplay.jsx +47 -0
- package/dashboard/src/components/ui/QualityGateBadge.jsx +15 -0
- package/dashboard/src/components/ui/SectionTitle.jsx +35 -0
- package/dashboard/src/components/ui/SelectInput.jsx +45 -0
- package/dashboard/src/components/ui/StatusDot.jsx +51 -0
- package/dashboard/src/components/ui/StatusSymbol.jsx +49 -0
- package/dashboard/src/components/ui/TabBar.jsx +41 -0
- package/dashboard/src/components/ui/TextInput.jsx +42 -0
- package/dashboard/src/components/ui/Toast.jsx +117 -0
- package/dashboard/src/components/ui/Toggle.jsx +70 -0
- package/dashboard/src/components/ui/index.js +29 -0
- package/dashboard/src/hooks/useDocumentTitle.js +16 -0
- package/dashboard/src/hooks/useFetch.js +50 -0
- package/dashboard/src/hooks/useToast.jsx +43 -0
- package/dashboard/src/hooks/useWebSocket.js +103 -0
- package/dashboard/src/lib/api.js +112 -0
- package/dashboard/src/lib/configSchema.js +189 -0
- package/dashboard/src/lib/constants.js +22 -0
- package/dashboard/src/main.jsx +15 -0
- package/dashboard/src/pages/AgentsPage.jsx +191 -0
- package/dashboard/src/pages/ConfigPage.jsx +298 -0
- package/dashboard/src/pages/HooksPage.jsx +412 -0
- package/dashboard/src/pages/IncidentsPage.jsx +135 -0
- package/dashboard/src/pages/IntelPage.jsx +193 -0
- package/dashboard/src/pages/LiveFeed.jsx +274 -0
- package/dashboard/src/pages/MemoryPage.jsx +107 -0
- package/dashboard/src/pages/OnboardingPage.jsx +117 -0
- package/dashboard/src/pages/Overview.jsx +360 -0
- package/dashboard/src/pages/PhaseDetailView.jsx +216 -0
- package/dashboard/src/pages/PlanningPage.jsx +181 -0
- package/dashboard/src/pages/ProgressPage.jsx +249 -0
- package/dashboard/src/pages/ResearchPage.jsx +129 -0
- package/dashboard/src/pages/RoadmapPage.jsx +251 -0
- package/dashboard/src/pages/SessionsPage.jsx +117 -0
- package/dashboard/src/pages/Telemetry.jsx +166 -0
- package/dashboard/src/pages/planning/DecisionsTab.jsx +153 -0
- package/dashboard/src/pages/planning/FilesTab.jsx +420 -0
- package/dashboard/src/pages/planning/MilestoneDetail.jsx +319 -0
- package/dashboard/src/pages/planning/MilestonesTab.jsx +151 -0
- package/dashboard/src/pages/planning/NotesTab.jsx +251 -0
- package/dashboard/src/pages/planning/PhasesTab.jsx +218 -0
- package/dashboard/src/pages/planning/QuickTab.jsx +50 -0
- package/dashboard/src/pages/planning/ResearchTab.jsx +103 -0
- package/dashboard/src/pages/planning/TodosTab.jsx +297 -0
- package/dashboard/src/theme/ThemeProvider.jsx +38 -0
- package/dashboard/src/theme/tokens.js +17 -0
- package/dashboard/tests/components/ConfirmModal.test.jsx +179 -0
- package/dashboard/tests/components/ConnectionBanner.test.jsx +37 -0
- package/dashboard/tests/components/ErrorBoundary.test.jsx +59 -0
- package/dashboard/tests/components/LoadingSkeleton.test.jsx +46 -0
- package/dashboard/tests/components/ToastContainer.test.jsx +47 -0
- package/dashboard/tests/components/Toggle.test.jsx +61 -0
- package/dashboard/tests/hooks/useFetch.test.jsx +77 -0
- package/dashboard/tests/hooks/useToast.test.jsx +78 -0
- package/dashboard/tests/hooks/useWebSocket.test.jsx +128 -0
- package/dashboard/tests/pages/ConfigPage.test.jsx +199 -0
- package/dashboard/tests/pages/PlanningPage.test.jsx +119 -0
- package/dashboard/tests/pages/planning/FilesTab.test.jsx +198 -0
- package/dashboard/tests/pages/planning/NotesTab.test.jsx +178 -0
- package/dashboard/tests/pages/planning/TodosTab.test.jsx +188 -0
- package/dashboard/tests/performance.test.jsx +46 -0
- package/dashboard/tests/routes/config.test.js +98 -0
- package/dashboard/tests/routes/health.test.js +40 -0
- package/dashboard/tests/routes/planning.test.js +112 -0
- package/dashboard/tests/routes/roadmap.test.js +91 -0
- package/dashboard/tests/routes/status.test.js +131 -0
- package/dashboard/tests/server/planning-reader.test.js +153 -0
- package/dashboard/tests/setup.js +7 -0
- package/dashboard/vite.config.js +41 -0
- package/package.json +55 -40
- package/plan-build-run/bin/config-schema.json +1420 -0
- package/plugins/pbr/.claude-plugin/plugin.json +1 -1
- package/plugins/pbr/CLAUDE.md +19 -0
- package/plugins/pbr/UI-CONSISTENCY-GAPS.md +1 -1
- package/plugins/pbr/agents/advisor-researcher.md +100 -0
- package/plugins/pbr/agents/audit.md +205 -89
- package/plugins/pbr/agents/codebase-mapper.md +158 -23
- package/plugins/pbr/agents/debugger.md +216 -34
- package/plugins/pbr/agents/dev-sync.md +206 -0
- package/plugins/pbr/agents/executor.md +717 -39
- package/plugins/pbr/agents/general.md +71 -6
- package/plugins/pbr/agents/integration-checker.md +146 -30
- package/plugins/pbr/agents/intel-updater.md +332 -0
- package/plugins/pbr/agents/nyquist-auditor.md +253 -0
- package/plugins/pbr/agents/plan-checker.md +265 -65
- package/plugins/pbr/agents/planner.md +440 -42
- package/plugins/pbr/agents/researcher.md +223 -36
- package/plugins/pbr/agents/roadmapper.md +397 -0
- package/plugins/pbr/agents/synthesizer.md +170 -26
- package/plugins/pbr/agents/ui-checker.md +203 -0
- package/plugins/pbr/agents/ui-researcher.md +224 -0
- package/plugins/pbr/agents/verifier.md +495 -47
- package/plugins/pbr/commands/add-phase.md +75 -0
- package/plugins/pbr/commands/add-todo.md +8 -0
- package/plugins/pbr/commands/audit-fix.md +5 -0
- package/plugins/pbr/commands/audit-milestone.md +8 -0
- package/plugins/pbr/commands/autonomous.md +5 -0
- package/plugins/pbr/commands/backlog.md +6 -0
- package/plugins/pbr/commands/check-todos.md +8 -0
- package/plugins/pbr/commands/complete-milestone.md +8 -0
- package/plugins/pbr/commands/config.md +1 -1
- package/plugins/pbr/commands/discuss-phase.md +6 -0
- package/plugins/pbr/commands/do.md +5 -0
- package/plugins/pbr/commands/execute-phase.md +6 -0
- package/plugins/pbr/commands/fast.md +6 -0
- package/plugins/pbr/commands/forensics.md +6 -0
- package/plugins/pbr/commands/import.md +1 -1
- package/plugins/pbr/commands/insert-phase.md +65 -0
- package/plugins/pbr/commands/intel.md +5 -0
- package/plugins/pbr/commands/join-discord.md +11 -0
- package/plugins/pbr/commands/list-phase-assumptions.md +5 -0
- package/plugins/pbr/commands/map-codebase.md +6 -0
- package/plugins/pbr/commands/milestone-summary.md +6 -0
- package/plugins/pbr/commands/new-milestone.md +8 -0
- package/plugins/pbr/commands/new-project.md +6 -0
- package/plugins/pbr/commands/pause-work.md +5 -0
- package/plugins/pbr/commands/plan-milestone-gaps.md +7 -0
- package/plugins/pbr/commands/plan-phase.md +6 -0
- package/plugins/pbr/commands/plant-seed.md +6 -0
- package/plugins/pbr/commands/profile-user.md +5 -0
- package/plugins/pbr/commands/profile.md +5 -0
- package/plugins/pbr/commands/progress.md +6 -0
- package/plugins/pbr/commands/quick.md +1 -1
- package/plugins/pbr/commands/reapply-patches.md +47 -0
- package/plugins/pbr/commands/release.md +6 -0
- package/plugins/pbr/commands/remove-phase.md +66 -0
- package/plugins/pbr/commands/research-phase.md +59 -0
- package/plugins/pbr/commands/resume-work.md +5 -0
- package/plugins/pbr/commands/seed.md +6 -0
- package/plugins/pbr/commands/session-report.md +5 -0
- package/plugins/pbr/commands/set-profile.md +6 -0
- package/plugins/pbr/commands/settings.md +5 -0
- package/plugins/pbr/commands/setup.md +1 -1
- package/plugins/pbr/commands/ship.md +5 -0
- package/plugins/pbr/commands/stats.md +6 -0
- package/plugins/pbr/commands/test.md +5 -0
- package/plugins/pbr/commands/thread.md +6 -0
- package/plugins/pbr/commands/todo.md +1 -1
- package/plugins/pbr/commands/ui-phase.md +5 -0
- package/plugins/pbr/commands/ui-review.md +5 -0
- package/plugins/pbr/commands/undo.md +5 -0
- package/plugins/pbr/commands/update.md +37 -0
- package/plugins/pbr/commands/validate-phase.md +5 -0
- package/plugins/pbr/commands/verify-work.md +6 -0
- package/plugins/pbr/dashboard/package-lock.json +6 -0
- package/plugins/pbr/dist/architecture-guard.js +59 -0
- package/plugins/pbr/dist/audit-dimensions.js +556 -0
- package/plugins/pbr/dist/auto-continue.js +277 -0
- package/plugins/pbr/dist/block-skill-self-read.js +124 -0
- package/plugins/pbr/dist/check-agent-state-write.js +63 -0
- package/plugins/pbr/dist/check-config-change.js +162 -0
- package/plugins/pbr/dist/check-cross-plugin-sync.js +93 -0
- package/plugins/pbr/dist/check-dangerous-commands.js +193 -0
- package/plugins/pbr/dist/check-direct-state-write.js +37 -0
- package/plugins/pbr/dist/check-doc-sprawl.js +102 -0
- package/plugins/pbr/dist/check-phase-boundary.js +191 -0
- package/plugins/pbr/dist/check-plan-format.js +241 -0
- package/plugins/pbr/dist/check-read-first.js +345 -0
- package/plugins/pbr/dist/check-roadmap-sync.js +503 -0
- package/plugins/pbr/dist/check-skill-workflow.js +354 -0
- package/plugins/pbr/dist/check-state-sync.js +658 -0
- package/plugins/pbr/dist/check-subagent-output.js +452 -0
- package/plugins/pbr/dist/check-summary-gate.js +199 -0
- package/plugins/pbr/dist/context-bridge.js +425 -0
- package/plugins/pbr/dist/context-budget-check.js +442 -0
- package/plugins/pbr/dist/context-quality.js +271 -0
- package/plugins/pbr/dist/enforce-context-budget.js +138 -0
- package/plugins/pbr/dist/enforce-pbr-workflow.js +277 -0
- package/plugins/pbr/dist/event-handler.js +202 -0
- package/plugins/pbr/dist/event-logger.js +125 -0
- package/plugins/pbr/dist/feedback-loop.js +172 -0
- package/plugins/pbr/dist/graph-update.js +422 -0
- package/plugins/pbr/dist/hook-logger.js +114 -0
- package/plugins/pbr/dist/hook-server-client.js +361 -0
- package/plugins/pbr/dist/hook-server.js +606 -0
- package/plugins/pbr/dist/hooks-schema.json +87 -0
- package/plugins/pbr/dist/instructions-loaded.js +173 -0
- package/plugins/pbr/dist/intercept-plan-mode.js +81 -0
- package/plugins/pbr/dist/log-notification.js +131 -0
- package/plugins/pbr/dist/log-subagent.js +349 -0
- package/plugins/pbr/dist/log-tool-failure.js +140 -0
- package/plugins/pbr/dist/milestone-learnings.js +569 -0
- package/plugins/pbr/dist/pbr-tools.js +2044 -0
- package/plugins/pbr/dist/post-bash-triage.js +154 -0
- package/plugins/pbr/dist/post-compact.js +135 -0
- package/plugins/pbr/dist/post-hoc.js +286 -0
- package/plugins/pbr/dist/post-write-dispatch.js +279 -0
- package/plugins/pbr/dist/post-write-quality.js +208 -0
- package/plugins/pbr/dist/pre-bash-dispatch.js +218 -0
- package/plugins/pbr/dist/pre-skill-dispatch.js +114 -0
- package/plugins/pbr/dist/pre-task-dispatch.js +297 -0
- package/plugins/pbr/dist/pre-write-dispatch.js +234 -0
- package/plugins/pbr/dist/progress-tracker.js +198 -0
- package/plugins/pbr/dist/prompt-guard.js +114 -0
- package/plugins/pbr/dist/prompt-routing.js +209 -0
- package/plugins/pbr/dist/quick-status.js +179 -0
- package/plugins/pbr/dist/record-incident.js +37 -0
- package/plugins/pbr/dist/run-hook.js +144 -0
- package/plugins/pbr/dist/session-cleanup.js +683 -0
- package/plugins/pbr/dist/session-tracker.js +124 -0
- package/plugins/pbr/dist/status-line.js +847 -0
- package/plugins/pbr/dist/suggest-compact.js +315 -0
- package/plugins/pbr/dist/sync-context-to-claude.js +100 -0
- package/plugins/pbr/dist/task-completed.js +206 -0
- package/plugins/pbr/dist/track-context-budget.js +432 -0
- package/plugins/pbr/dist/track-user-gates.js +88 -0
- package/plugins/pbr/dist/trust-tracker.js +193 -0
- package/plugins/pbr/dist/validate-commit.js +271 -0
- package/plugins/pbr/dist/validate-skill-args.js +222 -0
- package/plugins/pbr/dist/validate-task.js +301 -0
- package/plugins/pbr/dist/worktree-create.js +144 -0
- package/plugins/pbr/dist/worktree-remove.js +147 -0
- package/plugins/pbr/hooks/hooks.json +143 -60
- package/plugins/pbr/references/agent-contracts.md +39 -8
- package/plugins/pbr/references/agent-teams.md +3 -3
- package/plugins/pbr/references/archive/checkpoints.md +189 -0
- package/plugins/pbr/references/archive/context-quality-tiers.md +45 -0
- package/plugins/pbr/references/archive/hook-ordering.md +89 -0
- package/plugins/pbr/references/archive/limitations.md +106 -0
- package/plugins/pbr/references/archive/pbr-rules.md +194 -0
- package/plugins/pbr/references/archive/pbr-tools-cli.md +415 -0
- package/plugins/pbr/references/archive/pretooluse-jsonl-behavior.md +58 -0
- package/plugins/pbr/references/archive/signal-files.md +41 -0
- package/plugins/pbr/references/archive/tmux-setup.md +288 -0
- package/plugins/pbr/references/archive/verification-matrix.md +34 -0
- package/plugins/pbr/references/archive/verification-patterns.md +277 -0
- package/plugins/pbr/references/archive/worktree-sparse-checkout.md +86 -0
- package/plugins/pbr/references/behavioral-contexts.md +53 -0
- package/plugins/pbr/references/checkpoints.md +723 -104
- package/plugins/pbr/references/config-reference.md +472 -10
- package/plugins/pbr/references/continuation-format.md +1 -0
- package/plugins/pbr/references/decimal-phase-calculation.md +65 -0
- package/plugins/pbr/references/deviation-rules.md +12 -0
- package/plugins/pbr/references/git-integration.md +110 -27
- package/plugins/pbr/references/git-planning-commit.md +35 -0
- package/plugins/pbr/references/model-profile-resolution.md +34 -0
- package/plugins/pbr/references/model-profiles.md +90 -7
- package/plugins/pbr/references/model-selection.md +1 -1
- package/plugins/pbr/references/node-repair.md +48 -0
- package/plugins/pbr/references/plan-authoring.md +65 -0
- package/plugins/pbr/references/plan-format.md +161 -10
- package/plugins/pbr/references/questioning.md +138 -49
- package/plugins/pbr/references/reading-verification.md +4 -4
- package/plugins/pbr/references/tdd.md +263 -0
- package/plugins/pbr/references/ui-brand.md +449 -0
- package/plugins/pbr/references/verification-overrides.md +39 -0
- package/plugins/pbr/references/verification-patterns.md +529 -113
- package/plugins/pbr/scripts/architecture-guard.js +59 -0
- package/plugins/pbr/scripts/audit-checks/behavioral-compliance.js +2098 -0
- package/plugins/pbr/scripts/audit-checks/error-analysis.js +989 -0
- package/plugins/pbr/scripts/audit-checks/feature-verification.js +723 -0
- package/plugins/pbr/scripts/audit-checks/index.js +433 -0
- package/plugins/pbr/scripts/audit-checks/infrastructure.js +816 -0
- package/plugins/pbr/scripts/audit-checks/quality-metrics.js +452 -0
- package/plugins/pbr/scripts/audit-checks/session-quality.js +980 -0
- package/plugins/pbr/scripts/audit-checks/si-agent-hook-config-checks.js +466 -0
- package/plugins/pbr/scripts/audit-checks/si-cross-cutting-checks.js +272 -0
- package/plugins/pbr/scripts/audit-checks/si-skill-checks.js +424 -0
- package/plugins/pbr/scripts/audit-checks/workflow-compliance.js +1211 -0
- package/plugins/pbr/scripts/audit-dimensions.js +556 -0
- package/plugins/pbr/scripts/auto-continue.js +192 -31
- package/plugins/pbr/scripts/block-skill-self-read.js +124 -0
- package/plugins/pbr/scripts/check-agent-state-write.js +63 -0
- package/plugins/pbr/scripts/check-config-change.js +162 -0
- package/plugins/pbr/scripts/check-cross-plugin-sync.js +93 -0
- package/plugins/pbr/scripts/check-dangerous-commands.js +18 -5
- package/plugins/pbr/scripts/check-direct-state-write.js +37 -0
- package/plugins/pbr/scripts/check-phase-boundary.js +3 -8
- package/plugins/pbr/scripts/check-plan-format.js +166 -277
- package/plugins/pbr/scripts/check-read-first.js +345 -0
- package/plugins/pbr/scripts/check-roadmap-sync.js +167 -10
- package/plugins/pbr/scripts/check-skill-workflow.js +24 -27
- package/plugins/pbr/scripts/check-state-sync.js +339 -215
- package/plugins/pbr/scripts/check-subagent-output.js +338 -276
- package/plugins/pbr/scripts/check-summary-gate.js +2 -1
- package/plugins/pbr/scripts/config-schema.json +1247 -95
- package/plugins/pbr/scripts/context-bridge.js +425 -0
- package/plugins/pbr/scripts/context-budget-check.js +169 -14
- package/plugins/pbr/scripts/context-quality.js +271 -0
- package/plugins/pbr/scripts/enforce-context-budget.js +138 -0
- package/plugins/pbr/scripts/enforce-pbr-workflow.js +277 -0
- package/plugins/pbr/scripts/event-handler.js +127 -87
- package/plugins/pbr/scripts/event-logger.js +58 -25
- package/plugins/pbr/scripts/feedback-loop.js +172 -0
- package/plugins/pbr/scripts/graph-update.js +422 -0
- package/plugins/pbr/scripts/hook-logger.js +69 -35
- package/plugins/pbr/scripts/hook-server-client.js +361 -0
- package/plugins/pbr/scripts/hook-server.js +606 -0
- package/plugins/pbr/scripts/hooks-schema.json +13 -5
- package/plugins/pbr/scripts/instructions-loaded.js +173 -0
- package/plugins/pbr/scripts/intent-router.cjs +147 -0
- package/plugins/pbr/scripts/intercept-plan-mode.js +52 -18
- package/plugins/pbr/scripts/lib/alternatives.js +203 -0
- package/plugins/pbr/scripts/lib/audit.js +65 -0
- package/plugins/pbr/scripts/lib/auto-cleanup.js +221 -0
- package/plugins/pbr/scripts/lib/auto-verify.js +103 -0
- package/plugins/pbr/scripts/lib/autonomy.js +91 -0
- package/plugins/pbr/scripts/lib/build.js +719 -0
- package/plugins/pbr/scripts/lib/ci-fix-loop.js +228 -0
- package/plugins/pbr/scripts/lib/circuit-state.js +133 -0
- package/plugins/pbr/scripts/lib/commands.js +483 -0
- package/plugins/pbr/scripts/lib/completion.js +377 -0
- package/plugins/pbr/scripts/lib/compound.js +216 -0
- package/plugins/pbr/scripts/lib/config.js +1315 -0
- package/plugins/pbr/scripts/lib/context.js +254 -0
- package/plugins/pbr/scripts/lib/contextual-help.js +207 -0
- package/plugins/pbr/scripts/lib/convention-detector.js +413 -0
- package/plugins/pbr/scripts/lib/core.js +1569 -0
- package/plugins/pbr/scripts/lib/dashboard-launch.js +364 -0
- package/plugins/pbr/scripts/lib/data-hygiene.js +179 -0
- package/plugins/pbr/scripts/lib/decision-extraction.js +183 -0
- package/plugins/pbr/scripts/lib/decisions.js +194 -0
- package/plugins/pbr/scripts/lib/dependency-break.js +147 -0
- package/plugins/pbr/scripts/lib/format-validators.js +1050 -0
- package/plugins/pbr/scripts/lib/frontmatter.js +302 -0
- package/plugins/pbr/scripts/lib/gates/advisories.js +129 -0
- package/plugins/pbr/scripts/lib/gates/build-dependency.js +115 -0
- package/plugins/pbr/scripts/lib/gates/build-executor.js +104 -0
- package/plugins/pbr/scripts/lib/gates/doc-existence.js +46 -0
- package/plugins/pbr/scripts/lib/gates/helpers.js +93 -0
- package/plugins/pbr/scripts/lib/gates/inline-execution.js +185 -0
- package/plugins/pbr/scripts/lib/gates/milestone-complete.js +136 -0
- package/plugins/pbr/scripts/lib/gates/milestone-summary.js +119 -0
- package/plugins/pbr/scripts/lib/gates/multi-phase-loader.js +147 -0
- package/plugins/pbr/scripts/lib/gates/plan-executor.js +36 -0
- package/plugins/pbr/scripts/lib/gates/plan-validation.js +114 -0
- package/plugins/pbr/scripts/lib/gates/quick-executor.js +76 -0
- package/plugins/pbr/scripts/lib/gates/review-planner.js +61 -0
- package/plugins/pbr/scripts/lib/gates/review-verifier.js +69 -0
- package/plugins/pbr/scripts/lib/gates/rich-agent-context.js +143 -0
- package/plugins/pbr/scripts/lib/gates/user-confirmation.js +93 -0
- package/plugins/pbr/scripts/lib/graph-cli.js +89 -0
- package/plugins/pbr/scripts/lib/graph.js +553 -0
- package/plugins/pbr/scripts/lib/health-checks.js +107 -0
- package/plugins/pbr/scripts/lib/health-phase06.js +120 -0
- package/plugins/pbr/scripts/lib/health.js +133 -0
- package/plugins/pbr/scripts/lib/help.js +151 -0
- package/plugins/pbr/scripts/lib/history.js +150 -0
- package/plugins/pbr/scripts/lib/hypothesis-runner.js +127 -0
- package/plugins/pbr/scripts/lib/impact-analysis.js +319 -0
- package/plugins/pbr/scripts/lib/incidents.js +190 -0
- package/plugins/pbr/scripts/lib/init.js +643 -0
- package/plugins/pbr/scripts/lib/insights-parser.js +320 -0
- package/plugins/pbr/scripts/lib/intel.js +653 -0
- package/plugins/pbr/scripts/lib/learnings.js +511 -0
- package/plugins/pbr/scripts/lib/local-llm/client.js +237 -0
- package/plugins/pbr/scripts/lib/local-llm/health.js +12 -0
- package/plugins/pbr/scripts/lib/local-llm/index.js +89 -0
- package/plugins/pbr/scripts/lib/local-llm/metrics.js +20 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/classify-artifact.js +4 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/classify-commit.js +4 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/classify-error.js +4 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/classify-file-intent.js +4 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/score-source.js +72 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/summarize-context.js +62 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/triage-test-output.js +12 -0
- package/plugins/pbr/scripts/lib/local-llm/operations/validate-task.js +4 -0
- package/plugins/pbr/scripts/lib/local-llm/router.js +101 -0
- package/plugins/pbr/scripts/lib/local-llm/shadow.js +60 -0
- package/plugins/pbr/scripts/lib/local-llm/threshold-tuner.js +118 -0
- package/plugins/pbr/scripts/lib/migrate.js +298 -0
- package/plugins/pbr/scripts/lib/milestone.js +306 -0
- package/plugins/pbr/scripts/lib/negative-knowledge.js +194 -0
- package/plugins/pbr/scripts/lib/notification-throttle.js +141 -0
- package/plugins/pbr/scripts/lib/onboarding-generator.js +288 -0
- package/plugins/pbr/scripts/lib/parse-args.js +134 -0
- package/plugins/pbr/scripts/lib/pattern-routing.js +55 -0
- package/plugins/pbr/scripts/lib/patterns.js +272 -0
- package/plugins/pbr/scripts/lib/perf.js +190 -0
- package/plugins/pbr/scripts/lib/phase.js +1027 -0
- package/plugins/pbr/scripts/lib/pid-lock.js +154 -0
- package/plugins/pbr/scripts/lib/post-hoc.js +160 -0
- package/plugins/pbr/scripts/lib/pre-commit-checks.js +220 -0
- package/plugins/pbr/scripts/lib/pre-research.js +133 -0
- package/plugins/pbr/scripts/lib/preview.js +174 -0
- package/plugins/pbr/scripts/lib/progress-visualization.js +296 -0
- package/plugins/pbr/scripts/lib/quick-init.js +131 -0
- package/plugins/pbr/scripts/lib/reference.js +236 -0
- package/plugins/pbr/scripts/lib/requirements.js +153 -0
- package/plugins/pbr/scripts/lib/resolve-root.js +66 -0
- package/plugins/pbr/scripts/lib/reverse-spec.js +259 -0
- package/plugins/pbr/scripts/lib/roadmap.js +1113 -0
- package/plugins/pbr/scripts/lib/security-scan.js +200 -0
- package/plugins/pbr/scripts/lib/session-briefing.js +895 -0
- package/plugins/pbr/scripts/lib/skill-section.js +99 -0
- package/plugins/pbr/scripts/lib/smart-next-task.js +207 -0
- package/plugins/pbr/scripts/lib/snapshot-manager.js +232 -0
- package/plugins/pbr/scripts/lib/spec-diff.js +209 -0
- package/plugins/pbr/scripts/lib/spec-engine.js +189 -0
- package/plugins/pbr/scripts/lib/spot-check.js +642 -0
- package/plugins/pbr/scripts/lib/state-queue.js +171 -0
- package/plugins/pbr/scripts/lib/state.js +1187 -0
- package/plugins/pbr/scripts/lib/status-render.js +511 -0
- package/plugins/pbr/scripts/lib/step-verify.js +149 -0
- package/plugins/pbr/scripts/lib/subagent-validators.js +1059 -0
- package/plugins/pbr/scripts/lib/suggest-next.js +435 -0
- package/plugins/pbr/scripts/lib/team-composer.js +87 -0
- package/plugins/pbr/scripts/lib/team-coordinator.js +153 -0
- package/plugins/pbr/scripts/lib/tech-debt-scanner.js +116 -0
- package/plugins/pbr/scripts/lib/template.js +222 -0
- package/plugins/pbr/scripts/lib/templates.js +362 -0
- package/plugins/pbr/scripts/lib/test-cache.js +54 -0
- package/plugins/pbr/scripts/lib/test-selection.js +163 -0
- package/plugins/pbr/scripts/lib/todo.js +300 -0
- package/plugins/pbr/scripts/lib/trust-gate.js +84 -0
- package/plugins/pbr/scripts/lib/verify.js +1473 -0
- package/plugins/pbr/scripts/lib/wiring-check.js +196 -0
- package/plugins/pbr/scripts/log-notification.js +131 -0
- package/plugins/pbr/scripts/log-subagent.js +203 -18
- package/plugins/pbr/scripts/log-tool-failure.js +60 -8
- package/plugins/pbr/scripts/milestone-learnings.js +569 -0
- package/plugins/pbr/scripts/package.json +1 -1
- package/plugins/pbr/scripts/pbr-tools.js +1833 -1167
- package/plugins/pbr/scripts/post-bash-triage.js +154 -0
- package/plugins/pbr/scripts/post-compact.js +135 -0
- package/plugins/pbr/scripts/post-hoc.js +286 -0
- package/plugins/pbr/scripts/post-write-dispatch.js +237 -31
- package/plugins/pbr/scripts/post-write-quality.js +4 -3
- package/plugins/pbr/scripts/pre-bash-dispatch.js +154 -52
- package/plugins/pbr/scripts/pre-skill-dispatch.js +114 -0
- package/plugins/pbr/scripts/pre-task-dispatch.js +297 -0
- package/plugins/pbr/scripts/pre-write-dispatch.js +170 -73
- package/plugins/pbr/scripts/progress-tracker.js +144 -307
- package/plugins/pbr/scripts/prompt-guard.js +114 -0
- package/plugins/pbr/scripts/prompt-routing.js +209 -0
- package/plugins/pbr/scripts/quick-status.js +179 -0
- package/plugins/pbr/scripts/record-incident.js +37 -0
- package/plugins/pbr/scripts/risk-classifier.cjs +123 -0
- package/plugins/pbr/scripts/run-hook.js +62 -10
- package/plugins/pbr/scripts/session-cleanup.js +458 -29
- package/plugins/pbr/scripts/session-tracker.js +124 -0
- package/plugins/pbr/scripts/status-line.js +591 -32
- package/plugins/pbr/scripts/suggest-compact.js +203 -7
- package/plugins/pbr/scripts/sync-context-to-claude.js +100 -0
- package/plugins/pbr/scripts/task-completed.js +165 -4
- package/plugins/pbr/scripts/test/config.test.js +126 -0
- package/plugins/pbr/scripts/test/cross-platform.test.js +131 -0
- package/plugins/pbr/scripts/test/fixtures/config.json +20 -0
- package/plugins/pbr/scripts/test/fixtures/plan.md +54 -0
- package/plugins/pbr/scripts/test/fixtures/project.md +30 -0
- package/plugins/pbr/scripts/test/fixtures/roadmap.md +55 -0
- package/plugins/pbr/scripts/test/fixtures/state.md +60 -0
- package/plugins/pbr/scripts/test/fixtures/summary.md +35 -0
- package/plugins/pbr/scripts/test/fixtures.test.js +184 -0
- package/plugins/pbr/scripts/test/phase.test.js +142 -0
- package/plugins/pbr/scripts/test/roadmap.test.js +96 -0
- package/plugins/pbr/scripts/test/state.test.js +163 -0
- package/plugins/pbr/scripts/track-context-budget.js +368 -99
- package/plugins/pbr/scripts/track-user-gates.js +88 -0
- package/plugins/pbr/scripts/trust-tracker.js +193 -0
- package/plugins/pbr/scripts/validate-commit.js +97 -26
- package/plugins/pbr/scripts/validate-skill-args.js +87 -15
- package/plugins/pbr/scripts/validate-task.js +112 -626
- package/plugins/pbr/scripts/worktree-create.js +144 -0
- package/plugins/pbr/scripts/worktree-remove.js +147 -0
- package/plugins/pbr/skills/audit/SKILL.md +195 -24
- package/plugins/pbr/skills/audit-fix/SKILL.md +326 -0
- package/plugins/pbr/skills/autonomous/SKILL.md +545 -0
- package/plugins/pbr/skills/backlog/SKILL.md +56 -0
- package/plugins/pbr/skills/begin/SKILL.md +507 -153
- package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +1 -2
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +415 -36
- package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +28 -0
- package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +28 -3
- package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +33 -5
- package/plugins/pbr/skills/build/SKILL.md +1040 -354
- package/plugins/pbr/skills/build/templates/continuation-prompt.md.tmpl +26 -0
- package/plugins/pbr/skills/build/templates/executor-prompt.md.tmpl +77 -0
- package/plugins/pbr/skills/build/templates/inline-verifier-prompt.md.tmpl +33 -0
- package/plugins/pbr/skills/config/SKILL.md +111 -9
- package/plugins/pbr/skills/continue/SKILL.md +113 -33
- package/plugins/pbr/skills/dashboard/SKILL.md +21 -9
- package/plugins/pbr/skills/debug/SKILL.md +70 -12
- package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +12 -1
- package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +12 -5
- package/plugins/pbr/skills/discuss/SKILL.md +206 -25
- package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +21 -1
- package/plugins/pbr/skills/do/SKILL.md +119 -24
- package/plugins/pbr/skills/explore/SKILL.md +95 -20
- package/plugins/pbr/skills/fast/SKILL.md +94 -0
- package/plugins/pbr/skills/forensics/SKILL.md +144 -0
- package/plugins/pbr/skills/health/SKILL.md +35 -117
- package/plugins/pbr/skills/help/SKILL.md +83 -101
- package/plugins/pbr/skills/import/SKILL.md +332 -13
- package/plugins/pbr/skills/intel/SKILL.md +131 -0
- package/plugins/pbr/skills/list-phase-assumptions/SKILL.md +231 -0
- package/plugins/pbr/skills/milestone/SKILL.md +421 -263
- package/plugins/pbr/skills/milestone/templates/audit-output.md.tmpl +76 -0
- package/plugins/pbr/skills/milestone/templates/complete-output.md.tmpl +32 -0
- package/plugins/pbr/skills/milestone/templates/edge-cases.md +54 -0
- package/plugins/pbr/skills/milestone/templates/gaps-output.md.tmpl +25 -0
- package/plugins/pbr/skills/milestone/templates/integration-checker-prompt.md.tmpl +25 -0
- package/plugins/pbr/skills/milestone/templates/new-output.md.tmpl +29 -0
- package/plugins/pbr/skills/milestone-summary/SKILL.md +86 -0
- package/plugins/pbr/skills/note/SKILL.md +20 -4
- package/plugins/pbr/skills/pause/SKILL.md +53 -14
- package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +33 -52
- package/plugins/pbr/skills/plan/SKILL.md +526 -280
- package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +5 -2
- package/plugins/pbr/skills/plan/templates/completion-output.md.tmpl +27 -0
- package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +27 -1
- package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +21 -5
- package/plugins/pbr/skills/profile/SKILL.md +185 -0
- package/plugins/pbr/skills/profile-user/SKILL.md +226 -0
- package/plugins/pbr/skills/quick/SKILL.md +434 -100
- package/plugins/pbr/skills/release/SKILL.md +206 -0
- package/plugins/pbr/skills/resume/SKILL.md +169 -46
- package/plugins/pbr/skills/review/SKILL.md +217 -164
- package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +7 -0
- package/plugins/pbr/skills/scan/SKILL.md +151 -106
- package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +5 -56
- package/plugins/pbr/skills/seed/SKILL.md +87 -0
- package/plugins/pbr/skills/session-report/SKILL.md +130 -0
- package/plugins/pbr/skills/setup/SKILL.md +149 -202
- package/plugins/pbr/skills/shared/agent-context-enrichment.md +21 -0
- package/plugins/pbr/skills/shared/agent-type-resolution.md +32 -0
- package/plugins/pbr/skills/shared/commit-planning-docs.md +8 -0
- package/plugins/pbr/skills/shared/context-budget.md +66 -1
- package/plugins/pbr/skills/shared/context-loader-task.md +18 -11
- package/plugins/pbr/skills/shared/digest-select.md +2 -2
- package/plugins/pbr/skills/shared/domain-probes.md +1 -1
- package/plugins/pbr/skills/shared/error-reporting.md +38 -60
- package/plugins/pbr/skills/shared/gate-prompts.md +4 -2
- package/plugins/pbr/skills/shared/memory-capture.md +48 -0
- package/plugins/pbr/skills/shared/phase-argument-parsing.md +4 -4
- package/plugins/pbr/skills/shared/revision-loop.md +24 -6
- package/plugins/pbr/skills/shared/state-update.md +47 -54
- package/plugins/pbr/skills/shared/universal-anti-patterns.md +27 -4
- package/plugins/pbr/skills/ship/SKILL.md +155 -0
- package/plugins/pbr/skills/stats/SKILL.md +80 -0
- package/plugins/pbr/skills/status/SKILL.md +184 -119
- package/plugins/pbr/skills/test/SKILL.md +254 -0
- package/plugins/pbr/skills/thread/SKILL.md +73 -0
- package/plugins/pbr/skills/todo/SKILL.md +28 -72
- package/plugins/pbr/skills/ui-phase/SKILL.md +180 -0
- package/plugins/pbr/skills/ui-review/SKILL.md +206 -0
- package/plugins/pbr/skills/undo/SKILL.md +221 -0
- package/plugins/pbr/skills/validate-phase/SKILL.md +362 -0
- package/plugins/pbr/templates/CONTEXT.md.tmpl +45 -20
- package/plugins/pbr/templates/DISCOVERY.md.tmpl +29 -0
- package/plugins/pbr/templates/DISCUSSION-LOG.md.tmpl +49 -0
- package/plugins/pbr/templates/HANDOFF.json.tmpl +30 -0
- package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +18 -2
- package/plugins/pbr/templates/MILESTONE-AUDIT.md.tmpl +44 -0
- package/plugins/pbr/templates/PROJECT.md.tmpl +126 -0
- package/plugins/pbr/templates/REQUIREMENTS.md.tmpl +96 -0
- package/plugins/pbr/templates/RETROSPECTIVE.md.tmpl +43 -0
- package/plugins/pbr/templates/ROADMAP.md.tmpl +108 -14
- package/plugins/pbr/templates/SUMMARY-complex.md.tmpl +133 -0
- package/plugins/pbr/templates/SUMMARY-minimal.md.tmpl +55 -0
- package/plugins/pbr/templates/SUMMARY.md.tmpl +21 -0
- package/plugins/pbr/templates/UAT.md.tmpl +94 -0
- package/plugins/pbr/templates/UI-SPEC.md.tmpl +144 -0
- package/plugins/pbr/templates/VALIDATION.md.tmpl +94 -0
- package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +49 -13
- package/plugins/pbr/templates/project-CONTEXT.md.tmpl +59 -0
- package/plugins/pbr/templates/research-outputs/ARCHITECTURE.md.tmpl +91 -0
- package/plugins/pbr/templates/research-outputs/FEATURES.md.tmpl +64 -0
- package/plugins/pbr/templates/research-outputs/PITFALLS.md.tmpl +50 -0
- package/plugins/pbr/templates/research-outputs/STACK.md.tmpl +63 -0
- package/plugins/pbr/templates/research-outputs/SUMMARY.md.tmpl +98 -0
- package/scripts/build-hooks.js +61 -0
- package/scripts/check-ci.js +100 -0
- package/scripts/clean-changelog.js +364 -0
- package/scripts/generate-derivatives.js +581 -0
- package/scripts/posttest.js +93 -0
- package/scripts/release.js +262 -0
- package/scripts/run-tests.cjs +29 -0
- package/scripts/test-wrapper.js +43 -0
- package/dashboard/bin/cli.js +0 -25
- package/dashboard/public/css/layout.css +0 -704
- package/dashboard/public/css/status-colors.css +0 -98
- package/dashboard/public/css/tokens.css +0 -59
- package/dashboard/public/js/htmx-title.js +0 -5
- package/dashboard/public/js/sidebar-toggle.js +0 -34
- package/dashboard/public/js/sse-client.js +0 -100
- package/dashboard/public/js/theme-toggle.js +0 -46
- package/dashboard/src/app.js +0 -91
- package/dashboard/src/middleware/current-phase.js +0 -24
- package/dashboard/src/middleware/errorHandler.js +0 -52
- package/dashboard/src/middleware/notFoundHandler.js +0 -9
- package/dashboard/src/repositories/planning.repository.js +0 -130
- package/dashboard/src/routes/events.routes.js +0 -45
- package/dashboard/src/routes/index.routes.js +0 -35
- package/dashboard/src/routes/pages.routes.js +0 -426
- package/dashboard/src/server.js +0 -42
- package/dashboard/src/services/analytics.service.js +0 -141
- package/dashboard/src/services/dashboard.service.js +0 -309
- package/dashboard/src/services/milestone.service.js +0 -222
- package/dashboard/src/services/notes.service.js +0 -50
- package/dashboard/src/services/phase.service.js +0 -232
- package/dashboard/src/services/project.service.js +0 -57
- package/dashboard/src/services/roadmap.service.js +0 -258
- package/dashboard/src/services/sse.service.js +0 -58
- package/dashboard/src/services/todo.service.js +0 -272
- package/dashboard/src/services/watcher.service.js +0 -48
- package/dashboard/src/utils/cache.js +0 -55
- package/dashboard/src/views/analytics.ejs +0 -5
- package/dashboard/src/views/coming-soon.ejs +0 -11
- package/dashboard/src/views/dependencies.ejs +0 -5
- package/dashboard/src/views/error.ejs +0 -20
- package/dashboard/src/views/index.ejs +0 -5
- package/dashboard/src/views/milestone-detail.ejs +0 -5
- package/dashboard/src/views/milestones.ejs +0 -5
- package/dashboard/src/views/notes.ejs +0 -5
- package/dashboard/src/views/partials/analytics-content.ejs +0 -90
- package/dashboard/src/views/partials/breadcrumbs.ejs +0 -14
- package/dashboard/src/views/partials/dashboard-content.ejs +0 -84
- package/dashboard/src/views/partials/dependencies-content.ejs +0 -48
- package/dashboard/src/views/partials/empty-state.ejs +0 -7
- package/dashboard/src/views/partials/footer.ejs +0 -3
- package/dashboard/src/views/partials/head.ejs +0 -30
- package/dashboard/src/views/partials/header.ejs +0 -21
- package/dashboard/src/views/partials/layout-bottom.ejs +0 -43
- package/dashboard/src/views/partials/layout-top.ejs +0 -16
- package/dashboard/src/views/partials/milestone-detail-content.ejs +0 -20
- package/dashboard/src/views/partials/milestones-content.ejs +0 -88
- package/dashboard/src/views/partials/notes-content.ejs +0 -23
- package/dashboard/src/views/partials/phase-content.ejs +0 -193
- package/dashboard/src/views/partials/phase-doc-content.ejs +0 -38
- package/dashboard/src/views/partials/phases-content.ejs +0 -124
- package/dashboard/src/views/partials/roadmap-content.ejs +0 -180
- package/dashboard/src/views/partials/sidebar.ejs +0 -99
- package/dashboard/src/views/partials/todo-create-content.ejs +0 -54
- package/dashboard/src/views/partials/todo-detail-content.ejs +0 -42
- package/dashboard/src/views/partials/todos-content.ejs +0 -97
- package/dashboard/src/views/phase-detail.ejs +0 -5
- package/dashboard/src/views/phase-doc.ejs +0 -5
- package/dashboard/src/views/phases.ejs +0 -5
- package/dashboard/src/views/roadmap.ejs +0 -5
- package/dashboard/src/views/todo-create.ejs +0 -5
- package/dashboard/src/views/todo-detail.ejs +0 -5
- package/dashboard/src/views/todos.ejs +0 -5
- package/plugins/copilot-pbr/CHANGELOG.md +0 -19
- package/plugins/copilot-pbr/README.md +0 -139
- package/plugins/copilot-pbr/agents/audit.agent.md +0 -113
- package/plugins/copilot-pbr/agents/codebase-mapper.agent.md +0 -151
- package/plugins/copilot-pbr/agents/debugger.agent.md +0 -182
- package/plugins/copilot-pbr/agents/executor.agent.md +0 -267
- package/plugins/copilot-pbr/agents/general.agent.md +0 -88
- package/plugins/copilot-pbr/agents/integration-checker.agent.md +0 -119
- package/plugins/copilot-pbr/agents/plan-checker.agent.md +0 -208
- package/plugins/copilot-pbr/agents/planner.agent.md +0 -238
- package/plugins/copilot-pbr/agents/researcher.agent.md +0 -186
- package/plugins/copilot-pbr/agents/synthesizer.agent.md +0 -126
- package/plugins/copilot-pbr/agents/verifier.agent.md +0 -228
- package/plugins/copilot-pbr/hooks/hooks.json +0 -156
- package/plugins/copilot-pbr/plugin.json +0 -30
- package/plugins/copilot-pbr/references/agent-anti-patterns.md +0 -25
- package/plugins/copilot-pbr/references/agent-contracts.md +0 -297
- package/plugins/copilot-pbr/references/agent-interactions.md +0 -135
- package/plugins/copilot-pbr/references/agent-teams.md +0 -55
- package/plugins/copilot-pbr/references/checkpoints.md +0 -158
- package/plugins/copilot-pbr/references/common-bug-patterns.md +0 -14
- package/plugins/copilot-pbr/references/config-reference.md +0 -442
- package/plugins/copilot-pbr/references/continuation-format.md +0 -213
- package/plugins/copilot-pbr/references/deviation-rules.md +0 -113
- package/plugins/copilot-pbr/references/git-integration.md +0 -227
- package/plugins/copilot-pbr/references/integration-patterns.md +0 -118
- package/plugins/copilot-pbr/references/model-profiles.md +0 -100
- package/plugins/copilot-pbr/references/model-selection.md +0 -32
- package/plugins/copilot-pbr/references/pbr-rules.md +0 -195
- package/plugins/copilot-pbr/references/pbr-tools-cli.md +0 -285
- package/plugins/copilot-pbr/references/plan-authoring.md +0 -182
- package/plugins/copilot-pbr/references/plan-format.md +0 -288
- package/plugins/copilot-pbr/references/planning-config.md +0 -214
- package/plugins/copilot-pbr/references/questioning.md +0 -215
- package/plugins/copilot-pbr/references/reading-verification.md +0 -128
- package/plugins/copilot-pbr/references/stub-patterns.md +0 -161
- package/plugins/copilot-pbr/references/subagent-coordination.md +0 -120
- package/plugins/copilot-pbr/references/ui-formatting.md +0 -444
- package/plugins/copilot-pbr/references/verification-patterns.md +0 -199
- package/plugins/copilot-pbr/references/wave-execution.md +0 -96
- package/plugins/copilot-pbr/rules/pbr-workflow.mdc +0 -48
- package/plugins/copilot-pbr/setup.ps1 +0 -93
- package/plugins/copilot-pbr/setup.sh +0 -93
- package/plugins/copilot-pbr/skills/audit/SKILL.md +0 -330
- package/plugins/copilot-pbr/skills/begin/SKILL.md +0 -589
- package/plugins/copilot-pbr/skills/begin/templates/PROJECT.md.tmpl +0 -34
- package/plugins/copilot-pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +0 -19
- package/plugins/copilot-pbr/skills/begin/templates/STATE.md.tmpl +0 -50
- package/plugins/copilot-pbr/skills/begin/templates/config.json.tmpl +0 -64
- package/plugins/copilot-pbr/skills/begin/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/copilot-pbr/skills/begin/templates/roadmap-prompt.md.tmpl +0 -31
- package/plugins/copilot-pbr/skills/begin/templates/synthesis-prompt.md.tmpl +0 -17
- package/plugins/copilot-pbr/skills/build/SKILL.md +0 -960
- package/plugins/copilot-pbr/skills/config/SKILL.md +0 -250
- package/plugins/copilot-pbr/skills/continue/SKILL.md +0 -159
- package/plugins/copilot-pbr/skills/dashboard/SKILL.md +0 -43
- package/plugins/copilot-pbr/skills/debug/SKILL.md +0 -508
- package/plugins/copilot-pbr/skills/debug/templates/continuation-prompt.md.tmpl +0 -17
- package/plugins/copilot-pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +0 -28
- package/plugins/copilot-pbr/skills/discuss/SKILL.md +0 -353
- package/plugins/copilot-pbr/skills/discuss/templates/CONTEXT.md.tmpl +0 -62
- package/plugins/copilot-pbr/skills/discuss/templates/decision-categories.md +0 -10
- package/plugins/copilot-pbr/skills/do/SKILL.md +0 -66
- package/plugins/copilot-pbr/skills/explore/SKILL.md +0 -373
- package/plugins/copilot-pbr/skills/health/SKILL.md +0 -283
- package/plugins/copilot-pbr/skills/health/templates/check-pattern.md.tmpl +0 -31
- package/plugins/copilot-pbr/skills/health/templates/output-format.md.tmpl +0 -64
- package/plugins/copilot-pbr/skills/help/SKILL.md +0 -170
- package/plugins/copilot-pbr/skills/import/SKILL.md +0 -502
- package/plugins/copilot-pbr/skills/milestone/SKILL.md +0 -745
- package/plugins/copilot-pbr/skills/milestone/templates/audit-report.md.tmpl +0 -49
- package/plugins/copilot-pbr/skills/milestone/templates/stats-file.md.tmpl +0 -31
- package/plugins/copilot-pbr/skills/note/SKILL.md +0 -213
- package/plugins/copilot-pbr/skills/pause/SKILL.md +0 -247
- package/plugins/copilot-pbr/skills/pause/templates/continue-here.md.tmpl +0 -72
- package/plugins/copilot-pbr/skills/plan/SKILL.md +0 -662
- package/plugins/copilot-pbr/skills/plan/templates/checker-prompt.md.tmpl +0 -22
- package/plugins/copilot-pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +0 -33
- package/plugins/copilot-pbr/skills/plan/templates/planner-prompt.md.tmpl +0 -39
- package/plugins/copilot-pbr/skills/plan/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/copilot-pbr/skills/plan/templates/revision-prompt.md.tmpl +0 -24
- package/plugins/copilot-pbr/skills/quick/SKILL.md +0 -376
- package/plugins/copilot-pbr/skills/resume/SKILL.md +0 -399
- package/plugins/copilot-pbr/skills/review/SKILL.md +0 -653
- package/plugins/copilot-pbr/skills/review/templates/debugger-prompt.md.tmpl +0 -61
- package/plugins/copilot-pbr/skills/review/templates/gap-planner-prompt.md.tmpl +0 -41
- package/plugins/copilot-pbr/skills/review/templates/verifier-prompt.md.tmpl +0 -116
- package/plugins/copilot-pbr/skills/scan/SKILL.md +0 -299
- package/plugins/copilot-pbr/skills/scan/templates/mapper-prompt.md.tmpl +0 -202
- package/plugins/copilot-pbr/skills/setup/SKILL.md +0 -296
- package/plugins/copilot-pbr/skills/shared/commit-planning-docs.md +0 -36
- package/plugins/copilot-pbr/skills/shared/config-loading.md +0 -103
- package/plugins/copilot-pbr/skills/shared/context-budget.md +0 -41
- package/plugins/copilot-pbr/skills/shared/context-loader-task.md +0 -87
- package/plugins/copilot-pbr/skills/shared/digest-select.md +0 -80
- package/plugins/copilot-pbr/skills/shared/domain-probes.md +0 -126
- package/plugins/copilot-pbr/skills/shared/error-reporting.md +0 -81
- package/plugins/copilot-pbr/skills/shared/gate-prompts.md +0 -389
- package/plugins/copilot-pbr/skills/shared/phase-argument-parsing.md +0 -46
- package/plugins/copilot-pbr/skills/shared/progress-display.md +0 -53
- package/plugins/copilot-pbr/skills/shared/revision-loop.md +0 -82
- package/plugins/copilot-pbr/skills/shared/state-loading.md +0 -63
- package/plugins/copilot-pbr/skills/shared/state-update.md +0 -162
- package/plugins/copilot-pbr/skills/shared/universal-anti-patterns.md +0 -38
- package/plugins/copilot-pbr/skills/status/SKILL.md +0 -362
- package/plugins/copilot-pbr/skills/statusline/SKILL.md +0 -149
- package/plugins/copilot-pbr/skills/todo/SKILL.md +0 -279
- package/plugins/copilot-pbr/templates/CONTEXT.md.tmpl +0 -53
- package/plugins/copilot-pbr/templates/INTEGRATION-REPORT.md.tmpl +0 -152
- package/plugins/copilot-pbr/templates/RESEARCH-SUMMARY.md.tmpl +0 -98
- package/plugins/copilot-pbr/templates/ROADMAP.md.tmpl +0 -41
- package/plugins/copilot-pbr/templates/SUMMARY.md.tmpl +0 -82
- package/plugins/copilot-pbr/templates/VERIFICATION-DETAIL.md.tmpl +0 -117
- package/plugins/copilot-pbr/templates/codebase/ARCHITECTURE.md.tmpl +0 -98
- package/plugins/copilot-pbr/templates/codebase/CONCERNS.md.tmpl +0 -93
- package/plugins/copilot-pbr/templates/codebase/CONVENTIONS.md.tmpl +0 -104
- package/plugins/copilot-pbr/templates/codebase/INTEGRATIONS.md.tmpl +0 -78
- package/plugins/copilot-pbr/templates/codebase/STACK.md.tmpl +0 -78
- package/plugins/copilot-pbr/templates/codebase/STRUCTURE.md.tmpl +0 -80
- package/plugins/copilot-pbr/templates/codebase/TESTING.md.tmpl +0 -107
- package/plugins/copilot-pbr/templates/continue-here.md.tmpl +0 -74
- package/plugins/copilot-pbr/templates/prompt-partials/phase-project-context.md.tmpl +0 -38
- package/plugins/copilot-pbr/templates/research/ARCHITECTURE.md.tmpl +0 -124
- package/plugins/copilot-pbr/templates/research/STACK.md.tmpl +0 -71
- package/plugins/copilot-pbr/templates/research/SUMMARY.md.tmpl +0 -112
- package/plugins/copilot-pbr/templates/research-outputs/phase-research.md.tmpl +0 -81
- package/plugins/copilot-pbr/templates/research-outputs/project-research.md.tmpl +0 -99
- package/plugins/copilot-pbr/templates/research-outputs/synthesis.md.tmpl +0 -36
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +0 -32
- package/plugins/cursor-pbr/CHANGELOG.md +0 -15
- package/plugins/cursor-pbr/README.md +0 -123
- package/plugins/cursor-pbr/agents/audit.md +0 -178
- package/plugins/cursor-pbr/agents/codebase-mapper.md +0 -150
- package/plugins/cursor-pbr/agents/debugger.md +0 -181
- package/plugins/cursor-pbr/agents/executor.md +0 -266
- package/plugins/cursor-pbr/agents/general.md +0 -87
- package/plugins/cursor-pbr/agents/integration-checker.md +0 -118
- package/plugins/cursor-pbr/agents/plan-checker.md +0 -207
- package/plugins/cursor-pbr/agents/planner.md +0 -237
- package/plugins/cursor-pbr/agents/researcher.md +0 -185
- package/plugins/cursor-pbr/agents/synthesizer.md +0 -125
- package/plugins/cursor-pbr/agents/verifier.md +0 -227
- package/plugins/cursor-pbr/assets/.gitkeep +0 -0
- package/plugins/cursor-pbr/assets/logo.svg +0 -21
- package/plugins/cursor-pbr/hooks/hooks.json +0 -213
- package/plugins/cursor-pbr/references/agent-anti-patterns.md +0 -25
- package/plugins/cursor-pbr/references/agent-contracts.md +0 -297
- package/plugins/cursor-pbr/references/agent-interactions.md +0 -135
- package/plugins/cursor-pbr/references/agent-teams.md +0 -55
- package/plugins/cursor-pbr/references/checkpoints.md +0 -158
- package/plugins/cursor-pbr/references/common-bug-patterns.md +0 -14
- package/plugins/cursor-pbr/references/config-reference.md +0 -442
- package/plugins/cursor-pbr/references/continuation-format.md +0 -213
- package/plugins/cursor-pbr/references/deviation-rules.md +0 -113
- package/plugins/cursor-pbr/references/git-integration.md +0 -227
- package/plugins/cursor-pbr/references/integration-patterns.md +0 -118
- package/plugins/cursor-pbr/references/model-profiles.md +0 -100
- package/plugins/cursor-pbr/references/model-selection.md +0 -32
- package/plugins/cursor-pbr/references/pbr-rules.md +0 -195
- package/plugins/cursor-pbr/references/pbr-tools-cli.md +0 -285
- package/plugins/cursor-pbr/references/plan-authoring.md +0 -182
- package/plugins/cursor-pbr/references/plan-format.md +0 -288
- package/plugins/cursor-pbr/references/planning-config.md +0 -214
- package/plugins/cursor-pbr/references/questioning.md +0 -215
- package/plugins/cursor-pbr/references/reading-verification.md +0 -128
- package/plugins/cursor-pbr/references/stub-patterns.md +0 -161
- package/plugins/cursor-pbr/references/subagent-coordination.md +0 -120
- package/plugins/cursor-pbr/references/ui-formatting.md +0 -444
- package/plugins/cursor-pbr/references/verification-patterns.md +0 -199
- package/plugins/cursor-pbr/references/wave-execution.md +0 -96
- package/plugins/cursor-pbr/rules/pbr-workflow.mdc +0 -48
- package/plugins/cursor-pbr/setup.ps1 +0 -78
- package/plugins/cursor-pbr/setup.sh +0 -83
- package/plugins/cursor-pbr/skills/audit/SKILL.md +0 -331
- package/plugins/cursor-pbr/skills/begin/SKILL.md +0 -589
- package/plugins/cursor-pbr/skills/begin/templates/PROJECT.md.tmpl +0 -34
- package/plugins/cursor-pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +0 -19
- package/plugins/cursor-pbr/skills/begin/templates/STATE.md.tmpl +0 -50
- package/plugins/cursor-pbr/skills/begin/templates/config.json.tmpl +0 -64
- package/plugins/cursor-pbr/skills/begin/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/cursor-pbr/skills/begin/templates/roadmap-prompt.md.tmpl +0 -31
- package/plugins/cursor-pbr/skills/begin/templates/synthesis-prompt.md.tmpl +0 -17
- package/plugins/cursor-pbr/skills/build/SKILL.md +0 -961
- package/plugins/cursor-pbr/skills/config/SKILL.md +0 -252
- package/plugins/cursor-pbr/skills/continue/SKILL.md +0 -159
- package/plugins/cursor-pbr/skills/dashboard/SKILL.md +0 -44
- package/plugins/cursor-pbr/skills/debug/SKILL.md +0 -512
- package/plugins/cursor-pbr/skills/debug/templates/continuation-prompt.md.tmpl +0 -17
- package/plugins/cursor-pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +0 -28
- package/plugins/cursor-pbr/skills/discuss/SKILL.md +0 -354
- package/plugins/cursor-pbr/skills/discuss/templates/CONTEXT.md.tmpl +0 -62
- package/plugins/cursor-pbr/skills/discuss/templates/decision-categories.md +0 -10
- package/plugins/cursor-pbr/skills/do/SKILL.md +0 -67
- package/plugins/cursor-pbr/skills/explore/SKILL.md +0 -376
- package/plugins/cursor-pbr/skills/health/SKILL.md +0 -283
- package/plugins/cursor-pbr/skills/health/templates/check-pattern.md.tmpl +0 -31
- package/plugins/cursor-pbr/skills/health/templates/output-format.md.tmpl +0 -64
- package/plugins/cursor-pbr/skills/help/SKILL.md +0 -170
- package/plugins/cursor-pbr/skills/import/SKILL.md +0 -505
- package/plugins/cursor-pbr/skills/milestone/SKILL.md +0 -746
- package/plugins/cursor-pbr/skills/milestone/templates/audit-report.md.tmpl +0 -49
- package/plugins/cursor-pbr/skills/milestone/templates/stats-file.md.tmpl +0 -31
- package/plugins/cursor-pbr/skills/note/SKILL.md +0 -214
- package/plugins/cursor-pbr/skills/pause/SKILL.md +0 -248
- package/plugins/cursor-pbr/skills/pause/templates/continue-here.md.tmpl +0 -72
- package/plugins/cursor-pbr/skills/plan/SKILL.md +0 -663
- package/plugins/cursor-pbr/skills/plan/templates/checker-prompt.md.tmpl +0 -22
- package/plugins/cursor-pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +0 -33
- package/plugins/cursor-pbr/skills/plan/templates/planner-prompt.md.tmpl +0 -39
- package/plugins/cursor-pbr/skills/plan/templates/researcher-prompt.md.tmpl +0 -20
- package/plugins/cursor-pbr/skills/plan/templates/revision-prompt.md.tmpl +0 -24
- package/plugins/cursor-pbr/skills/quick/SKILL.md +0 -376
- package/plugins/cursor-pbr/skills/resume/SKILL.md +0 -399
- package/plugins/cursor-pbr/skills/review/SKILL.md +0 -654
- package/plugins/cursor-pbr/skills/review/templates/debugger-prompt.md.tmpl +0 -61
- package/plugins/cursor-pbr/skills/review/templates/gap-planner-prompt.md.tmpl +0 -41
- package/plugins/cursor-pbr/skills/review/templates/verifier-prompt.md.tmpl +0 -116
- package/plugins/cursor-pbr/skills/scan/SKILL.md +0 -300
- package/plugins/cursor-pbr/skills/scan/templates/mapper-prompt.md.tmpl +0 -202
- package/plugins/cursor-pbr/skills/setup/SKILL.md +0 -296
- package/plugins/cursor-pbr/skills/shared/commit-planning-docs.md +0 -36
- package/plugins/cursor-pbr/skills/shared/config-loading.md +0 -103
- package/plugins/cursor-pbr/skills/shared/context-budget.md +0 -41
- package/plugins/cursor-pbr/skills/shared/context-loader-task.md +0 -87
- package/plugins/cursor-pbr/skills/shared/digest-select.md +0 -80
- package/plugins/cursor-pbr/skills/shared/domain-probes.md +0 -126
- package/plugins/cursor-pbr/skills/shared/error-reporting.md +0 -81
- package/plugins/cursor-pbr/skills/shared/gate-prompts.md +0 -389
- package/plugins/cursor-pbr/skills/shared/phase-argument-parsing.md +0 -46
- package/plugins/cursor-pbr/skills/shared/progress-display.md +0 -53
- package/plugins/cursor-pbr/skills/shared/revision-loop.md +0 -82
- package/plugins/cursor-pbr/skills/shared/state-loading.md +0 -63
- package/plugins/cursor-pbr/skills/shared/state-update.md +0 -162
- package/plugins/cursor-pbr/skills/shared/universal-anti-patterns.md +0 -38
- package/plugins/cursor-pbr/skills/status/SKILL.md +0 -362
- package/plugins/cursor-pbr/skills/statusline/SKILL.md +0 -150
- package/plugins/cursor-pbr/skills/todo/SKILL.md +0 -280
- package/plugins/cursor-pbr/templates/CONTEXT.md.tmpl +0 -53
- package/plugins/cursor-pbr/templates/INTEGRATION-REPORT.md.tmpl +0 -152
- package/plugins/cursor-pbr/templates/RESEARCH-SUMMARY.md.tmpl +0 -98
- package/plugins/cursor-pbr/templates/ROADMAP.md.tmpl +0 -41
- package/plugins/cursor-pbr/templates/SUMMARY.md.tmpl +0 -82
- package/plugins/cursor-pbr/templates/VERIFICATION-DETAIL.md.tmpl +0 -117
- package/plugins/cursor-pbr/templates/codebase/ARCHITECTURE.md.tmpl +0 -98
- package/plugins/cursor-pbr/templates/codebase/CONCERNS.md.tmpl +0 -93
- package/plugins/cursor-pbr/templates/codebase/CONVENTIONS.md.tmpl +0 -104
- package/plugins/cursor-pbr/templates/codebase/INTEGRATIONS.md.tmpl +0 -78
- package/plugins/cursor-pbr/templates/codebase/STACK.md.tmpl +0 -78
- package/plugins/cursor-pbr/templates/codebase/STRUCTURE.md.tmpl +0 -80
- package/plugins/cursor-pbr/templates/codebase/TESTING.md.tmpl +0 -107
- package/plugins/cursor-pbr/templates/continue-here.md.tmpl +0 -74
- package/plugins/cursor-pbr/templates/prompt-partials/phase-project-context.md.tmpl +0 -38
- package/plugins/cursor-pbr/templates/research/ARCHITECTURE.md.tmpl +0 -124
- package/plugins/cursor-pbr/templates/research/STACK.md.tmpl +0 -71
- package/plugins/cursor-pbr/templates/research/SUMMARY.md.tmpl +0 -112
- package/plugins/cursor-pbr/templates/research-outputs/phase-research.md.tmpl +0 -81
- package/plugins/cursor-pbr/templates/research-outputs/project-research.md.tmpl +0 -99
- package/plugins/cursor-pbr/templates/research-outputs/synthesis.md.tmpl +0 -36
- package/plugins/pbr/references/agent-interactions.md +0 -134
- package/plugins/pbr/references/pbr-rules.md +0 -194
- package/plugins/pbr/references/pbr-tools-cli.md +0 -285
- package/plugins/pbr/references/planning-config.md +0 -213
- package/plugins/pbr/references/subagent-coordination.md +0 -119
- package/plugins/pbr/references/ui-formatting.md +0 -444
- package/plugins/pbr/scripts/validate-plugin-structure.js +0 -183
- package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +0 -48
- package/plugins/pbr/skills/shared/progress-display.md +0 -53
- package/plugins/pbr/skills/shared/state-loading.md +0 -62
- package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +0 -97
- package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +0 -124
- package/plugins/pbr/templates/research/STACK.md.tmpl +0 -71
- package/plugins/pbr/templates/research/SUMMARY.md.tmpl +0 -112
- package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +0 -81
- package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +0 -99
- package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +0 -36
- /package/plugins/pbr/references/{agent-anti-patterns.md → archive/agent-anti-patterns.md} +0 -0
|
@@ -2,21 +2,24 @@
|
|
|
2
2
|
name: plan
|
|
3
3
|
description: "Create a detailed plan for a phase. Research, plan, and verify before building."
|
|
4
4
|
allowed-tools: Read, Write, Bash, Glob, Grep, WebFetch, WebSearch, Task, AskUserQuestion, Skill
|
|
5
|
-
argument-hint: "<phase-number> [--skip-research] [--assumptions] [--gaps] | add | insert <N> | remove <N>"
|
|
5
|
+
argument-hint: "<phase-number> [--skip-research] [--assumptions] [--gaps] [--model <model>] [--auto] [--through <N>] [--prd <file>] | add | insert <N> | remove <N>"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
**STOP — DO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's plugin system. Using the Read tool on this SKILL.md file wastes ~7,600 tokens. Begin executing Step 1 immediately.**
|
|
9
9
|
|
|
10
|
-
# /pbr:plan — Phase Planning
|
|
10
|
+
# /pbr:plan-phase — Phase Planning
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**References:** `@references/questioning.md`, `@references/ui-brand.md`
|
|
13
|
+
|
|
14
|
+
You are the orchestrator for `/pbr:plan-phase`. This skill creates detailed, executable plans for a specific phase. Plans are the bridge between the roadmap and actual code — they must be specific enough for an executor agent to follow mechanically. Your job is to stay lean, delegate heavy work to Task() subagents, and keep the user's main context window clean.
|
|
13
15
|
|
|
14
16
|
## Context Budget
|
|
15
17
|
|
|
16
18
|
Reference: `skills/shared/context-budget.md` for the universal orchestrator rules.
|
|
19
|
+
Reference: `skills/shared/agent-type-resolution.md` for agent type fallback when spawning Task() subagents.
|
|
17
20
|
|
|
18
21
|
Additionally for this skill:
|
|
19
|
-
- **Minimize** reading subagent output — read only plan frontmatter for summaries
|
|
22
|
+
- **Minimize** reading subagent output — read only plan frontmatter for summaries. Exception: if `context_window_tokens` in `.planning/config.json` is >= 500000, reading full plan bodies is permitted when content is needed for inline decisions.
|
|
20
23
|
- **Delegate** all research and planning work to subagents — the orchestrator routes, it doesn't plan
|
|
21
24
|
|
|
22
25
|
## Step 0 — Immediate Output
|
|
@@ -31,9 +34,25 @@ Additionally for this skill:
|
|
|
31
34
|
|
|
32
35
|
Where `{N}` is the phase number from `$ARGUMENTS`. Then proceed to Step 1.
|
|
33
36
|
|
|
37
|
+
## Multi-Session Sync
|
|
38
|
+
|
|
39
|
+
Before any phase-modifying operations (writing PLAN files, updating STATE.md/ROADMAP.md), acquire a claim:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
acquireClaim(phaseDir, sessionId)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If the claim fails (another session owns this phase), display: "Another session owns this phase. Use `/pbr:progress` to see active claims."
|
|
46
|
+
|
|
47
|
+
On completion or error (including all exit paths), release the claim:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
releaseClaim(phaseDir, sessionId)
|
|
51
|
+
```
|
|
52
|
+
|
|
34
53
|
## Prerequisites
|
|
35
54
|
|
|
36
|
-
- `.planning/config.json` exists (run `/pbr:
|
|
55
|
+
- `.planning/config.json` exists (run `/pbr:new-project` first)
|
|
37
56
|
- `.planning/ROADMAP.md` exists with at least one phase
|
|
38
57
|
- `.planning/REQUIREMENTS.md` exists
|
|
39
58
|
|
|
@@ -45,7 +64,7 @@ Parse `$ARGUMENTS` according to `skills/shared/phase-argument-parsing.md`.
|
|
|
45
64
|
|
|
46
65
|
### Standard Invocation
|
|
47
66
|
|
|
48
|
-
`/pbr:plan <N>` — Plan phase N
|
|
67
|
+
`/pbr:plan-phase <N>` — Plan phase N
|
|
49
68
|
|
|
50
69
|
Parse the phase number and optional flags:
|
|
51
70
|
|
|
@@ -56,7 +75,13 @@ Parse the phase number and optional flags:
|
|
|
56
75
|
| `3 --assumptions` | Surface assumptions before planning phase 3 |
|
|
57
76
|
| `3 --gaps` | Create gap-closure plans for phase 3 (from VERIFICATION.md) |
|
|
58
77
|
| `3 --teams` | Plan phase 3 using specialist agent teams |
|
|
78
|
+
| `3 --model opus` | Use opus for all researcher, planner, and checker spawns in phase 3 |
|
|
59
79
|
| (no number) | Use current phase from STATE.md |
|
|
80
|
+
| `3 --preview` | Preview what planning would produce for phase 3 without spawning agents |
|
|
81
|
+
| `3 --audit` | Plan phase 3, then force full plan-checker validation |
|
|
82
|
+
| `3 --auto` | Plan phase 3 with auto mode — suppress confirmation gates, auto-advance on success |
|
|
83
|
+
| `1 --through 3` | Plan phases 1 through 3 in a single planner session (requires planning.multi_phase: true) |
|
|
84
|
+
| `3 --prd path/to/prd.md` | Plan phase 3 using a PRD file as input — skip discussion, generate CONTEXT.md from PRD |
|
|
60
85
|
|
|
61
86
|
### Subcommands
|
|
62
87
|
|
|
@@ -73,20 +98,21 @@ Parse the phase number and optional flags:
|
|
|
73
98
|
- Empty (no arguments)
|
|
74
99
|
- A phase number: integer (`3`, `03`) or decimal (`3.1`)
|
|
75
100
|
- A subcommand: `add`, `insert <N>`, `remove <N>`
|
|
76
|
-
- A phase number followed by flags: `3 --skip-research`, `3 --assumptions`, `3 --gaps`, `3 --teams`
|
|
101
|
+
- A phase number followed by flags: `3 --skip-research`, `3 --assumptions`, `3 --gaps`, `3 --teams`, `3 --auto`, `3 --prd <file>`
|
|
102
|
+
- A phase number followed by --through and another number: `1 --through 3`
|
|
77
103
|
- The word `check` (legacy alias)
|
|
78
104
|
|
|
79
105
|
If `$ARGUMENTS` does NOT match any of these patterns — i.e., it contains freeform words that are not a recognized subcommand or flag — then **stop execution** and respond:
|
|
80
106
|
|
|
81
107
|
```
|
|
82
|
-
`/pbr:plan` expects a phase number or subcommand.
|
|
108
|
+
`/pbr:plan-phase` expects a phase number or subcommand.
|
|
83
109
|
|
|
84
110
|
Usage:
|
|
85
|
-
/pbr:plan <N> Plan phase N
|
|
86
|
-
/pbr:plan <N> --gaps Create gap-closure plans
|
|
87
|
-
/pbr:plan add Add a new phase
|
|
88
|
-
/pbr:plan insert <N> Insert a phase at position N
|
|
89
|
-
/pbr:plan remove <N> Remove phase N
|
|
111
|
+
/pbr:plan-phase <N> Plan phase N
|
|
112
|
+
/pbr:plan-phase <N> --gaps Create gap-closure plans
|
|
113
|
+
/pbr:plan-phase add Add a new phase
|
|
114
|
+
/pbr:plan-phase insert <N> Insert a phase at position N
|
|
115
|
+
/pbr:plan-phase remove <N> Remove phase N
|
|
90
116
|
```
|
|
91
117
|
|
|
92
118
|
Then suggest the appropriate skill based on the text content:
|
|
@@ -95,7 +121,7 @@ Then suggest the appropriate skill based on the text content:
|
|
|
95
121
|
|---------------------------|---------|
|
|
96
122
|
| A task, idea, or feature request | `/pbr:todo` to capture it, or `/pbr:explore` to investigate |
|
|
97
123
|
| A bug or debugging request | `/pbr:debug` to investigate the issue |
|
|
98
|
-
| A review or quality concern | `/pbr:
|
|
124
|
+
| A review or quality concern | `/pbr:verify-work` to assess existing work |
|
|
99
125
|
| Anything else | `/pbr:explore` for open-ended work |
|
|
100
126
|
|
|
101
127
|
Do NOT proceed with planning. The user needs to use the correct skill.
|
|
@@ -106,7 +132,7 @@ Do NOT proceed with planning. The user needs to use the correct skill.
|
|
|
106
132
|
|
|
107
133
|
## Orchestration Flow: Standard Planning
|
|
108
134
|
|
|
109
|
-
Execute these steps in order for standard `/pbr:plan <N>` invocations.
|
|
135
|
+
Execute these steps in order for standard `/pbr:plan-phase <N>` invocations.
|
|
110
136
|
|
|
111
137
|
---
|
|
112
138
|
|
|
@@ -115,18 +141,109 @@ Execute these steps in order for standard `/pbr:plan <N>` invocations.
|
|
|
115
141
|
Reference: `skills/shared/config-loading.md` for the tooling shortcut (`state load`, `plan-index`, `phase-info`) and config field reference.
|
|
116
142
|
|
|
117
143
|
1. Parse `$ARGUMENTS` for phase number and flags
|
|
118
|
-
|
|
119
|
-
|
|
144
|
+
- If `--model <value>` is present in `$ARGUMENTS`, extract the value (sonnet, opus, haiku, inherit). Store as `override_model`. When spawning researcher, planner, and plan-checker Task() agents, use `override_model` instead of the config-derived model values. If an invalid value is provided, display an error and list valid values.
|
|
145
|
+
- If `--auto` is present in `$ARGUMENTS`: set `auto_mode = true`. Log: "Auto mode enabled — suppressing confirmation gates"
|
|
146
|
+
- If `--through <M>` is present:
|
|
147
|
+
a. Read `planning.multi_phase` from config
|
|
148
|
+
b. If `planning.multi_phase` is `false` or unset: display error:
|
|
149
|
+
"`--through` requires `planning.multi_phase: true` in config. Set it with: `/pbr:config set planning.multi_phase true`"
|
|
150
|
+
Then STOP.
|
|
151
|
+
c. Parse start phase (N) and end phase (M). Validate both exist in ROADMAP.md.
|
|
152
|
+
d. Store `through_phases = [N, N+1, ..., M]`
|
|
153
|
+
e. Log: "Multi-phase planning: phases {N} through {M}"
|
|
154
|
+
- If `--prd <file>` is present in `$ARGUMENTS`:
|
|
155
|
+
a. Extract the file path from the argument
|
|
156
|
+
b. Set `prd_mode = true`
|
|
157
|
+
c. Log: "PRD express path — will generate CONTEXT.md from PRD, skip discussion"
|
|
158
|
+
2. **CRITICAL — Init first.** Run the init CLI call as the FIRST action after argument parsing:
|
|
159
|
+
```bash
|
|
160
|
+
node plugins/pbr/scripts/pbr-tools.js init plan-phase {N}
|
|
161
|
+
```
|
|
162
|
+
Store the JSON result as `blob`. All downstream steps MUST reference `blob` fields instead of re-reading files. Key fields: `blob.phase.dir`, `blob.phase.goal`, `blob.phase.depends_on`, `blob.config.depth`, `blob.config.profile`, `blob.researcher_model`, `blob.planner_model`, `blob.checker_model`, `blob.existing_artifacts`, `blob.workflow.research_phase`, `blob.workflow.plan_checking`, `blob.drift`.
|
|
163
|
+
**Speculative mode guard:** If `$ARGUMENTS` contains `--speculative` or `--no-state-update`, SKIP the `.active-skill` write below — the autonomous orchestrator owns `.active-skill` during speculative planning.
|
|
164
|
+
**CRITICAL (hook-enforced): Write .active-skill NOW.** Write the text "plan" to `.planning/.active-skill` using the Write tool.
|
|
120
165
|
3. Resolve depth profile: run `node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js config resolve-depth` to get the effective feature/gate settings for the current depth. Store the result for use in later gating decisions.
|
|
121
|
-
4. Validate:
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
166
|
+
4. Validate using blob fields:
|
|
167
|
+
- `blob.phase.dir` is set (phase exists in ROADMAP.md and directory exists)
|
|
168
|
+
- `blob.existing_artifacts` is empty or user confirms re-planning
|
|
169
|
+
5. If no phase number given, use `blob.phase.number` (already resolved from STATE.md by init)
|
|
170
|
+
6. **CONTEXT.md existence check**: If the phase is non-trivial (has 2+ requirements or success criteria), check whether a CONTEXT.md exists at EITHER `.planning/CONTEXT.md` (project-level) OR `.planning/phases/{blob.phase.dir}/CONTEXT.md` (phase-level). If NEITHER exists, warn: "Phase {N} has no CONTEXT.md. Consider running `/pbr:discuss-phase {N}` first to capture your preferences. Continue anyway?" If user says no, stop. If yes, continue. If at least one exists, proceed without warning.
|
|
171
|
+
|
|
172
|
+
#### --prd express path
|
|
173
|
+
|
|
174
|
+
If `prd_mode` is `true`:
|
|
175
|
+
|
|
176
|
+
1. Read the PRD file specified by the `--prd` argument
|
|
177
|
+
2. Parse the PRD content, looking for these sections (case-insensitive):
|
|
178
|
+
- **Requirements** / **Functional Requirements** / **User Stories**
|
|
179
|
+
- **Scope** / **In Scope** / **Out of Scope**
|
|
180
|
+
- **Constraints** / **Technical Constraints**
|
|
181
|
+
- **Decisions** / **Architecture Decisions** / **Design Decisions**
|
|
182
|
+
- **Goals** / **Objectives**
|
|
183
|
+
**CRITICAL — DO NOT SKIP: Write CONTEXT.md from the PRD NOW. The planner agent requires this file for locked decisions.**
|
|
184
|
+
3. Generate `.planning/phases/{NN}-{slug}/CONTEXT.md` from the PRD:
|
|
185
|
+
```markdown
|
|
186
|
+
---
|
|
187
|
+
source: prd
|
|
188
|
+
prd_file: "{original file path}"
|
|
189
|
+
generated: "{ISO timestamp}"
|
|
190
|
+
---
|
|
191
|
+
# Phase {N} Context (from PRD)
|
|
192
|
+
|
|
193
|
+
## Decision Summary
|
|
194
|
+
{Extracted decisions from PRD, each as a locked decision}
|
|
195
|
+
|
|
196
|
+
## Scope
|
|
197
|
+
{Extracted scope boundaries}
|
|
198
|
+
|
|
199
|
+
## Constraints
|
|
200
|
+
{Extracted constraints}
|
|
201
|
+
|
|
202
|
+
## Requirements Mapping
|
|
203
|
+
{Map PRD requirements to phase REQ-IDs where possible}
|
|
204
|
+
|
|
205
|
+
## Deferred Ideas
|
|
206
|
+
{Any out-of-scope items from the PRD}
|
|
207
|
+
```
|
|
208
|
+
4. Log: "Generated CONTEXT.md from PRD ({line_count} lines)"
|
|
209
|
+
5. **Skip Step 6 (CONTEXT.md existence check)** — we just created one
|
|
210
|
+
6. **Skip Steps 3 and 4** (assumption surfacing and research) — the PRD provides the context
|
|
211
|
+
7. Proceed directly to **Step 5** (planning) with the PRD-derived context
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
#### --preview mode
|
|
216
|
+
|
|
217
|
+
If `--preview` is present in `$ARGUMENTS`:
|
|
218
|
+
|
|
219
|
+
1. Detect the `--preview` flag and extract the phase number.
|
|
220
|
+
2. Render the following dry-run banner:
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
224
|
+
║ DRY RUN — /pbr:plan-phase {N} --preview ║
|
|
225
|
+
║ No researchers or planners will be spawned ║
|
|
226
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
3. Show the 5 steps that would occur:
|
|
230
|
+
|
|
231
|
+
1. Parse ROADMAP.md for phase {N} goal, dependencies, and requirements
|
|
232
|
+
2. Spawn researcher agents to investigate codebase and gather context
|
|
233
|
+
3. Spawn planner agent to write PLAN files based on research
|
|
234
|
+
4. Run plan-checker to validate structure and completeness
|
|
235
|
+
5. Present plans for your approval before building
|
|
236
|
+
|
|
237
|
+
4. Show estimated agent spawns: ~2-4 agents (1-2 researchers + 1 planner + 1 plan-checker)
|
|
238
|
+
5. Show output location: `.planning/phases/{NN}-{slug}/PLAN-NN.md`
|
|
239
|
+
|
|
240
|
+
6. **STOP** — do not proceed to Step 2.
|
|
241
|
+
|
|
242
|
+
---
|
|
127
243
|
|
|
128
244
|
**If phase already has plans:**
|
|
129
|
-
-
|
|
245
|
+
- **CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
|
|
246
|
+
Use AskUserQuestion (pattern: yes-no from `skills/shared/gate-prompts.md`):
|
|
130
247
|
question: "Phase {N} already has plans. Re-plan from scratch?"
|
|
131
248
|
header: "Re-plan?"
|
|
132
249
|
options:
|
|
@@ -139,14 +256,14 @@ Reference: `skills/shared/config-loading.md` for the tooling shortcut (`state lo
|
|
|
139
256
|
|
|
140
257
|
### Step 2: Load Context (inline)
|
|
141
258
|
|
|
142
|
-
|
|
259
|
+
From the init `blob` captured in Step 1, extract the context fields needed for planning. Build lean context bundles for subagent prompts — include paths and one-line descriptions, NOT full file bodies. Agents have the Read tool and will pull file contents on-demand.
|
|
143
260
|
|
|
144
261
|
```
|
|
145
|
-
1.
|
|
262
|
+
1. Use blob.phase.goal, blob.phase.depends_on for phase goal and dependencies from ROADMAP.md
|
|
146
263
|
2. Read .planning/REQUIREMENTS.md — extract requirements mapped to this phase
|
|
147
264
|
3. Read .planning/CONTEXT.md (if exists) — extract only the `## Decision Summary` section (everything from `## Decision Summary` to the next `##` heading). If no Decision Summary section exists (legacy CONTEXT.md), fall back to extracting the full `## Decisions (LOCKED...)` and `## Deferred Ideas` sections.
|
|
148
265
|
4. Read .planning/phases/{NN}-{slug}/CONTEXT.md (if exists) — extract only the `## Decision Summary` section. Fall back to full locked decisions + deferred sections if no Decision Summary exists.
|
|
149
|
-
5.
|
|
266
|
+
5. Use blob.config for feature flags, depth, model settings instead of re-reading config.json
|
|
150
267
|
6. List prior SUMMARY.md file paths and extract frontmatter metadata only (status, provides, key_files). Do NOT read full SUMMARY bodies — agents pull these on-demand via Read tool.
|
|
151
268
|
7. Read .planning/research/SUMMARY.md (if exists) — extract research findings
|
|
152
269
|
```
|
|
@@ -163,34 +280,7 @@ Collect all of this into a context bundle that will be passed to subagents.
|
|
|
163
280
|
|
|
164
281
|
**IMPORTANT**: This step is FREE (no subagents). It happens entirely inline.
|
|
165
282
|
|
|
166
|
-
Before spawning any agents, present
|
|
167
|
-
|
|
168
|
-
```
|
|
169
|
-
Phase {N}: {Name}
|
|
170
|
-
Goal: {from roadmap}
|
|
171
|
-
|
|
172
|
-
My assumptions about this phase:
|
|
173
|
-
|
|
174
|
-
1. **Approach**: I'm assuming we'll {approach}
|
|
175
|
-
- Correct? [yes/no/adjust]
|
|
176
|
-
|
|
177
|
-
2. **Key technology**: I'm assuming we'll use {tech}
|
|
178
|
-
- Correct? [yes/no/adjust]
|
|
179
|
-
|
|
180
|
-
3. **Architecture**: I'm assuming {architectural assumption}
|
|
181
|
-
- Correct? [yes/no/adjust]
|
|
182
|
-
|
|
183
|
-
4. **Scope boundary**: I'm assuming {scope assumption}
|
|
184
|
-
- Correct? [yes/no/adjust]
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
For each assumption the user corrects:
|
|
188
|
-
- Record the correction
|
|
189
|
-
- These corrections become additional CONTEXT.md entries
|
|
190
|
-
|
|
191
|
-
After all assumptions are confirmed/corrected:
|
|
192
|
-
- Update `.planning/CONTEXT.md` with any new locked decisions
|
|
193
|
-
- Continue to Step 4
|
|
283
|
+
Before spawning any agents, present 4 assumptions to the user — one each for: approach (how the phase will be implemented), key technology, architecture, and scope boundary. For each, ask the user to confirm or correct. Record corrections as new CONTEXT.md locked decisions. After all assumptions are confirmed/corrected, continue to Step 4.
|
|
194
284
|
|
|
195
285
|
---
|
|
196
286
|
|
|
@@ -201,13 +291,21 @@ After all assumptions are confirmed/corrected:
|
|
|
201
291
|
- `--gaps` flag is set
|
|
202
292
|
- Depth profile has `features.research_phase: false`
|
|
203
293
|
|
|
204
|
-
To check:
|
|
294
|
+
To check: use `blob.workflow.research_phase` from the init blob. This replaces checking `features.research_phase` and `depth` separately -- the init already incorporates both.
|
|
205
295
|
|
|
206
|
-
**Conditional research (standard/balanced mode):** When
|
|
296
|
+
**Conditional research (standard/balanced mode):** When `blob.workflow.research_phase` is `true`, also check whether `.planning/codebase/` or `.planning/research/` already contains relevant context for this phase. If substantial context exists (>3 files in codebase/ or a RESEARCH.md mentioning this phase's technologies), skip research and note: "Skipping research -- existing context found in {directory}." This implements the balanced mode's "conditional research" behavior.
|
|
207
297
|
|
|
208
298
|
**If research is needed:**
|
|
209
299
|
|
|
210
|
-
Display to the user:
|
|
300
|
+
Display to the user: `◆ Spawning researcher...`
|
|
301
|
+
|
|
302
|
+
**Parallel research optimization (1M context):** If `context_window_tokens` in `.planning/config.json` is >= 500000, spawn the researcher Task() AND the pre-planner briefing Task() (Step 4.5) in parallel using `run_in_background: true` for both. Both are independent -- the researcher analyzes technologies while the briefing scans seeds and deferred items. Wait for both to complete before proceeding to the planner.
|
|
303
|
+
|
|
304
|
+
Display: `◆ Spawning researcher + pre-planner briefing in parallel (1M context)...`
|
|
305
|
+
|
|
306
|
+
**Individual Agent Calls:** Each parallel spawn (researcher, pre-planner briefing) MUST be a separate Task() tool call in a single response message. Do NOT combine or describe them in prose. Each separate Task() call gets its own colored badge in the Claude Code UI.
|
|
307
|
+
|
|
308
|
+
If `context_window_tokens` < 500000, maintain the existing sequential flow: researcher first, then pre-planner briefing.
|
|
211
309
|
|
|
212
310
|
Spawn a researcher Task():
|
|
213
311
|
|
|
@@ -224,7 +322,7 @@ NOTE: The pbr:researcher subagent type auto-loads the agent definition. Do NOT i
|
|
|
224
322
|
|
|
225
323
|
#### Phase Research Prompt Template
|
|
226
324
|
|
|
227
|
-
Read
|
|
325
|
+
Read `${CLAUDE_SKILL_DIR}/templates/researcher-prompt.md.tmpl` and use it as the prompt template for spawning the researcher agent. Fill in the placeholders with phase-specific context:
|
|
228
326
|
- `{NN}` - phase number (zero-padded)
|
|
229
327
|
- `{phase name}` - phase name from roadmap
|
|
230
328
|
- `{goal from roadmap}` - phase goal statement
|
|
@@ -232,65 +330,95 @@ Read `skills/plan/templates/researcher-prompt.md.tmpl` and use it as the prompt
|
|
|
232
330
|
- `{dependencies from roadmap}` - dependency list
|
|
233
331
|
- Fill `<project_context>` and `<prior_work>` blocks per the shared partial (`templates/prompt-partials/phase-project-context.md.tmpl`): Decision Summary for context, manifest table for prior work
|
|
234
332
|
|
|
333
|
+
**Prepend this block to the researcher prompt before sending:**
|
|
334
|
+
```
|
|
335
|
+
<files_to_read>
|
|
336
|
+
CRITICAL (no hook): Read these files BEFORE any other action:
|
|
337
|
+
1. .planning/ROADMAP.md — phase goals, dependencies, and structure
|
|
338
|
+
2. .planning/REQUIREMENTS.md — scoped requirements for this phase (if exists)
|
|
339
|
+
3. .planning/intel/arch.md — architecture intelligence (if exists)
|
|
340
|
+
</files_to_read>
|
|
341
|
+
```
|
|
342
|
+
|
|
235
343
|
Wait for the researcher to complete before proceeding.
|
|
236
344
|
|
|
345
|
+
After the researcher completes, check the Task() output for a completion marker:
|
|
346
|
+
- If `## RESEARCH COMPLETE` is present: proceed to planner
|
|
347
|
+
- If `## RESEARCH BLOCKED` is present: warn the user that research could not complete, ask if they want to proceed with limited context or stop
|
|
348
|
+
- If neither marker is present: warn that researcher may not have completed successfully, but proceed
|
|
349
|
+
|
|
237
350
|
---
|
|
238
351
|
|
|
239
|
-
### Step 4.5:
|
|
352
|
+
### Step 4.5: Pre-Planner Briefing (delegated)
|
|
240
353
|
|
|
241
|
-
|
|
354
|
+
**CRITICAL (no hook): Run pre-planner briefing before spawning the planner. Do NOT skip this step.**
|
|
242
355
|
|
|
243
|
-
|
|
244
|
-
2. For each seed file, read its frontmatter and check the `trigger` field
|
|
245
|
-
3. A seed matches if ANY of these are true:
|
|
246
|
-
- `trigger` equals the phase slug (e.g., `trigger: authentication`) — **preferred**
|
|
247
|
-
- `trigger` is a substring of the phase directory name (e.g., `trigger: auth` matches `03-authentication`)
|
|
248
|
-
- `trigger` equals the current phase number as integer (e.g., `trigger: 3`) — backward compatible but NOT recommended for new seeds (breaks with decimal phases like 3.1)
|
|
249
|
-
- `trigger` equals `*` (always matches)
|
|
250
|
-
4. If matching seeds are found, present them to the user:
|
|
251
|
-
```
|
|
252
|
-
Found {N} seeds related to Phase {NN}:
|
|
253
|
-
- {seed_name}: {seed description}
|
|
254
|
-
- {seed_name}: {seed description}
|
|
255
|
-
```
|
|
356
|
+
**Note:** If `context_window_tokens` >= 500000, this step was already spawned in parallel with the researcher in Step 4. Skip spawning it again -- just read the results.
|
|
256
357
|
|
|
257
|
-
|
|
258
|
-
question: "Include these {N} seeds in planning?"
|
|
259
|
-
header: "Seeds?"
|
|
260
|
-
options:
|
|
261
|
-
- label: "Yes, all" description: "Include all {N} matching seeds"
|
|
262
|
-
- label: "Let me pick" description: "Choose which seeds to include"
|
|
263
|
-
- label: "No" description: "Proceed without seeds"
|
|
264
|
-
5. If "Yes, all": include all matching seed content in the planner's context
|
|
265
|
-
6. If "Let me pick": present individual seeds for selection
|
|
266
|
-
7. If "No" or "Other": proceed without seeds
|
|
267
|
-
8. If no matching seeds found: proceed silently
|
|
358
|
+
Consolidate seed scanning and deferred idea surfacing into a single lightweight Task():
|
|
268
359
|
|
|
269
|
-
|
|
360
|
+
```
|
|
361
|
+
Task({
|
|
362
|
+
subagent_type: "pbr:general",
|
|
363
|
+
model: "haiku",
|
|
364
|
+
prompt: "Pre-planner briefing for Phase {NN} ({phase-slug}).
|
|
270
365
|
|
|
271
|
-
|
|
366
|
+
1. SEED SCANNING:
|
|
367
|
+
Run: `node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js seeds match {phase-slug} {phase-number}`
|
|
368
|
+
If `matched` is non-empty, output a ## Seeds section listing each seed name, description, and content.
|
|
369
|
+
If empty, output: ## Seeds\nNo matching seeds found.
|
|
272
370
|
|
|
273
|
-
|
|
371
|
+
2. DEFERRED IDEAS:
|
|
372
|
+
Collect deferred items from three sources:
|
|
274
373
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
374
|
+
a. **Project CONTEXT.md**: Read `.planning/CONTEXT.md`. Check for `<deferred>` XML tags (preferred)
|
|
375
|
+
OR `## Deferred` / `## Deferred Ideas` markdown headers (backward compat).
|
|
376
|
+
Extract items that mention Phase {NN} or keywords matching the phase slug.
|
|
377
|
+
|
|
378
|
+
b. **Phase CONTEXT.md**: Read `.planning/phases/{NN}-{slug}/CONTEXT.md` (if exists).
|
|
379
|
+
Check for `<deferred>` XML tags OR markdown deferred headers. Extract relevant items.
|
|
380
|
+
|
|
381
|
+
c. **Prior phase SUMMARY.md files**: Read SUMMARY-*.md files from the prior phase directory
|
|
382
|
+
(`.planning/phases/{prior_phase_dir}/SUMMARY-*.md`, where prior_phase_dir is phase N-1).
|
|
383
|
+
Extract the `deferred:` field from each SUMMARY frontmatter. List any deferred items
|
|
384
|
+
from the prior phase that might now be in scope for this phase.
|
|
385
|
+
|
|
386
|
+
Output a ## Deferred Ideas section with sub-sections:
|
|
387
|
+
- 'From project CONTEXT.md:' (items from project-level deferred, or 'None')
|
|
388
|
+
- 'From phase CONTEXT.md:' (items from current phase deferred, or 'None')
|
|
389
|
+
- 'From prior phase:' (items from prior phase SUMMARY.md deferred fields, or 'None')
|
|
390
|
+
If all three sources are empty, output: ## Deferred Ideas\nNo relevant deferred items.
|
|
391
|
+
|
|
392
|
+
Output format: Return both sections as markdown. End with ## BRIEFING COMPLETE."
|
|
393
|
+
})
|
|
394
|
+
```
|
|
292
395
|
|
|
293
|
-
|
|
396
|
+
After the Task() completes:
|
|
397
|
+
- If `## Seeds` section contains matches:
|
|
398
|
+
- If `gates.confirm_seeds` is `true` in config:
|
|
399
|
+
**CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
|
|
400
|
+
Present them to the user via AskUserQuestion (pattern: yes-no-pick from `skills/shared/gate-prompts.md`):
|
|
401
|
+
question: "Include these {N} seeds in planning?"
|
|
402
|
+
header: "Seeds?"
|
|
403
|
+
options:
|
|
404
|
+
- label: "Yes, all" description: "Include all {N} matching seeds"
|
|
405
|
+
- label: "Let me pick" description: "Choose which seeds to include"
|
|
406
|
+
- label: "No" description: "Proceed without seeds"
|
|
407
|
+
- If "Yes, all": include seed content in planner context
|
|
408
|
+
- If "Let me pick": present individual seeds for selection
|
|
409
|
+
- If "No": proceed without seeds
|
|
410
|
+
- If `gates.confirm_seeds` is `false` (default): automatically include all matching seeds in planner context without prompting. Log: "Including {N} seeds automatically (gates.confirm_seeds=false)."
|
|
411
|
+
|
|
412
|
+
- If `## Deferred Ideas` section has items:
|
|
413
|
+
- If `gates.confirm_deferred` is `true` in config:
|
|
414
|
+
**CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
|
|
415
|
+
Present via AskUserQuestion (pattern: yes-no from `skills/shared/gate-prompts.md`):
|
|
416
|
+
question: "Include these deferred ideas in planning context?"
|
|
417
|
+
- If "Yes": append to planner context under `Deferred ideas to consider:`
|
|
418
|
+
- If "No": proceed without changes
|
|
419
|
+
- If `gates.confirm_deferred` is `false` (default): automatically append deferred ideas to planner context without prompting. Log: "Including deferred ideas automatically (gates.confirm_deferred=false)."
|
|
420
|
+
|
|
421
|
+
- If both sections are empty: proceed silently to Step 5 (no AskUserQuestion needed)
|
|
294
422
|
|
|
295
423
|
---
|
|
296
424
|
|
|
@@ -298,43 +426,99 @@ This is a lightweight relevance filter — do NOT spawn a subagent for this. Jus
|
|
|
298
426
|
|
|
299
427
|
#### Team Mode (--teams)
|
|
300
428
|
|
|
301
|
-
|
|
429
|
+
**Read teams config:**
|
|
302
430
|
|
|
303
|
-
|
|
431
|
+
```bash
|
|
432
|
+
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js config get parallelization.use_teams
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
Store the result as `use_teams_config`. If the CLI returns `true`, treat it as if `--teams` was passed.
|
|
436
|
+
|
|
437
|
+
If `--teams` flag is set OR `use_teams_config` is `true` (from the config read above):
|
|
438
|
+
1. Log: "Team mode enabled (source: {--teams flag | config parallelization.use_teams})"
|
|
439
|
+
2. Read `references/agent-teams.md` for role definitions
|
|
440
|
+
3. Spawn 3 parallel planner agents (architect, security, test) with role-specific prompts
|
|
441
|
+
4. Wait for all 3 to complete
|
|
442
|
+
5. Spawn synthesizer agent to merge outputs from `.planning/phases/{NN}-{slug}/team/` into final PLAN files
|
|
304
443
|
|
|
305
|
-
|
|
306
|
-
2. Display to the user: `◐ Spawning 3 planners in parallel (architect, security, test)...`
|
|
444
|
+
If neither `--teams` flag nor `use_teams_config` is true, proceed with the single-planner flow below.
|
|
307
445
|
|
|
308
|
-
|
|
446
|
+
#### Multi-Phase Flow (--through)
|
|
309
447
|
|
|
310
|
-
|
|
311
|
-
- subagent_type: "pbr:planner"
|
|
312
|
-
- Prompt includes: "You are the ARCHITECT role in a planning team. Focus on: structure, file boundaries, dependency ordering, wave assignment. Write your output to `.planning/phases/{NN}-{slug}/team/architect-PLAN.md`. Do NOT write final PLAN.md files -- your output will be synthesized."
|
|
313
|
-
- Include phase goal, research doc paths, CONTEXT.md path in the prompt
|
|
448
|
+
If `through_phases` is set (from Step 1 --through parsing):
|
|
314
449
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
450
|
+
1. For each phase P in `through_phases` (in order):
|
|
451
|
+
a. Load phase P's context: use `blob.phase.goal` and `blob.phase.depends_on` for the first phase; for subsequent phases, run `pbr-tools.js init` with `plan-phase {P}` to get a fresh blob
|
|
452
|
+
b. Load phase P's CONTEXT.md (if exists)
|
|
453
|
+
c. If P > first phase: include prior phase plans as accumulated context
|
|
454
|
+
- For each already-planned phase in this session, include:
|
|
455
|
+
- Plan frontmatter summary (provides, files_modified, must_haves)
|
|
456
|
+
- This gives the planner visibility into cross-phase dependencies
|
|
457
|
+
d. Spawn planner Task() with multi-phase instructions:
|
|
319
458
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
459
|
+
Add to the planner prompt's `<planning_instructions>` block:
|
|
460
|
+
```
|
|
461
|
+
MULTI-PHASE CONTEXT: This is phase {P} of {N} in a multi-phase planning session ({start} through {end}).
|
|
462
|
+
Prior phases planned in this session: {list of phase numbers and their provides}
|
|
324
463
|
|
|
325
|
-
|
|
326
|
-
|
|
464
|
+
CROSS-PHASE CONFLICT DETECTION:
|
|
465
|
+
- Check files_modified in your plans against files_modified from prior phases
|
|
466
|
+
- If overlap detected: add a warning comment in the plan frontmatter: `cross_phase_conflict: ["{file} also modified in phase {X}"]`
|
|
467
|
+
- Ensure depends_on includes the conflicting prior phase plan
|
|
468
|
+
```
|
|
327
469
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
470
|
+
e. Wait for planner to complete
|
|
471
|
+
f. Read the created plan frontmatters (provides, files_modified) to build accumulated context
|
|
472
|
+
g. Display: "Phase {P} planned ({N} plans). Proceeding to phase {P+1}..."
|
|
473
|
+
|
|
474
|
+
2. After all phases planned, display summary:
|
|
475
|
+
```
|
|
476
|
+
Multi-phase planning complete: {total_plans} plans across phases {start}-{end}
|
|
477
|
+
Cross-phase conflicts detected: {count} (see plan frontmatter for details)
|
|
478
|
+
```
|
|
332
479
|
|
|
333
|
-
|
|
480
|
+
3. Skip to Step 5b (spot-check) -- run spot-check across ALL phase directories that were planned.
|
|
334
481
|
|
|
335
482
|
#### Single-Planner Flow (default)
|
|
336
483
|
|
|
337
|
-
|
|
484
|
+
**Learnings injection (opt-in):** Check for planning and estimation learnings before spawning the planner:
|
|
485
|
+
|
|
486
|
+
```bash
|
|
487
|
+
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js learnings query --tags "estimation,planning,process,workflow" 2>/dev/null
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
If non-empty JSON array returned:
|
|
491
|
+
|
|
492
|
+
- Write to temp file and note as `{learnings_temp_path}`:
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js learnings query --tags "estimation,planning,process,workflow" > /tmp/pbr-learnings-$$.md
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
- Add as an additional `files_to_read` item in the planner prompt below
|
|
499
|
+
|
|
500
|
+
If no learnings or command fails: omit.
|
|
501
|
+
|
|
502
|
+
**Intel Staleness Check** (before spawning planner):
|
|
503
|
+
|
|
504
|
+
If `.planning/config.json` has `intel.enabled` not explicitly `false`:
|
|
505
|
+
|
|
506
|
+
Run:
|
|
507
|
+
```bash
|
|
508
|
+
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js intel status
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
If the output indicates any intel file is stale (>24h old) or missing:
|
|
512
|
+
Display an advisory warning:
|
|
513
|
+
```
|
|
514
|
+
Warning: Intel data is stale or missing. Planning will proceed without fresh codebase intelligence.
|
|
515
|
+
Consider running /pbr:intel refresh for better plan quality.
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
Continue with planner spawn regardless — this is advisory only, not a gate.
|
|
519
|
+
If intel is disabled or config doesn't exist: skip silently.
|
|
520
|
+
|
|
521
|
+
Display to the user: `◆ Spawning planner...`
|
|
338
522
|
|
|
339
523
|
Spawn the planner Task() with all context inlined:
|
|
340
524
|
|
|
@@ -344,24 +528,47 @@ Task({
|
|
|
344
528
|
prompt: <planning prompt>
|
|
345
529
|
})
|
|
346
530
|
|
|
347
|
-
NOTE: The pbr:planner subagent type auto-loads the agent definition.
|
|
531
|
+
NOTE: The pbr:planner subagent type auto-loads the agent definition.
|
|
532
|
+
|
|
533
|
+
After planner completes, check for completion markers: `## PLANNING COMPLETE`, `## PLANNING FAILED`, or `## PLANNING INCONCLUSIVE`. Route accordingly. Do NOT inline it.
|
|
534
|
+
|
|
535
|
+
**Memory capture:** Reference `skills/shared/memory-capture.md` — check planner output for `<memory_suggestion>` blocks and save any reusable knowledge discovered during planning.
|
|
348
536
|
```
|
|
349
537
|
|
|
350
538
|
**Path resolution**: Before constructing the agent prompt, resolve `${CLAUDE_PLUGIN_ROOT}` to its absolute path. Do not pass the variable literally in prompts — Task() contexts may not expand it. Use the resolved absolute path for any pbr-tools.js or template references included in the prompt.
|
|
351
539
|
|
|
352
540
|
#### Planning Prompt Template
|
|
353
541
|
|
|
354
|
-
Read
|
|
355
|
-
|
|
542
|
+
Read `${CLAUDE_SKILL_DIR}/templates/planner-prompt.md.tmpl` and use it as the prompt template for spawning the planner agent. Fill in all placeholder blocks with phase-specific context:
|
|
543
|
+
|
|
544
|
+
- `<phase_context>` - from `blob.phase.dir`, `blob.phase.goal`, `blob.phase.depends_on` plus requirements and success criteria
|
|
356
545
|
- `<project_context>` - locked decisions, user constraints, deferred ideas, phase-specific decisions
|
|
357
546
|
- `<prior_work>` - manifest table of preceding phase SUMMARY.md file paths with status and one-line exports (NOT full bodies)
|
|
358
547
|
- `<research>` - file path to RESEARCH.md if it exists (NOT inlined content)
|
|
359
|
-
- `<config>` - max tasks, parallelization, TDD mode
|
|
548
|
+
- `<config>` - from `blob.config`: max tasks, parallelization, TDD mode
|
|
360
549
|
- `<planning_instructions>` - phase-specific planning rules and output path
|
|
361
550
|
|
|
551
|
+
**Prepend this block to the planner prompt before sending:**
|
|
552
|
+
|
|
553
|
+
```
|
|
554
|
+
<files_to_read>
|
|
555
|
+
CRITICAL (no hook): Read these files BEFORE any other action:
|
|
556
|
+
1. .planning/CONTEXT.md — locked decisions and constraints (if exists)
|
|
557
|
+
2. .planning/ROADMAP.md — phase goals, dependencies, and structure
|
|
558
|
+
3. .planning/phases/{NN}-{slug}/RESEARCH.md — research findings (if exists)
|
|
559
|
+
4. .planning/phases/{NN}-{slug}/CONTEXT.md — phase-level decisions and deferred items (if exists)
|
|
560
|
+
5. .planning/phases/{prior_phase_dir}/SUMMARY-*.md — prior phase summaries with deferred items (if prior phase exists)
|
|
561
|
+
{if learnings_temp_path exists}6. {learnings_temp_path} — cross-project learnings (estimation and planning patterns from past PBR projects){/if}
|
|
562
|
+
7. .planning/intel/arch.md — architecture intelligence (if exists)
|
|
563
|
+
8. .planning/intel/stack.json — tech stack intelligence (if exists)
|
|
564
|
+
</files_to_read>
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
Items 4-5 provide the planner with deferred items from the current phase CONTEXT.md and from prior phase SUMMARY.md files, enabling the deferred-items forward path. If `{learnings_temp_path}` was produced in the learnings injection step above, replace `{if...}{/if}` with the actual line. If no learnings were found, omit item 6 entirely. If no prior phase exists, omit item 5.
|
|
568
|
+
|
|
362
569
|
Wait for the planner to complete.
|
|
363
570
|
|
|
364
|
-
After the planner returns, read the plan files it created to extract counts. Display a completion summary:
|
|
571
|
+
After the planner returns, read the plan files it created to extract counts. Display a completion summary using standardized status symbols (see `@references/ui-brand.md`):
|
|
365
572
|
|
|
366
573
|
```
|
|
367
574
|
✓ Planner created {N} plan(s) across {M} wave(s)
|
|
@@ -369,18 +576,61 @@ After the planner returns, read the plan files it created to extract counts. Dis
|
|
|
369
576
|
|
|
370
577
|
Where `{N}` is the number of PLAN.md files written and `{M}` is the number of distinct wave values across those plans (from frontmatter).
|
|
371
578
|
|
|
579
|
+
Present a wave execution table using standardized symbols:
|
|
580
|
+
|
|
581
|
+
```
|
|
582
|
+
Wave 1: ○ Plan 01, ○ Plan 02
|
|
583
|
+
Wave 2: ○ Plan 03
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
Use `○` (pending) for all plans at this stage since none have been executed yet.
|
|
587
|
+
|
|
588
|
+
### Step 5b: Spot-Check Planner Output (CLI-enforced)
|
|
589
|
+
|
|
590
|
+
CRITICAL (no hook): Verify planner output using CLI before proceeding.
|
|
591
|
+
|
|
592
|
+
For each PLAN file in the phase directory:
|
|
593
|
+
|
|
594
|
+
```bash
|
|
595
|
+
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js verify plan-structure ".planning/phases/{NN}-{slug}/{plan_file}"
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
Parse JSON result per file:
|
|
599
|
+
- `valid: true` — plan structure is sound
|
|
600
|
+
- `valid: false` — read `errors` array. Report to user.
|
|
601
|
+
- `warnings` — note but don't block
|
|
602
|
+
|
|
603
|
+
Also verify overall plan count:
|
|
604
|
+
|
|
605
|
+
```bash
|
|
606
|
+
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js verify spot-check plan ".planning/phases/{NN}-{slug}"
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
If ANY plan fails structural validation, present user with: **Retry** / **Continue anyway** / **Abort**
|
|
610
|
+
|
|
372
611
|
---
|
|
373
612
|
|
|
374
613
|
### Step 6: Plan Validation (delegated, conditional)
|
|
375
614
|
|
|
376
615
|
**Skip this step if:**
|
|
377
|
-
-
|
|
616
|
+
- `features.inline_verify` is `true` in config AND `--audit` flag is NOT set (planner self-validates)
|
|
617
|
+
|
|
618
|
+
Plan-checking is always enabled. Quick depth uses a reduced dimension set (D1-D7, skipping D8 Nyquist and D9 Data Contracts). The `--audit` flag forces full 9-dimension checking regardless of depth.
|
|
378
619
|
|
|
379
620
|
To check: use the resolved depth profile from Step 1. The profile consolidates the depth setting and any user overrides into a single boolean.
|
|
380
621
|
|
|
622
|
+
**Force validation:** If `--audit` flag is set, ALWAYS spawn the plan-checker agent regardless of depth profile or inline_verify setting. Display: `◆ Audit mode: spawning plan checker (--audit flag)`
|
|
623
|
+
|
|
624
|
+
**Inline verify mode:** If `features.inline_verify` is `true` and `--audit` is NOT set, use the CLI plan-structure validation result from Step 5b instead of spawning the full plan-checker. Display: `✓ Using CLI structural validation (inline_verify enabled). Use --audit to force full plan-checker.`
|
|
625
|
+
|
|
626
|
+
When inline_verify skips the plan-checker spawn, write `.plan-check.json` based on the ACTUAL CLI validation results from Step 5b:
|
|
627
|
+
- If ALL plans passed structural validation (`valid: true`): write `{ "status": "passed", "dimensions_checked": 1, "blockers": 0, "warnings": {warning_count}, "timestamp": "<ISO>", "source": "inline_verify" }`
|
|
628
|
+
- If ANY plan failed structural validation (`valid: false`): write `{ "status": "failed", "dimensions_checked": 1, "blockers": {error_count}, "warnings": {warning_count}, "errors": [{error_list}], "timestamp": "<ISO>", "source": "inline_verify" }` — the build gate WILL block. Do NOT write `"status": "passed"` when validation found errors.
|
|
629
|
+
- The `dimensions_checked: 1` reflects that inline_verify only checks structural validity (D2), not the full 9 dimensions. Use `--audit` for comprehensive checking.
|
|
630
|
+
|
|
381
631
|
**If validation is enabled:**
|
|
382
632
|
|
|
383
|
-
Display to the user:
|
|
633
|
+
Display to the user: `◆ Spawning plan checker...`
|
|
384
634
|
|
|
385
635
|
Spawn the plan checker Task():
|
|
386
636
|
|
|
@@ -397,11 +647,21 @@ NOTE: The pbr:plan-checker subagent type auto-loads the agent definition. Do NOT
|
|
|
397
647
|
|
|
398
648
|
#### Checker Prompt Template
|
|
399
649
|
|
|
400
|
-
Read
|
|
650
|
+
Read `${CLAUDE_SKILL_DIR}/templates/checker-prompt.md.tmpl` and use it as the prompt template for spawning the plan checker agent. Fill in the placeholders:
|
|
401
651
|
- `<plans_to_check>` - manifest table of PLAN.md file paths (checker reads each via Read tool)
|
|
402
652
|
- `<phase_context>` - phase goal and requirement IDs
|
|
653
|
+
- `<depth>` - current depth profile (quick, standard, comprehensive) so checker knows which dimensions to evaluate
|
|
403
654
|
- `<context>` - file paths to project-level and phase-level CONTEXT.md files (checker reads via Read tool)
|
|
404
655
|
|
|
656
|
+
**Prepend this block to the checker prompt before sending:**
|
|
657
|
+
```
|
|
658
|
+
<files_to_read>
|
|
659
|
+
CRITICAL (no hook): Read these files BEFORE any other action:
|
|
660
|
+
1. .planning/phases/{NN}-{slug}/PLAN-*.md — plan files to validate
|
|
661
|
+
2. .planning/CONTEXT.md — locked decisions to check against (if exists)
|
|
662
|
+
</files_to_read>
|
|
663
|
+
```
|
|
664
|
+
|
|
405
665
|
**Process checker results:**
|
|
406
666
|
|
|
407
667
|
After the plan checker returns, display its result:
|
|
@@ -409,17 +669,72 @@ After the plan checker returns, display its result:
|
|
|
409
669
|
- If `VERIFICATION PASSED`: display `✓ Plan checker: all plans passed` and proceed to Step 8
|
|
410
670
|
- If issues found: display `⚠ Plan checker found {N} issue(s) — entering revision loop` and proceed to Step 7
|
|
411
671
|
|
|
672
|
+
**Plan-check artifact:** The plan-checker agent writes `.plan-check.json` to the phase directory as part of its output. After the checker completes, verify the artifact exists:
|
|
673
|
+
- Run: `ls .planning/phases/{NN}-{slug}/.plan-check.json`
|
|
674
|
+
- If missing: write it manually based on checker output (status, blocker/warning counts, timestamp)
|
|
675
|
+
- If present: proceed — the build gate will read this artifact
|
|
676
|
+
|
|
677
|
+
**Step 6b: Requirements Coverage Gate (structural)**
|
|
678
|
+
|
|
679
|
+
After plan validation passes, verify that ALL phase requirements are covered by at least one plan's `implements` field. This is a structural check, not agent behavior — it reads actual plan files.
|
|
680
|
+
|
|
681
|
+
```bash
|
|
682
|
+
# 1. Get phase requirements from ROADMAP
|
|
683
|
+
PHASE_REQS=$(grep -A 20 "### Phase {N}" .planning/ROADMAP.md | grep -oP 'REQ-[A-Z0-9-]+' | sort -u)
|
|
684
|
+
|
|
685
|
+
# 2. Get implemented requirements from all plan files
|
|
686
|
+
PLAN_REQS=$(grep -h "implements:" .planning/phases/{NN}-{slug}/PLAN-*.md | grep -oP 'REQ-[A-Z0-9-]+|GSD-[0-9]+' | sort -u)
|
|
687
|
+
|
|
688
|
+
# 3. Find uncovered requirements
|
|
689
|
+
UNCOVERED=$(comm -23 <(echo "$PHASE_REQS") <(echo "$PLAN_REQS"))
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
If `UNCOVERED` is non-empty:
|
|
693
|
+
- Display: `⚠ Requirements coverage incomplete — {N} requirement(s) not covered by any plan: {list}`
|
|
694
|
+
- If depth is `quick`: display warning but do NOT block
|
|
695
|
+
- If depth is `standard` or `comprehensive`: present user with **Fix plans** / **Continue anyway** / **Abort**
|
|
696
|
+
|
|
697
|
+
If `UNCOVERED` is empty or no phase requirements found in ROADMAP:
|
|
698
|
+
- Display: `✓ Requirements coverage: all phase requirements mapped to plans`
|
|
699
|
+
|
|
412
700
|
---
|
|
413
701
|
|
|
414
702
|
### Step 7: Revision Loop (max 3 iterations)
|
|
415
703
|
|
|
416
704
|
Reference: `skills/shared/revision-loop.md` for the full Check-Revise-Escalate pattern.
|
|
417
705
|
|
|
706
|
+
**YAML Issue Parsing:** After the plan-checker returns with issues, parse the YAML `issues:` block from the checker output (located under the `## Issues` heading). Count BLOCKER and WARNING issues separately.
|
|
707
|
+
|
|
708
|
+
**Issue Count Tracking:** Track `issue_count` per iteration. If the current iteration's `issue_count >= prev_issue_count` (count did not decrease), break early with:
|
|
709
|
+
`⚠ Revision loop stalled (issue count not decreasing). Escalating to user.`
|
|
710
|
+
|
|
711
|
+
**Iteration Display:** At the start of each iteration, display:
|
|
712
|
+
`◆ Revision iteration {N}/3 — {blocker_count} blockers, {warning_count} warnings`
|
|
713
|
+
|
|
418
714
|
Follow the revision loop pattern with:
|
|
419
|
-
- **Producer**: planner (re-spawned with
|
|
715
|
+
- **Producer**: planner (re-spawned with `${CLAUDE_SKILL_DIR}/templates/revision-prompt.md.tmpl` — pass the YAML issues block verbatim in the `<checker_issues>` section)
|
|
420
716
|
- **Checker**: plan-checker (back to Step 6)
|
|
717
|
+
- **Early exit**: if issue count does not decrease between iterations, stop the loop and escalate
|
|
421
718
|
- **Escalation**: present issues to user, offer "Proceed anyway" or "Adjust approach" (re-enter Step 5)
|
|
422
719
|
|
|
720
|
+
```
|
|
721
|
+
prev_issue_count = Infinity
|
|
722
|
+
|
|
723
|
+
LOOP (iteration = 1 to 3):
|
|
724
|
+
1. Parse YAML issues from checker output
|
|
725
|
+
2. Count: blocker_count = issues where severity == "BLOCKER"
|
|
726
|
+
warning_count = issues where severity == "WARNING"
|
|
727
|
+
issue_count = blocker_count + warning_count
|
|
728
|
+
3. Display: ◆ Revision iteration {iteration}/3 — {blocker_count} blockers, {warning_count} warnings
|
|
729
|
+
4. If issue_count >= prev_issue_count:
|
|
730
|
+
→ Display stall warning, escalate to user
|
|
731
|
+
5. prev_issue_count = issue_count
|
|
732
|
+
6. Read revision-prompt.md.tmpl, fill in YAML issues block
|
|
733
|
+
7. Re-spawn planner with revision prompt
|
|
734
|
+
8. Re-run plan-checker (Step 6)
|
|
735
|
+
9. If checker returns PASSED → exit loop, proceed to Step 8
|
|
736
|
+
```
|
|
737
|
+
|
|
423
738
|
---
|
|
424
739
|
|
|
425
740
|
### Step 8: User Approval (inline, conditional)
|
|
@@ -427,29 +742,13 @@ Follow the revision loop pattern with:
|
|
|
427
742
|
**Skip if:**
|
|
428
743
|
- `gates.confirm_plan` is `false` in config
|
|
429
744
|
- `mode` is `autonomous` in config
|
|
745
|
+
- `auto_mode` is `true` — proceed as if user selected "Approve"
|
|
430
746
|
|
|
431
747
|
**If approval is needed:**
|
|
432
748
|
|
|
433
|
-
Present a summary of all plans to the user:
|
|
434
|
-
|
|
435
|
-
```
|
|
436
|
-
Phase {N}: {name}
|
|
437
|
-
Plans: {count}
|
|
438
|
-
|
|
439
|
-
Plan {phase}-01: {plan name} (Wave {W}, {task_count} tasks)
|
|
440
|
-
Must-haves: {list truths}
|
|
441
|
-
Files: {list files_modified}
|
|
442
|
-
Tasks:
|
|
443
|
-
1. {task name}
|
|
444
|
-
2. {task name}
|
|
445
|
-
|
|
446
|
-
Plan {phase}-02: {plan name} (Wave {W}, {task_count} tasks)
|
|
447
|
-
...
|
|
448
|
-
|
|
449
|
-
Wave execution order:
|
|
450
|
-
Wave 1: Plan 01, Plan 02 (parallel)
|
|
451
|
-
Wave 2: Plan 03 (depends on 01, 02)
|
|
749
|
+
Present a summary of all plans to the user. For each plan include: plan name, wave, task count, must-haves, files_modified. For each task include the task name. Add a wave execution order summary (Wave 1: Plan 01, 02 (parallel), Wave 2: Plan 03, etc.).
|
|
452
750
|
|
|
751
|
+
**CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
|
|
453
752
|
Use AskUserQuestion (pattern: approve-revise-abort from `skills/shared/gate-prompts.md`):
|
|
454
753
|
question: "Approve these {count} plans for Phase {N}?"
|
|
455
754
|
header: "Approve?"
|
|
@@ -457,7 +756,6 @@ Use AskUserQuestion (pattern: approve-revise-abort from `skills/shared/gate-prom
|
|
|
457
756
|
- label: "Approve" description: "Proceed to build phase"
|
|
458
757
|
- label: "Request changes" description: "Discuss adjustments before proceeding"
|
|
459
758
|
- label: "Abort" description: "Cancel planning for this phase"
|
|
460
|
-
```
|
|
461
759
|
|
|
462
760
|
**If user selects 'Request changes' or 'Other':**
|
|
463
761
|
- Discuss what needs to change
|
|
@@ -465,36 +763,38 @@ Use AskUserQuestion (pattern: approve-revise-abort from `skills/shared/gate-prom
|
|
|
465
763
|
- Or make small inline edits to plan files directly
|
|
466
764
|
|
|
467
765
|
**If user selects 'Approve':**
|
|
468
|
-
- **CONTEXT.md compliance reporting**:
|
|
766
|
+
- **CONTEXT.md compliance reporting**: Check locked decisions from BOTH sources:
|
|
767
|
+
a. Project-level: `.planning/CONTEXT.md` (if exists) — cross-cutting decisions for all phases
|
|
768
|
+
b. Phase-level: `.planning/phases/{NN}-{slug}/CONTEXT.md` (if exists) — phase-specific decisions
|
|
769
|
+
Phase-level decisions override project-level for the same decision area.
|
|
770
|
+
|
|
771
|
+
Collect ALL locked decisions from both files (deduplicate identical decision text).
|
|
772
|
+
Compare against the generated plan tasks. Print:
|
|
773
|
+
`CONTEXT.md compliance: {M}/{N} locked decisions mapped to tasks`
|
|
774
|
+
where M = locked decisions reflected in at least one task action, N = total unique locked decisions.
|
|
775
|
+
If any locked decisions are unmapped, list them as warnings.
|
|
776
|
+
If neither CONTEXT.md exists: skip this check silently.
|
|
469
777
|
- **Dependency fingerprinting**: For each dependency phase (phases that this phase depends on, per ROADMAP.md):
|
|
470
778
|
1. Find all SUMMARY.md files in the dependency phase directory
|
|
471
|
-
2. Compute a
|
|
472
|
-
|
|
473
|
-
```yaml
|
|
474
|
-
dependency_fingerprints:
|
|
475
|
-
"01-01": "len:4856-mod:2025-02-08T09:40"
|
|
476
|
-
"01-02": "len:4375-mod:2025-02-08T09:43"
|
|
477
|
-
```
|
|
478
|
-
4. This allows the build skill to detect if dependency phases were re-built after this plan was created
|
|
779
|
+
2. Compute a fingerprint string for each: `"len:{bytes}-mod:{mtime}"` and add as a `dependency_fingerprints` map in each plan's YAML frontmatter — this allows the build skill to detect stale plans if dependencies were rebuilt.
|
|
780
|
+
- **Speculative mode guard:** If `$ARGUMENTS` contains `--speculative` or `--no-state-update`, SKIP all `state update` CLI calls in this section. Do NOT update STATE.md `status`, `current_phase`, or `plans_total` — the autonomous orchestrator manages state exclusively during speculative runs. Also SKIP the ROADMAP.md progress table update below.
|
|
479
781
|
- **Update ROADMAP.md Progress table** (REQUIRED — do this BEFORE updating STATE.md):
|
|
480
782
|
|
|
481
|
-
|
|
783
|
+
> Note: Use CLI for atomic writes — direct Write bypasses file locking.
|
|
784
|
+
|
|
482
785
|
```bash
|
|
786
|
+
# Note: For initial phase setup, `compound init-phase` bundles dir creation + ROADMAP + STATE atomically.
|
|
787
|
+
# Here we update ROADMAP plan counts and status separately, then patch STATE atomically.
|
|
483
788
|
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js roadmap update-plans {phase} 0 {N}
|
|
484
789
|
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js roadmap update-status {phase} planned
|
|
485
|
-
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js state
|
|
486
|
-
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js state update last_activity now
|
|
790
|
+
node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js state patch '{"status":"planned","last_activity":"now"}'
|
|
487
791
|
```
|
|
792
|
+
- Update STATE.md via CLI **(CRITICAL (no hook) — update BOTH frontmatter AND body)**: set `status: "planned"`, `plans_total`, `last_command` in frontmatter AND update `Status:`, `Plan:` lines in body `## Current Position`
|
|
488
793
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
5. Update the `Status` column to `planned`
|
|
494
|
-
6. Save the file — do NOT skip this step
|
|
495
|
-
- Update STATE.md: set current phase plan status to "planned"
|
|
496
|
-
- **If `features.auto_advance` is `true` AND `mode` is `autonomous`:** Chain directly to build: `Skill({ skill: "pbr:build", args: "{N}" })`. This continues the build→review→plan→build cycle automatically.
|
|
497
|
-
- **Otherwise:** Suggest next action: `/pbr:build {N}`
|
|
794
|
+
**Tooling shortcut**: `node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js state patch '{"status":"planned","last_command":"/pbr:plan-phase {N}"}'`
|
|
795
|
+
- **If `auto_mode` is `true`:** Set `features.auto_advance = true` and `mode = autonomous` behavior for the remainder of this invocation. Chain directly to build: `Skill({ skill: "pbr:build", args: "{N} --auto" })`. This continues the plan→build→review cycle automatically.
|
|
796
|
+
- **Else if `features.auto_advance` is `true` AND `mode` is `autonomous`:** Chain directly to build: `Skill({ skill: "pbr:build", args: "{N}" })`. This continues the build→review→plan→build cycle automatically.
|
|
797
|
+
- **Otherwise:** Suggest next action: `/pbr:execute-phase {N}`
|
|
498
798
|
|
|
499
799
|
---
|
|
500
800
|
|
|
@@ -502,7 +802,8 @@ Use AskUserQuestion (pattern: approve-revise-abort from `skills/shared/gate-prom
|
|
|
502
802
|
|
|
503
803
|
### Subcommand: `add`
|
|
504
804
|
|
|
505
|
-
**
|
|
805
|
+
**Speculative mode guard:** If `$ARGUMENTS` contains `--speculative` or `--no-state-update`, SKIP the `.active-skill` write below — the autonomous orchestrator owns `.active-skill` during speculative planning.
|
|
806
|
+
**CRITICAL (hook-enforced): Write .active-skill NOW.** Write the text "plan" to `.planning/.active-skill` using the Write tool.
|
|
506
807
|
|
|
507
808
|
1. Read `.planning/ROADMAP.md`
|
|
508
809
|
2. Calculate next phase number (last phase + 1)
|
|
@@ -510,16 +811,20 @@ Use AskUserQuestion (pattern: approve-revise-abort from `skills/shared/gate-prom
|
|
|
510
811
|
4. Ask user: "What requirements does it address?" (show available unassigned REQ-IDs)
|
|
511
812
|
5. Ask user: "What phases does it depend on?"
|
|
512
813
|
6. Append phase to ROADMAP.md
|
|
814
|
+
**CRITICAL: Create the phase directory NOW. Do not skip this step.**
|
|
815
|
+
|
|
513
816
|
7. Create phase directory: `.planning/phases/{NN}-{slug}/`
|
|
514
817
|
8. Update STATE.md if needed
|
|
515
|
-
9. Suggest: `/pbr:plan {N}` to plan the new phase
|
|
516
|
-
10.
|
|
818
|
+
9. Suggest: `/pbr:plan-phase {N}` to plan the new phase
|
|
819
|
+
10. **Speculative mode guard:** If `--speculative` is present, skip the delete below (nothing was written).
|
|
820
|
+
Delete `.planning/.active-skill` if it exists.
|
|
517
821
|
|
|
518
822
|
### Subcommand: `insert <N>`
|
|
519
823
|
|
|
520
|
-
Reference:
|
|
824
|
+
Reference: `@references/decimal-phase-calculation.md` for decimal numbering rules.
|
|
521
825
|
|
|
522
|
-
**
|
|
826
|
+
**Speculative mode guard:** If `$ARGUMENTS` contains `--speculative` or `--no-state-update`, SKIP the `.active-skill` write below — the autonomous orchestrator owns `.active-skill` during speculative planning.
|
|
827
|
+
**CRITICAL (hook-enforced): Write .active-skill NOW.** Write the text "plan" to `.planning/.active-skill` using the Write tool.
|
|
523
828
|
|
|
524
829
|
1. Read `.planning/ROADMAP.md`
|
|
525
830
|
2. Calculate decimal phase number:
|
|
@@ -530,8 +835,9 @@ Reference: `skills/plan/decimal-phase-calc.md` for decimal numbering rules.
|
|
|
530
835
|
4. Insert phase into ROADMAP.md at the correct position
|
|
531
836
|
5. Create phase directory: `.planning/phases/{NN.M}-{slug}/`
|
|
532
837
|
6. Update dependencies of subsequent phases if affected
|
|
533
|
-
7. Suggest: `/pbr:plan {N.M}` to plan the new phase
|
|
534
|
-
8.
|
|
838
|
+
7. Suggest: `/pbr:plan-phase {N.M}` to plan the new phase
|
|
839
|
+
8. **Speculative mode guard:** If `--speculative` is present, skip the delete below (nothing was written).
|
|
840
|
+
Delete `.planning/.active-skill` if it exists.
|
|
535
841
|
|
|
536
842
|
### Subcommand: `remove <N>`
|
|
537
843
|
|
|
@@ -540,7 +846,8 @@ Reference: `skills/plan/decimal-phase-calc.md` for decimal numbering rules.
|
|
|
540
846
|
- Phase must exist
|
|
541
847
|
- Phase must be in `pending` or `not started` status (cannot remove completed/in-progress phases)
|
|
542
848
|
- No other phases depend on this phase (or user confirms breaking dependencies)
|
|
543
|
-
3. **
|
|
849
|
+
3. **Speculative mode guard:** If `$ARGUMENTS` contains `--speculative` or `--no-state-update`, SKIP the `.active-skill` write below — the autonomous orchestrator owns `.active-skill` during speculative planning.
|
|
850
|
+
**CRITICAL (hook-enforced): Write .active-skill NOW.** Write the text "plan" to `.planning/.active-skill` using the Write tool.
|
|
544
851
|
4. Confirm with user: "Remove Phase {N}: {name}? This will delete the phase directory and renumber subsequent phases."
|
|
545
852
|
5. If confirmed:
|
|
546
853
|
- Delete `.planning/phases/{NN}-{slug}/` directory
|
|
@@ -548,7 +855,8 @@ Reference: `skills/plan/decimal-phase-calc.md` for decimal numbering rules.
|
|
|
548
855
|
- Renumber subsequent phases (N+1 becomes N, etc.)
|
|
549
856
|
- Update all `depends_on` references in ROADMAP.md
|
|
550
857
|
- Update STATE.md if needed
|
|
551
|
-
6.
|
|
858
|
+
6. **Speculative mode guard:** If `--speculative` is present, skip the delete below (nothing was written).
|
|
859
|
+
Delete `.planning/.active-skill` if it exists.
|
|
552
860
|
|
|
553
861
|
---
|
|
554
862
|
|
|
@@ -557,11 +865,11 @@ Reference: `skills/plan/decimal-phase-calc.md` for decimal numbering rules.
|
|
|
557
865
|
When invoked with `--gaps`:
|
|
558
866
|
|
|
559
867
|
1. Read `.planning/phases/{NN}-{slug}/VERIFICATION.md`
|
|
560
|
-
- If no VERIFICATION.md exists: tell user "No verification report found. Run `/pbr:
|
|
868
|
+
- If no VERIFICATION.md exists: tell user "No verification report found. Run `/pbr:verify-work {N}` first."
|
|
561
869
|
2. Extract all gaps from the verification report
|
|
562
870
|
3. Spawn planner Task() in Gap Closure mode:
|
|
563
871
|
|
|
564
|
-
Read
|
|
872
|
+
Read `${CLAUDE_SKILL_DIR}/templates/gap-closure-prompt.md.tmpl` and use it as the prompt template for the gap closure planner. Fill in the placeholders:
|
|
565
873
|
- `<verification_report>` - inline the FULL VERIFICATION.md content
|
|
566
874
|
- `<existing_plans>` - inline all existing PLAN.md files for the phase
|
|
567
875
|
- `<gap_closure_instructions>` - specify output path and gap_closure frontmatter flag
|
|
@@ -569,35 +877,34 @@ Read `skills/plan/templates/gap-closure-prompt.md.tmpl` and use it as the prompt
|
|
|
569
877
|
4. After gap-closure plans are created:
|
|
570
878
|
- Run plan checker (if enabled)
|
|
571
879
|
- Present to user for approval
|
|
572
|
-
- Suggest: `/pbr:
|
|
880
|
+
- Suggest: `/pbr:execute-phase {N} --gaps-only`
|
|
573
881
|
|
|
574
882
|
---
|
|
575
883
|
|
|
576
884
|
## Error Handling
|
|
577
885
|
|
|
578
886
|
### Phase not found
|
|
579
|
-
If the specified phase doesn't exist in ROADMAP.md,
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
887
|
+
If the specified phase doesn't exist in ROADMAP.md, use conversational recovery:
|
|
888
|
+
|
|
889
|
+
1. Run: `node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js suggest-alternatives phase-not-found {slug}`
|
|
890
|
+
2. Parse the JSON response to get `available` phases and `suggestions` (closest matches).
|
|
891
|
+
3. Display: "Phase '{slug}' not found. Did you mean one of these?"
|
|
892
|
+
- List `suggestions` (if any) as numbered options.
|
|
893
|
+
- Offer "Show all phases" to list `available`.
|
|
894
|
+
4. **CRITICAL -- DO NOT SKIP**: Present the following choice to the user via AskUserQuestion before proceeding:
|
|
895
|
+
Use AskUserQuestion (pattern: yes-no-pick from `skills/shared/gate-prompts.md`) to let the user pick a phase or abort.
|
|
896
|
+
- If user picks a valid phase slug: re-run with that slug.
|
|
897
|
+
- If user chooses to abort: stop cleanly with a friendly message.
|
|
589
898
|
|
|
590
899
|
### Missing prerequisites
|
|
591
|
-
If REQUIREMENTS.md or ROADMAP.md don't exist,
|
|
592
|
-
```
|
|
593
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
594
|
-
║ ERROR ║
|
|
595
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
596
|
-
|
|
597
|
-
Project not initialized. Missing REQUIREMENTS.md or ROADMAP.md.
|
|
900
|
+
If REQUIREMENTS.md or ROADMAP.md don't exist, use conversational recovery:
|
|
598
901
|
|
|
599
|
-
|
|
600
|
-
|
|
902
|
+
1. Run: `node ${CLAUDE_PLUGIN_ROOT}/scripts/pbr-tools.js suggest-alternatives missing-prereq {phase}`
|
|
903
|
+
2. Parse the JSON response to get `existing_summaries`, `missing_summaries`, and `suggested_action`.
|
|
904
|
+
3. Display what is already complete and what is missing.
|
|
905
|
+
4. Use AskUserQuestion to offer: "Run /pbr:execute-phase {prerequisite-phase} first, or continue anyway?"
|
|
906
|
+
- If user chooses to continue: proceed with planning (note missing prereqs in plan frontmatter).
|
|
907
|
+
- If user chooses to build first: stop and display the suggested build command.
|
|
601
908
|
|
|
602
909
|
### Research agent fails
|
|
603
910
|
If the researcher Task() fails, display:
|
|
@@ -608,43 +915,20 @@ If the researcher Task() fails, display:
|
|
|
608
915
|
Continue to the planning step.
|
|
609
916
|
|
|
610
917
|
### Planner agent fails
|
|
611
|
-
If the planner Task() fails, display:
|
|
612
|
-
```
|
|
613
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
614
|
-
║ ERROR ║
|
|
615
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
616
|
-
|
|
617
|
-
Planner agent failed for Phase {N}.
|
|
618
|
-
|
|
619
|
-
**To fix:**
|
|
620
|
-
- Try again with `/pbr:plan {N} --skip-research`
|
|
621
|
-
- Check `.planning/CONTEXT.md` for conflicting constraints
|
|
622
|
-
```
|
|
918
|
+
If the planner Task() fails, display a branded error box — see `skills/shared/error-reporting.md`, pattern: Planner agent failure.
|
|
623
919
|
|
|
624
920
|
### Checker loops forever
|
|
625
|
-
After 3 revision iterations without passing, display:
|
|
626
|
-
```
|
|
627
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
628
|
-
║ ERROR ║
|
|
629
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
630
|
-
|
|
631
|
-
Plan checker failed to pass after 3 revision iterations for Phase {N}.
|
|
632
|
-
|
|
633
|
-
**To fix:**
|
|
634
|
-
- Review the remaining issues below and decide whether to proceed or revise manually
|
|
635
|
-
- Run `/pbr:plan {N}` to restart planning from scratch
|
|
636
|
-
```
|
|
637
|
-
|
|
921
|
+
After 3 revision iterations without passing, display a branded error box — see `skills/shared/error-reporting.md`, pattern: Checker loops.
|
|
638
922
|
Present remaining issues and ask user to decide: proceed or intervene.
|
|
639
923
|
|
|
640
924
|
---
|
|
641
925
|
|
|
642
|
-
## Files Created/Modified by /pbr:plan
|
|
926
|
+
## Files Created/Modified by /pbr:plan-phase
|
|
643
927
|
|
|
644
928
|
| File | Purpose | When |
|
|
645
929
|
|------|---------|------|
|
|
646
930
|
| `.planning/phases/{NN}-{slug}/RESEARCH.md` | Phase-specific research | Step 4 |
|
|
647
|
-
| `.planning/phases/{NN}-{slug}/
|
|
931
|
+
| `.planning/phases/{NN}-{slug}/{NN}-{MM}-PLAN.md` | Executable plan files | Step 5 |
|
|
648
932
|
| `.planning/CONTEXT.md` | Updated with assumptions | Step 3 (--assumptions) |
|
|
649
933
|
| `.planning/ROADMAP.md` | Plans Complete + Status → `planned`; updated for add/insert/remove | Step 8, Subcommands |
|
|
650
934
|
| `.planning/STATE.md` | Updated with plan status | Step 8 |
|
|
@@ -653,50 +937,12 @@ Present remaining issues and ask user to decide: proceed or intervene.
|
|
|
653
937
|
|
|
654
938
|
## Cleanup
|
|
655
939
|
|
|
940
|
+
**Speculative mode guard:** If `--speculative` is present, skip the delete below (nothing was written).
|
|
656
941
|
Delete `.planning/.active-skill` if it exists. This must happen on all paths (success, partial, and failure) before reporting results.
|
|
657
942
|
|
|
658
943
|
## Completion
|
|
659
944
|
|
|
660
945
|
After planning completes, present:
|
|
661
946
|
|
|
662
|
-
Use the branded stage banner from
|
|
663
|
-
|
|
664
|
-
```
|
|
665
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
666
|
-
║ PLAN-BUILD-RUN ► PLANNING PHASE {N} ✓ ║
|
|
667
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
668
|
-
|
|
669
|
-
**Phase {N}: {name}** — {plan_count} plans created
|
|
670
|
-
|
|
671
|
-
Plans:
|
|
672
|
-
{phase}-01: {name} (Wave 1, {task_count} tasks)
|
|
673
|
-
{phase}-02: {name} (Wave 1, {task_count} tasks)
|
|
674
|
-
{phase}-03: {name} (Wave 2, {task_count} tasks)
|
|
675
|
-
|
|
676
|
-
Wave execution:
|
|
677
|
-
Wave 1: Plans 01, 02 (parallel)
|
|
678
|
-
Wave 2: Plan 03
|
|
679
|
-
```
|
|
680
|
-
|
|
681
|
-
Then use the "Next Up" routing block:
|
|
682
|
-
```
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
686
|
-
║ ▶ NEXT UP ║
|
|
687
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
688
|
-
|
|
689
|
-
**Build Phase {N}** — execute these plans
|
|
690
|
-
|
|
691
|
-
/pbr:build {N}
|
|
692
|
-
|
|
693
|
-
<sub>/clear first → fresh context window</sub>
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
**Also available:**
|
|
698
|
-
- /pbr:plan {N} --assumptions — review assumptions first
|
|
699
|
-
- /pbr:discuss {N} — talk through details before building
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
```
|
|
947
|
+
Use the branded stage banner and next-up block from `${CLAUDE_SKILL_DIR}/templates/completion-output.md.tmpl`.
|
|
948
|
+
Fill in: `{N}` (phase number), `{phase-name}`, `{plan_count}`, `{plan_list_lines}` (one line per plan with wave and task count), `{wave_table_lines}` (one line per wave).
|