@opengsd/gsd-path 1.3.1 → 1.5.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 +2 -207
- package/CHANGELOG.md +331 -69
- package/DOCS.md +25 -9
- package/FULL.md +12 -5
- package/GUIDE.md +1 -1
- package/HOOKS.md +104 -14
- package/QUICK.md +5 -2
- package/README.md +131 -111
- package/RUNTIME.md +2 -2
- package/UPDATE.md +61 -11
- package/WORKFLOW.md +44 -7
- package/package.json +13 -9
- package/platforms/shared-agents/dispatch.md +13 -0
- package/scripts/_common.py +619 -18
- package/scripts/archive_milestone.py +160 -86
- package/scripts/bootstrap_repository.py +8 -5
- package/scripts/build_recovery.py +100 -32
- package/scripts/build_state.py +143 -24
- package/scripts/check_docs_audit.py +91 -7
- package/scripts/check_handoffs.py +662 -50
- package/scripts/check_task_briefs.py +338 -30
- package/scripts/check_update.py +2 -2
- package/scripts/core_hook_gate.py +10 -1
- package/scripts/core_hook_settings.py +11 -4
- package/scripts/detect_project.py +587 -32
- package/scripts/discussion_records.py +19 -13
- package/scripts/discussion_validate.py +152 -50
- package/scripts/dispatch_driver.py +501 -46
- package/scripts/git_guard.py +118 -31
- package/scripts/guard_hook.py +1567 -194
- package/scripts/install.mjs +77 -46
- package/scripts/install.py +611 -50
- package/scripts/integration.py +580 -25
- package/scripts/isolation.py +1438 -57
- package/scripts/lean_verification.py +99 -19
- package/scripts/loop_run.py +31 -29
- package/scripts/members.py +706 -0
- package/scripts/migrate_core.py +2 -2
- package/scripts/path_config.py +5 -5
- package/scripts/pipeline_diagnose.py +82 -31
- package/scripts/pipeline_git.py +124 -34
- package/scripts/pipeline_state.py +287 -87
- package/scripts/pipeline_undo.py +218 -30
- package/scripts/promote_lookahead.py +1 -1
- package/scripts/review_panel.py +1 -1
- package/scripts/runtime_store.py +55 -11
- package/scripts/skill-resources.json +37 -5
- package/scripts/state_checkpoint.py +135 -44
- package/scripts/state_promote.py +2 -0
- package/scripts/status_runtime.py +58 -10
- package/scripts/sync_skill_resources.py +8 -7
- package/scripts/task_context.py +12 -3
- package/scripts/token_budget.py +12 -8
- package/scripts/wizard.mjs +1 -0
- package/scripts/workflow_run.py +107 -30
- package/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path/BUILD.md +7 -1
- package/skills/gsd-path/DECIDE.md +11 -4
- package/skills/gsd-path/DEFINE.md +36 -4
- package/skills/gsd-path/DOCS-AUDIT.md +6 -4
- package/skills/gsd-path/INSPECT.md +5 -4
- package/skills/gsd-path/PLAN.md +18 -4
- package/skills/gsd-path/RESEARCH.md +13 -1
- package/skills/gsd-path/ROADMAP.md +2 -1
- package/skills/gsd-path/SHIP.md +33 -11
- package/skills/gsd-path/SKILL.md +45 -1
- package/skills/gsd-path/references/build-native.md +63 -15
- package/skills/gsd-path/references/codebase-mapper.md +2 -1
- package/skills/gsd-path/references/dispatch.md +13 -0
- package/skills/gsd-path/references/docs-auditor.md +7 -1
- package/skills/gsd-path/references/operating-rules.md +214 -0
- package/skills/gsd-path/references/planner.md +22 -4
- package/skills/gsd-path/references/reviewer-final.md +20 -2
- package/skills/gsd-path/references/reviewer-wave.md +18 -5
- package/skills/gsd-path/references/reviewer.md +3 -1
- package/skills/gsd-path/references/spec-probes.md +150 -0
- package/skills/gsd-path/scripts/_common.py +619 -18
- package/skills/gsd-path/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path/scripts/bootstrap_repository.py +8 -5
- package/skills/gsd-path/scripts/build_recovery.py +100 -32
- package/skills/gsd-path/scripts/build_state.py +143 -24
- package/skills/gsd-path/scripts/check_docs_audit.py +91 -7
- package/skills/gsd-path/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path/scripts/check_update.py +2 -2
- package/skills/gsd-path/scripts/detect_project.py +587 -32
- package/skills/gsd-path/scripts/discussion_records.py +19 -13
- package/skills/gsd-path/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path/scripts/dispatch_driver.py +501 -46
- package/skills/gsd-path/scripts/git_guard.py +118 -31
- package/skills/gsd-path/scripts/integration.py +580 -25
- package/skills/gsd-path/scripts/isolation.py +1438 -57
- package/skills/gsd-path/scripts/lean_verification.py +99 -19
- package/skills/gsd-path/scripts/loop_run.py +31 -29
- package/skills/gsd-path/scripts/members.py +706 -0
- package/skills/gsd-path/scripts/path_config.py +5 -5
- package/skills/gsd-path/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path/scripts/review_panel.py +1 -1
- package/skills/gsd-path/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path/scripts/state_promote.py +2 -0
- package/skills/gsd-path/scripts/status_runtime.py +58 -10
- package/skills/gsd-path/scripts/task_context.py +12 -3
- package/skills/gsd-path/scripts/token_budget.py +12 -8
- package/skills/gsd-path/scripts/workflow_run.py +107 -30
- package/skills/gsd-path/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path/templates/codebase.md +1 -1
- package/skills/gsd-path/templates/docs-audit.md +6 -2
- package/skills/gsd-path/templates/final-review.md +16 -4
- package/skills/gsd-path/templates/gap-review.md +2 -1
- package/skills/gsd-path/templates/intent.md +30 -0
- package/skills/gsd-path/templates/patch-findings.md +3 -3
- package/skills/gsd-path/templates/plan.md +17 -2
- package/skills/gsd-path/templates/research-handoff.md +14 -3
- package/skills/gsd-path/templates/state.md +1 -1
- package/skills/gsd-path/templates/task.md +1 -0
- package/skills/gsd-path/templates/wave-review.md +16 -4
- package/skills/gsd-path-build/SKILL.md +7 -1
- package/skills/gsd-path-build/references/build-native.md +63 -15
- package/skills/gsd-path-build/references/dispatch.md +13 -0
- package/skills/gsd-path-build/references/operating-rules.md +214 -0
- package/skills/gsd-path-build/references/reviewer-final.md +20 -2
- package/skills/gsd-path-build/references/reviewer-wave.md +18 -5
- package/skills/gsd-path-build/references/reviewer.md +3 -1
- package/skills/gsd-path-build/references/spec-probes.md +150 -0
- package/skills/gsd-path-build/scripts/_common.py +619 -18
- package/skills/gsd-path-build/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-build/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-build/scripts/build_state.py +143 -24
- package/skills/gsd-path-build/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-build/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-build/scripts/detect_project.py +587 -32
- package/skills/gsd-path-build/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-build/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-build/scripts/dispatch_driver.py +501 -46
- package/skills/gsd-path-build/scripts/integration.py +580 -25
- package/skills/gsd-path-build/scripts/isolation.py +1438 -57
- package/skills/gsd-path-build/scripts/loop_run.py +31 -29
- package/skills/gsd-path-build/scripts/members.py +706 -0
- package/skills/gsd-path-build/scripts/path_config.py +5 -5
- package/skills/gsd-path-build/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-build/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-build/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-build/scripts/review_panel.py +1 -1
- package/skills/gsd-path-build/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-build/scripts/state_promote.py +2 -0
- package/skills/gsd-path-build/scripts/task_context.py +12 -3
- package/skills/gsd-path-build/scripts/token_budget.py +12 -8
- package/skills/gsd-path-build/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-build/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-build/templates/task.md +1 -0
- package/skills/gsd-path-build/templates/wave-review.md +16 -4
- package/skills/gsd-path-decide/SKILL.md +11 -4
- package/skills/gsd-path-decide/references/dispatch.md +13 -0
- package/skills/gsd-path-decide/references/operating-rules.md +214 -0
- package/skills/gsd-path-decide/scripts/_common.py +619 -18
- package/skills/gsd-path-decide/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-decide/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-decide/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-decide/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-decide/scripts/detect_project.py +587 -32
- package/skills/gsd-path-decide/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-decide/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-decide/scripts/integration.py +580 -25
- package/skills/gsd-path-decide/scripts/isolation.py +1438 -57
- package/skills/gsd-path-decide/scripts/loop_run.py +31 -29
- package/skills/gsd-path-decide/scripts/members.py +706 -0
- package/skills/gsd-path-decide/scripts/path_config.py +5 -5
- package/skills/gsd-path-decide/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-decide/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-decide/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-decide/scripts/review_panel.py +1 -1
- package/skills/gsd-path-decide/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-decide/scripts/state_promote.py +2 -0
- package/skills/gsd-path-decide/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-define/SKILL.md +36 -4
- package/skills/gsd-path-define/references/operating-rules.md +214 -0
- package/skills/gsd-path-define/references/spec-probes.md +150 -0
- package/skills/gsd-path-define/scripts/_common.py +619 -18
- package/skills/gsd-path-define/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-define/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-define/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-define/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-define/scripts/detect_project.py +587 -32
- package/skills/gsd-path-define/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-define/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-define/scripts/integration.py +580 -25
- package/skills/gsd-path-define/scripts/isolation.py +1438 -57
- package/skills/gsd-path-define/scripts/loop_run.py +31 -29
- package/skills/gsd-path-define/scripts/members.py +706 -0
- package/skills/gsd-path-define/scripts/path_config.py +5 -5
- package/skills/gsd-path-define/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-define/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-define/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-define/scripts/review_panel.py +1 -1
- package/skills/gsd-path-define/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-define/scripts/state_promote.py +2 -0
- package/skills/gsd-path-define/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-define/templates/intent.md +30 -0
- package/skills/gsd-path-define/templates/state.md +1 -1
- package/skills/gsd-path-discuss/SKILL.md +2 -1
- package/skills/gsd-path-discuss/references/operating-rules.md +214 -0
- package/skills/gsd-path-discuss/scripts/_common.py +619 -18
- package/skills/gsd-path-discuss/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-discuss/scripts/loop_run.py +31 -29
- package/skills/gsd-path-discuss/scripts/path_config.py +5 -5
- package/skills/gsd-path-discuss/scripts/review_panel.py +1 -1
- package/skills/gsd-path-discuss/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-docs-audit/SKILL.md +6 -4
- package/skills/gsd-path-docs-audit/references/dispatch.md +13 -0
- package/skills/gsd-path-docs-audit/references/docs-auditor.md +7 -1
- package/skills/gsd-path-docs-audit/references/operating-rules.md +214 -0
- package/skills/gsd-path-docs-audit/scripts/_common.py +619 -18
- package/skills/gsd-path-docs-audit/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-docs-audit/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-docs-audit/scripts/check_docs_audit.py +91 -7
- package/skills/gsd-path-docs-audit/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-docs-audit/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-docs-audit/scripts/detect_project.py +587 -32
- package/skills/gsd-path-docs-audit/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-docs-audit/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-docs-audit/scripts/integration.py +580 -25
- package/skills/gsd-path-docs-audit/scripts/isolation.py +1438 -57
- package/skills/gsd-path-docs-audit/scripts/loop_run.py +31 -29
- package/skills/gsd-path-docs-audit/scripts/members.py +706 -0
- package/skills/gsd-path-docs-audit/scripts/path_config.py +5 -5
- package/skills/gsd-path-docs-audit/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-docs-audit/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-docs-audit/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-docs-audit/scripts/review_panel.py +1 -1
- package/skills/gsd-path-docs-audit/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-docs-audit/scripts/state_promote.py +2 -0
- package/skills/gsd-path-docs-audit/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-docs-audit/templates/docs-audit.md +6 -2
- package/skills/gsd-path-forensics/SKILL.md +2 -1
- package/skills/gsd-path-forensics/references/operating-rules.md +214 -0
- package/skills/gsd-path-forensics/scripts/_common.py +619 -18
- package/skills/gsd-path-forensics/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-forensics/scripts/loop_run.py +31 -29
- package/skills/gsd-path-forensics/scripts/path_config.py +5 -5
- package/skills/gsd-path-forensics/scripts/pipeline_diagnose.py +82 -31
- package/skills/gsd-path-forensics/scripts/pipeline_undo.py +218 -30
- package/skills/gsd-path-forensics/scripts/review_panel.py +1 -1
- package/skills/gsd-path-forensics/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-inspect/SKILL.md +5 -4
- package/skills/gsd-path-inspect/references/codebase-mapper.md +2 -1
- package/skills/gsd-path-inspect/references/dispatch.md +13 -0
- package/skills/gsd-path-inspect/references/docs-auditor.md +7 -1
- package/skills/gsd-path-inspect/references/operating-rules.md +214 -0
- package/skills/gsd-path-inspect/scripts/_common.py +619 -18
- package/skills/gsd-path-inspect/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-inspect/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-inspect/scripts/check_docs_audit.py +91 -7
- package/skills/gsd-path-inspect/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-inspect/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-inspect/scripts/detect_project.py +587 -32
- package/skills/gsd-path-inspect/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-inspect/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-inspect/scripts/integration.py +580 -25
- package/skills/gsd-path-inspect/scripts/isolation.py +1438 -57
- package/skills/gsd-path-inspect/scripts/loop_run.py +31 -29
- package/skills/gsd-path-inspect/scripts/members.py +706 -0
- package/skills/gsd-path-inspect/scripts/path_config.py +5 -5
- package/skills/gsd-path-inspect/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-inspect/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-inspect/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-inspect/scripts/review_panel.py +1 -1
- package/skills/gsd-path-inspect/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-inspect/scripts/state_promote.py +2 -0
- package/skills/gsd-path-inspect/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-inspect/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-inspect/templates/codebase.md +1 -1
- package/skills/gsd-path-inspect/templates/docs-audit.md +6 -2
- package/skills/gsd-path-inspect/templates/state.md +1 -1
- package/skills/gsd-path-loop/SKILL.md +2 -1
- package/skills/gsd-path-loop/references/operating-rules.md +214 -0
- package/skills/gsd-path-loop/scripts/_common.py +619 -18
- package/skills/gsd-path-loop/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-loop/scripts/loop_run.py +31 -29
- package/skills/gsd-path-loop/scripts/path_config.py +5 -5
- package/skills/gsd-path-loop/scripts/review_panel.py +1 -1
- package/skills/gsd-path-loop/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-migrate/SKILL.md +2 -1
- package/skills/gsd-path-migrate/references/operating-rules.md +214 -0
- package/skills/gsd-path-migrate/scripts/_common.py +619 -18
- package/skills/gsd-path-migrate/scripts/core_hook_gate.py +10 -1
- package/skills/gsd-path-migrate/scripts/core_hook_settings.py +11 -4
- package/skills/gsd-path-migrate/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-migrate/scripts/loop_run.py +31 -29
- package/skills/gsd-path-migrate/scripts/migrate_core.py +2 -2
- package/skills/gsd-path-migrate/scripts/path_config.py +5 -5
- package/skills/gsd-path-migrate/scripts/review_panel.py +1 -1
- package/skills/gsd-path-plan/SKILL.md +18 -4
- package/skills/gsd-path-plan/references/dispatch.md +13 -0
- package/skills/gsd-path-plan/references/operating-rules.md +214 -0
- package/skills/gsd-path-plan/references/planner.md +22 -4
- package/skills/gsd-path-plan/references/spec-probes.md +150 -0
- package/skills/gsd-path-plan/scripts/_common.py +619 -18
- package/skills/gsd-path-plan/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-plan/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-plan/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-plan/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-plan/scripts/detect_project.py +587 -32
- package/skills/gsd-path-plan/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-plan/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-plan/scripts/integration.py +580 -25
- package/skills/gsd-path-plan/scripts/isolation.py +1438 -57
- package/skills/gsd-path-plan/scripts/loop_run.py +31 -29
- package/skills/gsd-path-plan/scripts/members.py +706 -0
- package/skills/gsd-path-plan/scripts/path_config.py +5 -5
- package/skills/gsd-path-plan/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-plan/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-plan/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-plan/scripts/review_panel.py +1 -1
- package/skills/gsd-path-plan/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-plan/scripts/state_promote.py +2 -0
- package/skills/gsd-path-plan/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-plan/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-plan/templates/patch-findings.md +3 -3
- package/skills/gsd-path-plan/templates/plan.md +17 -2
- package/skills/gsd-path-plan/templates/task.md +1 -0
- package/skills/gsd-path-research/SKILL.md +13 -1
- package/skills/gsd-path-research/references/dispatch.md +13 -0
- package/skills/gsd-path-research/references/operating-rules.md +214 -0
- package/skills/gsd-path-research/scripts/_common.py +619 -18
- package/skills/gsd-path-research/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-research/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-research/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-research/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-research/scripts/detect_project.py +587 -32
- package/skills/gsd-path-research/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-research/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-research/scripts/integration.py +580 -25
- package/skills/gsd-path-research/scripts/isolation.py +1438 -57
- package/skills/gsd-path-research/scripts/loop_run.py +31 -29
- package/skills/gsd-path-research/scripts/members.py +706 -0
- package/skills/gsd-path-research/scripts/path_config.py +5 -5
- package/skills/gsd-path-research/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-research/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-research/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-research/scripts/review_panel.py +1 -1
- package/skills/gsd-path-research/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-research/scripts/state_promote.py +2 -0
- package/skills/gsd-path-research/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-research/templates/research-handoff.md +14 -3
- package/skills/gsd-path-roadmap/SKILL.md +2 -1
- package/skills/gsd-path-roadmap/references/dispatch.md +13 -0
- package/skills/gsd-path-roadmap/references/operating-rules.md +214 -0
- package/skills/gsd-path-roadmap/scripts/_common.py +619 -18
- package/skills/gsd-path-roadmap/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-roadmap/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-roadmap/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-roadmap/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-roadmap/scripts/detect_project.py +587 -32
- package/skills/gsd-path-roadmap/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-roadmap/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-roadmap/scripts/integration.py +580 -25
- package/skills/gsd-path-roadmap/scripts/isolation.py +1438 -57
- package/skills/gsd-path-roadmap/scripts/loop_run.py +31 -29
- package/skills/gsd-path-roadmap/scripts/members.py +706 -0
- package/skills/gsd-path-roadmap/scripts/path_config.py +5 -5
- package/skills/gsd-path-roadmap/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-roadmap/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-roadmap/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-roadmap/scripts/review_panel.py +1 -1
- package/skills/gsd-path-roadmap/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-roadmap/scripts/state_promote.py +2 -0
- package/skills/gsd-path-roadmap/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-ship/SKILL.md +33 -11
- package/skills/gsd-path-ship/references/dispatch.md +13 -0
- package/skills/gsd-path-ship/references/operating-rules.md +214 -0
- package/skills/gsd-path-ship/references/reviewer-final.md +20 -2
- package/skills/gsd-path-ship/references/reviewer-wave.md +18 -5
- package/skills/gsd-path-ship/references/reviewer.md +3 -1
- package/skills/gsd-path-ship/references/spec-probes.md +150 -0
- package/skills/gsd-path-ship/scripts/_common.py +619 -18
- package/skills/gsd-path-ship/scripts/archive_milestone.py +160 -86
- package/skills/gsd-path-ship/scripts/build_recovery.py +100 -32
- package/skills/gsd-path-ship/scripts/build_state.py +143 -24
- package/skills/gsd-path-ship/scripts/check_handoffs.py +662 -50
- package/skills/gsd-path-ship/scripts/check_task_briefs.py +338 -30
- package/skills/gsd-path-ship/scripts/detect_project.py +587 -32
- package/skills/gsd-path-ship/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-ship/scripts/discussion_validate.py +152 -50
- package/skills/gsd-path-ship/scripts/integration.py +580 -25
- package/skills/gsd-path-ship/scripts/isolation.py +1438 -57
- package/skills/gsd-path-ship/scripts/lean_verification.py +99 -19
- package/skills/gsd-path-ship/scripts/loop_run.py +31 -29
- package/skills/gsd-path-ship/scripts/members.py +706 -0
- package/skills/gsd-path-ship/scripts/path_config.py +5 -5
- package/skills/gsd-path-ship/scripts/pipeline_git.py +124 -34
- package/skills/gsd-path-ship/scripts/pipeline_state.py +287 -87
- package/skills/gsd-path-ship/scripts/promote_lookahead.py +1 -1
- package/skills/gsd-path-ship/scripts/review_panel.py +1 -1
- package/skills/gsd-path-ship/scripts/state_checkpoint.py +135 -44
- package/skills/gsd-path-ship/scripts/state_promote.py +2 -0
- package/skills/gsd-path-ship/scripts/workflow_run.py +107 -30
- package/skills/gsd-path-ship/scripts/worktree_paths.py +72 -10
- package/skills/gsd-path-ship/templates/final-review.md +16 -4
- package/skills/gsd-path-ship/templates/gap-review.md +2 -1
- package/skills/gsd-path-ship/templates/patch-findings.md +3 -3
- package/skills/gsd-path-ship/templates/wave-review.md +16 -4
- package/skills/gsd-path-undo/SKILL.md +2 -1
- package/skills/gsd-path-undo/references/operating-rules.md +214 -0
- package/skills/gsd-path-undo/scripts/_common.py +619 -18
- package/skills/gsd-path-undo/scripts/discussion_records.py +19 -13
- package/skills/gsd-path-undo/scripts/loop_run.py +31 -29
- package/skills/gsd-path-undo/scripts/path_config.py +5 -5
- package/skills/gsd-path-undo/scripts/pipeline_undo.py +218 -30
- package/skills/gsd-path-undo/scripts/review_panel.py +1 -1
- package/skills/gsd-path-undo/scripts/worktree_paths.py +72 -10
- package/skills/path/BUILD.md +7 -1
- package/skills/path/DECIDE.md +11 -4
- package/skills/path/DEFINE.md +36 -4
- package/skills/path/DOCS-AUDIT.md +6 -4
- package/skills/path/INSPECT.md +5 -4
- package/skills/path/PLAN.md +18 -4
- package/skills/path/RESEARCH.md +13 -1
- package/skills/path/ROADMAP.md +2 -1
- package/skills/path/SHIP.md +33 -11
- package/skills/path/SKILL.md +45 -1
- package/skills/path/references/build-native.md +63 -15
- package/skills/path/references/codebase-mapper.md +2 -1
- package/skills/path/references/dispatch.md +13 -0
- package/skills/path/references/docs-auditor.md +7 -1
- package/skills/path/references/operating-rules.md +214 -0
- package/skills/path/references/planner.md +22 -4
- package/skills/path/references/reviewer-final.md +20 -2
- package/skills/path/references/reviewer-wave.md +18 -5
- package/skills/path/references/reviewer.md +3 -1
- package/skills/path/references/spec-probes.md +150 -0
- package/skills/path/scripts/_common.py +619 -18
- package/skills/path/scripts/archive_milestone.py +160 -86
- package/skills/path/scripts/bootstrap_repository.py +8 -5
- package/skills/path/scripts/build_recovery.py +100 -32
- package/skills/path/scripts/build_state.py +143 -24
- package/skills/path/scripts/check_docs_audit.py +91 -7
- package/skills/path/scripts/check_handoffs.py +662 -50
- package/skills/path/scripts/check_task_briefs.py +338 -30
- package/skills/path/scripts/check_update.py +2 -2
- package/skills/path/scripts/detect_project.py +587 -32
- package/skills/path/scripts/discussion_records.py +19 -13
- package/skills/path/scripts/discussion_validate.py +152 -50
- package/skills/path/scripts/dispatch_driver.py +501 -46
- package/skills/path/scripts/git_guard.py +118 -31
- package/skills/path/scripts/integration.py +580 -25
- package/skills/path/scripts/isolation.py +1438 -57
- package/skills/path/scripts/lean_verification.py +99 -19
- package/skills/path/scripts/loop_run.py +31 -29
- package/skills/path/scripts/members.py +706 -0
- package/skills/path/scripts/path_config.py +5 -5
- package/skills/path/scripts/pipeline_git.py +124 -34
- package/skills/path/scripts/pipeline_state.py +287 -87
- package/skills/path/scripts/promote_lookahead.py +1 -1
- package/skills/path/scripts/review_panel.py +1 -1
- package/skills/path/scripts/state_checkpoint.py +135 -44
- package/skills/path/scripts/state_promote.py +2 -0
- package/skills/path/scripts/status_runtime.py +58 -10
- package/skills/path/scripts/task_context.py +12 -3
- package/skills/path/scripts/token_budget.py +12 -8
- package/skills/path/scripts/workflow_run.py +107 -30
- package/skills/path/scripts/worktree_paths.py +72 -10
- package/skills/path/templates/codebase.md +1 -1
- package/skills/path/templates/docs-audit.md +6 -2
- package/skills/path/templates/final-review.md +16 -4
- package/skills/path/templates/gap-review.md +2 -1
- package/skills/path/templates/intent.md +30 -0
- package/skills/path/templates/patch-findings.md +3 -3
- package/skills/path/templates/plan.md +17 -2
- package/skills/path/templates/research-handoff.md +14 -3
- package/skills/path/templates/state.md +1 -1
- package/skills/path/templates/task.md +1 -0
- package/skills/path/templates/wave-review.md +16 -4
- package/skills/gsd-path/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-build/scripts/__pycache__/check_handoffs.cpython-312.pyc +0 -0
- package/skills/gsd-path-inspect/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-plan/scripts/__pycache__/_common.cpython-312.pyc +0 -0
- package/skills/gsd-path-ship/scripts/__pycache__/_common.cpython-312.pyc +0 -0
package/HOOKS.md
CHANGED
|
@@ -42,7 +42,8 @@ node scripts/install.mjs --claude --project /path/to/repo --hooks
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
For a project that already has `AGENTS.md` and `WORKFLOW.md`, initialize only
|
|
45
|
-
the guards and keep those contracts unchanged
|
|
45
|
+
the guards and keep those contracts unchanged (use `--update --project` to
|
|
46
|
+
refresh the `AGENTS.md` block):
|
|
46
47
|
|
|
47
48
|
```bash
|
|
48
49
|
npx @opengsd/gsd-path --hooks-init --claude --project /path/to/repo
|
|
@@ -86,11 +87,13 @@ manual activation is complete, Codex's guaranteed manifest tier is `git-only`;
|
|
|
86
87
|
changing the hook requires review again.
|
|
87
88
|
|
|
88
89
|
**Windows / interpreter caveat:** hooks and native host settings invoke a
|
|
89
|
-
Python interpreter that the installer probes at install time
|
|
90
|
-
then `python` (plain `python3` usually does not
|
|
91
|
-
runs, hook installation stops before writing
|
|
92
|
-
interpreter. The `sh` hook scripts themselves need
|
|
93
|
-
Windows provides
|
|
90
|
+
Python interpreter that the installer probes at install time: `python3` first,
|
|
91
|
+
then `python`, then the `py -3` launcher (plain `python3` usually does not
|
|
92
|
+
exist on Windows). If none runs, hook installation stops before writing
|
|
93
|
+
instead of pinning a missing interpreter. The `sh` hook scripts themselves need
|
|
94
|
+
a POSIX shell, which Git for Windows provides. Claude Code runs Windows hook
|
|
95
|
+
commands in Git Bash, so wrapped Core hooks are bash-quoted and their original
|
|
96
|
+
command runs through Git Bash, not cmd.exe.
|
|
94
97
|
|
|
95
98
|
### Updating after package upgrade
|
|
96
99
|
|
|
@@ -130,7 +133,8 @@ See [UPDATE.md](UPDATE.md).
|
|
|
130
133
|
`git checkout -- .`/`git restore .`
|
|
131
134
|
- shell writes (redirections, `tee`, `cp`, `mv`, `rm`, `sed -i`, ...) that
|
|
132
135
|
target a routing control (`.git`, `.project/STATE.md`, `.project/next`,
|
|
133
|
-
`.gsd-path`) while `.project/STATE.md` exists
|
|
136
|
+
`.gsd-path`) while `.project/STATE.md` exists, or target a product file
|
|
137
|
+
outside the routed build phase (same rule as direct file-edit tools)
|
|
134
138
|
- repeated assignments to the same shell variable within one command; split
|
|
135
139
|
these into separate tool calls so write targets can be resolved
|
|
136
140
|
- copies whose destinations, including nested recursive-copy entries, resolve
|
|
@@ -142,7 +146,8 @@ See [UPDATE.md](UPDATE.md).
|
|
|
142
146
|
source trees containing directory symlinks are denied; use literal directory
|
|
143
147
|
paths and copy directory links separately
|
|
144
148
|
- shell commands that reference the archive unless the whole command is a
|
|
145
|
-
recognized standalone read
|
|
149
|
+
recognized standalone read, a pipeline in which each segment is a recognized
|
|
150
|
+
read, or a single-command invocation of the bundled
|
|
146
151
|
`pipeline_state.py` / `archive_milestone.py` helper, resolved to a regular file
|
|
147
152
|
inside the verified runtime selected by `.gsd-path/runtime.json` (legacy projects use `.gsd-path/runtime/` beside `guard_hook.py`
|
|
148
153
|
in the repository layout), using exactly `python` or `python3` with optional
|
|
@@ -158,11 +163,93 @@ See [UPDATE.md](UPDATE.md).
|
|
|
158
163
|
- deletion or move commands outside a single simple segment, including command
|
|
159
164
|
chains, pipes, newlines, grouping, directory changes, and command substitution
|
|
160
165
|
- deletion or move commands with any argument outside the literal-path character
|
|
161
|
-
set: ASCII letters, digits, `.`, `_`, `-`, and
|
|
162
|
-
backslashes on Windows). One matching
|
|
163
|
-
|
|
164
|
-
quoted. This also applies to
|
|
166
|
+
set: ASCII letters, digits, `.`, `_`, `-`, `/`, and ASCII spaces inside one
|
|
167
|
+
shell unit (plus a drive prefix and backslashes on Windows). One matching
|
|
168
|
+
pair of surrounding quotes is allowed; parameters, wildcards, braces, and
|
|
169
|
+
tilde paths are denied even when quoted. This also applies to
|
|
170
|
+
`find -delete` and supported destructive aliases
|
|
165
171
|
- destructive Git commands nested in supported shell and command wrappers
|
|
172
|
+
- Git arguments that contain a shell parameter. Only plain `$name` and
|
|
173
|
+
`${name}` expansions pass, and only inside plain double-quoted spans of
|
|
174
|
+
read-only subcommands (`status`, `log`, `diff`, `show`, and the other
|
|
175
|
+
inspection commands) that the guard parses directly, such as
|
|
176
|
+
`git log --format="$t %H"` or `git show "HEAD:$f"`, because only double
|
|
177
|
+
quoting prevents word-splitting into options. A parameter outside double
|
|
178
|
+
quotes (`$x`, `HEAD:$f`, `--format=$x`, `"a b"$x`) is denied because its
|
|
179
|
+
expansion can split into a write option such as `--output`. Every other
|
|
180
|
+
parameter form (`${=x}`, `${(z)x}`, `${x:-y}`, `$x[@]`, `$1`, `$@`, `$*`,
|
|
181
|
+
`$#`, and the unbraced zsh flags `$=x`, `$~x`, `$^x`, `$+x`) is denied even
|
|
182
|
+
inside double quotes, because it can expand to more than one word; a
|
|
183
|
+
backslash-escaped marker (`"\$t"`) is likewise denied, because the shell
|
|
184
|
+
executes the literal text while the argument still shows the bare marker.
|
|
185
|
+
The same four zsh flags are denied in a `git -C` directory. A literal `$`
|
|
186
|
+
that starts no expansion (a regex anchor such as `--grep='fix$'`) passes.
|
|
187
|
+
A `-c`/`--config` key whose value git executes as a program —
|
|
188
|
+
`core.fsmonitor`, editors and pagers, `core.sshCommand`,
|
|
189
|
+
`core.askPass`, `filter.*` clean/smudge/process, `diff.*`
|
|
190
|
+
textconv/external/command, `merge.*` drivers, `core.gitProxy`,
|
|
191
|
+
`interactive.diffFilter`,
|
|
192
|
+
`remote.*` uploadpack/receivepack, `gpg.program` and `gpg.*.program`, `credential.helper` and
|
|
193
|
+
`credential.*.helper`, each `pager.<cmd>` key — is denied with a literal
|
|
194
|
+
value as with a parameter, because git runs it during an otherwise
|
|
195
|
+
read-only subcommand. A disabling form of such a key passes: the bare key,
|
|
196
|
+
an empty value, or `false`. A `--config-env` form is always denied, because
|
|
197
|
+
its value comes from the environment. A key through which git loads code —
|
|
198
|
+
`core.hooksPath`, `include.path`, `includeIf.*.path`, `url.*.insteadOf`,
|
|
199
|
+
`url.*.pushInsteadOf` — is denied with each value. `git config` is denied
|
|
200
|
+
when it sets one of these keys; to read or unset the key stays allowed.
|
|
201
|
+
A redirection at the end of a read (`git config <key> 2>/dev/null`) is not
|
|
202
|
+
a value. A separate digit before a redirection (`5 >/dev/null`), a word of two
|
|
203
|
+
or more digits (`12>/dev/null`) and a quoted operator are values, so they
|
|
204
|
+
make a set.
|
|
205
|
+
Each `git config` argument must be a plain literal word, bare or in one
|
|
206
|
+
pair of quotes: a backslash, mixed quotes, an unquoted glob (`*`, `?`, `[`),
|
|
207
|
+
an unquoted brace list or range (`{a,b}`, `{1..3}`) or a line continuation
|
|
208
|
+
in the word or one that joins it to the next word is denied, because the shell can make a different
|
|
209
|
+
argument list from it.
|
|
210
|
+
An unquoted word that starts with `#` among the `git config` arguments
|
|
211
|
+
is denied, because the shell reads it and the words after it as a comment.
|
|
212
|
+
The git subcommand word must be a plain literal word in each git command:
|
|
213
|
+
`git {config,...}` and a subcommand split by a line continuation are denied.
|
|
214
|
+
A program that runs the command in its arguments (`nice`, `nohup`,
|
|
215
|
+
`timeout`, `sudo`, `watch`, `time`, `env`, `stdbuf`, `setsid`) is
|
|
216
|
+
unwrapped: the guard skips the options of the program and checks the
|
|
217
|
+
command that it runs, so `nice git -c core.fsmonitor=/abs/h.sh status` is
|
|
218
|
+
denied by the git rule and `sudo apt install git` passes. A runner
|
|
219
|
+
option that writes, edits or enters a file or directory by itself is
|
|
220
|
+
denied (`time -o`, `sudo -e`, `sudo -D`, `sudo -R`, `watch -s`). The
|
|
221
|
+
`timeout` duration and the `watch` interval must be literal numbers, and
|
|
222
|
+
each runner option word must be a literal word; only a separate option
|
|
223
|
+
value can be a parameter in double quotes (`sudo -u "$USER" ls`). A short
|
|
224
|
+
option word is read as getopt reads it, so the attached value in
|
|
225
|
+
`sudo -upostgres psql` is not taken as more options. With an archive working directory a command runner is not
|
|
226
|
+
unwrapped and is denied as an unknown program. Other command
|
|
227
|
+
runners (`doas`, `ionice`, `noglob`) are not unwrapped, and `watch` with
|
|
228
|
+
the command in one quoted word is not checked.
|
|
229
|
+
Each git global option word, and the value word of `-c`, `-C`,
|
|
230
|
+
`--git-dir`, `--work-tree`, `--namespace` and `--config-env`, must resolve
|
|
231
|
+
to one word: a backslash, an unquoted glob or an unquoted brace list or
|
|
232
|
+
range in it is denied (`git -c {core.fsmonitor=/abs/h.sh,status}`,
|
|
233
|
+
`git -{p,c} core.fsmonitor=/abs/h.sh status`). A parameter in such a value
|
|
234
|
+
is denied also when no subcommand follows (`git -c $x`). Plain quoted parts
|
|
235
|
+
pass (`git -c user.name='A B' log`).
|
|
236
|
+
`git config` section renames and removals (`--rename-section`,
|
|
237
|
+
`--remove-section`) and `--edit` are denied, because a rename can move a
|
|
238
|
+
key into an executed section and `--edit` starts an editor.
|
|
239
|
+
Command substitution output, a parameter that starts an
|
|
240
|
+
argument, and a parameter in the value of an option that git writes to or
|
|
241
|
+
runs as a command (`--output`, `--upload-pack`, `--receive-pack`, `--exec`,
|
|
242
|
+
`-c`, `--config-env`, or a `<transport>::<address>` remote) are denied in
|
|
243
|
+
every form. These option names match by prefix (`--upload-pa`, `--exe`),
|
|
244
|
+
because git accepts abbreviated long options; in archive context the same
|
|
245
|
+
prefix match applies to `--output`, `--ext-diff`, and `--textconv`. The
|
|
246
|
+
exact read-only option `--text` is not an abbreviation and stays allowed. Any
|
|
247
|
+
other quoting construct in the command (`$'...'`, `$"..."`, quotes inside `${...}`, quotes or
|
|
248
|
+
backslashes in a comment, here-documents and here-strings) disables the
|
|
249
|
+
exception, so every parameter in a git argument of that command is denied.
|
|
250
|
+
The exception applies only to commands the guard parses directly, never
|
|
251
|
+
inside wrapped shell strings (`eval`, `bash -c`, `sh -c`, PowerShell or
|
|
252
|
+
`cmd` command strings), where the outer shell expands the parameter first
|
|
166
253
|
- archive glob/brace expansions and execution-capable read options such as
|
|
167
254
|
`rg --pre`
|
|
168
255
|
- direct write, edit, and patch tool calls targeting `.project/STATE.md`,
|
|
@@ -262,9 +349,12 @@ writes nor verifies that wiring. To add it yourself, register
|
|
|
262
349
|
| Antigravity | `.agents/hooks.json` `PreToolUse` | [Antigravity hooks](https://antigravity.google/docs/hooks) |
|
|
263
350
|
| OpenCode | JS plugin `tool.execute.before` | [OpenCode plugins](https://opencode.ai/docs/plugins/) |
|
|
264
351
|
| Zed | no hook API — git hooks only | — |
|
|
352
|
+
| Muse Code | no GSD Path hook integration — git hooks only | — |
|
|
265
353
|
|
|
266
|
-
**Caveats:** The hook cannot prove which skill initiated a
|
|
267
|
-
build
|
|
354
|
+
**Caveats:** The hook cannot prove which skill initiated a build-phase edit
|
|
355
|
+
when the routed build phase is already active. Shell product writes use the
|
|
356
|
+
same phase gate as file-edit tools; AGENTS.md still owns plain-prompt re-entry
|
|
357
|
+
when no `.project/STATE.md` exists. Grok and Kimi
|
|
268
358
|
fail-open on hook errors by design. Copilot, Kimi, Kiro, and Antigravity may
|
|
269
359
|
not intercept subagent tools — treat coverage as orchestrator-level.
|
|
270
360
|
|
package/QUICK.md
CHANGED
|
@@ -14,7 +14,7 @@ One router skill drives a gated pipeline: inspect → define → research → de
|
|
|
14
14
|
plan → build → ship. Every handoff lives in `.project/` so any session can resume from disk.
|
|
15
15
|
|
|
16
16
|
**Hosts:** Codex, Claude Code, Grok, OpenCode, Copilot CLI, Qwen, Antigravity,
|
|
17
|
-
Cursor, Zed, Kiro, Kimi Code.
|
|
17
|
+
Cursor, Zed, Kiro, Kimi Code, Muse Code.
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
@@ -22,7 +22,7 @@ Cursor, Zed, Kiro, Kimi Code.
|
|
|
22
22
|
|
|
23
23
|
```text
|
|
24
24
|
[ ] 1. Install skills (step 1)
|
|
25
|
-
[ ] 2. Install project rules in your repo (step 2) —
|
|
25
|
+
[ ] 2. Install project rules in your repo (step 2) — an existing AGENTS.md keeps its text
|
|
26
26
|
[ ] 3. Restart agent session
|
|
27
27
|
[ ] 4. Open repo in agent; invoke router (step 3)
|
|
28
28
|
[ ] 5. Approve gates as they appear (step 4)
|
|
@@ -105,6 +105,9 @@ Codex invokes it as `$gsd-path-discuss`.
|
|
|
105
105
|
| Build | Escalations only |
|
|
106
106
|
| Ship | Approve patch waves if blocked; approve archive and ship when green |
|
|
107
107
|
|
|
108
|
+
For unattended quick-lane runs, see
|
|
109
|
+
[pre-approval in the README](README.md#start-your-first-project).
|
|
110
|
+
|
|
108
111
|
---
|
|
109
112
|
|
|
110
113
|
## 5. Resume
|
package/README.md
CHANGED
|
@@ -10,20 +10,20 @@ parallel under `.project/next/` (lookahead); a building milestone can also be
|
|
|
10
10
|
abandoned on an explicit ruling, archiving its partial work for a re-slice.
|
|
11
11
|
|
|
12
12
|
**Supported hosts:** Codex, Claude Code, Grok, OpenCode, GitHub Copilot CLI,
|
|
13
|
-
Qwen Code, Antigravity CLI, Cursor, Zed, Kiro, and
|
|
13
|
+
Qwen Code, Antigravity CLI, Cursor, Zed, Kiro, Kimi Code, and Muse Code.
|
|
14
14
|
Support means the installer and dispatch contract exist. See the
|
|
15
15
|
[host trust matrix](https://github.com/open-gsd/gsd-path/blob/main/docs/trust-validation/HOST-MATRIX.md) for live milestone
|
|
16
16
|
proof and each host's guard tier.
|
|
17
17
|
|
|
18
18
|
<!-- release-docs -->
|
|
19
|
-
**Latest npm release:** [@opengsd/gsd-path@1.
|
|
19
|
+
**Latest npm release:** [@opengsd/gsd-path@1.5.0](https://www.npmjs.com/package/@opengsd/gsd-path/v/1.5.0) — [release notes](CHANGELOG.md#150---2026-10-09)
|
|
20
20
|
|
|
21
21
|
**Recent highlights**
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
22
|
+
- record runtime hotfix provenance on the declaration
|
|
23
|
+
- add signed self-update
|
|
24
|
+
- add the Skills, Stats, Settings, and Environment pages and the setup wizard
|
|
25
|
+
- register the hosts, project operation, and env routes
|
|
26
|
+
- add project setup operations for the app
|
|
27
27
|
|
|
28
28
|
<!-- /release-docs -->
|
|
29
29
|
|
|
@@ -40,43 +40,52 @@ proof and each host's guard tier.
|
|
|
40
40
|
| [WORKFLOW.md](WORKFLOW.md) | Phase-by-phase agent SOP |
|
|
41
41
|
| [HOOKS.md](HOOKS.md) | Optional archive/git guard hooks |
|
|
42
42
|
| [Jev screening](skills/gsd-path/references/jev-review.md) | Optional evidence screening; disabled by default, no SDK required |
|
|
43
|
-
| [daemon/README.md](daemon/README.md) |
|
|
44
|
-
| [
|
|
43
|
+
| [daemon/app/README.md](daemon/app/README.md) | Desktop app: develop, release, and updates |
|
|
44
|
+
| [daemon/README.md](daemon/README.md) | Monitor daemon: routes, configuration, and manual setup |
|
|
45
|
+
| [CHANGELOG.md](CHANGELOG.md) | npm package release notes |
|
|
46
|
+
| [daemon/app/CHANGELOG.md](daemon/app/CHANGELOG.md) | Desktop app release notes |
|
|
45
47
|
| [RELEASE.md](RELEASE.md) | Maintainer CI and npm release cycle |
|
|
46
48
|
| [GUIDE.md](GUIDE.md) | Pointer to the guides above |
|
|
47
49
|
|
|
48
|
-
## What's new —
|
|
50
|
+
## What's new — October 2, 2026
|
|
49
51
|
|
|
50
52
|
These changes are merged into the source checkout; npm installs use the latest
|
|
51
53
|
published release.
|
|
52
54
|
|
|
53
|
-
- **
|
|
54
|
-
|
|
55
|
-
[
|
|
56
|
-
- **
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- **Clearer project updates:** the dashboard shows project runtime versions and
|
|
67
|
-
update results. After verified integration, ordinary branches can resume
|
|
68
|
-
product work while archived milestones remain protected. See
|
|
69
|
-
[update guidance](UPDATE.md#update-the-project-runtime-and-guard-hooks).
|
|
70
|
-
- **Optional Jev screening:** reviewers can request advisory checks of selected
|
|
71
|
-
criteria and evidence. It is disabled by default and never replaces recorded
|
|
72
|
-
verification or review gates. See
|
|
73
|
-
[Jev screening](skills/gsd-path/references/jev-review.md).
|
|
55
|
+
- **Desktop app (pre-release):** one app for macOS, Windows, and Linux shows
|
|
56
|
+
your projects, manages skills in each coding agent, and updates itself. See
|
|
57
|
+
[Desktop app](#desktop-app).
|
|
58
|
+
- **Skills from the published release:** the monitor installs skills from the
|
|
59
|
+
npm release, checks the download against the registry's sha512, and refuses
|
|
60
|
+
one that does not match. A release picker lets you stay on an older version.
|
|
61
|
+
- **Safer monitor writes:** a monitor started by the app accepts changes only
|
|
62
|
+
with the app's local token, so another web page cannot change your setup.
|
|
63
|
+
- **Environment editor:** edit a project's `.env` files with values masked and
|
|
64
|
+
a diff before each save.
|
|
65
|
+
- **Usage charts:** tokens and cost per day, time per phase, tasks per wave,
|
|
66
|
+
and verify history. Missing data shows as missing, never as zero.
|
|
67
|
+
- **Muse Code** is a supported host.
|
|
74
68
|
|
|
75
69
|
## Install from npm
|
|
76
70
|
|
|
77
71
|
Requires **Node.js 18.17+** for the npm installer and **Python 3.9+** for
|
|
78
72
|
project contracts and pipeline helpers. Install and sign in to a supported
|
|
79
73
|
coding-agent host separately; GSD Path installs its skills, not the host itself.
|
|
74
|
+
|
|
75
|
+
**Windows** runs natively; WSL is not required. Install
|
|
76
|
+
[Git for Windows](https://git-scm.com/download/win): git hooks and task Verify
|
|
77
|
+
commands run in its Git Bash, never the System32 WSL launcher (`GSD_PATH_BASH`
|
|
78
|
+
overrides the path). Install a real Python from python.org or
|
|
79
|
+
`winget install Python.Python.3.12`; the Microsoft Store `python` alias stub
|
|
80
|
+
does not count. The installer accepts `python3`, `python`, or the `py -3`
|
|
81
|
+
launcher. For deep managed-worktree paths, turn on long paths
|
|
82
|
+
(`git config --global core.longpaths true` and Windows' `LongPathsEnabled`);
|
|
83
|
+
`--doctor` warns about both. Git for Windows defaults to
|
|
84
|
+
`core.autocrlf=true`, so project installs add a managed
|
|
85
|
+
`/.project/** text eol=lf` rule to the repository's local `.git/info/attributes`
|
|
86
|
+
(never committed; delete the `# gsd-path:begin` block to remove it). That keeps
|
|
87
|
+
pipeline state LF in every worktree while product files follow your setting.
|
|
88
|
+
|
|
80
89
|
The public npm package is **[@opengsd/gsd-path](https://www.npmjs.com/package/@opengsd/gsd-path)**.
|
|
81
90
|
|
|
82
91
|
```bash
|
|
@@ -98,7 +107,9 @@ npx @opengsd/gsd-path@latest --update --project /path/to/your-repo
|
|
|
98
107
|
Use host flags such as `--claude --codex` instead of `--all` to select hosts.
|
|
99
108
|
For project-local skills, run from your project directory and add `--local`
|
|
100
109
|
to install and update commands. `--project PATH` selects where contracts are
|
|
101
|
-
written; it does not change the directory used by `--local`.
|
|
110
|
+
written; it does not change the directory used by `--local`. If the repo
|
|
111
|
+
already has an `AGENTS.md`, the install adds a marked GSD Path block and keeps
|
|
112
|
+
your text; see [project contracts](UPDATE.md#update-project-contracts). Run
|
|
102
113
|
`npx @opengsd/gsd-path@latest --help` for all options. After installing, invoke
|
|
103
114
|
`$path` in Codex or `/path` on slash-command hosts to start the pipeline.
|
|
104
115
|
See [Install (summary)](#install-summary) for the host list and source-checkout commands.
|
|
@@ -116,6 +127,12 @@ contain newer changes.
|
|
|
116
127
|
4. Resume later from the same folder with the router. Use `$path status`
|
|
117
128
|
(Codex) or `/path status` to inspect progress without advancing.
|
|
118
129
|
|
|
130
|
+
For an unattended quick-lane run, invoke `$gsd-path --pre-approve intent,plan`
|
|
131
|
+
in Codex or `/gsd-path --pre-approve intent,plan` on slash-command hosts before
|
|
132
|
+
milestone intent approval. This grants those two gates for one milestone when
|
|
133
|
+
their checks pass. Required answers, failed checks, and other approval gates
|
|
134
|
+
still pause for you. Shipping always needs manual approval.
|
|
135
|
+
|
|
119
136
|
For a missing skill or an install problem, run:
|
|
120
137
|
|
|
121
138
|
```bash
|
|
@@ -134,65 +151,52 @@ project settings. Dashboard users can open **Settings → Path settings** for th
|
|
|
134
151
|
same shipping, model/effort, and future review-panel controls. See
|
|
135
152
|
[Path settings](skills/gsd-path/references/config.md) for precedence and locks.
|
|
136
153
|
|
|
137
|
-
##
|
|
138
|
-
|
|
139
|
-
The
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
it also provides rescan, appearance, and quit controls. The daemon row shows
|
|
184
|
-
its running state and provides restart and stop controls. Option-click the
|
|
185
|
-
menu-bar icon to open the dashboard directly.
|
|
186
|
-
|
|
187
|
-
<img src="docs/images/macos-menu-bar.png" alt="OpenGSD Path native macOS panel with sample projects and its bottom toolbar" width="400">
|
|
188
|
-
|
|
189
|
-
*Screenshots show the current UI with sample project data. The native panel is
|
|
190
|
-
captured in its preview window.*
|
|
191
|
-
|
|
192
|
-
### Install the monitor
|
|
193
|
-
|
|
194
|
-
The monitor requires Python 3.9+. From a source checkout, preview the setup,
|
|
195
|
-
then install (macOS/Linux shell):
|
|
154
|
+
## Desktop app
|
|
155
|
+
|
|
156
|
+
The **OpenGSD Path app** shows your projects without opening each project's
|
|
157
|
+
`.project/` files, and manages the Path setup on your computer. It is a
|
|
158
|
+
pre-release for testers.
|
|
159
|
+
|
|
160
|
+
**Get it:** download the installer for your system from the newest `app-v`
|
|
161
|
+
entry on the [releases page](https://github.com/open-gsd/gsd-path/releases):
|
|
162
|
+
`.dmg` (macOS, Apple Silicon or Intel), `.msi` (Windows), `.deb` or AppImage
|
|
163
|
+
(Linux). The app needs Python 3.9+ and Git; its first screen checks for both
|
|
164
|
+
and shows the fix when one is missing.
|
|
165
|
+
|
|
166
|
+
macOS builds are signed with a Developer ID and notarized by Apple from 0.1.1
|
|
167
|
+
on, so they open without an approval in Privacy & Security. Windows builds have
|
|
168
|
+
no code signature yet: SmartScreen shows a warning; choose **More info → Run
|
|
169
|
+
anyway**.
|
|
170
|
+
|
|
171
|
+
What the app does:
|
|
172
|
+
|
|
173
|
+
- **Projects:** blocked, active, and shipped work with milestone and phase
|
|
174
|
+
progress, tasks, last activity, and usage. A project page shows its
|
|
175
|
+
roadmap, tasks, success criteria, reviews, verification history, files at
|
|
176
|
+
any Git version, and full recorded evidence.
|
|
177
|
+
- **Skills:** which coding agents have Path skills, at which version, with
|
|
178
|
+
preview, install, update, and uninstall. Every write shows a preview or a
|
|
179
|
+
plan first.
|
|
180
|
+
- **Project setup:** runtime version, guard hooks, health check, and, for a
|
|
181
|
+
multi-repo coordinator, member hooks and marker repair.
|
|
182
|
+
- **Settings:** updates, Path settings (shipping mode, models, review panel),
|
|
183
|
+
watched folders, model prices, launch at login, and appearance.
|
|
184
|
+
- **Stats** and the per-project **Environment** editor.
|
|
185
|
+
- **Tray:** a compact project list, items that need attention, and controls
|
|
186
|
+
to start, restart, and quit.
|
|
187
|
+
|
|
188
|
+
The app only watches and sets up. It never advances a phase; approvals and
|
|
189
|
+
rulings stay in your agent. It updates itself: it checks a signed update file,
|
|
190
|
+
asks before it installs, and refuses an update whose signature does not match.
|
|
191
|
+
|
|
192
|
+
Background monitoring is read-only. The app starts a local monitor (the
|
|
193
|
+
daemon) and stops it on quit. See the [app guide](daemon/app/README.md) and the
|
|
194
|
+
[daemon guide](daemon/README.md).
|
|
195
|
+
|
|
196
|
+
### Manual monitor (without the app)
|
|
197
|
+
|
|
198
|
+
From a source checkout you can still run the monitor and its browser
|
|
199
|
+
dashboard without the app. It requires Python 3.9+:
|
|
196
200
|
|
|
197
201
|
```bash
|
|
198
202
|
git clone https://github.com/open-gsd/gsd-path.git
|
|
@@ -201,33 +205,20 @@ PYTHONPATH=daemon python3 -m gsd_daemon install --dry-run
|
|
|
201
205
|
PYTHONPATH=daemon python3 -m gsd_daemon install
|
|
202
206
|
```
|
|
203
207
|
|
|
204
|
-
On Windows,
|
|
208
|
+
On Windows, use PowerShell in the `gsd-path` folder. The last command starts
|
|
209
|
+
the monitor for this session; it starts by itself at later logins:
|
|
205
210
|
|
|
206
211
|
```powershell
|
|
207
212
|
$env:PYTHONPATH = "daemon"
|
|
208
213
|
python -m gsd_daemon install --dry-run
|
|
209
214
|
python -m gsd_daemon install
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
On Windows, launch the installed shortcut for this session before opening the
|
|
213
|
-
dashboard. It starts automatically at future logins:
|
|
214
|
-
|
|
215
|
-
```powershell
|
|
216
215
|
Start-Process "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\gsd-path-daemon.lnk"
|
|
217
216
|
```
|
|
218
217
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
macOS, use `--no-tray` for the dashboard only. Linux autostart runs the
|
|
224
|
-
dashboard; launch the optional tray separately with
|
|
225
|
-
`~/.gsd-path/venv/bin/gsd-path-daemon tray`. Windows uses a tray-and-dashboard
|
|
226
|
-
Startup shortcut; see the [daemon guide](daemon/README.md) for platform details.
|
|
227
|
-
|
|
228
|
-
See the [daemon guide](daemon/README.md) for configuration, usage pricing,
|
|
229
|
-
manual startup, and platform setup, or the [macOS guide](daemon/macos/README.md)
|
|
230
|
-
for native menu-bar details.
|
|
218
|
+
Then open **http://127.0.0.1:8765**. The first launch of the desktop app
|
|
219
|
+
removes this older autostart entry so only one monitor runs. See the
|
|
220
|
+
[daemon guide](daemon/README.md) for platform details, configuration, and
|
|
221
|
+
usage pricing.
|
|
231
222
|
|
|
232
223
|
## Skills
|
|
233
224
|
|
|
@@ -362,6 +353,35 @@ default checkout, `gsd-path/M001` branch, and sibling linked worktree. A
|
|
|
362
353
|
journaled helper performs the approved creation and safely resumes a matching
|
|
363
354
|
partial remote/clone/worktree transaction; the default checkout stays clean.
|
|
364
355
|
|
|
356
|
+
## Multi-repo milestones
|
|
357
|
+
|
|
358
|
+
One project can change several repositories in the same milestone. The
|
|
359
|
+
**coordinator** repo holds `.project/` and runs the pipeline; each other repo
|
|
360
|
+
is a **member** listed in `.project/MEMBERS.md`. A member needs a GitHub.com
|
|
361
|
+
`origin` whose default is `main`. See
|
|
362
|
+
[ADR 0002](docs/adr/0002-multi-repo-coordinator.md) for the design.
|
|
363
|
+
|
|
364
|
+
- Add members at a milestone boundary: ask the router to add an existing repo
|
|
365
|
+
(`members.py add`) or to create a new one (`members.py add --create`, after
|
|
366
|
+
you approve the exact owner, name, visibility, and checkout). For optional
|
|
367
|
+
guard hooks, install them in the member with
|
|
368
|
+
`npx @opengsd/gsd-path@latest --member-of <coordinator> --project <member>`.
|
|
369
|
+
- The planner gives each member task `repo: <member>`; one task changes one
|
|
370
|
+
repo. Project Verify runs from the coordinator and reaches a member as
|
|
371
|
+
`../<member>`.
|
|
372
|
+
- Build works in Path-owned member branches `gsd-path/<project>-M00N` and
|
|
373
|
+
records each member landing in the coordinator. The final review names each
|
|
374
|
+
member's reviewed HEAD.
|
|
375
|
+
- Ship closes members in order before the coordinator: `close-members` merges
|
|
376
|
+
each member in its own `direct` or `pull-request` mode and tags it
|
|
377
|
+
`milestone/<project>-<archive>`, then the ship commit records each member.
|
|
378
|
+
A pull-request member waits for you to merge it. The next milestone retires
|
|
379
|
+
the member branches.
|
|
380
|
+
- `members.py detect --checkout <path>` reports whether a repo is a member.
|
|
381
|
+
|
|
382
|
+
Out of scope: submodules, one task across two repos, non-GitHub remotes, and
|
|
383
|
+
an atomic close across repos.
|
|
384
|
+
|
|
365
385
|
## Handoff contract
|
|
366
386
|
|
|
367
387
|
```text
|
|
@@ -422,7 +442,7 @@ node scripts/install.mjs --all --update --project /path/to/project # refresh .
|
|
|
422
442
|
|
|
423
443
|
| Flag | User skills root | Invoke |
|
|
424
444
|
| --- | --- | --- |
|
|
425
|
-
| `--codex`, `--zed` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed: `/path` or `/gsd-path` |
|
|
445
|
+
| `--codex`, `--zed`, `--muse` | `~/.agents/skills` | Codex: `$path` or `$gsd-path`; Zed, Muse: `/path` or `/gsd-path` |
|
|
426
446
|
| `--claude` | `~/.claude/skills` | `/path` or `/gsd-path` |
|
|
427
447
|
| `--cursor` | `~/.cursor/skills` (+ subagent) | `/path` or `/gsd-path` |
|
|
428
448
|
| `--grok` | `~/.grok/skills` | `/path` or `/gsd-path` |
|
package/RUNTIME.md
CHANGED
|
@@ -68,7 +68,7 @@ skeptic attempts under `skeptics/`.
|
|
|
68
68
|
| `skeptics --repo <root> --wave <N> --cycle <C> --child-command '<cmd>' [--wait <s>] [--child-timeout <s>]` | Step 7 skeptic branch: one read-only skeptic per `skeptic_groups` locator in its own sidecar at the recorded review base, briefed with the criterion, every observation, and the cited tasks verbatim; validate with `review_findings.py`, collect, retire, then rerun the helper. `none` without skeptic groups; `escalate` for structural blockers or the cycle cap. The skeptic files stay uncommitted for the fix-task or ruling checkpoint. |
|
|
69
69
|
| `fix-tasks --repo <root> --wave <N> --cycle <C>` | Step 7 batching: one fix task per `review_findings.py collect` batch with the failed criteria and observations verbatim, lint-checked; `escalate` for structural blockers, skeptic groups, cycle cap, or all-refuted. |
|
|
70
70
|
| `complete --repo <root>` | Completion: clean primary at `build/active` (or a crash-left `build/done`), no unfinished wave, the archive-time review cycle check (`discussion_validate.review_cycle_counts`: contiguous cycles, passing last cycle, panel and skeptic artifacts present); `workflow_run.py build-evidence` at HEAD; `pipeline_state.py transition` to `ship/active` with event `build done; final review pending`; checkpoint `build: complete milestone`. |
|
|
71
|
-
| `finish --repo <root> --task-id <id>` | Recover first; return a proven landing without repeating Verify, or verify, land, record, and retire one returned task. Without a dispatch record,
|
|
71
|
+
| `finish --repo <root> --task-id <id>` | Recover first; return a proven landing without repeating Verify, or verify, land, record, and retire one returned task. Without a dispatch record, or when the newest record is settled and its base differs from the task's current in-progress base (a native retry after a driver block), read the primary task's in-progress state; if it lacks a recorded base, use the parallel task isolate's state only if that worktree is authorized. A blocked record at the same base still refuses the retry. A deactivated isolate stays blocked. |
|
|
72
72
|
| `answer --repo <root> --task-id <id> --answer '<text>'` | Append `Orchestrator answer:` to the isolate's task Log; the next `round` redispatches that isolate. |
|
|
73
73
|
| `status --repo <root>` | Every task's newest dispatch record. |
|
|
74
74
|
|
|
@@ -91,7 +91,7 @@ argument slots defined in the dispatch model policy.
|
|
|
91
91
|
calls. In `round`, an unfinished earlier wave blocks dispatch before the bookkeeping
|
|
92
92
|
checkpoint. Child completion is recorded in `exit.json`; the parent alone
|
|
93
93
|
writes `state.json`.
|
|
94
|
-
For `review`, `panel`, and `skeptics`, when the child process is gone and `finished_at` is
|
|
94
|
+
For `round`, `review`, `panel`, and `skeptics`, when the child process is gone and `finished_at` is
|
|
95
95
|
unset, the driver rereads that attempt's state and exit receipt before
|
|
96
96
|
collecting the result or blocking with
|
|
97
97
|
`child wrapper exited without recording a result`.
|