@sienklogic/plan-build-run 2.19.0 → 2.19.2
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 +1287 -303
- package/CLAUDE.md +74 -39
- 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 +151 -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 +234 -0
- package/dashboard/server/routes/config.js +64 -0
- package/dashboard/server/routes/health.js +98 -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 +233 -0
- package/dashboard/server/services/file-watcher.js +105 -0
- package/dashboard/server/services/planning-reader.js +727 -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 +1298 -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 +101 -0
- package/plugins/pbr/agents/audit.md +205 -89
- package/plugins/pbr/agents/codebase-mapper.md +158 -23
- package/plugins/pbr/agents/debugger.md +212 -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 +219 -36
- package/plugins/pbr/agents/roadmapper.md +397 -0
- package/plugins/pbr/agents/synthesizer.md +166 -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 +155 -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 +209 -0
- package/plugins/pbr/dist/check-read-first.js +345 -0
- package/plugins/pbr/dist/check-roadmap-sync.js +507 -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 +396 -0
- package/plugins/pbr/dist/check-summary-gate.js +188 -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 +155 -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 +658 -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 +519 -0
- package/plugins/pbr/dist/pbr-tools.js +1961 -0
- package/plugins/pbr/dist/post-bash-triage.js +96 -0
- package/plugins/pbr/dist/post-compact.js +135 -0
- package/plugins/pbr/dist/post-hoc.js +237 -0
- package/plugins/pbr/dist/post-write-dispatch.js +243 -0
- package/plugins/pbr/dist/post-write-quality.js +208 -0
- package/plugins/pbr/dist/pre-bash-dispatch.js +212 -0
- package/plugins/pbr/dist/pre-skill-dispatch.js +114 -0
- package/plugins/pbr/dist/pre-task-dispatch.js +269 -0
- package/plugins/pbr/dist/pre-write-dispatch.js +234 -0
- package/plugins/pbr/dist/progress-tracker.js +173 -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 +653 -0
- package/plugins/pbr/dist/session-tracker.js +124 -0
- package/plugins/pbr/dist/status-line.js +849 -0
- package/plugins/pbr/dist/suggest-compact.js +307 -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 +215 -0
- package/plugins/pbr/dist/validate-skill-args.js +222 -0
- package/plugins/pbr/dist/validate-task.js +271 -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/checkpoints.md +723 -104
- package/plugins/pbr/references/config-reference.md +376 -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 +396 -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 +1175 -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 +155 -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 +135 -278
- package/plugins/pbr/scripts/check-read-first.js +345 -0
- package/plugins/pbr/scripts/check-roadmap-sync.js +182 -21
- 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 +281 -275
- package/plugins/pbr/scripts/check-summary-gate.js +5 -15
- package/plugins/pbr/scripts/config-schema.json +1134 -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 +155 -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 +658 -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/build.js +719 -0
- package/plugins/pbr/scripts/lib/ci-fix-loop.js +228 -0
- package/plugins/pbr/scripts/lib/commands.js +483 -0
- package/plugins/pbr/scripts/lib/compound.js +216 -0
- package/plugins/pbr/scripts/lib/config.js +1308 -0
- package/plugins/pbr/scripts/lib/context.js +254 -0
- package/plugins/pbr/scripts/lib/contextual-help.js +183 -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 +1025 -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 +137 -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 +132 -0
- package/plugins/pbr/scripts/lib/help.js +100 -0
- package/plugins/pbr/scripts/lib/history.js +150 -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/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 +1025 -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 +126 -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 +1089 -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 +198 -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 +539 -0
- package/plugins/pbr/scripts/lib/state-queue.js +171 -0
- package/plugins/pbr/scripts/lib/state.js +1082 -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/tech-debt-scanner.js +116 -0
- package/plugins/pbr/scripts/lib/templates.js +362 -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/verify.js +1483 -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 +519 -0
- package/plugins/pbr/scripts/package.json +1 -1
- package/plugins/pbr/scripts/pbr-tools.js +1754 -1171
- package/plugins/pbr/scripts/post-bash-triage.js +96 -0
- package/plugins/pbr/scripts/post-compact.js +135 -0
- package/plugins/pbr/scripts/post-hoc.js +237 -0
- package/plugins/pbr/scripts/post-write-dispatch.js +201 -31
- package/plugins/pbr/scripts/post-write-quality.js +4 -3
- package/plugins/pbr/scripts/pre-bash-dispatch.js +147 -51
- package/plugins/pbr/scripts/pre-skill-dispatch.js +114 -0
- package/plugins/pbr/scripts/pre-task-dispatch.js +269 -0
- package/plugins/pbr/scripts/pre-write-dispatch.js +170 -73
- package/plugins/pbr/scripts/progress-tracker.js +122 -310
- 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 +428 -29
- package/plugins/pbr/scripts/session-tracker.js +124 -0
- package/plugins/pbr/scripts/status-line.js +593 -32
- package/plugins/pbr/scripts/suggest-compact.js +201 -13
- 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 +155 -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 +41 -26
- package/plugins/pbr/scripts/validate-skill-args.js +87 -15
- package/plugins/pbr/scripts/validate-task.js +83 -627
- 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 +508 -153
- package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +1 -2
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +411 -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 +112 -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 +84 -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 +54 -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 +227 -0
- package/plugins/pbr/skills/quick/SKILL.md +435 -100
- package/plugins/pbr/skills/release/SKILL.md +206 -0
- package/plugins/pbr/skills/resume/SKILL.md +170 -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 +152 -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 +150 -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 +49 -56
- 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 +185 -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
|
@@ -1,198 +1,614 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Verification Patterns
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
How to verify different types of artifacts are real implementations, not stubs or placeholders.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<core_principle>
|
|
6
|
+
**Existence != Implementation**
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
A file existing does not mean the feature works. Verification must check:
|
|
9
|
+
1. **Exists** - File is present at expected path
|
|
10
|
+
2. **Substantive** - Content is real implementation, not placeholder
|
|
11
|
+
3. **Wired** - Connected to the rest of the system
|
|
12
|
+
4. **Functional** - Actually works when invoked
|
|
8
13
|
|
|
9
|
-
|
|
14
|
+
Levels 1-3 can be checked programmatically. Level 4 often requires human verification.
|
|
15
|
+
</core_principle>
|
|
10
16
|
|
|
11
|
-
|
|
17
|
+
<stub_detection>
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
<!-- stub detection patterns -->
|
|
20
|
+
## Universal Stub Patterns
|
|
14
21
|
|
|
22
|
+
These patterns indicate placeholder code regardless of file type:
|
|
23
|
+
|
|
24
|
+
**Comment-based stubs:**
|
|
15
25
|
```bash
|
|
16
|
-
#
|
|
17
|
-
|
|
26
|
+
# Grep patterns for stub comments
|
|
27
|
+
grep -E "(TODO|FIXME|XXX|HACK|PLACEHOLDER)" "$file"
|
|
28
|
+
grep -E "implement|add later|coming soon|will be" "$file" -i
|
|
29
|
+
grep -E "// \.\.\.|/\* \.\.\. \*/|# \.\.\." "$file"
|
|
30
|
+
```
|
|
18
31
|
|
|
19
|
-
|
|
20
|
-
|
|
32
|
+
**Placeholder text in output:**
|
|
33
|
+
```bash
|
|
34
|
+
# UI placeholder patterns
|
|
35
|
+
grep -E "placeholder|lorem ipsum|coming soon|under construction" "$file" -i
|
|
36
|
+
grep -E "sample|example|test data|dummy" "$file" -i
|
|
37
|
+
grep -E "\[.*\]|<.*>|\{.*\}" "$file" # Template brackets left in
|
|
38
|
+
```
|
|
21
39
|
|
|
22
|
-
|
|
23
|
-
|
|
40
|
+
**Empty or trivial implementations:**
|
|
41
|
+
```bash
|
|
42
|
+
# Functions that do nothing
|
|
43
|
+
grep -E "return null|return undefined|return \{\}|return \[\]" "$file"
|
|
44
|
+
grep -E "pass$|\.\.\.|\bnothing\b" "$file"
|
|
45
|
+
grep -E "console\.(log|warn|error).*only" "$file" # Log-only functions
|
|
46
|
+
```
|
|
24
47
|
|
|
25
|
-
|
|
26
|
-
|
|
48
|
+
**Hardcoded values where dynamic expected:**
|
|
49
|
+
```bash
|
|
50
|
+
# Hardcoded IDs, counts, or content
|
|
51
|
+
grep -E "id.*=.*['\"].*['\"]" "$file" # Hardcoded string IDs
|
|
52
|
+
grep -E "count.*=.*\d+|length.*=.*\d+" "$file" # Hardcoded counts
|
|
53
|
+
grep -E "\\\$\d+\.\d{2}|\d+ items" "$file" # Hardcoded display values
|
|
27
54
|
```
|
|
28
55
|
|
|
29
|
-
|
|
56
|
+
</stub_detection>
|
|
30
57
|
|
|
31
|
-
|
|
58
|
+
<react_components>
|
|
32
59
|
|
|
60
|
+
## React/Next.js Components
|
|
61
|
+
|
|
62
|
+
**Existence check:**
|
|
63
|
+
```bash
|
|
64
|
+
# File exists and exports component
|
|
65
|
+
[ -f "$component_path" ] && grep -E "export (default |)function|export const.*=.*\(" "$component_path"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Substantive check:**
|
|
33
69
|
```bash
|
|
34
|
-
#
|
|
35
|
-
|
|
70
|
+
# Returns actual JSX, not placeholder
|
|
71
|
+
grep -E "return.*<" "$component_path" | grep -v "return.*null" | grep -v "placeholder" -i
|
|
72
|
+
|
|
73
|
+
# Has meaningful content (not just wrapper div)
|
|
74
|
+
grep -E "<[A-Z][a-zA-Z]+|className=|onClick=|onChange=" "$component_path"
|
|
75
|
+
|
|
76
|
+
# Uses props or state (not static)
|
|
77
|
+
grep -E "props\.|useState|useEffect|useContext|\{.*\}" "$component_path"
|
|
78
|
+
```
|
|
36
79
|
|
|
37
|
-
|
|
38
|
-
|
|
80
|
+
**Stub patterns specific to React:**
|
|
81
|
+
```javascript
|
|
82
|
+
// RED FLAGS - These are stubs:
|
|
83
|
+
return <div>Component</div>
|
|
84
|
+
return <div>Placeholder</div>
|
|
85
|
+
return <div>{/* TODO */}</div>
|
|
86
|
+
return <p>Coming soon</p>
|
|
87
|
+
return null
|
|
88
|
+
return <></>
|
|
89
|
+
|
|
90
|
+
// Also stubs - empty handlers:
|
|
91
|
+
onClick={() => {})
|
|
92
|
+
onChange={() => console.log('clicked')}
|
|
93
|
+
onSubmit={(e) => e.preventDefault()} // Only prevents default, does nothing
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Wiring check:**
|
|
97
|
+
```bash
|
|
98
|
+
# Component imports what it needs
|
|
99
|
+
grep -E "^import.*from" "$component_path"
|
|
39
100
|
|
|
40
|
-
#
|
|
41
|
-
|
|
101
|
+
# Props are actually used (not just received)
|
|
102
|
+
# Look for destructuring or props.X usage
|
|
103
|
+
grep -E "\{ .* \}.*props|\bprops\.[a-zA-Z]+" "$component_path"
|
|
42
104
|
|
|
43
|
-
# API
|
|
44
|
-
|
|
105
|
+
# API calls exist (for data-fetching components)
|
|
106
|
+
grep -E "fetch\(|axios\.|useSWR|useQuery|getServerSideProps|getStaticProps" "$component_path"
|
|
45
107
|
```
|
|
46
108
|
|
|
47
|
-
|
|
109
|
+
**Functional verification (human required):**
|
|
110
|
+
- Does the component render visible content?
|
|
111
|
+
- Do interactive elements respond to clicks?
|
|
112
|
+
- Does data load and display?
|
|
113
|
+
- Do error states show appropriately?
|
|
114
|
+
|
|
115
|
+
</react_components>
|
|
116
|
+
|
|
117
|
+
<api_routes>
|
|
118
|
+
|
|
119
|
+
## API Routes (Next.js App Router / Express / etc.)
|
|
120
|
+
|
|
121
|
+
**Existence check:**
|
|
122
|
+
```bash
|
|
123
|
+
# Route file exists
|
|
124
|
+
[ -f "$route_path" ]
|
|
125
|
+
|
|
126
|
+
# Exports HTTP method handlers (Next.js App Router)
|
|
127
|
+
grep -E "export (async )?(function|const) (GET|POST|PUT|PATCH|DELETE)" "$route_path"
|
|
48
128
|
|
|
49
|
-
|
|
129
|
+
# Or Express-style handlers
|
|
130
|
+
grep -E "\.(get|post|put|patch|delete)\(" "$route_path"
|
|
131
|
+
```
|
|
50
132
|
|
|
133
|
+
**Substantive check:**
|
|
51
134
|
```bash
|
|
52
|
-
#
|
|
53
|
-
|
|
135
|
+
# Has actual logic, not just return statement
|
|
136
|
+
wc -l "$route_path" # More than 10-15 lines suggests real implementation
|
|
54
137
|
|
|
55
|
-
#
|
|
56
|
-
grep -
|
|
138
|
+
# Interacts with data source
|
|
139
|
+
grep -E "prisma\.|db\.|mongoose\.|sql|query|find|create|update|delete" "$route_path" -i
|
|
57
140
|
|
|
58
|
-
#
|
|
59
|
-
grep -
|
|
141
|
+
# Has error handling
|
|
142
|
+
grep -E "try|catch|throw|error|Error" "$route_path"
|
|
60
143
|
|
|
61
|
-
#
|
|
62
|
-
grep -
|
|
144
|
+
# Returns meaningful response
|
|
145
|
+
grep -E "Response\.json|res\.json|res\.send|return.*\{" "$route_path" | grep -v "message.*not implemented" -i
|
|
63
146
|
```
|
|
64
147
|
|
|
65
|
-
|
|
148
|
+
**Stub patterns specific to API routes:**
|
|
149
|
+
```typescript
|
|
150
|
+
// RED FLAGS - These are stubs:
|
|
151
|
+
export async function POST() {
|
|
152
|
+
return Response.json({ message: "Not implemented" })
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export async function GET() {
|
|
156
|
+
return Response.json([]) // Empty array with no DB query
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export async function PUT() {
|
|
160
|
+
return new Response() // Empty response
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// Console log only:
|
|
164
|
+
export async function POST(req) {
|
|
165
|
+
console.log(await req.json())
|
|
166
|
+
return Response.json({ ok: true })
|
|
167
|
+
}
|
|
168
|
+
```
|
|
66
169
|
|
|
67
|
-
|
|
170
|
+
**Wiring check:**
|
|
171
|
+
```bash
|
|
172
|
+
# Imports database/service clients
|
|
173
|
+
grep -E "^import.*prisma|^import.*db|^import.*client" "$route_path"
|
|
68
174
|
|
|
69
|
-
|
|
175
|
+
# Actually uses request body (for POST/PUT)
|
|
176
|
+
grep -E "req\.json\(\)|req\.body|request\.json\(\)" "$route_path"
|
|
70
177
|
|
|
178
|
+
# Validates input (not just trusting request)
|
|
179
|
+
grep -E "schema\.parse|validate|zod|yup|joi" "$route_path"
|
|
71
180
|
```
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
181
|
+
|
|
182
|
+
**Functional verification (human or automated):**
|
|
183
|
+
- Does GET return real data from database?
|
|
184
|
+
- Does POST actually create a record?
|
|
185
|
+
- Does error response have correct status code?
|
|
186
|
+
- Are auth checks actually enforced?
|
|
187
|
+
|
|
188
|
+
</api_routes>
|
|
189
|
+
|
|
190
|
+
<database_schema>
|
|
191
|
+
|
|
192
|
+
## Database Schema (Prisma / Drizzle / SQL)
|
|
193
|
+
|
|
194
|
+
**Existence check:**
|
|
195
|
+
```bash
|
|
196
|
+
# Schema file exists
|
|
197
|
+
[ -f "prisma/schema.prisma" ] || [ -f "drizzle/schema.ts" ] || [ -f "src/db/schema.sql" ]
|
|
198
|
+
|
|
199
|
+
# Model/table is defined
|
|
200
|
+
grep -E "^model $model_name|CREATE TABLE $table_name|export const $table_name" "$schema_path"
|
|
75
201
|
```
|
|
76
202
|
|
|
77
|
-
|
|
203
|
+
**Substantive check:**
|
|
204
|
+
```bash
|
|
205
|
+
# Has expected fields (not just id)
|
|
206
|
+
grep -A 20 "model $model_name" "$schema_path" | grep -E "^\s+\w+\s+\w+"
|
|
207
|
+
|
|
208
|
+
# Has relationships if expected
|
|
209
|
+
grep -E "@relation|REFERENCES|FOREIGN KEY" "$schema_path"
|
|
78
210
|
|
|
211
|
+
# Has appropriate field types (not all String)
|
|
212
|
+
grep -A 20 "model $model_name" "$schema_path" | grep -E "Int|DateTime|Boolean|Float|Decimal|Json"
|
|
79
213
|
```
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
214
|
+
|
|
215
|
+
**Stub patterns specific to schemas:**
|
|
216
|
+
```prisma
|
|
217
|
+
// RED FLAGS - These are stubs:
|
|
218
|
+
model User {
|
|
219
|
+
id String @id
|
|
220
|
+
// TODO: add fields
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
model Message {
|
|
224
|
+
id String @id
|
|
225
|
+
content String // Only one real field
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Missing critical fields:
|
|
229
|
+
model Order {
|
|
230
|
+
id String @id
|
|
231
|
+
// No: userId, items, total, status, createdAt
|
|
232
|
+
}
|
|
83
233
|
```
|
|
84
234
|
|
|
85
|
-
|
|
235
|
+
**Wiring check:**
|
|
236
|
+
```bash
|
|
237
|
+
# Migrations exist and are applied
|
|
238
|
+
ls prisma/migrations/ 2>/dev/null | wc -l # Should be > 0
|
|
239
|
+
npx prisma migrate status 2>/dev/null | grep -v "pending"
|
|
86
240
|
|
|
241
|
+
# Client is generated
|
|
242
|
+
[ -d "node_modules/.prisma/client" ]
|
|
87
243
|
```
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
244
|
+
|
|
245
|
+
**Functional verification:**
|
|
246
|
+
```bash
|
|
247
|
+
# Can query the table (automated)
|
|
248
|
+
npx prisma db execute --stdin <<< "SELECT COUNT(*) FROM $table_name"
|
|
91
249
|
```
|
|
92
250
|
|
|
93
|
-
|
|
251
|
+
</database_schema>
|
|
94
252
|
|
|
253
|
+
<hooks_utilities>
|
|
254
|
+
|
|
255
|
+
## Custom Hooks and Utilities
|
|
256
|
+
|
|
257
|
+
**Existence check:**
|
|
258
|
+
```bash
|
|
259
|
+
# File exists and exports function
|
|
260
|
+
[ -f "$hook_path" ] && grep -E "export (default )?(function|const)" "$hook_path"
|
|
95
261
|
```
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
262
|
+
|
|
263
|
+
**Substantive check:**
|
|
264
|
+
```bash
|
|
265
|
+
# Hook uses React hooks (for custom hooks)
|
|
266
|
+
grep -E "useState|useEffect|useCallback|useMemo|useRef|useContext" "$hook_path"
|
|
267
|
+
|
|
268
|
+
# Has meaningful return value
|
|
269
|
+
grep -E "return \{|return \[" "$hook_path"
|
|
270
|
+
|
|
271
|
+
# More than trivial length
|
|
272
|
+
[ $(wc -l < "$hook_path") -gt 10 ]
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Stub patterns specific to hooks:**
|
|
276
|
+
```typescript
|
|
277
|
+
// RED FLAGS - These are stubs:
|
|
278
|
+
export function useAuth() {
|
|
279
|
+
return { user: null, login: () => {}, logout: () => {} }
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export function useCart() {
|
|
283
|
+
const [items, setItems] = useState([])
|
|
284
|
+
return { items, addItem: () => console.log('add'), removeItem: () => {} }
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Hardcoded return:
|
|
288
|
+
export function useUser() {
|
|
289
|
+
return { name: "Test User", email: "test@example.com" }
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**Wiring check:**
|
|
294
|
+
```bash
|
|
295
|
+
# Hook is actually imported somewhere
|
|
296
|
+
grep -r "import.*$hook_name" src/ --include="*.tsx" --include="*.ts" | grep -v "$hook_path"
|
|
297
|
+
|
|
298
|
+
# Hook is actually called
|
|
299
|
+
grep -r "$hook_name()" src/ --include="*.tsx" --include="*.ts" | grep -v "$hook_path"
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
</hooks_utilities>
|
|
303
|
+
|
|
304
|
+
<environment_config>
|
|
305
|
+
|
|
306
|
+
## Environment Variables and Configuration
|
|
307
|
+
|
|
308
|
+
**Existence check:**
|
|
309
|
+
```bash
|
|
310
|
+
# .env file exists
|
|
311
|
+
[ -f ".env" ] || [ -f ".env.local" ]
|
|
312
|
+
|
|
313
|
+
# Required variable is defined
|
|
314
|
+
grep -E "^$VAR_NAME=" .env .env.local 2>/dev/null
|
|
99
315
|
```
|
|
100
316
|
|
|
101
|
-
|
|
317
|
+
**Substantive check:**
|
|
318
|
+
```bash
|
|
319
|
+
# Variable has actual value (not placeholder)
|
|
320
|
+
grep -E "^$VAR_NAME=.+" .env .env.local 2>/dev/null | grep -v "your-.*-here|xxx|placeholder|TODO" -i
|
|
321
|
+
|
|
322
|
+
# Value looks valid for type:
|
|
323
|
+
# - URLs should start with http
|
|
324
|
+
# - Keys should be long enough
|
|
325
|
+
# - Booleans should be true/false
|
|
326
|
+
```
|
|
102
327
|
|
|
328
|
+
**Stub patterns specific to env:**
|
|
329
|
+
```bash
|
|
330
|
+
# RED FLAGS - These are stubs:
|
|
331
|
+
DATABASE_URL=your-database-url-here
|
|
332
|
+
STRIPE_SECRET_KEY=sk_test_xxx
|
|
333
|
+
API_KEY=placeholder
|
|
334
|
+
NEXT_PUBLIC_API_URL=http://localhost:3000 # Still pointing to localhost in prod
|
|
103
335
|
```
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
336
|
+
|
|
337
|
+
**Wiring check:**
|
|
338
|
+
```bash
|
|
339
|
+
# Variable is actually used in code
|
|
340
|
+
grep -r "process\.env\.$VAR_NAME|env\.$VAR_NAME" src/ --include="*.ts" --include="*.tsx"
|
|
341
|
+
|
|
342
|
+
# Variable is in validation schema (if using zod/etc for env)
|
|
343
|
+
grep -E "$VAR_NAME" src/env.ts src/env.mjs 2>/dev/null
|
|
107
344
|
```
|
|
108
345
|
|
|
109
|
-
|
|
346
|
+
</environment_config>
|
|
347
|
+
|
|
348
|
+
<wiring_verification>
|
|
349
|
+
|
|
350
|
+
<!-- wiring verification patterns -->
|
|
351
|
+
## Wiring Verification Patterns
|
|
352
|
+
|
|
353
|
+
Wiring verification checks that components actually communicate. This is where most stubs hide.
|
|
110
354
|
|
|
111
|
-
|
|
355
|
+
### Pattern: Component -> API
|
|
112
356
|
|
|
113
|
-
|
|
357
|
+
**Check:** Does the component actually call the API?
|
|
114
358
|
|
|
115
359
|
```bash
|
|
116
|
-
#
|
|
117
|
-
|
|
360
|
+
# Find the fetch/axios call
|
|
361
|
+
grep -E "fetch\(['\"].*$api_path|axios\.(get|post).*$api_path" "$component_path"
|
|
118
362
|
|
|
119
|
-
#
|
|
120
|
-
|
|
121
|
-
npm test -- --grep "pattern"
|
|
122
|
-
npx jest path/to/test
|
|
363
|
+
# Verify it's not commented out
|
|
364
|
+
grep -E "fetch\(|axios\." "$component_path" | grep -v "^.*//.*fetch"
|
|
123
365
|
|
|
124
|
-
#
|
|
125
|
-
|
|
366
|
+
# Check the response is used
|
|
367
|
+
grep -E "await.*fetch|\.then\(|setData|setState" "$component_path"
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
**Red flags:**
|
|
371
|
+
```typescript
|
|
372
|
+
// Fetch exists but response ignored:
|
|
373
|
+
fetch('/api/messages') // No await, no .then, no assignment
|
|
126
374
|
|
|
127
|
-
|
|
128
|
-
|
|
375
|
+
// Fetch in comment:
|
|
376
|
+
// fetch('/api/messages').then(r => r.json()).then(setMessages)
|
|
377
|
+
|
|
378
|
+
// Fetch to wrong endpoint:
|
|
379
|
+
fetch('/api/message') // Typo - should be /api/messages
|
|
129
380
|
```
|
|
130
381
|
|
|
131
|
-
###
|
|
382
|
+
### Pattern: API -> Database
|
|
383
|
+
|
|
384
|
+
**Check:** Does the API route actually query the database?
|
|
132
385
|
|
|
133
386
|
```bash
|
|
134
|
-
#
|
|
135
|
-
|
|
387
|
+
# Find the database call
|
|
388
|
+
grep -E "prisma\.$model|db\.query|Model\.find" "$route_path"
|
|
389
|
+
|
|
390
|
+
# Verify it's awaited
|
|
391
|
+
grep -E "await.*prisma|await.*db\." "$route_path"
|
|
392
|
+
|
|
393
|
+
# Check result is returned
|
|
394
|
+
grep -E "return.*json.*data|res\.json.*result" "$route_path"
|
|
395
|
+
```
|
|
136
396
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
397
|
+
**Red flags:**
|
|
398
|
+
```typescript
|
|
399
|
+
// Query exists but result not returned:
|
|
400
|
+
await prisma.message.findMany()
|
|
401
|
+
return Response.json({ ok: true }) // Returns static, not query result
|
|
141
402
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
403
|
+
// Query not awaited:
|
|
404
|
+
const messages = prisma.message.findMany() // Missing await
|
|
405
|
+
return Response.json(messages) // Returns Promise, not data
|
|
145
406
|
```
|
|
146
407
|
|
|
147
|
-
###
|
|
408
|
+
### Pattern: Form -> Handler
|
|
409
|
+
|
|
410
|
+
**Check:** Does the form submission actually do something?
|
|
148
411
|
|
|
149
412
|
```bash
|
|
150
|
-
#
|
|
151
|
-
|
|
413
|
+
# Find onSubmit handler
|
|
414
|
+
grep -E "onSubmit=\{|handleSubmit" "$component_path"
|
|
415
|
+
|
|
416
|
+
# Check handler has content
|
|
417
|
+
grep -A 10 "onSubmit.*=" "$component_path" | grep -E "fetch|axios|mutate|dispatch"
|
|
152
418
|
|
|
153
|
-
#
|
|
154
|
-
grep -
|
|
419
|
+
# Verify not just preventDefault
|
|
420
|
+
grep -A 5 "onSubmit" "$component_path" | grep -v "only.*preventDefault" -i
|
|
421
|
+
```
|
|
155
422
|
|
|
156
|
-
|
|
157
|
-
|
|
423
|
+
**Red flags:**
|
|
424
|
+
```typescript
|
|
425
|
+
// Handler only prevents default:
|
|
426
|
+
onSubmit={(e) => e.preventDefault()}
|
|
158
427
|
|
|
159
|
-
|
|
160
|
-
|
|
428
|
+
// Handler only logs:
|
|
429
|
+
const handleSubmit = (data) => {
|
|
430
|
+
console.log(data)
|
|
431
|
+
}
|
|
161
432
|
|
|
162
|
-
|
|
163
|
-
|
|
433
|
+
// Handler is empty:
|
|
434
|
+
onSubmit={() => {}}
|
|
164
435
|
```
|
|
165
436
|
|
|
166
|
-
|
|
437
|
+
### Pattern: State -> Render
|
|
167
438
|
|
|
168
|
-
|
|
439
|
+
**Check:** Does the component render state, not hardcoded content?
|
|
169
440
|
|
|
170
|
-
|
|
441
|
+
```bash
|
|
442
|
+
# Find state usage in JSX
|
|
443
|
+
grep -E "\{.*messages.*\}|\{.*data.*\}|\{.*items.*\}" "$component_path"
|
|
171
444
|
|
|
172
|
-
|
|
173
|
-
- "
|
|
174
|
-
- "Database migration creates users table with all required columns"
|
|
175
|
-
- "Protected routes return 401 without valid JWT"
|
|
176
|
-
- "Build completes without TypeScript errors"
|
|
445
|
+
# Check map/render of state
|
|
446
|
+
grep -E "\.map\(|\.filter\(|\.reduce\(" "$component_path"
|
|
177
447
|
|
|
178
|
-
|
|
448
|
+
# Verify dynamic content
|
|
449
|
+
grep -E "\{[a-zA-Z_]+\." "$component_path" # Variable interpolation
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
**Red flags:**
|
|
453
|
+
```tsx
|
|
454
|
+
// Hardcoded instead of state:
|
|
455
|
+
return <div>
|
|
456
|
+
<p>Message 1</p>
|
|
457
|
+
<p>Message 2</p>
|
|
458
|
+
</div>
|
|
459
|
+
|
|
460
|
+
// State exists but not rendered:
|
|
461
|
+
const [messages, setMessages] = useState([])
|
|
462
|
+
return <div>No messages</div> // Always shows "no messages"
|
|
463
|
+
|
|
464
|
+
// Wrong state rendered:
|
|
465
|
+
const [messages, setMessages] = useState([])
|
|
466
|
+
return <div>{otherData.map(...)}</div> // Uses different data
|
|
467
|
+
```
|
|
179
468
|
|
|
180
|
-
|
|
181
|
-
- "Code is clean" (subjective)
|
|
182
|
-
- "Database is set up" (what does "set up" mean?)
|
|
183
|
-
- "Tests pass" (which tests? what do they test?)
|
|
184
|
-
- "File was created" (created with what content?)
|
|
469
|
+
</wiring_verification>
|
|
185
470
|
|
|
186
|
-
|
|
471
|
+
<verification_checklist>
|
|
187
472
|
|
|
473
|
+
## Quick Verification Checklist
|
|
474
|
+
|
|
475
|
+
For each artifact type, run through this checklist:
|
|
476
|
+
|
|
477
|
+
### Component Checklist
|
|
478
|
+
- [ ] File exists at expected path
|
|
479
|
+
- [ ] Exports a function/const component
|
|
480
|
+
- [ ] Returns JSX (not null/empty)
|
|
481
|
+
- [ ] No placeholder text in render
|
|
482
|
+
- [ ] Uses props or state (not static)
|
|
483
|
+
- [ ] Event handlers have real implementations
|
|
484
|
+
- [ ] Imports resolve correctly
|
|
485
|
+
- [ ] Used somewhere in the app
|
|
486
|
+
|
|
487
|
+
### API Route Checklist
|
|
488
|
+
- [ ] File exists at expected path
|
|
489
|
+
- [ ] Exports HTTP method handlers
|
|
490
|
+
- [ ] Handlers have more than 5 lines
|
|
491
|
+
- [ ] Queries database or service
|
|
492
|
+
- [ ] Returns meaningful response (not empty/placeholder)
|
|
493
|
+
- [ ] Has error handling
|
|
494
|
+
- [ ] Validates input
|
|
495
|
+
- [ ] Called from frontend
|
|
496
|
+
|
|
497
|
+
### Schema Checklist
|
|
498
|
+
- [ ] Model/table defined
|
|
499
|
+
- [ ] Has all expected fields
|
|
500
|
+
- [ ] Fields have appropriate types
|
|
501
|
+
- [ ] Relationships defined if needed
|
|
502
|
+
- [ ] Migrations exist and applied
|
|
503
|
+
- [ ] Client generated
|
|
504
|
+
|
|
505
|
+
### Hook/Utility Checklist
|
|
506
|
+
- [ ] File exists at expected path
|
|
507
|
+
- [ ] Exports function
|
|
508
|
+
- [ ] Has meaningful implementation (not empty returns)
|
|
509
|
+
- [ ] Used somewhere in the app
|
|
510
|
+
- [ ] Return values consumed
|
|
511
|
+
|
|
512
|
+
### Wiring Checklist
|
|
513
|
+
- [ ] Component -> API: fetch/axios call exists and uses response
|
|
514
|
+
- [ ] API -> Database: query exists and result returned
|
|
515
|
+
- [ ] Form -> Handler: onSubmit calls API/mutation
|
|
516
|
+
- [ ] State -> Render: state variables appear in JSX
|
|
517
|
+
|
|
518
|
+
</verification_checklist>
|
|
519
|
+
|
|
520
|
+
<automated_verification_script>
|
|
521
|
+
|
|
522
|
+
## Automated Verification Approach
|
|
523
|
+
|
|
524
|
+
For the verification subagent, use this pattern:
|
|
525
|
+
|
|
526
|
+
```bash
|
|
527
|
+
# 1. Check existence
|
|
528
|
+
check_exists() {
|
|
529
|
+
[ -f "$1" ] && echo "EXISTS: $1" || echo "MISSING: $1"
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
# 2. Check for stub patterns
|
|
533
|
+
check_stubs() {
|
|
534
|
+
local file="$1"
|
|
535
|
+
local stubs=$(grep -c -E "TODO|FIXME|placeholder|not implemented" "$file" 2>/dev/null || echo 0)
|
|
536
|
+
[ "$stubs" -gt 0 ] && echo "STUB_PATTERNS: $stubs in $file"
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
# 3. Check wiring (component calls API)
|
|
540
|
+
check_wiring() {
|
|
541
|
+
local component="$1"
|
|
542
|
+
local api_path="$2"
|
|
543
|
+
grep -q "$api_path" "$component" && echo "WIRED: $component -> $api_path" || echo "NOT_WIRED: $component -> $api_path"
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
# 4. Check substantive (more than N lines, has expected patterns)
|
|
547
|
+
check_substantive() {
|
|
548
|
+
local file="$1"
|
|
549
|
+
local min_lines="$2"
|
|
550
|
+
local pattern="$3"
|
|
551
|
+
local lines=$(wc -l < "$file" 2>/dev/null || echo 0)
|
|
552
|
+
local has_pattern=$(grep -c -E "$pattern" "$file" 2>/dev/null || echo 0)
|
|
553
|
+
[ "$lines" -ge "$min_lines" ] && [ "$has_pattern" -gt 0 ] && echo "SUBSTANTIVE: $file" || echo "THIN: $file ($lines lines, $has_pattern matches)"
|
|
554
|
+
}
|
|
188
555
|
```
|
|
189
|
-
Bad: "Authentication is implemented"
|
|
190
|
-
Good: "User can complete Discord OAuth flow and receive a valid JWT"
|
|
191
556
|
|
|
192
|
-
|
|
193
|
-
|
|
557
|
+
Run these checks against each must-have artifact. Aggregate results into VERIFICATION.md.
|
|
558
|
+
|
|
559
|
+
</automated_verification_script>
|
|
560
|
+
|
|
561
|
+
<human_verification_triggers>
|
|
194
562
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
563
|
+
## When to Require Human Verification
|
|
564
|
+
|
|
565
|
+
Some things can't be verified programmatically. Flag these for human testing:
|
|
566
|
+
|
|
567
|
+
**Always human:**
|
|
568
|
+
- Visual appearance (does it look right?)
|
|
569
|
+
- User flow completion (can you actually do the thing?)
|
|
570
|
+
- Real-time behavior (WebSocket, SSE)
|
|
571
|
+
- External service integration (Stripe, email sending)
|
|
572
|
+
- Error message clarity (is the message helpful?)
|
|
573
|
+
- Performance feel (does it feel fast?)
|
|
574
|
+
|
|
575
|
+
**Human if uncertain:**
|
|
576
|
+
- Complex wiring that grep can't trace
|
|
577
|
+
- Dynamic behavior depending on state
|
|
578
|
+
- Edge cases and error states
|
|
579
|
+
- Mobile responsiveness
|
|
580
|
+
- Accessibility
|
|
581
|
+
|
|
582
|
+
**Format for human verification request:**
|
|
583
|
+
```markdown
|
|
584
|
+
## Human Verification Required
|
|
585
|
+
|
|
586
|
+
### 1. Chat message sending
|
|
587
|
+
**Test:** Type a message and click Send
|
|
588
|
+
**Expected:** Message appears in list, input clears
|
|
589
|
+
**Check:** Does message persist after refresh?
|
|
590
|
+
|
|
591
|
+
### 2. Error handling
|
|
592
|
+
**Test:** Disconnect network, try to send
|
|
593
|
+
**Expected:** Error message appears, message not lost
|
|
594
|
+
**Check:** Can retry after reconnect?
|
|
198
595
|
```
|
|
596
|
+
|
|
597
|
+
</human_verification_triggers>
|
|
598
|
+
|
|
599
|
+
<checkpoint_automation_reference>
|
|
600
|
+
|
|
601
|
+
## Pre-Checkpoint Automation
|
|
602
|
+
|
|
603
|
+
For automation-first checkpoint patterns, server lifecycle management, CLI installation handling, and error recovery protocols, see:
|
|
604
|
+
|
|
605
|
+
**references/checkpoints.md** -> `<automation_reference>` section
|
|
606
|
+
|
|
607
|
+
Key principles:
|
|
608
|
+
- Claude sets up verification environment BEFORE presenting checkpoints
|
|
609
|
+
- Users never run CLI commands (visit URLs only)
|
|
610
|
+
- Server lifecycle: start before checkpoint, handle port conflicts, keep running for duration
|
|
611
|
+
- CLI installation: auto-install where safe, checkpoint for user choice otherwise
|
|
612
|
+
- Error handling: fix broken environment before checkpoint, never present checkpoint with failed setup
|
|
613
|
+
|
|
614
|
+
</checkpoint_automation_reference>
|