@opengsd/gsd-path 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +397 -0
- package/DOCS.md +341 -0
- package/FULL.md +475 -0
- package/GUIDE.md +23 -0
- package/HOOKS.md +273 -0
- package/LICENSE +21 -0
- package/MIGRATE.md +100 -0
- package/QUICK.md +146 -0
- package/README.md +280 -0
- package/RUNTIME.md +229 -0
- package/UPDATE.md +196 -0
- package/WORKFLOW.md +683 -0
- package/package.json +80 -0
- package/platforms/claude/dispatch.md +63 -0
- package/platforms/copilot/dispatch.md +61 -0
- package/platforms/cursor/agent.md +17 -0
- package/platforms/cursor/dispatch.md +63 -0
- package/platforms/grok/dispatch.md +61 -0
- package/platforms/kimi/dispatch.md +64 -0
- package/platforms/kiro/dispatch.md +58 -0
- package/platforms/opencode/dispatch.md +62 -0
- package/platforms/qwen/dispatch.md +60 -0
- package/platforms/shared-agents/dispatch.md +131 -0
- package/plugin.json +14 -0
- package/scripts/_common.py +180 -0
- package/scripts/archive_milestone.py +2265 -0
- package/scripts/bootstrap_repository.py +710 -0
- package/scripts/build_state.py +854 -0
- package/scripts/check_docs_audit.py +463 -0
- package/scripts/check_handoffs.py +1855 -0
- package/scripts/check_task_briefs.py +376 -0
- package/scripts/check_update.py +93 -0
- package/scripts/core_hook_gate.py +34 -0
- package/scripts/core_hook_settings.py +119 -0
- package/scripts/detect_project.py +1517 -0
- package/scripts/discussion_records.py +619 -0
- package/scripts/discussion_validate.py +1321 -0
- package/scripts/dispatch_driver.py +1812 -0
- package/scripts/git_guard.py +759 -0
- package/scripts/guard_hook.py +2124 -0
- package/scripts/install.mjs +3239 -0
- package/scripts/install.py +3008 -0
- package/scripts/integration.py +1433 -0
- package/scripts/isolation.py +3538 -0
- package/scripts/lean_verification.py +256 -0
- package/scripts/loop_run.py +837 -0
- package/scripts/migrate_core.py +169 -0
- package/scripts/pipeline_diagnose.py +715 -0
- package/scripts/pipeline_git.py +940 -0
- package/scripts/pipeline_state.py +2291 -0
- package/scripts/pipeline_undo.py +1039 -0
- package/scripts/promote_lookahead.py +415 -0
- package/scripts/review_findings.py +714 -0
- package/scripts/review_panel.py +553 -0
- package/scripts/skill-resources.json +340 -0
- package/scripts/state_checkpoint.py +1039 -0
- package/scripts/state_promote.py +743 -0
- package/scripts/status_runtime.py +122 -0
- package/scripts/sync_skill_resources.py +259 -0
- package/scripts/token_budget.py +146 -0
- package/scripts/wizard.mjs +179 -0
- package/scripts/workflow_run.py +117 -0
- package/skills/gsd-path/BUILD.md +700 -0
- package/skills/gsd-path/DECIDE.md +115 -0
- package/skills/gsd-path/DEFINE.md +297 -0
- package/skills/gsd-path/DOCS-AUDIT.md +190 -0
- package/skills/gsd-path/INSPECT.md +167 -0
- package/skills/gsd-path/PLAN.md +411 -0
- package/skills/gsd-path/RESEARCH.md +159 -0
- package/skills/gsd-path/ROADMAP.md +215 -0
- package/skills/gsd-path/SHIP.md +412 -0
- package/skills/gsd-path/SKILL.md +471 -0
- package/skills/gsd-path/agents/openai.yaml +6 -0
- package/skills/gsd-path/references/codebase-mapper.md +52 -0
- package/skills/gsd-path/references/coder.md +90 -0
- package/skills/gsd-path/references/decider.md +36 -0
- package/skills/gsd-path/references/dispatch.md +131 -0
- package/skills/gsd-path/references/docs-auditor.md +60 -0
- package/skills/gsd-path/references/planner.md +104 -0
- package/skills/gsd-path/references/researcher.md +42 -0
- package/skills/gsd-path/references/reviewer.md +188 -0
- package/skills/gsd-path/references/roadmapper.md +48 -0
- package/skills/gsd-path/scripts/_common.py +180 -0
- package/skills/gsd-path/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path/scripts/bootstrap_repository.py +710 -0
- package/skills/gsd-path/scripts/build_state.py +854 -0
- package/skills/gsd-path/scripts/check_docs_audit.py +463 -0
- package/skills/gsd-path/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path/scripts/check_update.py +93 -0
- package/skills/gsd-path/scripts/detect_project.py +1517 -0
- package/skills/gsd-path/scripts/discussion_records.py +619 -0
- package/skills/gsd-path/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path/scripts/dispatch_driver.py +1812 -0
- package/skills/gsd-path/scripts/integration.py +1433 -0
- package/skills/gsd-path/scripts/isolation.py +3538 -0
- package/skills/gsd-path/scripts/lean_verification.py +256 -0
- package/skills/gsd-path/scripts/loop_run.py +837 -0
- package/skills/gsd-path/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path/scripts/promote_lookahead.py +415 -0
- package/skills/gsd-path/scripts/review_findings.py +714 -0
- package/skills/gsd-path/scripts/review_panel.py +553 -0
- package/skills/gsd-path/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path/scripts/state_promote.py +743 -0
- package/skills/gsd-path/scripts/token_budget.py +146 -0
- package/skills/gsd-path/scripts/workflow_run.py +117 -0
- package/skills/gsd-path/templates/answers.md +29 -0
- package/skills/gsd-path/templates/archive-manifest.md +37 -0
- package/skills/gsd-path/templates/charter.md +50 -0
- package/skills/gsd-path/templates/codebase.md +46 -0
- package/skills/gsd-path/templates/dialogue.md +21 -0
- package/skills/gsd-path/templates/docs-audit.md +69 -0
- package/skills/gsd-path/templates/evidence.md +24 -0
- package/skills/gsd-path/templates/final-review.md +27 -0
- package/skills/gsd-path/templates/gap-review.md +20 -0
- package/skills/gsd-path/templates/intent.md +98 -0
- package/skills/gsd-path/templates/loop.md +59 -0
- package/skills/gsd-path/templates/patch-findings.md +16 -0
- package/skills/gsd-path/templates/plan-panel.md +25 -0
- package/skills/gsd-path/templates/plan.md +89 -0
- package/skills/gsd-path/templates/repository.md +16 -0
- package/skills/gsd-path/templates/research-handoff.md +25 -0
- package/skills/gsd-path/templates/roadmap.md +38 -0
- package/skills/gsd-path/templates/skeptic.md +36 -0
- package/skills/gsd-path/templates/state.md +27 -0
- package/skills/gsd-path/templates/synthesis.md +36 -0
- package/skills/gsd-path/templates/task.md +74 -0
- package/skills/gsd-path/templates/wave-panel.md +25 -0
- package/skills/gsd-path/templates/wave-review.md +64 -0
- package/skills/gsd-path-build/SKILL.md +700 -0
- package/skills/gsd-path-build/agents/openai.yaml +6 -0
- package/skills/gsd-path-build/references/coder.md +90 -0
- package/skills/gsd-path-build/references/dispatch.md +131 -0
- package/skills/gsd-path-build/references/reviewer.md +188 -0
- package/skills/gsd-path-build/scripts/_common.py +180 -0
- package/skills/gsd-path-build/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path-build/scripts/build_state.py +854 -0
- package/skills/gsd-path-build/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-build/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-build/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-build/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-build/scripts/dispatch_driver.py +1812 -0
- package/skills/gsd-path-build/scripts/integration.py +1433 -0
- package/skills/gsd-path-build/scripts/isolation.py +3538 -0
- package/skills/gsd-path-build/scripts/loop_run.py +837 -0
- package/skills/gsd-path-build/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-build/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-build/scripts/review_findings.py +714 -0
- package/skills/gsd-path-build/scripts/review_panel.py +553 -0
- package/skills/gsd-path-build/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-build/scripts/state_promote.py +743 -0
- package/skills/gsd-path-build/scripts/token_budget.py +146 -0
- package/skills/gsd-path-build/scripts/workflow_run.py +117 -0
- package/skills/gsd-path-build/templates/skeptic.md +36 -0
- package/skills/gsd-path-build/templates/task.md +74 -0
- package/skills/gsd-path-build/templates/wave-panel.md +25 -0
- package/skills/gsd-path-build/templates/wave-review.md +64 -0
- package/skills/gsd-path-decide/SKILL.md +115 -0
- package/skills/gsd-path-decide/agents/openai.yaml +6 -0
- package/skills/gsd-path-decide/references/decider.md +36 -0
- package/skills/gsd-path-decide/references/dispatch.md +131 -0
- package/skills/gsd-path-decide/scripts/_common.py +180 -0
- package/skills/gsd-path-decide/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-decide/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-decide/scripts/isolation.py +3538 -0
- package/skills/gsd-path-decide/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-decide/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-decide/scripts/state_promote.py +743 -0
- package/skills/gsd-path-decide/templates/synthesis.md +36 -0
- package/skills/gsd-path-define/SKILL.md +297 -0
- package/skills/gsd-path-define/agents/openai.yaml +6 -0
- package/skills/gsd-path-define/scripts/_common.py +180 -0
- package/skills/gsd-path-define/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-define/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-define/scripts/detect_project.py +1517 -0
- package/skills/gsd-path-define/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-define/scripts/isolation.py +3538 -0
- package/skills/gsd-path-define/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-define/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-define/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-define/scripts/state_promote.py +743 -0
- package/skills/gsd-path-define/templates/charter.md +50 -0
- package/skills/gsd-path-define/templates/intent.md +98 -0
- package/skills/gsd-path-define/templates/state.md +27 -0
- package/skills/gsd-path-discuss/SKILL.md +162 -0
- package/skills/gsd-path-discuss/agents/openai.yaml +6 -0
- package/skills/gsd-path-discuss/scripts/_common.py +180 -0
- package/skills/gsd-path-discuss/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-discuss/templates/answers.md +29 -0
- package/skills/gsd-path-discuss/templates/dialogue.md +21 -0
- package/skills/gsd-path-docs-audit/SKILL.md +190 -0
- package/skills/gsd-path-docs-audit/agents/openai.yaml +6 -0
- package/skills/gsd-path-docs-audit/references/dispatch.md +131 -0
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +60 -0
- package/skills/gsd-path-docs-audit/scripts/_common.py +180 -0
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +463 -0
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-docs-audit/scripts/isolation.py +3538 -0
- package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +743 -0
- package/skills/gsd-path-docs-audit/templates/docs-audit.md +69 -0
- package/skills/gsd-path-forensics/SKILL.md +39 -0
- package/skills/gsd-path-forensics/agents/openai.yaml +6 -0
- package/skills/gsd-path-forensics/scripts/_common.py +180 -0
- package/skills/gsd-path-forensics/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +715 -0
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +1039 -0
- package/skills/gsd-path-inspect/SKILL.md +167 -0
- package/skills/gsd-path-inspect/agents/openai.yaml +6 -0
- package/skills/gsd-path-inspect/references/codebase-mapper.md +52 -0
- package/skills/gsd-path-inspect/references/dispatch.md +131 -0
- package/skills/gsd-path-inspect/references/docs-auditor.md +60 -0
- package/skills/gsd-path-inspect/scripts/_common.py +180 -0
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +463 -0
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-inspect/scripts/detect_project.py +1517 -0
- package/skills/gsd-path-inspect/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-inspect/scripts/isolation.py +3538 -0
- package/skills/gsd-path-inspect/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-inspect/scripts/state_promote.py +743 -0
- package/skills/gsd-path-inspect/templates/codebase.md +46 -0
- package/skills/gsd-path-inspect/templates/docs-audit.md +69 -0
- package/skills/gsd-path-inspect/templates/state.md +27 -0
- package/skills/gsd-path-loop/SKILL.md +98 -0
- package/skills/gsd-path-loop/agents/openai.yaml +6 -0
- package/skills/gsd-path-loop/examples/ci-repair.LOOP.md +61 -0
- package/skills/gsd-path-loop/scripts/_common.py +180 -0
- package/skills/gsd-path-loop/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-loop/scripts/loop_run.py +837 -0
- package/skills/gsd-path-loop/templates/loop.md +59 -0
- package/skills/gsd-path-migrate/SKILL.md +134 -0
- package/skills/gsd-path-migrate/agents/openai.yaml +6 -0
- package/skills/gsd-path-migrate/scripts/core_hook_gate.py +34 -0
- package/skills/gsd-path-migrate/scripts/core_hook_settings.py +119 -0
- package/skills/gsd-path-migrate/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-migrate/scripts/migrate_core.py +169 -0
- package/skills/gsd-path-plan/SKILL.md +411 -0
- package/skills/gsd-path-plan/agents/openai.yaml +6 -0
- package/skills/gsd-path-plan/references/dispatch.md +131 -0
- package/skills/gsd-path-plan/references/planner.md +104 -0
- package/skills/gsd-path-plan/scripts/_common.py +180 -0
- package/skills/gsd-path-plan/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-plan/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-plan/scripts/isolation.py +3538 -0
- package/skills/gsd-path-plan/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-plan/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-plan/scripts/review_panel.py +553 -0
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-plan/scripts/state_promote.py +743 -0
- package/skills/gsd-path-plan/scripts/workflow_run.py +117 -0
- package/skills/gsd-path-plan/templates/patch-findings.md +16 -0
- package/skills/gsd-path-plan/templates/plan-panel.md +25 -0
- package/skills/gsd-path-plan/templates/plan.md +89 -0
- package/skills/gsd-path-plan/templates/task.md +74 -0
- package/skills/gsd-path-research/SKILL.md +159 -0
- package/skills/gsd-path-research/agents/openai.yaml +6 -0
- package/skills/gsd-path-research/references/dispatch.md +131 -0
- package/skills/gsd-path-research/references/researcher.md +42 -0
- package/skills/gsd-path-research/scripts/_common.py +180 -0
- package/skills/gsd-path-research/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-research/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-research/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-research/scripts/isolation.py +3538 -0
- package/skills/gsd-path-research/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-research/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-research/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-research/scripts/state_promote.py +743 -0
- package/skills/gsd-path-research/templates/evidence.md +24 -0
- package/skills/gsd-path-research/templates/research-handoff.md +25 -0
- package/skills/gsd-path-roadmap/SKILL.md +215 -0
- package/skills/gsd-path-roadmap/agents/openai.yaml +6 -0
- package/skills/gsd-path-roadmap/references/dispatch.md +131 -0
- package/skills/gsd-path-roadmap/references/roadmapper.md +48 -0
- package/skills/gsd-path-roadmap/scripts/_common.py +180 -0
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-roadmap/scripts/detect_project.py +1517 -0
- package/skills/gsd-path-roadmap/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-roadmap/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-roadmap/scripts/integration.py +1433 -0
- package/skills/gsd-path-roadmap/scripts/isolation.py +3538 -0
- package/skills/gsd-path-roadmap/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +415 -0
- package/skills/gsd-path-roadmap/scripts/review_panel.py +553 -0
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-roadmap/scripts/state_promote.py +743 -0
- package/skills/gsd-path-roadmap/templates/roadmap.md +38 -0
- package/skills/gsd-path-ship/SKILL.md +412 -0
- package/skills/gsd-path-ship/agents/openai.yaml +6 -0
- package/skills/gsd-path-ship/references/dispatch.md +131 -0
- package/skills/gsd-path-ship/references/reviewer.md +188 -0
- package/skills/gsd-path-ship/scripts/_common.py +180 -0
- package/skills/gsd-path-ship/scripts/archive_milestone.py +2265 -0
- package/skills/gsd-path-ship/scripts/build_state.py +854 -0
- package/skills/gsd-path-ship/scripts/check_handoffs.py +1855 -0
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +376 -0
- package/skills/gsd-path-ship/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-ship/scripts/discussion_validate.py +1321 -0
- package/skills/gsd-path-ship/scripts/integration.py +1433 -0
- package/skills/gsd-path-ship/scripts/isolation.py +3538 -0
- package/skills/gsd-path-ship/scripts/lean_verification.py +256 -0
- package/skills/gsd-path-ship/scripts/pipeline_git.py +940 -0
- package/skills/gsd-path-ship/scripts/pipeline_state.py +2291 -0
- package/skills/gsd-path-ship/scripts/review_panel.py +553 -0
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +1039 -0
- package/skills/gsd-path-ship/scripts/state_promote.py +743 -0
- package/skills/gsd-path-ship/scripts/workflow_run.py +117 -0
- package/skills/gsd-path-ship/templates/archive-manifest.md +37 -0
- package/skills/gsd-path-ship/templates/final-review.md +27 -0
- package/skills/gsd-path-ship/templates/gap-review.md +20 -0
- package/skills/gsd-path-ship/templates/patch-findings.md +16 -0
- package/skills/gsd-path-ship/templates/wave-review.md +64 -0
- package/skills/gsd-path-undo/SKILL.md +45 -0
- package/skills/gsd-path-undo/agents/openai.yaml +6 -0
- package/skills/gsd-path-undo/scripts/_common.py +180 -0
- package/skills/gsd-path-undo/scripts/discussion_records.py +619 -0
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +1039 -0
- package/skills/path/BUILD.md +700 -0
- package/skills/path/DECIDE.md +115 -0
- package/skills/path/DEFINE.md +297 -0
- package/skills/path/DOCS-AUDIT.md +190 -0
- package/skills/path/INSPECT.md +167 -0
- package/skills/path/PLAN.md +411 -0
- package/skills/path/RESEARCH.md +159 -0
- package/skills/path/ROADMAP.md +215 -0
- package/skills/path/SHIP.md +412 -0
- package/skills/path/SKILL.md +471 -0
- package/skills/path/agents/openai.yaml +6 -0
- package/skills/path/references/codebase-mapper.md +52 -0
- package/skills/path/references/coder.md +90 -0
- package/skills/path/references/decider.md +36 -0
- package/skills/path/references/dispatch.md +131 -0
- package/skills/path/references/docs-auditor.md +60 -0
- package/skills/path/references/planner.md +104 -0
- package/skills/path/references/researcher.md +42 -0
- package/skills/path/references/reviewer.md +188 -0
- package/skills/path/references/roadmapper.md +48 -0
- package/skills/path/scripts/_common.py +180 -0
- package/skills/path/scripts/archive_milestone.py +2265 -0
- package/skills/path/scripts/bootstrap_repository.py +710 -0
- package/skills/path/scripts/build_state.py +854 -0
- package/skills/path/scripts/check_docs_audit.py +463 -0
- package/skills/path/scripts/check_handoffs.py +1855 -0
- package/skills/path/scripts/check_task_briefs.py +376 -0
- package/skills/path/scripts/check_update.py +93 -0
- package/skills/path/scripts/detect_project.py +1517 -0
- package/skills/path/scripts/discussion_records.py +619 -0
- package/skills/path/scripts/discussion_validate.py +1321 -0
- package/skills/path/scripts/dispatch_driver.py +1812 -0
- package/skills/path/scripts/integration.py +1433 -0
- package/skills/path/scripts/isolation.py +3538 -0
- package/skills/path/scripts/lean_verification.py +256 -0
- package/skills/path/scripts/loop_run.py +837 -0
- package/skills/path/scripts/pipeline_git.py +940 -0
- package/skills/path/scripts/pipeline_state.py +2291 -0
- package/skills/path/scripts/promote_lookahead.py +415 -0
- package/skills/path/scripts/review_findings.py +714 -0
- package/skills/path/scripts/review_panel.py +553 -0
- package/skills/path/scripts/state_checkpoint.py +1039 -0
- package/skills/path/scripts/state_promote.py +743 -0
- package/skills/path/scripts/token_budget.py +146 -0
- package/skills/path/scripts/workflow_run.py +117 -0
- package/skills/path/templates/answers.md +29 -0
- package/skills/path/templates/archive-manifest.md +37 -0
- package/skills/path/templates/charter.md +50 -0
- package/skills/path/templates/codebase.md +46 -0
- package/skills/path/templates/dialogue.md +21 -0
- package/skills/path/templates/docs-audit.md +69 -0
- package/skills/path/templates/evidence.md +24 -0
- package/skills/path/templates/final-review.md +27 -0
- package/skills/path/templates/gap-review.md +20 -0
- package/skills/path/templates/intent.md +98 -0
- package/skills/path/templates/loop.md +59 -0
- package/skills/path/templates/patch-findings.md +16 -0
- package/skills/path/templates/plan-panel.md +25 -0
- package/skills/path/templates/plan.md +89 -0
- package/skills/path/templates/repository.md +16 -0
- package/skills/path/templates/research-handoff.md +25 -0
- package/skills/path/templates/roadmap.md +38 -0
- package/skills/path/templates/skeptic.md +36 -0
- package/skills/path/templates/state.md +27 -0
- package/skills/path/templates/synthesis.md +36 -0
- package/skills/path/templates/task.md +74 -0
- package/skills/path/templates/wave-panel.md +25 -0
- package/skills/path/templates/wave-review.md +64 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-path-decide
|
|
3
|
+
description: Decide implementation direction from approved intent and complete research evidence, recording settled choices in SYNTHESIS.md. Use only when the user explicitly invokes $gsd-path-decide or an active $gsd-path router explicitly routes to this phase.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GSD Path Decide Phase
|
|
7
|
+
|
|
8
|
+
Dispatch one reasoning-intensive decider and validate its decision artifact.
|
|
9
|
+
|
|
10
|
+
Routing instructions below are caller handoffs under the AGENTS.md handoff
|
|
11
|
+
rule; never invoke an explicit-only sibling skill yourself.
|
|
12
|
+
|
|
13
|
+
Before dispatch and again before completion, apply the AGENTS.md
|
|
14
|
+
pending-answer rule with the bundled `scripts/discussion_records.py`; a
|
|
15
|
+
follow-up owned by decide is resolved in SYNTHESIS.md, or the phase blocks.
|
|
16
|
+
|
|
17
|
+
## Preconditions
|
|
18
|
+
|
|
19
|
+
Require `pipeline_state.py validate --repo <absolute root> [--project-dir
|
|
20
|
+
.project/next]` to pass; otherwise return to `$gsd-path` for ownership
|
|
21
|
+
checking. Legal entry is `research/done` or `decide/active|blocked`. On
|
|
22
|
+
`research/done`, enter with `pipeline_state.py transition`, expected
|
|
23
|
+
phase/status `research/done`, exact branch and archive values, event `decision
|
|
24
|
+
synthesis started`, and set phase/status `decide/active` (plus the same
|
|
25
|
+
lookahead project dir); never edit STATE directly. `decide/done` or any later phase blocks rather
|
|
26
|
+
than replacing decisions beneath an existing plan. When an active router
|
|
27
|
+
supplies the lookahead track root `.project/next/`, evaluate these
|
|
28
|
+
preconditions against the track instead; see Lookahead mode. Require
|
|
29
|
+
`.project/intent/INTENT.md`, `.project/research/RESEARCH.md`, and every
|
|
30
|
+
`evidence-*.md` file named as `dispatched` there. In program flow (CHARTER.md
|
|
31
|
+
exists, no milestone INTENT yet) require `.project/CHARTER.md` in INTENT.md's
|
|
32
|
+
place. A standard file may be absent
|
|
33
|
+
only when the handoff manifest records that dimension as skipped; a missing or
|
|
34
|
+
invalid manifest or dispatched file routes to `$gsd-path-research`. Include
|
|
35
|
+
every additional `evidence-*.md` file present only when the manifest names it.
|
|
36
|
+
|
|
37
|
+
Output path: when `.project/CHARTER.md` exists and `.project/ROADMAP.md` does
|
|
38
|
+
not, this is program scope — the required output is `.project/SYNTHESIS.md`
|
|
39
|
+
at the `.project/` top level; it persists across milestones and never
|
|
40
|
+
archives. Otherwise the required output is `.project/research/SYNTHESIS.md`,
|
|
41
|
+
which archives with its milestone.
|
|
42
|
+
|
|
43
|
+
## Lookahead mode
|
|
44
|
+
|
|
45
|
+
Entered only when an active router supplies the lookahead track root
|
|
46
|
+
`.project/next/` while the active STATE.md is `build/active` in program
|
|
47
|
+
flow. Evaluate every state and artifact precondition against the track:
|
|
48
|
+
`.project/next/STATE.md` is the state file, and INTENT.md, RESEARCH.md, and
|
|
49
|
+
the evidence files are read from `.project/next/`. The output is always
|
|
50
|
+
milestone scope: `.project/next/research/SYNTHESIS.md` — the program
|
|
51
|
+
SYNTHESIS.md already exists at the active `.project/` top level and is
|
|
52
|
+
never rewritten here, so the program-scope output-path rule above does not
|
|
53
|
+
apply. Run the research hand-off validator with `--project-dir
|
|
54
|
+
.project/next`. Dispatch, gates, `NEEDS-USER` handling, and completion
|
|
55
|
+
rules are unchanged; never write an active-path artifact.
|
|
56
|
+
|
|
57
|
+
## Process
|
|
58
|
+
|
|
59
|
+
1. Read the local [synthesis template](templates/synthesis.md),
|
|
60
|
+
`.project/research/RESEARCH.md`, and the bundled `scripts/check_handoffs.py`;
|
|
61
|
+
resolve each to an absolute path. Run the research hand-off validator before
|
|
62
|
+
dispatch so decide receives a complete, intentional evidence set.
|
|
63
|
+
2. Read the local [decider role](references/decider.md), then follow
|
|
64
|
+
the local [runtime dispatch contract](references/dispatch.md) with
|
|
65
|
+
deterministic logical task name `decide`. Give it absolute paths to the role,
|
|
66
|
+
`AGENTS.md`, `WORKFLOW.md`, INTENT.md (or CHARTER.md in program flow),
|
|
67
|
+
RESEARCH.md, every evidence file, the
|
|
68
|
+
template, and the required output path from the Preconditions.
|
|
69
|
+
3. Validate SYNTHESIS.md with `python3 <absolute check_handoffs.py> decide
|
|
70
|
+
--repo <absolute root> [--project-dir .project/next]`. Require one decision block for every genuinely open
|
|
71
|
+
choice in INTENT.md and the evidence, including stack and architecture
|
|
72
|
+
shape plus build-vs-buy when open. A choice already settled by an intent
|
|
73
|
+
constraint or the existing codebase belongs under `## Settled` as one line
|
|
74
|
+
citing the settling source — never a full block with an invented
|
|
75
|
+
runner-up. Require Decision, Runner-up, Evidence, and
|
|
76
|
+
Confidence in every decision block. Require `## For the planner` with wave-1
|
|
77
|
+
blockers, walking skeleton, and pitfall-to-task guidance.
|
|
78
|
+
4. If structural validation fails, redispatch one complete corrected brief
|
|
79
|
+
under logical task name `decide`, following the runtime dispatch
|
|
80
|
+
contract, and validate again. If it still fails, use
|
|
81
|
+
`pipeline_state.py transition` with expected `decide/active`, exact branch
|
|
82
|
+
and archive values, `--set-status blocked`, and an event naming the failed
|
|
83
|
+
synthesis gate, and
|
|
84
|
+
present **Outcome** with the failed gate, **Review** linking SYNTHESIS.md or
|
|
85
|
+
STATE.md when it is missing, and **Next** naming the one correction or user
|
|
86
|
+
decision required; then stop.
|
|
87
|
+
5. Present the decision-list outcome and a Markdown link to the resolved
|
|
88
|
+
absolute SYNTHESIS.md output path before every `NEEDS-USER`
|
|
89
|
+
item. Use an interactive user-input tool when available; otherwise ask in
|
|
90
|
+
chat and wait. Present
|
|
91
|
+
each item's options with the evidence-preferred option first, marked
|
|
92
|
+
`(recommended)` and justified in one line; a pure values call with no
|
|
93
|
+
evidence either way carries no recommendation, stated as such. For each
|
|
94
|
+
answer, append the ruling under `## User rulings`, revise every affected
|
|
95
|
+
decision so it reflects the ruling, and only then remove its tag.
|
|
96
|
+
6. Re-run the structural gate. When it passes with no unresolved user items,
|
|
97
|
+
use `pipeline_state.py transition` with expected `decide/active`, exact
|
|
98
|
+
branch and archive values, `--set-phase decide --set-status done`, and an
|
|
99
|
+
event naming the validated synthesis path. Include `--project-dir
|
|
100
|
+
.project/next` in lookahead and require returned `decide/done`. Confirm the
|
|
101
|
+
settled outcome, link SYNTHESIS.md again, and name
|
|
102
|
+
the next phase: the roadmap phase in program scope, planning otherwise.
|
|
103
|
+
When routed by an active `$gsd-path`, return control to
|
|
104
|
+
that router. When invoked directly, stop and tell the user to explicitly
|
|
105
|
+
invoke `$gsd-path`, which routes to that next phase; do not invoke an
|
|
106
|
+
explicit-only sibling skill yourself.
|
|
107
|
+
|
|
108
|
+
## Rules
|
|
109
|
+
|
|
110
|
+
- Make commitments, not option lists. Name the runner-up and why it lost
|
|
111
|
+
when a real alternative was weighed; never invent one.
|
|
112
|
+
- Cite evidence by file and finding heading for every decision.
|
|
113
|
+
- Route low-confidence decisions to wave 1 for verification. Reject uncited
|
|
114
|
+
decisions.
|
|
115
|
+
- Resolve evidence conflicts or escalate a true values decision; never average.
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-path-define
|
|
3
|
+
description: Define and approve project or milestone intent through an interview or milestone confirmation, writing .project/CHARTER.md or .project/intent/INTENT.md. Use only when the user explicitly invokes $gsd-path-define or an active $gsd-path router explicitly routes to this phase.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GSD Path Define Phase
|
|
7
|
+
|
|
8
|
+
Turn a project idea or approved roadmap entry into an approved intent artifact.
|
|
9
|
+
Run this phase in the main conversation; never delegate its interview or
|
|
10
|
+
confirmation.
|
|
11
|
+
|
|
12
|
+
Primary modes: **standard** (single milestone, below), **program** (a
|
|
13
|
+
multi-milestone program — interview into `.project/CHARTER.md`), and
|
|
14
|
+
**milestone** (derive one milestone's INTENT.md from the approved roadmap; no
|
|
15
|
+
re-interview). Modifiers: **brownfield** when the track's
|
|
16
|
+
`research/evidence-codebase.md` exists, and **supplied-spec** when the user
|
|
17
|
+
hands in a PRD, issue, or design doc. Apply every matching modifier on top of
|
|
18
|
+
the primary mode.
|
|
19
|
+
|
|
20
|
+
Routing instructions below are caller handoffs under the AGENTS.md handoff
|
|
21
|
+
rule; never invoke an explicit-only sibling skill yourself.
|
|
22
|
+
|
|
23
|
+
Before interview work and again before approval, apply the AGENTS.md
|
|
24
|
+
pending-answer rule with the bundled `scripts/discussion_records.py`; a
|
|
25
|
+
follow-up owned by define is resolved in INTENT.md, or the phase blocks.
|
|
26
|
+
|
|
27
|
+
## State ownership
|
|
28
|
+
|
|
29
|
+
If STATE.md exists, require `pipeline_state.py validate --repo <absolute root>
|
|
30
|
+
[--project-dir .project/next]` to pass; otherwise return to `$gsd-path` for
|
|
31
|
+
ownership checking. Legal existing-state
|
|
32
|
+
entry is `inspect/done` (transition to `define/active`; milestone mode when
|
|
33
|
+
ROADMAP.md exists), `roadmap/done`
|
|
34
|
+
(transition to `define/active`, milestone mode), or
|
|
35
|
+
`define/active|blocked`. When ROADMAP.md exists, a later milestone or
|
|
36
|
+
lookahead track at `define/active|blocked` also requires both current-track
|
|
37
|
+
inspection artifacts and a Log entry proving `inspect/done` for the same
|
|
38
|
+
milestone after its latest activation; otherwise route to inspect.
|
|
39
|
+
`define/done` or any later phase blocks rather than overwriting approved
|
|
40
|
+
intent and leaving downstream artifacts stale. When an active router supplies
|
|
41
|
+
the lookahead track root `.project/next/`, require its STATE.md to be a regular
|
|
42
|
+
non-symlink file and evaluate this section against that track's state and
|
|
43
|
+
paths; see Lookahead mode. If STATE.md is missing, run the bundled
|
|
44
|
+
`python3 <absolute-bundled-script> initialize --repo <absolute-root>
|
|
45
|
+
--template <absolute-state-template>` helper (`scripts/detect_project.py`) and
|
|
46
|
+
follow its returned JSON `verdict` / `route`. This is the only no-state
|
|
47
|
+
boundary; do not run `classify` first or classify from a directory listing or
|
|
48
|
+
conversation. If the command exits nonzero, returns `error`, or returns
|
|
49
|
+
`wrote_state: false`, report the error and block without routing or claiming
|
|
50
|
+
STATE.md was written.
|
|
51
|
+
- `owned` — continue under the existing-state rules above.
|
|
52
|
+
- `orphan` — return to `$gsd-path` for orphaned-state recovery; existing
|
|
53
|
+
evidence does not prove its pipeline version or phase and must not be reused
|
|
54
|
+
or overwritten by inference.
|
|
55
|
+
- `brownfield` — the helper writes STATE.md at `inspect/active`; route to
|
|
56
|
+
`$gsd-path-inspect` from this returned verdict.
|
|
57
|
+
- `greenfield` — require `wrote_state: true`, then continue with the helper's
|
|
58
|
+
STATE.md at `define/active`. Do not create STATE.md yourself.
|
|
59
|
+
|
|
60
|
+
Enter from `inspect/done` or `roadmap/done` only with `pipeline_state.py
|
|
61
|
+
transition`: pass the exact expected phase/status/branch/archive values, event
|
|
62
|
+
`definition started`, and `--set-phase define --set-status active` (plus
|
|
63
|
+
`--project-dir .project/next` for lookahead). This helper is the only ordinary
|
|
64
|
+
STATE mutation; direct template writing is limited to the missing-state
|
|
65
|
+
greenfield initialization above.
|
|
66
|
+
|
|
67
|
+
The router's verified new-GitHub-repository transaction is the sole greenfield
|
|
68
|
+
exception: STATE.md already exists at `define/active`, `branch` is the approved
|
|
69
|
+
`gsd-path/M001` branch, and `.project/REPOSITORY.md` contains the
|
|
70
|
+
fixed-format remote, remote-default SHA, clean default checkout, branch, and
|
|
71
|
+
primary worktree. Verify that artifact and the current branch/worktree before
|
|
72
|
+
interviewing. The required classifier returns `owned` before signal scanning,
|
|
73
|
+
so the bootstrap README is not a brownfield signal. A missing or mismatched binding
|
|
74
|
+
returns to `$gsd-path`; never infer it from STATE log prose or repair it
|
|
75
|
+
inside define.
|
|
76
|
+
|
|
77
|
+
## Coverage checklist
|
|
78
|
+
|
|
79
|
+
Obtain a confident answer in every area before finishing:
|
|
80
|
+
|
|
81
|
+
1. **Problem** — what hurts, for whom, and how badly.
|
|
82
|
+
2. **Users** — who uses this, how many, how technical, and what they use now.
|
|
83
|
+
3. **Success** — what observable result makes the first release complete.
|
|
84
|
+
4. **Scope in** — the smallest version that achieves that result.
|
|
85
|
+
5. **Scope out** — explicit vetoes that downstream phases must not include.
|
|
86
|
+
6. **Constraints** — stack, deadline, budget, code, integrations, compliance.
|
|
87
|
+
7. **Risks** — the assumptions and unknowns research must investigate.
|
|
88
|
+
8. **Surfaces** — what a person opens, sees, or types into to get the
|
|
89
|
+
result: screens, commands, endpoints. Record them on INTENT.md
|
|
90
|
+
`Surfaces:` (`none` only when nobody touches this work directly), and
|
|
91
|
+
give every named surface at least one success criterion observable
|
|
92
|
+
there. A criterion satisfied by a passing test alone does not cover a
|
|
93
|
+
surface.
|
|
94
|
+
|
|
95
|
+
## Program mode
|
|
96
|
+
|
|
97
|
+
When the user frames the work as a large multi-milestone program — or the
|
|
98
|
+
interview reveals scope that cannot ship as one milestone — interview against
|
|
99
|
+
the charter instead of the single-milestone checklist:
|
|
100
|
+
|
|
101
|
+
1. **Vision** — the program's end state and why it matters.
|
|
102
|
+
2. **Full scope in** — every capability area the program will deliver.
|
|
103
|
+
3. **Vetoes** — what no milestone may include.
|
|
104
|
+
4. **Constraints** — program-level stack, budget, deadline, integrations.
|
|
105
|
+
5. **Program success criteria** — observable when the last milestone ships.
|
|
106
|
+
6. **Review panel** — optional durable default (`off` | `detected` | named
|
|
107
|
+
families). Default `off`. This value persists on CHARTER.md; later
|
|
108
|
+
milestone INTENT files copy it and may override.
|
|
109
|
+
|
|
110
|
+
Read the local [charter template](templates/charter.md), write the approval
|
|
111
|
+
draft to `.project/CHARTER.md` including `Review panel:` (default `off`;
|
|
112
|
+
never invent `detected` or a named list), and run the same playback-approval
|
|
113
|
+
loop as the standard Process. On approval, retain the reviewed
|
|
114
|
+
`Review panel:` value on CHARTER.md, run `pipeline_state.py transition` with
|
|
115
|
+
expected `define/active`, milestone/branch/archive all at their exact current
|
|
116
|
+
values, event `program charter approved`, and `--set-phase define --set-status
|
|
117
|
+
done`; require milestone to remain null. Report that research (program
|
|
118
|
+
scope) is next. Research, decide, and the roadmap phase slice the program;
|
|
119
|
+
per-milestone INTENT.md files come later, in milestone mode. Do not write
|
|
120
|
+
INTENT.md in program mode.
|
|
121
|
+
|
|
122
|
+
## Milestone mode
|
|
123
|
+
|
|
124
|
+
Legal entry: `roadmap/done` only for the first milestone after initial roadmap
|
|
125
|
+
approval, or `inspect/done` when `.project/ROADMAP.md` exists. Recovery from
|
|
126
|
+
`define/active|blocked` follows the current inspection-evidence requirement in
|
|
127
|
+
State ownership. There is no re-interview of charter or roadmap scope:
|
|
128
|
+
1. Read the applicable track STATE.md, `.project/CHARTER.md`, and
|
|
129
|
+
`.project/ROADMAP.md`. Select the entry whose slug matches `STATE.milestone`.
|
|
130
|
+
Require exactly one match. In ordinary milestone mode,
|
|
131
|
+
require that entry to be `active`; in lookahead mode, require it to be
|
|
132
|
+
`pending`. A missing, duplicate, or wrong-status match blocks: record the
|
|
133
|
+
failure in the applicable STATE.md and return to the router. When
|
|
134
|
+
brownfield, also read the track's
|
|
135
|
+
`research/evidence-codebase.md` and `research/DOCS-AUDIT.md` first.
|
|
136
|
+
2. Draft INTENT.md from the resolved entry: Summary from its Goal, Scope
|
|
137
|
+
in/out and Success criteria from the entry, Constraints inherited from the charter,
|
|
138
|
+
Risks and Open questions from the entry (tagged `RESEARCH`/`NEEDS-USER`),
|
|
139
|
+
`Lane: milestone`, `Surfaces:` copied verbatim from the entry, and
|
|
140
|
+
`Review panel:` copied from CHARTER.md (default
|
|
141
|
+
`off` when CHARTER omits it). The confirmation may override the copied
|
|
142
|
+
panel value; do not invent `detected` or a named list. When brownfield,
|
|
143
|
+
fill `## Current state` from the map, record doc-vs-code rulings as in
|
|
144
|
+
Brownfield mode, and add protected existing behavior under Scope out.
|
|
145
|
+
Write Ground truth paths from the track root: `.project` normally, or
|
|
146
|
+
`.project/next` in Lookahead mode — never the building milestone's
|
|
147
|
+
active `research/` paths.
|
|
148
|
+
3. Present one confirmation, not an interview: playback the derivation (and
|
|
149
|
+
brownfield ground truth when present), link the resolved absolute INTENT.md
|
|
150
|
+
path, and ask approve or adjust. A requested change that contradicts the
|
|
151
|
+
charter or the resolved roadmap entry is a scope change — this phase never
|
|
152
|
+
edits the roadmap; surface it to the user for a `$gsd-path-roadmap` re-slice
|
|
153
|
+
at the next milestone boundary.
|
|
154
|
+
4. On approval, finalize per the Output contract, setting `milestone` to the
|
|
155
|
+
resolved entry's slug. The router continues with milestone-scoped research
|
|
156
|
+
when the entry lists open questions, otherwise planning.
|
|
157
|
+
|
|
158
|
+
## Lookahead mode
|
|
159
|
+
|
|
160
|
+
Entered only when an active router supplies the lookahead track root
|
|
161
|
+
`.project/next/` while the active STATE.md is `build/active` in program
|
|
162
|
+
flow. Evaluate every state and artifact precondition in this contract
|
|
163
|
+
against the track — `.project/next/STATE.md` is the state file and
|
|
164
|
+
INTENT.md is `.project/next/intent/INTENT.md` — never against active-path
|
|
165
|
+
artifacts. This is milestone mode run against the track, with two
|
|
166
|
+
differences:
|
|
167
|
+
|
|
168
|
+
- Read CHARTER.md and ROADMAP.md from their active `.project/` paths, but
|
|
169
|
+
resolve the milestone only from `.project/next/STATE.md` as described above;
|
|
170
|
+
never use the building milestone's `active` entry and never create or modify
|
|
171
|
+
any active-path artifact.
|
|
172
|
+
- Never mark the lookahead milestone's roadmap entry `active`; the router
|
|
173
|
+
does that at promotion.
|
|
174
|
+
|
|
175
|
+
All other milestone-mode rules apply unchanged. Brownfield evidence for
|
|
176
|
+
this track is `.project/next/research/evidence-codebase.md`.
|
|
177
|
+
|
|
178
|
+
## Supplied-spec mode
|
|
179
|
+
|
|
180
|
+
When the user supplies a document at entry — a PRD, issue, or design doc —
|
|
181
|
+
read it fully before the first question and map it against the coverage
|
|
182
|
+
checklist. Present what the document settles per checklist area for
|
|
183
|
+
correction — stated, not asked, exactly like brownfield ground truth — then
|
|
184
|
+
interview only the gaps and contradictions. Note the source document path in
|
|
185
|
+
INTENT.md's Summary. A supplied spec composes with brownfield mode: ground
|
|
186
|
+
truth first, then the spec, then delta questions only.
|
|
187
|
+
|
|
188
|
+
## Brownfield mode
|
|
189
|
+
|
|
190
|
+
When the track's `research/evidence-codebase.md` exists (inspect already
|
|
191
|
+
ran), read it and the matching `research/DOCS-AUDIT.md` before the first
|
|
192
|
+
question. The rules change for every primary mode:
|
|
193
|
+
|
|
194
|
+
- Established facts are not questions. Never ask what the stack is or what
|
|
195
|
+
the code does — the map answers that. State it and let the user correct.
|
|
196
|
+
- Standard and program interviews cover only deltas: what should change, what
|
|
197
|
+
must not break, and — standard — the goal of THIS milestone against the
|
|
198
|
+
code that already exists. Program interviews still use the charter
|
|
199
|
+
checklist, but skip any area the map already settled.
|
|
200
|
+
- Milestone mode still does not re-interview; it still collects the rulings
|
|
201
|
+
below before confirmation.
|
|
202
|
+
- Work through the mapper's `## Open questions for define` and the
|
|
203
|
+
audit's `NEEDS-USER` remediation rows — each doc-vs-code conflict gets a
|
|
204
|
+
ruling (`fix-doc`, `fix-code`, or `accept-drift`) recorded verbatim in
|
|
205
|
+
INTENT.md and appended to DOCS-AUDIT.md's `## User rulings` table.
|
|
206
|
+
`fix-doc` and `fix-code` rows receive `planned: no`; `accept-drift` receives
|
|
207
|
+
`planned: n/a (accept-drift)`. Never leave the durable alignment queue only
|
|
208
|
+
in INTENT.md. Program mode records those rulings on CHARTER.md Constraints
|
|
209
|
+
or Corrections and still writes the DOCS-AUDIT.md table.
|
|
210
|
+
- Existing behavior the user wants preserved is recorded under Scope out as
|
|
211
|
+
a veto ("do not break X"); accepted `fix-code` items become scope.
|
|
212
|
+
- Fill INTENT.md's `## Current state` from the codebase map so downstream
|
|
213
|
+
phases inherit ground truth without re-scanning. Set Ground truth to the
|
|
214
|
+
track's `research/evidence-codebase.md` and `research/DOCS-AUDIT.md`
|
|
215
|
+
(`.project/next/research/` in Lookahead mode). Omit that section for
|
|
216
|
+
greenfield. Do not add it to CHARTER.md.
|
|
217
|
+
|
|
218
|
+
## Process
|
|
219
|
+
|
|
220
|
+
1. Open in this order, then stop for the reply:
|
|
221
|
+
- **Brownfield (any primary):** present the one-screen ground truth from
|
|
222
|
+
inspect before any question.
|
|
223
|
+
- **Standard, no brownfield:** ask for a one-paragraph idea if missing.
|
|
224
|
+
- **Program, no brownfield:** ask for the program vision if missing.
|
|
225
|
+
- **Milestone:** do not ask for an idea; continue at Milestone mode
|
|
226
|
+
(ground truth already presented when brownfield).
|
|
227
|
+
- **Supplied spec:** after the opening above, present settled coverage
|
|
228
|
+
for correction, then interview only its gaps.
|
|
229
|
+
- **Standard + brownfield:** after ground truth, ask what this milestone
|
|
230
|
+
should achieve against the code that exists.
|
|
231
|
+
2. For standard and program modes, ask small rounds of questions aimed at the
|
|
232
|
+
weakest checklist areas that the opening did not already settle. Never ask
|
|
233
|
+
a fact the map, audit, or supplied spec already answered. Use an
|
|
234
|
+
interactive user-input tool when available. Otherwise ask concise numbered
|
|
235
|
+
questions in chat and stop for the reply. Keep each round small enough to
|
|
236
|
+
answer in one reply. When a question offers options, list the recommended
|
|
237
|
+
one first marked `(recommended)` with a one-line reason; leave open
|
|
238
|
+
questions open. Milestone mode skips this step; collect brownfield rulings
|
|
239
|
+
if brownfield, then use the Milestone mode confirmation.
|
|
240
|
+
3. Surface contradictions immediately and ask the user to choose. Never
|
|
241
|
+
average incompatible answers.
|
|
242
|
+
4. In standard and program modes, challenge the largest remaining assumption
|
|
243
|
+
at least once: ask what happens if it is false. Do not challenge a fact
|
|
244
|
+
the brownfield map already established. Milestone mode skips this step.
|
|
245
|
+
5. Stop when coverage is complete or the user says `enough`. Record remaining
|
|
246
|
+
uncertainty under `## Open questions` with `RESEARCH` or `NEEDS-USER`.
|
|
247
|
+
6. Classify the proposed milestone lane before writing the approval draft.
|
|
248
|
+
Milestone mode keeps `Lane: milestone` and skips this classification.
|
|
249
|
+
Program mode writes CHARTER.md instead of INTENT.md. Otherwise choose
|
|
250
|
+
`quick` when scope fits at most two deliverable-sized tasks (project
|
|
251
|
+
policy) in one wave with
|
|
252
|
+
no `RESEARCH` or `NEEDS-USER` items and no cross-wave integration risk;
|
|
253
|
+
otherwise `standard`. Read the local [intent template](templates/intent.md),
|
|
254
|
+
write that proposed lane and the complete draft to
|
|
255
|
+
`.project/intent/INTENT.md`, then ask for approval. Present an
|
|
256
|
+
**Outcome** playback of the Summary and proposed lane, a **Review** Markdown
|
|
257
|
+
link to the resolved absolute INTENT.md path, and one **Next** approval
|
|
258
|
+
question with approve first as `(recommended)` only when the evidence
|
|
259
|
+
supports it. Record corrections verbatim under `## Corrections`, update the
|
|
260
|
+
file, and present the new link before asking again. When STATE records a new
|
|
261
|
+
new-GitHub REPOSITORY.md binding, include its remote, default checkout, GSD
|
|
262
|
+
Path branch, and primary worktree under `## Constraints`. Recompute and write
|
|
263
|
+
the lane after every correction before relinking the file.
|
|
264
|
+
|
|
265
|
+
## Output contract
|
|
266
|
+
|
|
267
|
+
At approval, retain the already reviewed `Lane:` value and its one-line reason.
|
|
268
|
+
Retain `Review panel:` as reviewed: the CHARTER copy or the user's override
|
|
269
|
+
in milestone/lookahead mode, the CHARTER value in program mode, or `off`
|
|
270
|
+
when the user did not choose a panel and no CHARTER default exists.
|
|
271
|
+
|
|
272
|
+
After approval, finalize `.project/intent/INTENT.md` and run
|
|
273
|
+
`pipeline_state.py transition` with expected `define/active`, the exact
|
|
274
|
+
current milestone/branch/archive values, event `milestone intent approved`,
|
|
275
|
+
`--set-phase define --set-status done --set-milestone <milestone slug>`, and
|
|
276
|
+
`--project-dir .project/next` in lookahead. Require returned `define/done` and
|
|
277
|
+
the exact milestone. Report the next phase
|
|
278
|
+
from the approved lane. For `Lane: standard`, research is next. For
|
|
279
|
+
`Lane: quick`, planning is next and research and decide are skipped. For
|
|
280
|
+
`Lane: milestone`, use the resolved roadmap entry matching the track STATE's
|
|
281
|
+
`milestone`: milestone-scoped research is next when that entry lists open
|
|
282
|
+
questions; otherwise planning is next and research and decide are skipped.
|
|
283
|
+
Confirm the approved outcome, link the final INTENT.md again, and name that
|
|
284
|
+
next phase before routing. When routed by an active `$gsd-path`, return control
|
|
285
|
+
to that router so its bundled next contract can auto-advance to the named
|
|
286
|
+
phase. When invoked directly, stop and tell the user to explicitly invoke
|
|
287
|
+
`$gsd-path`, which selects that next phase; do not invoke an explicit-only
|
|
288
|
+
sibling skill yourself.
|
|
289
|
+
|
|
290
|
+
## Rules
|
|
291
|
+
|
|
292
|
+
- Trace every question to a checklist gap; omit curiosity questions.
|
|
293
|
+
- In brownfield mode, state mapped facts for correction; never re-ask them.
|
|
294
|
+
- Treat solution-shaped problems as hypotheses and uncover the underlying pain.
|
|
295
|
+
- Preserve vetoes and corrections verbatim.
|
|
296
|
+
- Wrap up when every coverage-checklist area is answered or the user signals
|
|
297
|
+
done, and tag remaining gaps.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd-path-docs-audit
|
|
3
|
+
description: Verify Markdown claims against the actual code, commands, and GSD Path artifacts. Use only when the user explicitly invokes $gsd-path-docs-audit or an active $gsd-path router explicitly routes to this phase.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GSD Path Docs Audit
|
|
7
|
+
|
|
8
|
+
Answer one question with evidence: **does the project do what its documents
|
|
9
|
+
say it does?** Runs standalone at the safe checkpoints below, and as half of
|
|
10
|
+
`$gsd-path-inspect`. Output: `.project/research/DOCS-AUDIT.md`.
|
|
11
|
+
|
|
12
|
+
Routing instructions below are caller handoffs under the AGENTS.md handoff
|
|
13
|
+
rule; never invoke an explicit-only sibling skill yourself.
|
|
14
|
+
|
|
15
|
+
Before audit work and again before completion, apply the AGENTS.md
|
|
16
|
+
pending-answer rule with the bundled `scripts/discussion_records.py`; a
|
|
17
|
+
follow-up owned by docs audit is resolved in DOCS-AUDIT.md, or the phase
|
|
18
|
+
blocks.
|
|
19
|
+
|
|
20
|
+
Require an existing `.project/STATE.md` that passes `python3 <absolute
|
|
21
|
+
pipeline_state.py> validate --repo <absolute root>`; never
|
|
22
|
+
create pipeline state or write into an unowned `.project/`. A missing state
|
|
23
|
+
stops and offers explicit `$gsd-path` initialization; do not invoke it
|
|
24
|
+
automatically. A different marker blocks and reports ownership without writing.
|
|
25
|
+
Embedded inspect mode is legal only at `inspect/active|blocked`.
|
|
26
|
+
Standalone mode is legal only at a stable pre-build boundary
|
|
27
|
+
`inspect|define|research|decide|roadmap|plan` with `status: done`, or at
|
|
28
|
+
`ship/blocked` with no in-progress task. `build/*`, `ship/active`,
|
|
29
|
+
`shipped/done`, and every other state block: changing the canonical audit there
|
|
30
|
+
would dirty execution, invalidate review, or mutate shipped history.
|
|
31
|
+
|
|
32
|
+
## Process
|
|
33
|
+
|
|
34
|
+
1. Before writing the output, freeze the helper's exact stdout from `python3
|
|
35
|
+
<absolute check_docs_audit.py> --repo <absolute root> --emit-inventory`
|
|
36
|
+
(add `--alignment` in alignment mode) in a temporary file. Before any
|
|
37
|
+
rewrite, preserve an existing canonical audit in a separate temporary file
|
|
38
|
+
and record its SHA-256. When that audit records an `Audited HEAD` that Git
|
|
39
|
+
resolves as an ancestor of HEAD, also freeze the changed set — `git -c
|
|
40
|
+
core.quotePath=false diff --name-only --no-renames <prior HEAD>` plus
|
|
41
|
+
`git -c core.quotePath=false ls-files --others --exclude-standard`, one
|
|
42
|
+
path per line — in a temporary file; otherwise there is no changed set and
|
|
43
|
+
the auditor re-verifies every claim. The frozen inventory and
|
|
44
|
+
changed set travel inside the dispatch brief and
|
|
45
|
+
the gate below; never persist them as `.project/` sidecar files — the
|
|
46
|
+
audit's own path records are the durable copy. If a previous run left an
|
|
47
|
+
inventory sidecar under `.project/research/`, the orchestrator deletes it
|
|
48
|
+
when transferring the new audit — a leftover sidecar blocks the archive
|
|
49
|
+
transaction. Dispatch one docs auditor with deterministic logical task
|
|
50
|
+
name `docs_audit`, following the local
|
|
51
|
+
[runtime dispatch contract](references/dispatch.md): local role
|
|
52
|
+
[docs-auditor](references/docs-auditor.md), template
|
|
53
|
+
[docs-audit](templates/docs-audit.md), absolute repo root, exact frozen
|
|
54
|
+
inventory, the changed set when one exists, alignment flag, prior audit as
|
|
55
|
+
carry-forward input, and output
|
|
56
|
+
`.project/research/DOCS-AUDIT.md`. When Git has a resolvable HEAD and no
|
|
57
|
+
non-`.project` worktree changes, the orchestrator creates a verify sidecar
|
|
58
|
+
with `python3 <absolute isolation.py> isolate-verify --repo <absolute
|
|
59
|
+
primary> --base <HEAD> --name docs-audit` for project commands. The auditor
|
|
60
|
+
writes only its assigned output under that sidecar. Gate it there before
|
|
61
|
+
collection. Then run `python3 <absolute isolation.py> collect-artifact
|
|
62
|
+
--repo <absolute primary> --source <returned worktree> --base <recorded
|
|
63
|
+
HEAD> --branch <returned branch> --source-path
|
|
64
|
+
.project/research/DOCS-AUDIT.md --destination-path
|
|
65
|
+
.project/research/DOCS-AUDIT.md`, adding `--expected-destination <recorded
|
|
66
|
+
prior SHA-256>` when a prior audit existed. Require the returned base,
|
|
67
|
+
branch, source, and destination to match; then non-force retire that exact
|
|
68
|
+
worktree and branch with `isolation.py retire`. A corrected redispatch is
|
|
69
|
+
gated before collection and uses the same expected prior hash. Otherwise no
|
|
70
|
+
project command may run. The dispatch brief carries current HEAD as the
|
|
71
|
+
audit baseline only when that verify sidecar was created at HEAD; otherwise
|
|
72
|
+
it carries `none`. The auditor writes that baseline as `Audited HEAD`.
|
|
73
|
+
2. Gate the artifact with the bundled helper: write the frozen inventory to
|
|
74
|
+
a temporary file (one path per line) and run
|
|
75
|
+
`python3 <absolute check_docs_audit.py> --repo <docs sidecar> --inventory
|
|
76
|
+
<file> [--prior-audit <temporary prior-audit file>] [--changed <temporary
|
|
77
|
+
changed-set file>]`.
|
|
78
|
+
It enforces the contract — every doc with at least one testable claim has
|
|
79
|
+
a claims table, every claim a valid type and verdict with evidence, every
|
|
80
|
+
claimless doc appears once in the `## Descriptive docs` list, the section
|
|
81
|
+
paths and that list are disjoint and together equal the frozen inventory
|
|
82
|
+
exactly, the Summary counts match the rows, the remediation queue
|
|
83
|
+
classifies every non-verified claim, every prior User-ruling row and
|
|
84
|
+
Planned value survives in order, and every `unchanged:` row satisfies
|
|
85
|
+
the Delta rule below. A non-zero exit names the failed
|
|
86
|
+
rule. Redispatch one complete corrected brief under logical task name
|
|
87
|
+
`docs_audit`, following the runtime dispatch contract. If it still fails,
|
|
88
|
+
present **Outcome** with the failed gate, **Review** linking DOCS-AUDIT.md or
|
|
89
|
+
STATE.md when it is missing, and **Next** naming the required correction.
|
|
90
|
+
3. Report to the user: verdict counts, the drift list (stale + aspirational
|
|
91
|
+
claims), and the remediation queue. Link the resolved absolute
|
|
92
|
+
`.project/research/DOCS-AUDIT.md` path before asking for any ruling. Do not
|
|
93
|
+
fix anything in this skill.
|
|
94
|
+
4. **Collect rulings** (standalone runs; during `$gsd-path-inspect` define
|
|
95
|
+
owns this). Walk the remediation queue with the user — batches of three,
|
|
96
|
+
an interactive input tool when available. Present the auditor's
|
|
97
|
+
classification as the first option marked `(recommended)` with its
|
|
98
|
+
recorded evidence as the one-line reason; a `NEEDS-USER` item where the
|
|
99
|
+
auditor cannot tell which side is wrong carries no recommendation, stated
|
|
100
|
+
as such. Each item gets one ruling:
|
|
101
|
+
- `fix-code` — the doc is the contract; the code must catch up
|
|
102
|
+
- `fix-doc` — reality is right; the doc must be corrected
|
|
103
|
+
- `accept-drift` — known and tolerated; recorded so the next audit
|
|
104
|
+
doesn't resurface it
|
|
105
|
+
Append every ruling to DOCS-AUDIT.md under `## User rulings`, verbatim.
|
|
106
|
+
A ruling that contradicts an INTENT.md veto stops the walk — the veto
|
|
107
|
+
wins until the user amends INTENT.md itself.
|
|
108
|
+
5. **Queue, don't execute.** Every `fix-code` and `fix-doc` ruling enters
|
|
109
|
+
the alignment queue: its `## User rulings` row is marked
|
|
110
|
+
`planned: no`. Ruling and executing are separate decisions — the user
|
|
111
|
+
may not be ready to work the backlog. Close by offering once: plan the
|
|
112
|
+
patch wave now, or hold. If an active `$gsd-path` routed this audit and the
|
|
113
|
+
user chooses now, return control with DOCS-AUDIT.md as the patch findings
|
|
114
|
+
source. When invoked directly, do not invoke an explicit-only sibling;
|
|
115
|
+
tell a user who chooses now to explicitly invoke `$gsd-path`, which will
|
|
116
|
+
offer the queued source to plan. On hold — the default — report the queue
|
|
117
|
+
size and that `$gsd-path` will offer alignment until the
|
|
118
|
+
queue is drained. Only `accept-drift` rulings → nothing queued, done.
|
|
119
|
+
After the choice, link the updated DOCS-AUDIT.md and state whether planning
|
|
120
|
+
starts now or the queue remains for a later router pass.
|
|
121
|
+
|
|
122
|
+
## The verification methodology
|
|
123
|
+
|
|
124
|
+
The auditor follows this checklist for every doc; the audit file is the
|
|
125
|
+
filled-in checklist, so the method and the artifact stay one thing.
|
|
126
|
+
|
|
127
|
+
**Inventory.** Every `.md` in the repo (root, `docs/`, nested), plus
|
|
128
|
+
`.project/` artifacts when present. Excluded: `node_modules`, build output,
|
|
129
|
+
vendored code, `.project/archive/`, and the output audit itself — archives are
|
|
130
|
+
read-only history and are never audited. The orchestrator freezes this list
|
|
131
|
+
before dispatch; the auditor uses it verbatim. Every file is accounted for —
|
|
132
|
+
a doc with no testable claims gets one line in `## Descriptive docs`, not its
|
|
133
|
+
own section and not skipped. Rewriting DOCS-AUDIT.md preserves any
|
|
134
|
+
existing `## User rulings` rows: rulings and `planned` markers carry forward
|
|
135
|
+
verbatim, so a re-audit never wipes the alignment queue.
|
|
136
|
+
|
|
137
|
+
**Delta.** A re-audit re-verifies only what could have moved: every doc in
|
|
138
|
+
the changed set, every claim whose evidence names a changed path, every
|
|
139
|
+
command claim, and every prior non-verified claim. Any other prior
|
|
140
|
+
`verified` row is carried with exactly one `unchanged: ` prefix on its
|
|
141
|
+
Evidence. An already-carried row is copied verbatim without adding another
|
|
142
|
+
prefix. The gate rejects a carried row that fails any of those conditions.
|
|
143
|
+
No recorded `Audited HEAD`, or one that is not an ancestor of HEAD, means no
|
|
144
|
+
changed set and a full re-audit.
|
|
145
|
+
|
|
146
|
+
**Extract claims.** A claim is any statement reality can contradict:
|
|
147
|
+
|
|
148
|
+
| Claim type | Example | Check |
|
|
149
|
+
|------------|---------|-------|
|
|
150
|
+
| command | "run `npm test`" | run it; record exit code |
|
|
151
|
+
| feature | "supports OAuth login" | find the implementing code path |
|
|
152
|
+
| structure | "parsers live in `src/parse/`" | path exists and matches |
|
|
153
|
+
| status | "phase 2 complete", checked box | artifact/commit/code exists |
|
|
154
|
+
| config | "set `API_URL` in `.env`" | variable is actually read |
|
|
155
|
+
| integration | "syncs to Linear" | client code + config present |
|
|
156
|
+
|
|
157
|
+
**Verify.** Each claim gets checked by the cheapest sufficient method, in
|
|
158
|
+
order: run the command; read the named code; run the relevant test; check
|
|
159
|
+
git history. Verdicts:
|
|
160
|
+
|
|
161
|
+
- `verified` — checked and true, evidence recorded (file:line or command + output)
|
|
162
|
+
- `stale` — was plausibly true once; code has moved on
|
|
163
|
+
- `aspirational` — describes something never built
|
|
164
|
+
- `unverifiable` — cannot be checked from the repo (external service, credentials)
|
|
165
|
+
|
|
166
|
+
**Alignment mode** (when `.project/` exists) — the pipeline audits itself:
|
|
167
|
+
|
|
168
|
+
- every INTENT.md success criterion → `met` so far / `not yet` / `contradicted`
|
|
169
|
+
- every task with `status: done` → `isolation.py recover` proves its landing
|
|
170
|
+
commit and its Verify command still passes
|
|
171
|
+
- SYNTHESIS.md decisions → the code actually uses the decided stack/shape
|
|
172
|
+
- STATE.md → agrees with task frontmatter and review files
|
|
173
|
+
|
|
174
|
+
**Remediate.** Every non-`verified` claim lands in the remediation queue,
|
|
175
|
+
classified `fix-doc` (reality is right, doc lies) or `fix-code`
|
|
176
|
+
(doc is the contract, code fell short) or `NEEDS-USER` when the auditor
|
|
177
|
+
cannot tell which side is wrong. The queue is input for the user's ruling —
|
|
178
|
+
during inspection it feeds define; mid-project, accepted `fix-code`
|
|
179
|
+
items become a patch wave through `$gsd-path-plan`.
|
|
180
|
+
|
|
181
|
+
## Rules
|
|
182
|
+
|
|
183
|
+
- Audit is read-only; the auditor never edits docs or code.
|
|
184
|
+
- Build, test, lint, and help commands run only in an agent-specific verify
|
|
185
|
+
sidecar at a recorded clean revision. If that cannot faithfully
|
|
186
|
+
represent the claim, use static evidence or mark it `unverifiable`; never run
|
|
187
|
+
project commands in the source worktree.
|
|
188
|
+
- A verdict without recorded evidence is itself a defect — the audit must
|
|
189
|
+
meet the same evidence standard it enforces.
|
|
190
|
+
- Never let the auditor decide doc-vs-code conflicts; that is a user ruling.
|