@opengsd/gsd-core 1.13.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.ja-JP.md +3 -3
- package/README.ko-KR.md +3 -3
- package/README.pt-BR.md +3 -3
- package/README.zh-CN.md +3 -3
- package/agents/gsd-advisor-researcher.compact.md +85 -0
- package/agents/gsd-ai-researcher.compact.md +96 -0
- package/agents/gsd-assumptions-analyzer.compact.md +81 -0
- package/agents/gsd-code-fixer.compact.md +459 -0
- package/agents/gsd-code-fixer.md +9 -8
- package/agents/gsd-code-reviewer.compact.md +269 -0
- package/agents/gsd-code-reviewer.md +15 -3
- package/agents/gsd-codebase-mapper.compact.md +760 -0
- package/agents/gsd-debug-session-manager.compact.md +360 -0
- package/agents/gsd-debug-session-manager.md +17 -2
- package/agents/gsd-debugger.md +2 -2
- package/agents/gsd-doc-classifier.compact.md +192 -0
- package/agents/gsd-doc-synthesizer.compact.md +200 -0
- package/agents/gsd-doc-verifier.compact.md +143 -0
- package/agents/gsd-doc-writer.compact.md +440 -0
- package/agents/gsd-dom-verifier.compact.md +138 -0
- package/agents/gsd-domain-researcher.compact.md +141 -0
- package/agents/gsd-eval-auditor.compact.md +160 -0
- package/agents/gsd-eval-auditor.md +1 -1
- package/agents/gsd-eval-planner.compact.md +137 -0
- package/agents/gsd-executor.md +13 -8
- package/agents/gsd-framework-selector.compact.md +82 -0
- package/agents/gsd-integration-checker.compact.md +245 -0
- package/agents/gsd-intel-updater.compact.md +226 -0
- package/agents/gsd-intel-updater.md +1 -1
- package/agents/gsd-mempalace-curator.compact.md +45 -0
- package/agents/gsd-nyquist-auditor.compact.md +179 -0
- package/agents/gsd-pattern-mapper.compact.md +275 -0
- package/agents/gsd-phase-researcher.md +19 -11
- package/agents/gsd-plan-checker.md +8 -7
- package/agents/gsd-planner.md +12 -8
- package/agents/gsd-project-researcher.compact.md +587 -0
- package/agents/gsd-project-researcher.md +1 -1
- package/agents/gsd-research-synthesizer.compact.md +212 -0
- package/agents/gsd-research-synthesizer.md +1 -1
- package/agents/gsd-roadmapper.compact.md +454 -0
- package/agents/gsd-roadmapper.md +13 -0
- package/agents/gsd-security-auditor.compact.md +162 -0
- package/agents/gsd-ui-auditor.compact.md +404 -0
- package/agents/gsd-ui-auditor.md +155 -17
- package/agents/gsd-ui-checker.compact.md +277 -0
- package/agents/gsd-ui-researcher.compact.md +282 -0
- package/agents/gsd-ui-researcher.md +1 -1
- package/agents/gsd-user-profiler.compact.md +108 -0
- package/agents/gsd-verifier.md +10 -9
- package/bin/install.js +848 -163
- package/commands/gsd/autonomous.md +2 -2
- package/commands/gsd/capture.md +1 -1
- package/commands/gsd/cleanup.md +1 -0
- package/commands/gsd/code-review.md +2 -1
- package/commands/gsd/complete-milestone.md +1 -0
- package/commands/gsd/config.md +1 -0
- package/commands/gsd/debug.md +1 -0
- package/commands/gsd/graphify.md +1 -0
- package/commands/gsd/health.md +1 -0
- package/commands/gsd/mempalace-capture.md +8 -3
- package/commands/gsd/mempalace-recall.md +1 -0
- package/commands/gsd/new-milestone.md +1 -0
- package/commands/gsd/new-project.md +1 -0
- package/commands/gsd/next.md +1 -0
- package/commands/gsd/pause-work.md +1 -0
- package/commands/gsd/phase.md +1 -0
- package/commands/gsd/plan-review-convergence.md +6 -6
- package/commands/gsd/pr-branch.md +1 -0
- package/commands/gsd/progress.md +1 -1
- package/commands/gsd/quick-batch.md +1 -1
- package/commands/gsd/resume-work.md +1 -0
- package/commands/gsd/review-backlog.md +1 -0
- package/commands/gsd/review.md +2 -3
- package/commands/gsd/settings.md +2 -1
- package/commands/gsd/stats.md +1 -0
- package/commands/gsd/thread.md +1 -0
- package/commands/gsd/workspace.md +1 -0
- package/commands/gsd/workstreams.md +1 -0
- package/gsd-core/bin/check-latest-version.cjs +8 -3
- package/gsd-core/bin/gsd-tools.cjs +672 -146
- package/gsd-core/bin/lib/adr-parser.cjs +4 -2
- package/gsd-core/bin/lib/artifacts.cjs +2 -1
- package/gsd-core/bin/lib/audit.cjs +119 -34
- package/gsd-core/bin/lib/broken-windows.cjs +168 -49
- package/gsd-core/bin/lib/capability-lifecycle.cjs +10 -6
- package/gsd-core/bin/lib/capability-loader.cjs +135 -1
- package/gsd-core/bin/lib/capability-registry.cjs +96 -189
- package/gsd-core/bin/lib/capability-source.cjs +19 -2
- package/gsd-core/bin/lib/capability-validator.cjs +14 -2
- package/gsd-core/bin/lib/check-command-router.cjs +213 -49
- package/gsd-core/bin/lib/code-review-depth.cjs +2 -2
- package/gsd-core/bin/lib/codex-agent-toml.cjs +21 -25
- package/gsd-core/bin/lib/commands.cjs +823 -112
- package/gsd-core/bin/lib/config-loader.cjs +66 -4
- package/gsd-core/bin/lib/config.cjs +186 -45
- package/gsd-core/bin/lib/coverage.cjs +1 -1
- package/gsd-core/bin/lib/decisions.cjs +164 -45
- package/gsd-core/bin/lib/external-descriptor-trust.cjs +29 -14
- package/gsd-core/bin/lib/frontmatter.cjs +13 -0
- package/gsd-core/bin/lib/graphify.cjs +10 -2
- package/gsd-core/bin/lib/gsd2-import.cjs +1 -2
- package/gsd-core/bin/lib/health-diagnostic-rules/state-consistency.cjs +12 -1
- package/gsd-core/bin/lib/health-diagnostic-rules/worktree-health.cjs +1 -1
- package/gsd-core/bin/lib/host-runtime-detection.cjs +9 -0
- package/gsd-core/bin/lib/init.cjs +614 -86
- package/gsd-core/bin/lib/install-engine.cjs +29 -3
- package/gsd-core/bin/lib/install-profiles.cjs +14 -0
- package/gsd-core/bin/lib/installer-migrations.cjs +41 -5
- package/gsd-core/bin/lib/loop-resolver.cjs +50 -31
- package/gsd-core/bin/lib/mcp-catalog.cjs +2 -2
- package/gsd-core/bin/lib/milestone.cjs +37 -13
- package/gsd-core/bin/lib/model-resolver.cjs +253 -53
- package/gsd-core/bin/lib/phase-command-router.cjs +16 -2
- package/gsd-core/bin/lib/phase-id-card.cjs +32 -0
- package/gsd-core/bin/lib/phase-id-display.cjs +78 -0
- package/gsd-core/bin/lib/phase-id.cjs +268 -27
- package/gsd-core/bin/lib/phase-lifecycle.cjs +61 -0
- package/gsd-core/bin/lib/phase-locator.cjs +29 -10
- package/gsd-core/bin/lib/phase.cjs +393 -88
- package/gsd-core/bin/lib/plan-document.cjs +49 -1
- package/gsd-core/bin/lib/planning-document.cjs +459 -0
- package/gsd-core/bin/lib/planning-inspect.cjs +52 -19
- package/gsd-core/bin/lib/planning-snapshot.cjs +61 -12
- package/gsd-core/bin/lib/planning-workspace.cjs +57 -3
- package/gsd-core/bin/lib/pr-branch-patterns.cjs +57 -0
- package/gsd-core/bin/lib/pristine-baseline.cjs +182 -0
- package/gsd-core/bin/lib/probe-core.cjs +7 -1
- package/gsd-core/bin/lib/prohibition-enforcement.cjs +91 -4
- package/gsd-core/bin/lib/project-root.cjs +41 -2
- package/gsd-core/bin/lib/quick-batch.cjs +1 -1
- package/gsd-core/bin/lib/refactor-trigger-command-router.cjs +61 -2
- package/gsd-core/bin/lib/research-store.cjs +11 -12
- package/gsd-core/bin/lib/review-lane-descriptor.cjs +10 -30
- package/gsd-core/bin/lib/review-lane-invocation.cjs +23 -0
- package/gsd-core/bin/lib/review-reviewer-selection.cjs +2 -2
- package/gsd-core/bin/lib/reviewer-step-dispatch.cjs +337 -0
- package/gsd-core/bin/lib/roadmap-command-router.cjs +12 -4
- package/gsd-core/bin/lib/roadmap-parser.cjs +219 -18
- package/gsd-core/bin/lib/roadmap-upgrade.cjs +1539 -13
- package/gsd-core/bin/lib/roadmap.cjs +356 -42
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +310 -41
- package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +15 -4
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +13 -5
- package/gsd-core/bin/lib/runtime-homes.cjs +4 -0
- package/gsd-core/bin/lib/runtime-hooks-surface.cjs +408 -37
- package/gsd-core/bin/lib/runtime-name-policy.cjs +111 -1
- package/gsd-core/bin/lib/security.cjs +126 -7
- package/gsd-core/bin/lib/shell-command-projection.cjs +10 -6
- package/gsd-core/bin/lib/state-document.cjs +130 -28
- package/gsd-core/bin/lib/state-md-schema.cjs +21 -14
- package/gsd-core/bin/lib/state-transition.cjs +181 -30
- package/gsd-core/bin/lib/state.cjs +265 -27
- package/gsd-core/bin/lib/surface.cjs +77 -3
- package/gsd-core/bin/lib/task-command-router.cjs +12 -6
- package/gsd-core/bin/lib/tdd-red-evidence.cjs +78 -5
- package/gsd-core/bin/lib/uat-predicate.cjs +47 -4
- package/gsd-core/bin/lib/uat.cjs +9 -1
- package/gsd-core/bin/lib/ui-consideration-probe.cjs +15 -2
- package/gsd-core/bin/lib/ui-frontend-evidence.cjs +100 -9
- package/gsd-core/bin/lib/undo-commit-selection.cjs +131 -0
- package/gsd-core/bin/lib/update-context.cjs +30 -24
- package/gsd-core/bin/lib/vendor/js-yaml.cjs +11 -3
- package/gsd-core/bin/lib/verification.cjs +315 -30
- package/gsd-core/bin/lib/verify-command-grounding.cjs +47 -3
- package/gsd-core/bin/lib/verify.cjs +320 -48
- package/gsd-core/bin/lib/workstream-inventory.cjs +1 -0
- package/gsd-core/bin/lib/worktree-base-ref.cjs +482 -73
- package/gsd-core/bin/lib/worktree-safety.cjs +797 -58
- package/gsd-core/bin/shared/config-defaults.manifest.json +4 -0
- package/gsd-core/bin/shared/config-schema.manifest.json +6 -0
- package/gsd-core/bin/verify-reapply-patches.cjs +439 -80
- package/gsd-core/references/checkpoints.md +5 -3
- package/gsd-core/references/compact-content-gate.md +66 -0
- package/gsd-core/references/edge-probe-fixtures/01-round-half-even/expected-coverage.json +28 -3
- package/gsd-core/references/edge-probe-fixtures/02-merge-intervals/expected-coverage.json +37 -4
- package/gsd-core/references/edge-probe-fixtures/03-truncate-graphemes/expected-coverage.json +28 -3
- package/gsd-core/references/edge-probe-fixtures/04-money-rounding/expected-coverage.json +28 -3
- package/gsd-core/references/edge-probe-fixtures/05-list-dedupe/expected-coverage.json +37 -4
- package/gsd-core/references/edge-probe-fixtures/06-resolved-mixed/expected-coverage.json +37 -4
- package/gsd-core/references/edge-probe.md +195 -21
- package/gsd-core/references/execute-phase-between-wave-reset.md +7 -6
- package/gsd-core/references/execute-phase-wave-guard.md +22 -11
- package/gsd-core/references/gsd-run-resolver.md +1 -1
- package/gsd-core/references/loop-hook-dispatch.md +18 -0
- package/gsd-core/references/model-profiles.md +13 -4
- package/gsd-core/references/phase-argument-parsing.md +9 -7
- package/gsd-core/references/phase-id-convention.md +28 -0
- package/gsd-core/references/planner-gap-closure.md +2 -0
- package/gsd-core/references/planner-load-graph-context.md +24 -13
- package/gsd-core/references/planner-verify-command-grounding.md +14 -0
- package/gsd-core/references/planning-config.md +14 -2
- package/gsd-core/references/tdd.md +30 -4
- package/gsd-core/references/thinking-models-planning.md +18 -2
- package/gsd-core/references/ui-consideration-probe.md +10 -5
- package/gsd-core/references/verification-patterns.md +17 -4
- package/gsd-core/references/verify-command-path-resolvability.md +10 -2
- package/gsd-core/references/worktree-path-safety.md +433 -2
- package/gsd-core/templates/README.md +7 -1
- package/gsd-core/templates/state.md +6 -3
- package/gsd-core/templates/summary.compact.md +212 -0
- package/gsd-core/templates/user-setup.compact.md +199 -0
- package/gsd-core/templates/user-setup.md +0 -9
- package/gsd-core/templates/verification-report.md +1 -1
- package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -1
- package/gsd-core/workflows/add-backlog.md +1 -1
- package/gsd-core/workflows/add-phase.md +1 -1
- package/gsd-core/workflows/add-tests.md +2 -2
- package/gsd-core/workflows/add-todo.md +6 -5
- package/gsd-core/workflows/ai-integration-phase.md +11 -3
- package/gsd-core/workflows/audit-fix.md +1 -1
- package/gsd-core/workflows/audit-milestone.md +1 -1
- package/gsd-core/workflows/audit-uat.md +1 -1
- package/gsd-core/workflows/autonomous/steps/converge-fail-fast.md +9 -18
- package/gsd-core/workflows/autonomous.md +29 -16
- package/gsd-core/workflows/check-todos.md +6 -4
- package/gsd-core/workflows/cleanup.md +5 -3
- package/gsd-core/workflows/code-review/steps/dispatch-fix.md +4 -3
- package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +8 -1
- package/gsd-core/workflows/code-review-fix.md +108 -22
- package/gsd-core/workflows/code-review.md +216 -73
- package/gsd-core/workflows/complete-milestone/detail/elaboration.md +274 -0
- package/gsd-core/workflows/complete-milestone.md +41 -264
- package/gsd-core/workflows/debug.md +3 -3
- package/gsd-core/workflows/diagnose-issues.md +1 -1
- package/gsd-core/workflows/discuss-phase/modes/advisor.md +1 -1
- package/gsd-core/workflows/discuss-phase/modes/chain.md +1 -1
- package/gsd-core/workflows/discuss-phase-assumptions.md +1 -1
- package/gsd-core/workflows/discuss-phase.md +1 -1
- package/gsd-core/workflows/do.md +2 -2
- package/gsd-core/workflows/docs-update/detail/elaboration.md +179 -0
- package/gsd-core/workflows/docs-update.md +17 -158
- package/gsd-core/workflows/edit-phase.md +1 -1
- package/gsd-core/workflows/eval-review.md +10 -3
- package/gsd-core/workflows/execute-phase/detail/elaboration.md +124 -0
- package/gsd-core/workflows/execute-phase/steps/code-review-disposition.md +1017 -0
- package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +19 -4
- package/gsd-core/workflows/execute-phase/steps/completion-reconciliation.md +56 -0
- package/gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md +43 -4
- package/gsd-core/workflows/execute-phase/steps/executor-progress-policy.md +43 -0
- package/gsd-core/workflows/execute-phase/steps/gap-closure-artifacts.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/partial-wave.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/per-plan-executor-routing.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +46 -9
- package/gsd-core/workflows/execute-phase/steps/protected-branch.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/ready-wave-gate.md +37 -0
- package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/sequential-root-pin.md +35 -0
- package/gsd-core/workflows/execute-phase/steps/stale-reverification.md +24 -0
- package/gsd-core/workflows/execute-phase/steps/tdd-applicability-resolution.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/threat-id-gate.md +28 -0
- package/gsd-core/workflows/execute-phase/steps/wave-post-gate-hooks.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/worktree-base-check.md +25 -0
- package/gsd-core/workflows/execute-phase.md +83 -172
- package/gsd-core/workflows/execute-plan.md +24 -10
- package/gsd-core/workflows/explore.md +3 -3
- package/gsd-core/workflows/extract-learnings.md +2 -1
- package/gsd-core/workflows/fast.md +1 -1
- package/gsd-core/workflows/forensics.md +1 -1
- package/gsd-core/workflows/graduation.md +1 -1
- package/gsd-core/workflows/health.md +2 -2
- package/gsd-core/workflows/help/modes/full.compact.md +398 -0
- package/gsd-core/workflows/help/modes/full.md +5 -5
- package/gsd-core/workflows/help/modes/topic.md +15 -5
- package/gsd-core/workflows/help.md +1 -1
- package/gsd-core/workflows/import.md +2 -2
- package/gsd-core/workflows/inbox.md +2 -2
- package/gsd-core/workflows/ingest-docs.md +3 -3
- package/gsd-core/workflows/insert-phase.md +1 -1
- package/gsd-core/workflows/list-seeds.md +1 -1
- package/gsd-core/workflows/list-workspaces.md +1 -1
- package/gsd-core/workflows/manager.md +2 -2
- package/gsd-core/workflows/map-codebase.md +52 -5
- package/gsd-core/workflows/milestone-summary.md +1 -1
- package/gsd-core/workflows/mvp-phase.md +1 -1
- package/gsd-core/workflows/new-milestone.md +56 -14
- package/gsd-core/workflows/new-project/detail/elaboration.md +216 -0
- package/gsd-core/workflows/new-project/steps/auto-mode-config.md +3 -3
- package/gsd-core/workflows/new-project/steps/codebase-map-offer.md +1 -1
- package/gsd-core/workflows/new-project.md +39 -209
- package/gsd-core/workflows/new-workspace.md +2 -2
- package/gsd-core/workflows/next.md +1 -1
- package/gsd-core/workflows/note.md +1 -1
- package/gsd-core/workflows/onboard.md +1 -1
- package/gsd-core/workflows/pause-work.md +1 -1
- package/gsd-core/workflows/plan-phase/detail/elaboration.md +209 -0
- package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +17 -5
- package/gsd-core/workflows/plan-phase/steps/prd-express-path.md +1 -1
- package/gsd-core/workflows/plan-phase/steps/stall-detection-helpers.md +23 -5
- package/gsd-core/workflows/plan-phase.md +45 -187
- package/gsd-core/workflows/plan-review-convergence.md +21 -5
- package/gsd-core/workflows/plant-seed.md +62 -20
- package/gsd-core/workflows/pr-branch.md +132 -20
- package/gsd-core/workflows/profile-user.md +2 -2
- package/gsd-core/workflows/progress.md +1 -1
- package/gsd-core/workflows/quick/steps/plan-checker-loop.md +25 -0
- package/gsd-core/workflows/quick/steps/quick-verification.md +1 -1
- package/gsd-core/workflows/quick/steps/worktree-pre-dispatch-commit.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/batch-init.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/completion.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/merge-wave.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/planner-wave.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/research-phase.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/resume-mode.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/verification-wave.md +1 -1
- package/gsd-core/workflows/quick-batch/steps/worktree-dispatch.md +1 -1
- package/gsd-core/workflows/quick-batch.md +1 -1
- package/gsd-core/workflows/quick.md +29 -10
- package/gsd-core/workflows/reapply-patches.md +86 -6
- package/gsd-core/workflows/remove-phase.md +1 -1
- package/gsd-core/workflows/remove-workspace.md +2 -2
- package/gsd-core/workflows/resume-project.md +1 -1
- package/gsd-core/workflows/review.md +31 -16
- package/gsd-core/workflows/scan.md +1 -1
- package/gsd-core/workflows/secure-phase.md +3 -2
- package/gsd-core/workflows/settings-advanced.md +30 -10
- package/gsd-core/workflows/settings-integrations.md +2 -3
- package/gsd-core/workflows/settings.md +22 -9
- package/gsd-core/workflows/ship.md +3 -2
- package/gsd-core/workflows/sketch-wrap-up.md +1 -1
- package/gsd-core/workflows/sketch.md +1 -1
- package/gsd-core/workflows/smart-entry.md +2 -2
- package/gsd-core/workflows/spec-phase.md +15 -5
- package/gsd-core/workflows/spike-wrap-up.md +1 -1
- package/gsd-core/workflows/spike.md +1 -1
- package/gsd-core/workflows/stats.md +1 -1
- package/gsd-core/workflows/sync-skills.md +5 -5
- package/gsd-core/workflows/thread.md +1 -1
- package/gsd-core/workflows/transition.md +1 -1
- package/gsd-core/workflows/ui-phase.md +44 -8
- package/gsd-core/workflows/ui-review.md +18 -4
- package/gsd-core/workflows/ultraplan-phase.md +1 -1
- package/gsd-core/workflows/undo.md +339 -20
- package/gsd-core/workflows/update.md +14 -12
- package/gsd-core/workflows/validate-phase.md +3 -2
- package/gsd-core/workflows/verify-work/detail/elaboration.md +230 -0
- package/gsd-core/workflows/verify-work/steps/automated-ui-verification.md +1 -1
- package/gsd-core/workflows/verify-work/steps/mvp-uat-framing.md +1 -1
- package/gsd-core/workflows/verify-work.md +101 -196
- package/hooks/dist/gsd-agent-isolation-guard.js +66 -16
- package/hooks/dist/gsd-context-monitor.js +88 -15
- package/hooks/dist/gsd-cursor-subagent-start.js +34 -14
- package/hooks/dist/gsd-secret-read-guard.js +71 -19
- package/hooks/dist/gsd-statusline.js +81 -20
- package/hooks/dist/gsd-validate-commit.sh +97 -8
- package/hooks/dist/gsd-worktree-path-guard.js +25 -14
- package/hooks/dist/gsd-write-guard.js +46 -1
- package/hooks/dist/lib/dispatch-identity.js +187 -0
- package/hooks/dist/lib/filename-classification.js +64 -0
- package/hooks/dist/lib/isolation-deny-reason.js +53 -1
- package/hooks/dist/lib/isolation-sentinel.js +58 -19
- package/hooks/gsd-agent-isolation-guard.js +66 -16
- package/hooks/gsd-context-monitor.js +88 -15
- package/hooks/gsd-cursor-subagent-start.js +34 -14
- package/hooks/gsd-secret-read-guard.js +71 -19
- package/hooks/gsd-statusline.js +81 -20
- package/hooks/gsd-validate-commit.sh +97 -8
- package/hooks/gsd-worktree-path-guard.js +25 -14
- package/hooks/gsd-write-guard.js +46 -1
- package/hooks/lib/dispatch-identity.js +187 -0
- package/hooks/lib/filename-classification.js +64 -0
- package/hooks/lib/isolation-deny-reason.js +53 -1
- package/hooks/lib/isolation-sentinel.js +58 -19
- package/package.json +11 -6
- package/scripts/benchmark-compact-content-variants.cjs +298 -0
- package/scripts/benchmark-compact-content.cjs +368 -0
- package/scripts/build-hooks.js +15 -6
- package/scripts/check-contract-drift.cjs +131 -12
- package/scripts/check-env.cjs +36 -8
- package/scripts/check-glossary-refs.cjs +25 -21
- package/scripts/ci-next-health.cjs +271 -0
- package/scripts/ci-prepare-test-scope.cjs +7 -7
- package/scripts/ci-test-scope.cjs +126 -20
- package/scripts/ci-timeout-report.cjs +1 -1
- package/scripts/command-contract-helpers.cjs +3 -0
- package/scripts/diff-touches-shipped-paths.cjs +1 -1
- package/scripts/docs-guard-registry.cjs +35 -2
- package/scripts/gen-adr-index.cjs +8 -2
- package/scripts/gen-inventory-manifest.cjs +12 -0
- package/scripts/gen-loop-host-contract.cjs +69 -0
- package/scripts/gen-platform-conformance-tier.cjs +557 -0
- package/scripts/lib/drift-scan.cjs +1 -1
- package/scripts/lib/macos-conformance-tier.generated.cjs +224 -0
- package/scripts/lib/ndjson-reporter.cjs +3 -2
- package/scripts/lib/npm-version-check-diagnosis.cjs +59 -0
- package/scripts/lib/platform-conformance-tier.generated.cjs +287 -0
- package/scripts/lib/suite-detection.cjs +32 -0
- package/scripts/lint-allowed-tools-parity.cjs +221 -0
- package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +47 -3
- package/scripts/lint-phase-arg-assignment.cjs +257 -0
- package/scripts/lint-phase-id-drift.cjs +623 -13
- package/scripts/lint-pr-branch-pattern-drift.cjs +148 -0
- package/scripts/lint-response-language-coverage.cjs +9 -3
- package/scripts/lint-retired-runtime-name.cjs +619 -0
- package/scripts/lint-source-test-name-collision.cjs +1 -1
- package/scripts/lint-state-write-path-drift.cjs +93 -0
- package/scripts/lint-test-file-count.allowlist.json +29 -9
- package/scripts/lint-vendored-deps.cjs +128 -17
- package/scripts/lint-workflow-shellcheck-baseline.json +100 -0
- package/scripts/prompt-injection-scan.sh +18 -0
- package/scripts/release-tarball-smoke.cjs +194 -1
- package/scripts/workflow-size.cjs +139 -0
- package/skills/gsd-autonomous/SKILL.md +2 -2
- package/skills/gsd-capture/SKILL.md +1 -1
- package/skills/gsd-cleanup/SKILL.md +1 -0
- package/skills/gsd-code-review/SKILL.md +2 -1
- package/skills/gsd-complete-milestone/SKILL.md +1 -0
- package/skills/gsd-config/SKILL.md +1 -0
- package/skills/gsd-debug/SKILL.md +1 -0
- package/skills/gsd-graphify/SKILL.md +1 -0
- package/skills/gsd-health/SKILL.md +1 -0
- package/skills/gsd-mempalace-capture/SKILL.md +8 -3
- package/skills/gsd-mempalace-recall/SKILL.md +1 -0
- package/skills/gsd-new-milestone/SKILL.md +1 -0
- package/skills/gsd-new-project/SKILL.md +1 -0
- package/skills/gsd-next/SKILL.md +1 -0
- package/skills/gsd-pause-work/SKILL.md +1 -0
- package/skills/gsd-phase/SKILL.md +1 -0
- package/skills/gsd-plan-review-convergence/SKILL.md +5 -5
- package/skills/gsd-pr-branch/SKILL.md +1 -0
- package/skills/gsd-progress/SKILL.md +1 -1
- package/skills/gsd-quick-batch/SKILL.md +1 -1
- package/skills/gsd-resume-work/SKILL.md +1 -0
- package/skills/gsd-review/SKILL.md +2 -3
- package/skills/gsd-review-backlog/SKILL.md +1 -0
- package/skills/gsd-settings/SKILL.md +2 -1
- package/skills/gsd-stats/SKILL.md +1 -0
- package/skills/gsd-thread/SKILL.md +1 -0
- package/skills/gsd-workspace/SKILL.md +1 -0
- package/skills/gsd-workstreams/SKILL.md +1 -0
- package/vscode/package.json +1 -1
- package/gsd-core/templates/claude-md.md +0 -145
- package/gsd-core/templates/codebase/concerns.md +0 -310
- package/gsd-core/templates/codebase/conventions.md +0 -307
- package/gsd-core/templates/codebase/integrations.md +0 -280
- package/gsd-core/templates/codebase/structure.md +0 -285
- package/gsd-core/templates/codebase/testing.md +0 -480
- package/gsd-core/templates/debug-subagent-prompt.md +0 -91
- package/gsd-core/templates/discovery.md +0 -146
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gsd-review
|
|
3
3
|
description: "Request cross-AI peer review of phase plans from external AI CLIs"
|
|
4
|
-
argument-hint: "--phase N [--
|
|
4
|
+
argument-hint: "--phase N [--claude] [--codex] [--opencode] [--qwen] [--cursor] [--agy] [--all]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -12,7 +12,7 @@ allowed-tools:
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
<objective>
|
|
15
|
-
Invoke external AI CLIs (
|
|
15
|
+
Invoke external AI CLIs (Claude, Codex, OpenCode, Qwen Code, Cursor, Antigravity) to independently review phase plans.
|
|
16
16
|
Produces a structured REVIEWS.md with per-reviewer feedback that can be fed back into
|
|
17
17
|
planning via /gsd-plan-phase --reviews.
|
|
18
18
|
|
|
@@ -27,7 +27,6 @@ planning via /gsd-plan-phase --reviews.
|
|
|
27
27
|
Phase number: extracted from $ARGUMENTS (required)
|
|
28
28
|
|
|
29
29
|
**Flags:**
|
|
30
|
-
- `--gemini` — Include Gemini CLI review
|
|
31
30
|
- `--claude` — Include Claude CLI review (uses separate session)
|
|
32
31
|
- `--codex` — Include Codex CLI review
|
|
33
32
|
- `--opencode` — Include OpenCode review (uses model from user's OpenCode config)
|
|
@@ -5,6 +5,7 @@ allowed-tools:
|
|
|
5
5
|
- Read
|
|
6
6
|
- Write
|
|
7
7
|
- Bash
|
|
8
|
+
- Grep
|
|
8
9
|
- AskUserQuestion
|
|
9
10
|
---
|
|
10
11
|
|
|
@@ -15,7 +16,7 @@ Interactive configuration of GSD workflow agents and model profile via multi-que
|
|
|
15
16
|
Routes to the settings workflow which handles:
|
|
16
17
|
- Config existence ensuring
|
|
17
18
|
- Current settings reading and parsing
|
|
18
|
-
- Interactive
|
|
19
|
+
- Interactive multi-question prompt covering model profile and workflow toggles (research, plan_check, verifier, drift guard, TDD, code review, worktrees, compact content, and more — see `gsd-core/workflows/settings.md` for the current set)
|
|
19
20
|
- Config merging and writing
|
|
20
21
|
- Confirmation display with quick command references
|
|
21
22
|
</objective>
|
package/vscode/package.json
CHANGED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# CLAUDE.md Template
|
|
2
|
-
|
|
3
|
-
Template for project-root `CLAUDE.md` — auto-generated by `gsd-tools generate-claude-md`.
|
|
4
|
-
|
|
5
|
-
Contains 7 marker-bounded sections. Each section is independently updatable.
|
|
6
|
-
The `generate-claude-md` subcommand manages 6 sections (project, stack, conventions, architecture, skills, workflow enforcement).
|
|
7
|
-
The profile section is managed exclusively by `generate-claude-profile`.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Section Templates
|
|
12
|
-
|
|
13
|
-
### Project Section
|
|
14
|
-
```
|
|
15
|
-
<!-- GSD:project-start source:PROJECT.md -->
|
|
16
|
-
## Project
|
|
17
|
-
|
|
18
|
-
{{project_content}}
|
|
19
|
-
<!-- GSD:project-end -->
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
**Fallback text:**
|
|
23
|
-
```
|
|
24
|
-
Project not yet initialized. Run /gsd:new-project to set up.
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
### Stack Section
|
|
28
|
-
```
|
|
29
|
-
<!-- GSD:stack-start source:STACK.md -->
|
|
30
|
-
## Technology Stack
|
|
31
|
-
|
|
32
|
-
{{stack_content}}
|
|
33
|
-
<!-- GSD:stack-end -->
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**Fallback text:**
|
|
37
|
-
```
|
|
38
|
-
Technology stack not yet documented. Will populate after codebase mapping or first phase.
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Conventions Section
|
|
42
|
-
```
|
|
43
|
-
<!-- GSD:conventions-start source:CONVENTIONS.md -->
|
|
44
|
-
## Conventions
|
|
45
|
-
|
|
46
|
-
{{conventions_content}}
|
|
47
|
-
<!-- GSD:conventions-end -->
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**Fallback text:**
|
|
51
|
-
```
|
|
52
|
-
Conventions not yet established. Will populate as patterns emerge during development.
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Architecture Section
|
|
56
|
-
```
|
|
57
|
-
<!-- GSD:architecture-start source:ARCHITECTURE.md -->
|
|
58
|
-
## Architecture
|
|
59
|
-
|
|
60
|
-
{{architecture_content}}
|
|
61
|
-
<!-- GSD:architecture-end -->
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Fallback text:**
|
|
65
|
-
```
|
|
66
|
-
Architecture not yet mapped. Follow existing patterns found in the codebase.
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Skills Section
|
|
70
|
-
```
|
|
71
|
-
<!-- GSD:skills-start source:skills/ -->
|
|
72
|
-
## Project Skills
|
|
73
|
-
|
|
74
|
-
| Skill | Description | Path |
|
|
75
|
-
| -------------- | --------------------- | ------------------------- |
|
|
76
|
-
| {{skill_name}} | {{skill_description}} | `{{skill_path}}/SKILL.md` |
|
|
77
|
-
<!-- GSD:skills-end -->
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Fallback text:**
|
|
81
|
-
```
|
|
82
|
-
No project skills found. Add skills to any of: `.claude/skills/`, `.agents/skills/`, `.cursor/skills/`, or `.github/skills/` with a `SKILL.md` index file.
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
**Discovery behavior:**
|
|
86
|
-
- Scans `.claude/skills/`, `.agents/skills/`, `.cursor/skills/`, `.github/skills/` for subdirectories containing `SKILL.md`
|
|
87
|
-
- Extracts `name` and `description` from YAML frontmatter (supports multi-line descriptions)
|
|
88
|
-
- Skips GSD's own installed skills (directories starting with `gsd-`)
|
|
89
|
-
- Deduplicates by skill name across directories
|
|
90
|
-
|
|
91
|
-
### Workflow Enforcement Section
|
|
92
|
-
```
|
|
93
|
-
<!-- GSD:workflow-start source:GSD defaults -->
|
|
94
|
-
## GSD Workflow Enforcement
|
|
95
|
-
|
|
96
|
-
Before using Edit, Write, or other file-changing tools, start work through a GSD command so planning artifacts and execution context stay in sync.
|
|
97
|
-
|
|
98
|
-
Use these entry points:
|
|
99
|
-
- `/gsd:quick` for small fixes, doc updates, and ad-hoc tasks
|
|
100
|
-
- `/gsd:debug` for investigation and bug fixing
|
|
101
|
-
- `/gsd:execute-phase` for planned phase work
|
|
102
|
-
|
|
103
|
-
Do not make direct repo edits outside a GSD workflow unless the user explicitly asks to bypass it.
|
|
104
|
-
<!-- GSD:workflow-end -->
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Profile Section (Placeholder Only)
|
|
108
|
-
```
|
|
109
|
-
<!-- GSD:profile-start -->
|
|
110
|
-
## Developer Profile
|
|
111
|
-
|
|
112
|
-
> Profile not yet configured. Run `/gsd:profile-user` to generate your developer profile.
|
|
113
|
-
> This section is managed by `generate-claude-profile` — do not edit manually.
|
|
114
|
-
<!-- GSD:profile-end -->
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
**Note:** This section is NOT managed by `generate-claude-md`. It is managed exclusively
|
|
118
|
-
by `generate-claude-profile`. The placeholder above is only used when creating a new
|
|
119
|
-
CLAUDE.md file and no profile section exists yet.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Section Ordering
|
|
124
|
-
|
|
125
|
-
1. **Project** — Identity and purpose (what this project is)
|
|
126
|
-
2. **Stack** — Technology choices (what tools are used)
|
|
127
|
-
3. **Conventions** — Code patterns and rules (how code is written)
|
|
128
|
-
4. **Architecture** — System structure (how components fit together)
|
|
129
|
-
5. **Skills** — Discovered project skills with name and description (what domain knowledge is available)
|
|
130
|
-
6. **Workflow Enforcement** — Default GSD entry points for file-changing work
|
|
131
|
-
7. **Profile** — Developer behavioral preferences (how to interact)
|
|
132
|
-
|
|
133
|
-
## Marker Format
|
|
134
|
-
|
|
135
|
-
- Start: `<!-- GSD:{name}-start source:{file} -->`
|
|
136
|
-
- End: `<!-- GSD:{name}-end -->`
|
|
137
|
-
- Source attribute enables targeted updates when source files change
|
|
138
|
-
- Partial match on start marker (without closing `-->`) for detection
|
|
139
|
-
|
|
140
|
-
## Fallback Behavior
|
|
141
|
-
|
|
142
|
-
When a source file is missing, fallback text provides Claude-actionable guidance:
|
|
143
|
-
- Guides Claude's behavior in the absence of data
|
|
144
|
-
- Not placeholder ads or "missing" notices
|
|
145
|
-
- Each fallback tells Claude what to do, not just what's absent
|
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
# Codebase Concerns Template
|
|
2
|
-
|
|
3
|
-
Template for `.planning/codebase/CONCERNS.md` - captures known issues and areas requiring care.
|
|
4
|
-
|
|
5
|
-
**Purpose:** Surface actionable warnings about the codebase. Focused on "what to watch out for when making changes."
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## File Template
|
|
10
|
-
|
|
11
|
-
```markdown
|
|
12
|
-
# Codebase Concerns
|
|
13
|
-
|
|
14
|
-
**Analysis Date:** [YYYY-MM-DD]
|
|
15
|
-
|
|
16
|
-
## Tech Debt
|
|
17
|
-
|
|
18
|
-
**[Area/Component]:**
|
|
19
|
-
- Issue: [What's the shortcut/workaround]
|
|
20
|
-
- Why: [Why it was done this way]
|
|
21
|
-
- Impact: [What breaks or degrades because of it]
|
|
22
|
-
- Fix approach: [How to properly address it]
|
|
23
|
-
|
|
24
|
-
**[Area/Component]:**
|
|
25
|
-
- Issue: [What's the shortcut/workaround]
|
|
26
|
-
- Why: [Why it was done this way]
|
|
27
|
-
- Impact: [What breaks or degrades because of it]
|
|
28
|
-
- Fix approach: [How to properly address it]
|
|
29
|
-
|
|
30
|
-
## Known Bugs
|
|
31
|
-
|
|
32
|
-
**[Bug description]:**
|
|
33
|
-
- Symptoms: [What happens]
|
|
34
|
-
- Trigger: [How to reproduce]
|
|
35
|
-
- Workaround: [Temporary mitigation if any]
|
|
36
|
-
- Root cause: [If known]
|
|
37
|
-
- Blocked by: [If waiting on something]
|
|
38
|
-
|
|
39
|
-
**[Bug description]:**
|
|
40
|
-
- Symptoms: [What happens]
|
|
41
|
-
- Trigger: [How to reproduce]
|
|
42
|
-
- Workaround: [Temporary mitigation if any]
|
|
43
|
-
- Root cause: [If known]
|
|
44
|
-
|
|
45
|
-
## Security Considerations
|
|
46
|
-
|
|
47
|
-
**[Area requiring security care]:**
|
|
48
|
-
- Risk: [What could go wrong]
|
|
49
|
-
- Current mitigation: [What's in place now]
|
|
50
|
-
- Recommendations: [What should be added]
|
|
51
|
-
|
|
52
|
-
**[Area requiring security care]:**
|
|
53
|
-
- Risk: [What could go wrong]
|
|
54
|
-
- Current mitigation: [What's in place now]
|
|
55
|
-
- Recommendations: [What should be added]
|
|
56
|
-
|
|
57
|
-
## Performance Bottlenecks
|
|
58
|
-
|
|
59
|
-
**[Slow operation/endpoint]:**
|
|
60
|
-
- Problem: [What's slow]
|
|
61
|
-
- Measurement: [Actual numbers: "500ms p95", "2s load time"]
|
|
62
|
-
- Cause: [Why it's slow]
|
|
63
|
-
- Improvement path: [How to speed it up]
|
|
64
|
-
|
|
65
|
-
**[Slow operation/endpoint]:**
|
|
66
|
-
- Problem: [What's slow]
|
|
67
|
-
- Measurement: [Actual numbers]
|
|
68
|
-
- Cause: [Why it's slow]
|
|
69
|
-
- Improvement path: [How to speed it up]
|
|
70
|
-
|
|
71
|
-
## Fragile Areas
|
|
72
|
-
|
|
73
|
-
**[Component/Module]:**
|
|
74
|
-
- Why fragile: [What makes it break easily]
|
|
75
|
-
- Common failures: [What typically goes wrong]
|
|
76
|
-
- Safe modification: [How to change it without breaking]
|
|
77
|
-
- Test coverage: [Is it tested? Gaps?]
|
|
78
|
-
|
|
79
|
-
**[Component/Module]:**
|
|
80
|
-
- Why fragile: [What makes it break easily]
|
|
81
|
-
- Common failures: [What typically goes wrong]
|
|
82
|
-
- Safe modification: [How to change it without breaking]
|
|
83
|
-
- Test coverage: [Is it tested? Gaps?]
|
|
84
|
-
|
|
85
|
-
## Scaling Limits
|
|
86
|
-
|
|
87
|
-
**[Resource/System]:**
|
|
88
|
-
- Current capacity: [Numbers: "100 req/sec", "10k users"]
|
|
89
|
-
- Limit: [Where it breaks]
|
|
90
|
-
- Symptoms at limit: [What happens]
|
|
91
|
-
- Scaling path: [How to increase capacity]
|
|
92
|
-
|
|
93
|
-
## Dependencies at Risk
|
|
94
|
-
|
|
95
|
-
**[Package/Service]:**
|
|
96
|
-
- Risk: [e.g., "deprecated", "unmaintained", "breaking changes coming"]
|
|
97
|
-
- Impact: [What breaks if it fails]
|
|
98
|
-
- Migration plan: [Alternative or upgrade path]
|
|
99
|
-
|
|
100
|
-
## Missing Critical Features
|
|
101
|
-
|
|
102
|
-
**[Feature gap]:**
|
|
103
|
-
- Problem: [What's missing]
|
|
104
|
-
- Current workaround: [How users cope]
|
|
105
|
-
- Blocks: [What can't be done without it]
|
|
106
|
-
- Implementation complexity: [Rough effort estimate]
|
|
107
|
-
|
|
108
|
-
## Test Coverage Gaps
|
|
109
|
-
|
|
110
|
-
**[Untested area]:**
|
|
111
|
-
- What's not tested: [Specific functionality]
|
|
112
|
-
- Risk: [What could break unnoticed]
|
|
113
|
-
- Priority: [High/Medium/Low]
|
|
114
|
-
- Difficulty to test: [Why it's not tested yet]
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
*Concerns audit: [date]*
|
|
119
|
-
*Update as issues are fixed or new ones discovered*
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
<good_examples>
|
|
123
|
-
```markdown
|
|
124
|
-
# Codebase Concerns
|
|
125
|
-
|
|
126
|
-
**Analysis Date:** 2025-01-20
|
|
127
|
-
|
|
128
|
-
## Tech Debt
|
|
129
|
-
|
|
130
|
-
**Database queries in React components:**
|
|
131
|
-
- Issue: Direct Supabase queries in 15+ page components instead of server actions
|
|
132
|
-
- Files: `app/dashboard/page.tsx`, `app/profile/page.tsx`, `app/courses/[id]/page.tsx`, `app/settings/page.tsx` (and 11 more in `app/`)
|
|
133
|
-
- Why: Rapid prototyping during MVP phase
|
|
134
|
-
- Impact: Can't implement RLS properly, exposes DB structure to client
|
|
135
|
-
- Fix approach: Move all queries to server actions in `app/actions/`, add proper RLS policies
|
|
136
|
-
|
|
137
|
-
**Manual webhook signature validation:**
|
|
138
|
-
- Issue: Copy-pasted Stripe webhook verification code in 3 different endpoints
|
|
139
|
-
- Files: `app/api/webhooks/stripe/route.ts`, `app/api/webhooks/checkout/route.ts`, `app/api/webhooks/subscription/route.ts`
|
|
140
|
-
- Why: Each webhook added ad-hoc without abstraction
|
|
141
|
-
- Impact: Easy to miss verification in new webhooks (security risk)
|
|
142
|
-
- Fix approach: Create shared `lib/stripe/validate-webhook.ts` middleware
|
|
143
|
-
|
|
144
|
-
## Known Bugs
|
|
145
|
-
|
|
146
|
-
**Race condition in subscription updates:**
|
|
147
|
-
- Symptoms: User shows as "free" tier for 5-10 seconds after successful payment
|
|
148
|
-
- Trigger: Fast navigation after Stripe checkout redirect, before webhook processes
|
|
149
|
-
- Files: `app/checkout/success/page.tsx` (redirect handler), `app/api/webhooks/stripe/route.ts` (webhook)
|
|
150
|
-
- Workaround: Stripe webhook eventually updates status (self-heals)
|
|
151
|
-
- Root cause: Webhook processing slower than user navigation, no optimistic UI update
|
|
152
|
-
- Fix: Add polling in `app/checkout/success/page.tsx` after redirect
|
|
153
|
-
|
|
154
|
-
**Inconsistent session state after logout:**
|
|
155
|
-
- Symptoms: User redirected to /dashboard after logout instead of /login
|
|
156
|
-
- Trigger: Logout via button in mobile nav (desktop works fine)
|
|
157
|
-
- File: `components/MobileNav.tsx` (line ~45, logout handler)
|
|
158
|
-
- Workaround: Manual URL navigation to /login works
|
|
159
|
-
- Root cause: Mobile nav component not awaiting supabase.auth.signOut()
|
|
160
|
-
- Fix: Add await to logout handler in `components/MobileNav.tsx`
|
|
161
|
-
|
|
162
|
-
## Security Considerations
|
|
163
|
-
|
|
164
|
-
**Admin role check client-side only:**
|
|
165
|
-
- Risk: Admin dashboard pages check isAdmin from Supabase client, no server verification
|
|
166
|
-
- Files: `app/admin/page.tsx`, `app/admin/users/page.tsx`, `components/AdminGuard.tsx`
|
|
167
|
-
- Current mitigation: None (relying on UI hiding)
|
|
168
|
-
- Recommendations: Add middleware to admin routes in `middleware.ts`, verify role server-side
|
|
169
|
-
|
|
170
|
-
**Unvalidated file uploads:**
|
|
171
|
-
- Risk: Users can upload any file type to avatar bucket (no size/type validation)
|
|
172
|
-
- File: `components/AvatarUpload.tsx` (upload handler)
|
|
173
|
-
- Current mitigation: Supabase bucket limits to 2MB (configured in dashboard)
|
|
174
|
-
- Recommendations: Add file type validation (image/* only) in `lib/storage/validate.ts`
|
|
175
|
-
|
|
176
|
-
## Performance Bottlenecks
|
|
177
|
-
|
|
178
|
-
**/api/courses endpoint:**
|
|
179
|
-
- Problem: Fetching all courses with nested lessons and authors
|
|
180
|
-
- File: `app/api/courses/route.ts`
|
|
181
|
-
- Measurement: 1.2s p95 response time with 50+ courses
|
|
182
|
-
- Cause: N+1 query pattern (separate query per course for lessons)
|
|
183
|
-
- Improvement path: Use Prisma include to eager-load lessons in `lib/db/courses.ts`, add Redis caching
|
|
184
|
-
|
|
185
|
-
**Dashboard initial load:**
|
|
186
|
-
- Problem: Waterfall of 5 serial API calls on mount
|
|
187
|
-
- File: `app/dashboard/page.tsx`
|
|
188
|
-
- Measurement: 3.5s until interactive on slow 3G
|
|
189
|
-
- Cause: Each component fetches own data independently
|
|
190
|
-
- Improvement path: Convert to Server Component with single parallel fetch
|
|
191
|
-
|
|
192
|
-
## Fragile Areas
|
|
193
|
-
|
|
194
|
-
**Authentication middleware chain:**
|
|
195
|
-
- File: `middleware.ts`
|
|
196
|
-
- Why fragile: 4 different middleware functions run in specific order (auth -> role -> subscription -> logging)
|
|
197
|
-
- Common failures: Middleware order change breaks everything, hard to debug
|
|
198
|
-
- Safe modification: Add tests before changing order, document dependencies in comments
|
|
199
|
-
- Test coverage: No integration tests for middleware chain (only unit tests)
|
|
200
|
-
|
|
201
|
-
**Stripe webhook event handling:**
|
|
202
|
-
- File: `app/api/webhooks/stripe/route.ts`
|
|
203
|
-
- Why fragile: Giant switch statement with 12 event types, shared transaction logic
|
|
204
|
-
- Common failures: New event type added without handling, partial DB updates on error
|
|
205
|
-
- Safe modification: Extract each event handler to `lib/stripe/handlers/*.ts`
|
|
206
|
-
- Test coverage: Only 3 of 12 event types have tests
|
|
207
|
-
|
|
208
|
-
## Scaling Limits
|
|
209
|
-
|
|
210
|
-
**Supabase Free Tier:**
|
|
211
|
-
- Current capacity: 500MB database, 1GB file storage, 2GB bandwidth/month
|
|
212
|
-
- Limit: ~5000 users estimated before hitting limits
|
|
213
|
-
- Symptoms at limit: 429 rate limit errors, DB writes fail
|
|
214
|
-
- Scaling path: Upgrade to Pro ($25/mo) extends to 8GB DB, 100GB storage
|
|
215
|
-
|
|
216
|
-
**Server-side render blocking:**
|
|
217
|
-
- Current capacity: ~50 concurrent users before slowdown
|
|
218
|
-
- Limit: Vercel Hobby plan (10s function timeout, 100GB-hrs/mo)
|
|
219
|
-
- Symptoms at limit: 504 gateway timeouts on course pages
|
|
220
|
-
- Scaling path: Upgrade to Vercel Pro ($20/mo), add edge caching
|
|
221
|
-
|
|
222
|
-
## Dependencies at Risk
|
|
223
|
-
|
|
224
|
-
**react-hot-toast:**
|
|
225
|
-
- Risk: Unmaintained (last update 18 months ago), React 19 compatibility unknown
|
|
226
|
-
- Impact: Toast notifications break, no graceful degradation
|
|
227
|
-
- Migration plan: Switch to sonner (actively maintained, similar API)
|
|
228
|
-
|
|
229
|
-
## Missing Critical Features
|
|
230
|
-
|
|
231
|
-
**Payment failure handling:**
|
|
232
|
-
- Problem: No retry mechanism or user notification when subscription payment fails
|
|
233
|
-
- Current workaround: Users manually re-enter payment info (if they notice)
|
|
234
|
-
- Blocks: Can't retain users with expired cards, no dunning process
|
|
235
|
-
- Implementation complexity: Medium (Stripe webhooks + email flow + UI)
|
|
236
|
-
|
|
237
|
-
**Course progress tracking:**
|
|
238
|
-
- Problem: No persistent state for which lessons completed
|
|
239
|
-
- Current workaround: Users manually track progress
|
|
240
|
-
- Blocks: Can't show completion percentage, can't recommend next lesson
|
|
241
|
-
- Implementation complexity: Low (add completed_lessons junction table)
|
|
242
|
-
|
|
243
|
-
## Test Coverage Gaps
|
|
244
|
-
|
|
245
|
-
**Payment flow end-to-end:**
|
|
246
|
-
- What's not tested: Full Stripe checkout -> webhook -> subscription activation flow
|
|
247
|
-
- Risk: Payment processing could break silently (has happened twice)
|
|
248
|
-
- Priority: High
|
|
249
|
-
- Difficulty to test: Need Stripe test fixtures and webhook simulation setup
|
|
250
|
-
|
|
251
|
-
**Error boundary behavior:**
|
|
252
|
-
- What's not tested: How app behaves when components throw errors
|
|
253
|
-
- Risk: White screen of death for users, no error reporting
|
|
254
|
-
- Priority: Medium
|
|
255
|
-
- Difficulty to test: Need to intentionally trigger errors in test environment
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
*Concerns audit: 2025-01-20*
|
|
260
|
-
*Update as issues are fixed or new ones discovered*
|
|
261
|
-
```
|
|
262
|
-
</good_examples>
|
|
263
|
-
|
|
264
|
-
<guidelines>
|
|
265
|
-
**What belongs in CONCERNS.md:**
|
|
266
|
-
- Tech debt with clear impact and fix approach
|
|
267
|
-
- Known bugs with reproduction steps
|
|
268
|
-
- Security gaps and mitigation recommendations
|
|
269
|
-
- Performance bottlenecks with measurements
|
|
270
|
-
- Fragile code that breaks easily
|
|
271
|
-
- Scaling limits with numbers
|
|
272
|
-
- Dependencies that need attention
|
|
273
|
-
- Missing features that block workflows
|
|
274
|
-
- Test coverage gaps
|
|
275
|
-
|
|
276
|
-
**What does NOT belong here:**
|
|
277
|
-
- Opinions without evidence ("code is messy")
|
|
278
|
-
- Complaints without solutions ("auth sucks")
|
|
279
|
-
- Future feature ideas (that's for product planning)
|
|
280
|
-
- Normal TODOs (those live in code comments)
|
|
281
|
-
- Architectural decisions that are working fine
|
|
282
|
-
- Minor code style issues
|
|
283
|
-
|
|
284
|
-
**When filling this template:**
|
|
285
|
-
- **Always include file paths** - Concerns without locations are not actionable. Use backticks: `src/file.ts`
|
|
286
|
-
- Be specific with measurements ("500ms p95" not "slow")
|
|
287
|
-
- Include reproduction steps for bugs
|
|
288
|
-
- Suggest fix approaches, not just problems
|
|
289
|
-
- Focus on actionable items
|
|
290
|
-
- Prioritize by risk/impact
|
|
291
|
-
- Update as issues get resolved
|
|
292
|
-
- Add new concerns as discovered
|
|
293
|
-
|
|
294
|
-
**Tone guidelines:**
|
|
295
|
-
- Professional, not emotional ("N+1 query pattern" not "terrible queries")
|
|
296
|
-
- Solution-oriented ("Fix: add index" not "needs fixing")
|
|
297
|
-
- Risk-focused ("Could expose user data" not "security is bad")
|
|
298
|
-
- Factual ("3.5s load time" not "really slow")
|
|
299
|
-
|
|
300
|
-
**Useful for phase planning when:**
|
|
301
|
-
- Deciding what to work on next
|
|
302
|
-
- Estimating risk of changes
|
|
303
|
-
- Understanding where to be careful
|
|
304
|
-
- Prioritizing improvements
|
|
305
|
-
- Onboarding new Claude contexts
|
|
306
|
-
- Planning refactoring work
|
|
307
|
-
|
|
308
|
-
**How this gets populated:**
|
|
309
|
-
Explore agents detect these during codebase mapping. Manual additions welcome for human-discovered issues. This is living documentation, not a complaint list.
|
|
310
|
-
</guidelines>
|