@rpamis/comet 0.4.0-beta.3 → 0.4.0-beta.4
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/README.md +10 -0
- package/assets/manifest.json +2 -1
- package/assets/skills/comet/SKILL.md +25 -1
- package/assets/skills/comet/reference/comet-yaml-fields.md +5 -2
- package/assets/skills/comet/reference/context-recovery.md +10 -0
- package/assets/skills/comet/reference/scripts.md +47 -15
- package/assets/skills/comet/rules/comet-phase-guard.en.md +8 -0
- package/assets/skills/comet/rules/comet-phase-guard.md +9 -1
- package/assets/skills/comet/scripts/comet-resume-probe.mjs +3 -0
- package/assets/skills/comet/scripts/comet-runtime.mjs +1387 -424
- package/assets/skills/comet-archive/SKILL.md +24 -11
- package/assets/skills/comet-build/SKILL.md +42 -25
- package/assets/skills/comet-design/SKILL.md +1 -0
- package/assets/skills/comet-hotfix/SKILL.md +3 -1
- package/assets/skills/comet-open/SKILL.md +11 -1
- package/assets/skills/comet-tweak/SKILL.md +3 -1
- package/assets/skills/comet-verify/SKILL.md +29 -20
- package/assets/skills-zh/comet/SKILL.md +25 -1
- package/assets/skills-zh/comet/reference/comet-yaml-fields.md +5 -2
- package/assets/skills-zh/comet/reference/context-recovery.md +10 -0
- package/assets/skills-zh/comet/reference/scripts.md +47 -15
- package/assets/skills-zh/comet-archive/SKILL.md +24 -11
- package/assets/skills-zh/comet-build/SKILL.md +42 -25
- package/assets/skills-zh/comet-design/SKILL.md +1 -0
- package/assets/skills-zh/comet-hotfix/SKILL.md +3 -1
- package/assets/skills-zh/comet-open/SKILL.md +11 -1
- package/assets/skills-zh/comet-tweak/SKILL.md +3 -1
- package/assets/skills-zh/comet-verify/SKILL.md +30 -21
- package/dist/app/cli/comet-banner.d.ts +25 -0
- package/dist/app/cli/comet-banner.d.ts.map +1 -0
- package/dist/app/cli/comet-banner.js +265 -0
- package/dist/app/cli/comet-banner.js.map +1 -0
- package/dist/app/cli/index.js +36 -2
- package/dist/app/cli/index.js.map +1 -1
- package/dist/app/commands/classic.d.ts +4 -0
- package/dist/app/commands/classic.d.ts.map +1 -0
- package/dist/app/commands/classic.js +11 -0
- package/dist/app/commands/classic.js.map +1 -0
- package/dist/app/commands/doctor.d.ts.map +1 -1
- package/dist/app/commands/doctor.js +39 -24
- package/dist/app/commands/doctor.js.map +1 -1
- package/dist/app/commands/eval.d.ts.map +1 -1
- package/dist/app/commands/eval.js +57 -20
- package/dist/app/commands/eval.js.map +1 -1
- package/dist/app/commands/i18n.d.ts +1 -1
- package/dist/app/commands/i18n.d.ts.map +1 -1
- package/dist/app/commands/i18n.js +12 -4
- package/dist/app/commands/i18n.js.map +1 -1
- package/dist/app/commands/init.d.ts.map +1 -1
- package/dist/app/commands/init.js +16 -13
- package/dist/app/commands/init.js.map +1 -1
- package/dist/app/commands/project-scope-selection.d.ts +13 -0
- package/dist/app/commands/project-scope-selection.d.ts.map +1 -0
- package/dist/app/commands/project-scope-selection.js +33 -0
- package/dist/app/commands/project-scope-selection.js.map +1 -0
- package/dist/app/commands/resume-probe.d.ts +11 -0
- package/dist/app/commands/resume-probe.d.ts.map +1 -0
- package/dist/app/commands/resume-probe.js +63 -0
- package/dist/app/commands/resume-probe.js.map +1 -0
- package/dist/app/commands/status.d.ts +31 -0
- package/dist/app/commands/status.d.ts.map +1 -1
- package/dist/app/commands/status.js +109 -20
- package/dist/app/commands/status.js.map +1 -1
- package/dist/app/commands/uninstall.d.ts +2 -0
- package/dist/app/commands/uninstall.d.ts.map +1 -1
- package/dist/app/commands/uninstall.js +217 -40
- package/dist/app/commands/uninstall.js.map +1 -1
- package/dist/app/commands/update.d.ts +6 -0
- package/dist/app/commands/update.d.ts.map +1 -1
- package/dist/app/commands/update.js +361 -68
- package/dist/app/commands/update.js.map +1 -1
- package/dist/config/repository-layout.json +4 -2
- package/dist/domains/bundle/bundle-platform.d.ts.map +1 -1
- package/dist/domains/bundle/bundle-platform.js +3 -1
- package/dist/domains/bundle/bundle-platform.js.map +1 -1
- package/dist/domains/bundle/eval-manifest-runtime.d.ts +6 -0
- package/dist/domains/bundle/eval-manifest-runtime.d.ts.map +1 -0
- package/dist/domains/bundle/eval-manifest-runtime.js +58 -0
- package/dist/domains/bundle/eval-manifest-runtime.js.map +1 -0
- package/dist/domains/bundle/types.d.ts +1 -1
- package/dist/domains/bundle/types.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-archive.d.ts +1 -0
- package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-archive.js +35 -38
- package/dist/domains/comet-classic/classic-archive.js.map +1 -1
- package/dist/domains/comet-classic/classic-cli.d.ts +1 -1
- package/dist/domains/comet-classic/classic-cli.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-cli.js +3 -0
- package/dist/domains/comet-classic/classic-cli.js.map +1 -1
- package/dist/domains/comet-classic/classic-command-checks.d.ts +20 -0
- package/dist/domains/comet-classic/classic-command-checks.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-command-checks.js +97 -0
- package/dist/domains/comet-classic/classic-command-checks.js.map +1 -0
- package/dist/domains/comet-classic/classic-current-change.d.ts +19 -0
- package/dist/domains/comet-classic/classic-current-change.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-current-change.js +132 -0
- package/dist/domains/comet-classic/classic-current-change.js.map +1 -0
- package/dist/domains/comet-classic/classic-diagnostics.d.ts +2 -1
- package/dist/domains/comet-classic/classic-diagnostics.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-diagnostics.js +54 -1
- package/dist/domains/comet-classic/classic-diagnostics.js.map +1 -1
- package/dist/domains/comet-classic/classic-evidence.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-evidence.js +4 -0
- package/dist/domains/comet-classic/classic-evidence.js.map +1 -1
- package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-guard.js +68 -69
- package/dist/domains/comet-classic/classic-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-hook-guard.js +66 -23
- package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
- package/dist/domains/comet-classic/classic-project-config.d.ts +16 -0
- package/dist/domains/comet-classic/classic-project-config.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-project-config.js +40 -0
- package/dist/domains/comet-classic/classic-project-config.js.map +1 -0
- package/dist/domains/comet-classic/classic-resolver.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-resolver.js +3 -3
- package/dist/domains/comet-classic/classic-resolver.js.map +1 -1
- package/dist/domains/comet-classic/classic-resume-probe-command.d.ts +3 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.js +58 -0
- package/dist/domains/comet-classic/classic-resume-probe-command.js.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts +2 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.js +4 -0
- package/dist/domains/comet-classic/classic-resume-probe-entry.js.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe.d.ts +29 -0
- package/dist/domains/comet-classic/classic-resume-probe.d.ts.map +1 -0
- package/dist/domains/comet-classic/classic-resume-probe.js +386 -0
- package/dist/domains/comet-classic/classic-resume-probe.js.map +1 -0
- package/dist/domains/comet-classic/classic-runtime-run.d.ts +2 -1
- package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-runtime-run.js +38 -0
- package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -1
- package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state-command.js +128 -12
- package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
- package/dist/domains/comet-classic/classic-state.d.ts +3 -1
- package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-state.js +4 -0
- package/dist/domains/comet-classic/classic-state.js.map +1 -1
- package/dist/domains/comet-classic/classic-store.d.ts +4 -1
- package/dist/domains/comet-classic/classic-store.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-store.js +4 -3
- package/dist/domains/comet-classic/classic-store.js.map +1 -1
- package/dist/domains/comet-classic/classic-transitions.d.ts +1 -1
- package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-transitions.js +20 -1
- package/dist/domains/comet-classic/classic-transitions.js.map +1 -1
- package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -1
- package/dist/domains/comet-classic/classic-validate-command.js +1 -0
- package/dist/domains/comet-classic/classic-validate-command.js.map +1 -1
- package/dist/domains/comet-classic/index.d.ts +3 -0
- package/dist/domains/comet-classic/index.d.ts.map +1 -1
- package/dist/domains/comet-classic/index.js +3 -0
- package/dist/domains/comet-classic/index.js.map +1 -1
- package/dist/domains/dashboard/collector.js +10 -2
- package/dist/domains/dashboard/collector.js.map +1 -1
- package/dist/domains/dashboard/web/assets/{index-CjU3VXVu.js → index-CIvN-PL8.js} +11 -11
- package/dist/domains/dashboard/web/assets/{index-BcO3_QlT.css → index-DcyRPBnT.css} +1 -1
- package/dist/domains/dashboard/web/index.html +2 -2
- package/dist/domains/engine/types.d.ts +1 -1
- package/dist/domains/engine/types.d.ts.map +1 -1
- package/dist/domains/integrations/openspec.d.ts.map +1 -1
- package/dist/domains/integrations/openspec.js +6 -6
- package/dist/domains/integrations/openspec.js.map +1 -1
- package/dist/domains/skill/find.d.ts.map +1 -1
- package/dist/domains/skill/find.js +1 -6
- package/dist/domains/skill/find.js.map +1 -1
- package/dist/domains/skill/managed-markdown.d.ts +14 -0
- package/dist/domains/skill/managed-markdown.d.ts.map +1 -0
- package/dist/domains/skill/managed-markdown.js +126 -0
- package/dist/domains/skill/managed-markdown.js.map +1 -0
- package/dist/domains/skill/platform-install.d.ts +4 -3
- package/dist/domains/skill/platform-install.d.ts.map +1 -1
- package/dist/domains/skill/platform-install.js +96 -26
- package/dist/domains/skill/platform-install.js.map +1 -1
- package/dist/domains/skill/project-instructions.d.ts +22 -0
- package/dist/domains/skill/project-instructions.d.ts.map +1 -0
- package/dist/domains/skill/project-instructions.js +61 -0
- package/dist/domains/skill/project-instructions.js.map +1 -0
- package/dist/domains/skill/uninstall.d.ts +3 -1
- package/dist/domains/skill/uninstall.d.ts.map +1 -1
- package/dist/domains/skill/uninstall.js +86 -39
- package/dist/domains/skill/uninstall.js.map +1 -1
- package/dist/platform/install/detect.d.ts +2 -1
- package/dist/platform/install/detect.d.ts.map +1 -1
- package/dist/platform/install/detect.js +10 -1
- package/dist/platform/install/detect.js.map +1 -1
- package/dist/platform/install/platforms.d.ts +5 -1
- package/dist/platform/install/platforms.d.ts.map +1 -1
- package/dist/platform/install/platforms.js +21 -4
- package/dist/platform/install/platforms.js.map +1 -1
- package/dist/platform/install/project-registry.d.ts +37 -0
- package/dist/platform/install/project-registry.d.ts.map +1 -0
- package/dist/platform/install/project-registry.js +205 -0
- package/dist/platform/install/project-registry.js.map +1 -0
- package/eval/.env +28 -0
- package/eval/.env.example +52 -0
- package/eval/CLAUDE.md +43 -0
- package/eval/README.md +538 -0
- package/eval/langsmith/.env.example +16 -0
- package/eval/langsmith/README.md +93 -0
- package/eval/langsmith/skills/README.md +5 -0
- package/eval/langsmith/tasks/README.md +5 -0
- package/eval/langsmith/tests/conftest.py +187 -0
- package/eval/langsmith/tests/tasks/test_tasks.py +287 -0
- package/eval/langsmith/treatments/README.md +5 -0
- package/eval/local/README.md +80 -0
- package/eval/local/regression_baseline.json +13 -0
- package/eval/local/report-style-demo-assets/quality_cost.en.svg +41 -0
- package/eval/local/report-style-demo-assets/quality_cost.zh.svg +41 -0
- package/eval/local/report-style-demo-assets/rubric_delta.en.svg +56 -0
- package/eval/local/report-style-demo-assets/rubric_delta.zh.svg +56 -0
- package/eval/local/report-style-demo-assets/task_outcomes.en.svg +46 -0
- package/eval/local/report-style-demo-assets/task_outcomes.zh.svg +46 -0
- package/eval/local/report-style-demo.html +867 -0
- package/eval/local/scripts/compare_baselines.py +1018 -0
- package/eval/local/scripts/generate_report_style_demo_charts.py +322 -0
- package/eval/local/scripts/regression_check.py +171 -0
- package/eval/local/scripts/render_readme_benchmark_figures.py +416 -0
- package/eval/local/scripts/rescore_rubric.py +120 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/SKILL.md +282 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/auto-transition.md +27 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/comet-yaml-fields.md +68 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/context-recovery.md +35 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/debug-gate.md +17 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/decision-point.md +20 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/dirty-worktree.md +59 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/file-structure.md +28 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/reference/subagent-dispatch.md +113 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/rules/comet-phase-guard.md +125 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-archive.sh +311 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-env.sh +110 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-guard.sh +778 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-handoff.sh +390 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-hook-guard.sh +336 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-state.sh +1338 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039/scripts/comet-yaml-validate.sh +225 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-archive/SKILL.md +100 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-build/SKILL.md +304 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-design/SKILL.md +263 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-hotfix/SKILL.md +204 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-open/SKILL.md +220 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-tweak/SKILL.md +180 -0
- package/eval/local/skills/benchmarks/039-release/comet-classic-039-verify/SKILL.md +234 -0
- package/eval/local/skills/benchmarks/040-beta/comet/SKILL.md +261 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/auto-transition.md +27 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/comet-yaml-fields.md +73 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/context-recovery.md +45 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/debug-gate.md +33 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/decision-point.md +31 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/dirty-worktree.md +59 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/file-structure.md +28 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/intent-frame.md +74 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/scripts.md +69 -0
- package/eval/local/skills/benchmarks/040-beta/comet/reference/subagent-dispatch.md +169 -0
- package/eval/local/skills/benchmarks/040-beta/comet/rules/comet-phase-guard.md +130 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/checks.yaml +6 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/guardrails.yaml +13 -0
- package/eval/local/skills/benchmarks/040-beta/comet/runtime/classic/skill.yaml +122 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-archive.mjs +9515 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-env.mjs +15 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-guard.mjs +10173 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-handoff.mjs +9491 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-hook-guard.mjs +9175 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-intent.mjs +404 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-state.mjs +9273 -0
- package/eval/local/skills/benchmarks/040-beta/comet/scripts/comet-yaml-validate.mjs +7627 -0
- package/eval/local/skills/benchmarks/040-beta/comet-archive/SKILL.md +110 -0
- package/eval/local/skills/benchmarks/040-beta/comet-build/SKILL.md +315 -0
- package/eval/local/skills/benchmarks/040-beta/comet-design/SKILL.md +260 -0
- package/eval/local/skills/benchmarks/040-beta/comet-hotfix/SKILL.md +190 -0
- package/eval/local/skills/benchmarks/040-beta/comet-open/SKILL.md +210 -0
- package/eval/local/skills/benchmarks/040-beta/comet-tweak/SKILL.md +183 -0
- package/eval/local/skills/benchmarks/040-beta/comet-verify/SKILL.md +230 -0
- package/eval/local/skills/benchmarks/dependency/claude-md/comet-workflow/CLAUDE.md +12 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-apply-change/SKILL.md +156 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-archive-change/SKILL.md +114 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-bulk-archive-change/SKILL.md +246 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-continue-change/SKILL.md +118 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-explore/SKILL.md +288 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-ff-change/SKILL.md +101 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-new-change/SKILL.md +74 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-onboard/SKILL.md +554 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-propose/SKILL.md +110 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-sync-specs/SKILL.md +138 -0
- package/eval/local/skills/benchmarks/dependency/openspec/openspec-verify-change/SKILL.md +168 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/SKILL.md +159 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/frame-template.html +213 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/helper.js +167 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/server.cjs +723 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/start-server.sh +209 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/scripts/stop-server.sh +120 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/brainstorming/visual-companion.md +291 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/dispatching-parallel-agents/SKILL.md +185 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/executing-plans/SKILL.md +70 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/finishing-a-development-branch/SKILL.md +241 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/receiving-code-review/SKILL.md +213 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/SKILL.md +103 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/requesting-code-review/code-reviewer.md +172 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/SKILL.md +418 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/implementer-prompt.md +139 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/review-package +44 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/sdd-workspace +22 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/scripts/task-brief +40 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/subagent-driven-development/task-reviewer-prompt.md +188 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/SKILL.md +296 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/defense-in-depth.md +122 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/find-polluter.sh +63 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-academic.md +14 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-1.md +58 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-2.md +68 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/systematic-debugging/test-pressure-3.md +69 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/SKILL.md +371 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/test-driven-development/testing-anti-patterns.md +299 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/using-git-worktrees/SKILL.md +202 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/verification-before-completion/SKILL.md +139 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/SKILL.md +174 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/SKILL.md +689 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/graphviz-conventions.dot +172 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/persuasion-principles.md +187 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/render-graphs.js +168 -0
- package/eval/local/skills/benchmarks/dependency/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
- package/eval/local/tasks/authoring-skill-smoke/environment/Dockerfile +2 -0
- package/eval/local/tasks/authoring-skill-smoke/instruction.md +4 -0
- package/eval/local/tasks/authoring-skill-smoke/task.toml +21 -0
- package/eval/local/tasks/authoring-skill-smoke/validation/test_authoring_skill_smoke.py +54 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/agent_system.py +40 -0
- package/eval/local/tasks/comet-agent-memory-routing/environment/test_agent_system.py +29 -0
- package/eval/local/tasks/comet-agent-memory-routing/instruction.md +20 -0
- package/eval/local/tasks/comet-agent-memory-routing/task.toml +24 -0
- package/eval/local/tasks/comet-agent-memory-routing/validation/test_agent_memory_routing.py +24 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/cache.py +39 -0
- package/eval/local/tasks/comet-api-cache-ttl/environment/test_cache.py +81 -0
- package/eval/local/tasks/comet-api-cache-ttl/instruction.md +33 -0
- package/eval/local/tasks/comet-api-cache-ttl/task.toml +24 -0
- package/eval/local/tasks/comet-api-cache-ttl/validation/test_api_cache_ttl.py +58 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/cli.py +13 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/counting.py +13 -0
- package/eval/local/tasks/comet-cross-file-refactor/environment/test_textkit.py +21 -0
- package/eval/local/tasks/comet-cross-file-refactor/instruction.md +16 -0
- package/eval/local/tasks/comet-cross-file-refactor/task.toml +20 -0
- package/eval/local/tasks/comet-cross-file-refactor/validation/test_cross_file_refactor.py +20 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/app.py +8 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/settings_loader.py +14 -0
- package/eval/local/tasks/comet-dependency-confusion/environment/test_settings_service.py +19 -0
- package/eval/local/tasks/comet-dependency-confusion/instruction.md +18 -0
- package/eval/local/tasks/comet-dependency-confusion/task.toml +24 -0
- package/eval/local/tasks/comet-dependency-confusion/validation/test_dependency_confusion.py +24 -0
- package/eval/local/tasks/comet-fix-median/environment/Dockerfile +50 -0
- package/eval/local/tasks/comet-fix-median/environment/stats.py +54 -0
- package/eval/local/tasks/comet-fix-median/environment/test_stats.py +68 -0
- package/eval/local/tasks/comet-fix-median/instruction.md +25 -0
- package/eval/local/tasks/comet-fix-median/task.toml +24 -0
- package/eval/local/tasks/comet-fix-median/validation/test_fix_median.py +60 -0
- package/eval/local/tasks/comet-framework-selection/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-framework-selection/environment/architecture.py +12 -0
- package/eval/local/tasks/comet-framework-selection/environment/test_architecture.py +30 -0
- package/eval/local/tasks/comet-framework-selection/instruction.md +22 -0
- package/eval/local/tasks/comet-framework-selection/task.toml +24 -0
- package/eval/local/tasks/comet-framework-selection/validation/test_framework_selection.py +24 -0
- package/eval/local/tasks/comet-full-workflow/environment/Dockerfile +53 -0
- package/eval/local/tasks/comet-full-workflow/environment/test_wordcount.py +29 -0
- package/eval/local/tasks/comet-full-workflow/environment/wordcount.py +40 -0
- package/eval/local/tasks/comet-full-workflow/instruction.md +18 -0
- package/eval/local/tasks/comet-full-workflow/task.toml +24 -0
- package/eval/local/tasks/comet-full-workflow/validation/test_full_workflow.py +171 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/Dockerfile +28 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/pipeline.py +19 -0
- package/eval/local/tasks/comet-graph-execution-review/environment/test_pipeline.py +53 -0
- package/eval/local/tasks/comet-graph-execution-review/instruction.md +21 -0
- package/eval/local/tasks/comet-graph-execution-review/task.toml +24 -0
- package/eval/local/tasks/comet-graph-execution-review/validation/test_graph_execution_review.py +24 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/approvals.py +17 -0
- package/eval/local/tasks/comet-human-approval-flow/environment/test_approvals.py +30 -0
- package/eval/local/tasks/comet-human-approval-flow/instruction.md +15 -0
- package/eval/local/tasks/comet-human-approval-flow/task.toml +20 -0
- package/eval/local/tasks/comet-human-approval-flow/validation/test_human_approval_flow.py +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/Dockerfile +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/chat_app.py +19 -0
- package/eval/local/tasks/comet-layered-streaming-fix/environment/test_chat_app.py +15 -0
- package/eval/local/tasks/comet-layered-streaming-fix/instruction.md +14 -0
- package/eval/local/tasks/comet-layered-streaming-fix/task.toml +20 -0
- package/eval/local/tasks/comet-layered-streaming-fix/validation/test_layered_streaming_fix.py +20 -0
- package/eval/local/tasks/comet-noise-distractor/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-noise-distractor/environment/distractor.md +4 -0
- package/eval/local/tasks/comet-noise-distractor/environment/invoice.py +5 -0
- package/eval/local/tasks/comet-noise-distractor/environment/test_invoice.py +18 -0
- package/eval/local/tasks/comet-noise-distractor/instruction.md +17 -0
- package/eval/local/tasks/comet-noise-distractor/task.toml +20 -0
- package/eval/local/tasks/comet-noise-distractor/validation/test_noise_distractor.py +20 -0
- package/eval/local/tasks/comet-observability-env-template/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-observability-env-template/environment/env_writer.py +17 -0
- package/eval/local/tasks/comet-observability-env-template/environment/test_env_writer.py +17 -0
- package/eval/local/tasks/comet-observability-env-template/instruction.md +20 -0
- package/eval/local/tasks/comet-observability-env-template/task.toml +20 -0
- package/eval/local/tasks/comet-observability-env-template/validation/test_observability_env_template.py +46 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/dedupe.py +22 -0
- package/eval/local/tasks/comet-perf-dedupe/environment/test_dedupe.py +43 -0
- package/eval/local/tasks/comet-perf-dedupe/instruction.md +25 -0
- package/eval/local/tasks/comet-perf-dedupe/task.toml +24 -0
- package/eval/local/tasks/comet-perf-dedupe/validation/test_perf_dedupe.py +40 -0
- package/eval/local/tasks/comet-persistence-threading/environment/Dockerfile +15 -0
- package/eval/local/tasks/comet-persistence-threading/environment/session_store.py +15 -0
- package/eval/local/tasks/comet-persistence-threading/environment/test_session_store.py +21 -0
- package/eval/local/tasks/comet-persistence-threading/instruction.md +14 -0
- package/eval/local/tasks/comet-persistence-threading/task.toml +20 -0
- package/eval/local/tasks/comet-persistence-threading/validation/test_persistence_threading.py +20 -0
- package/eval/local/tasks/comet-refactor-counter/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-refactor-counter/environment/test_text_processor.py +57 -0
- package/eval/local/tasks/comet-refactor-counter/environment/text_processor.py +49 -0
- package/eval/local/tasks/comet-refactor-counter/instruction.md +31 -0
- package/eval/local/tasks/comet-refactor-counter/task.toml +24 -0
- package/eval/local/tasks/comet-refactor-counter/validation/test_refactor_counter.py +75 -0
- package/eval/local/tasks/comet-robust-config/environment/Dockerfile +39 -0
- package/eval/local/tasks/comet-robust-config/environment/config_loader.py +56 -0
- package/eval/local/tasks/comet-robust-config/environment/test_config_loader.py +72 -0
- package/eval/local/tasks/comet-robust-config/instruction.md +30 -0
- package/eval/local/tasks/comet-robust-config/task.toml +24 -0
- package/eval/local/tasks/comet-robust-config/validation/test_robust_config.py +37 -0
- package/eval/local/tasks/generic-skill-smoke/environment/Dockerfile +2 -0
- package/eval/local/tasks/generic-skill-smoke/instruction.md +7 -0
- package/eval/local/tasks/generic-skill-smoke/task.toml +21 -0
- package/eval/local/tasks/generic-skill-smoke/validation/test_generic_skill_smoke.py +36 -0
- package/eval/local/tasks/index.yaml +155 -0
- package/eval/local/tasks/workflow-overlay-contract/environment/Dockerfile +5 -0
- package/eval/local/tasks/workflow-overlay-contract/instruction.md +5 -0
- package/eval/local/tasks/workflow-overlay-contract/task.toml +21 -0
- package/eval/local/tasks/workflow-overlay-contract/validation/test_workflow_overlay_contract.py +235 -0
- package/eval/local/tasks/workflow-route-conformance/environment/Dockerfile +2 -0
- package/eval/local/tasks/workflow-route-conformance/instruction.md +5 -0
- package/eval/local/tasks/workflow-route-conformance/task.toml +21 -0
- package/eval/local/tasks/workflow-route-conformance/validation/test_workflow_route_conformance.py +84 -0
- package/eval/local/tests/conftest.py +1148 -0
- package/eval/local/tests/scaffold/test_attribution.py +48 -0
- package/eval/local/tests/scaffold/test_compare_baselines.py +999 -0
- package/eval/local/tests/scaffold/test_conftest_helpers.py +534 -0
- package/eval/local/tests/scaffold/test_evidence.py +15 -0
- package/eval/local/tests/scaffold/test_langsmith_conftest.py +244 -0
- package/eval/local/tests/scaffold/test_logging.py +243 -0
- package/eval/local/tests/scaffold/test_manifests.py +132 -0
- package/eval/local/tests/scaffold/test_profiles.py +866 -0
- package/eval/local/tests/scaffold/test_regression_check.py +19 -0
- package/eval/local/tests/scaffold/test_report_style_demo_charts.py +45 -0
- package/eval/local/tests/scaffold/test_sample_quality.py +211 -0
- package/eval/local/tests/scaffold/test_tasks.py +168 -0
- package/eval/local/tests/scaffold/test_treatments.py +244 -0
- package/eval/local/tests/scaffold/test_utils.py +139 -0
- package/eval/local/tests/tasks/test_tasks.py +445 -0
- package/eval/local/tests/tasks/test_validation_scripts.py +143 -0
- package/eval/local/treatments/comet/comet_full_039.yaml +141 -0
- package/eval/local/treatments/comet/comet_full_040_beta.yaml +140 -0
- package/eval/local/treatments/common/control.yaml +4 -0
- package/eval/pyproject.toml +41 -0
- package/eval/report-html-config.json +6 -0
- package/eval/scaffold/__init__.py +67 -0
- package/eval/scaffold/python/__init__.py +95 -0
- package/eval/scaffold/python/attribution.py +43 -0
- package/eval/scaffold/python/evidence.py +38 -0
- package/eval/scaffold/python/external_data_handler.py +18 -0
- package/eval/scaffold/python/generic_llm_judge.py +235 -0
- package/eval/scaffold/python/judge_config.py +168 -0
- package/eval/scaffold/python/llm_judge.py +191 -0
- package/eval/scaffold/python/logging.py +705 -0
- package/eval/scaffold/python/manifests.py +129 -0
- package/eval/scaffold/python/paper_charts.py +25 -0
- package/eval/scaffold/python/pass_at_k.py +107 -0
- package/eval/scaffold/python/paths.py +56 -0
- package/eval/scaffold/python/profiles.py +127 -0
- package/eval/scaffold/python/report_outputs.py +1391 -0
- package/eval/scaffold/python/sample_quality.py +339 -0
- package/eval/scaffold/python/schema.py +39 -0
- package/eval/scaffold/python/skill_parser.py +469 -0
- package/eval/scaffold/python/tasks.py +330 -0
- package/eval/scaffold/python/treatments.py +271 -0
- package/eval/scaffold/python/utils.py +366 -0
- package/eval/scaffold/python/validation/__init__.py +21 -0
- package/eval/scaffold/python/validation/authoring_rubric.py +326 -0
- package/eval/scaffold/python/validation/comet_workflow.py +187 -0
- package/eval/scaffold/python/validation/core.py +264 -0
- package/eval/scaffold/python/validation/dataset.py +337 -0
- package/eval/scaffold/python/validation/docker.py +106 -0
- package/eval/scaffold/python/validation/evaluator.py +549 -0
- package/eval/scaffold/python/validation/generic_rubric.py +169 -0
- package/eval/scaffold/python/validation/rubric.py +740 -0
- package/eval/scaffold/python/validation/runner.py +237 -0
- package/eval/scaffold/python/validation/scripts.py +58 -0
- package/eval/scaffold/python/validation/tracing.py +313 -0
- package/eval/scaffold/shell/common.sh +126 -0
- package/eval/scaffold/shell/docker.sh +482 -0
- package/eval/scaffold/shell/run-claude-loop.sh +181 -0
- package/eval/scaffold/shell/setup.sh +259 -0
- package/eval/simulator-instruction.md +9 -0
- package/package.json +24 -2
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comet-open
|
|
3
|
+
description: "Comet Phase 1: Open. Invoke with /comet-open. Explore ideas through OpenSpec, confirm requirements clarification, then create change structure (proposal + design + tasks)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Comet Phase 1: Open
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
- No active change, or user wants to create a new change
|
|
11
|
+
|
|
12
|
+
## Steps
|
|
13
|
+
|
|
14
|
+
### 0. Output Language Constraint
|
|
15
|
+
|
|
16
|
+
Every prompt and artifact request passed to OpenSpec must include the output-language constraint: use the language of the user request that triggered this workflow. When resuming an existing change with a clear dominant artifact language, preserve that language unless the user explicitly asks to switch.
|
|
17
|
+
|
|
18
|
+
### 1. Explore Ideas and Clarify Requirements
|
|
19
|
+
|
|
20
|
+
**Immediately execute:** Use the Skill tool to load the `openspec-explore` skill. Skipping this step is prohibited.
|
|
21
|
+
|
|
22
|
+
After the skill loads, explore the problem space following its guidance, but do not treat one Q&A turn as sufficient clarification. You must continue asking, align with the user, and form a clarification summary covering:
|
|
23
|
+
- Goals: the problem the user truly wants to solve and the expected outcome
|
|
24
|
+
- Non-goals: what is explicitly out of scope for this change
|
|
25
|
+
- Scope boundaries: included/excluded modules, users, platforms, or data
|
|
26
|
+
- Key unknowns: unresolved assumptions, risks, or dependencies
|
|
27
|
+
- Draft acceptance scenarios: at least the core success scenario and important boundary scenarios
|
|
28
|
+
|
|
29
|
+
The clarification summary must include: goals, non-goals, scope boundaries, key unknowns, and draft acceptance scenarios.
|
|
30
|
+
|
|
31
|
+
### 1a. PRD Split Preflight (Blocking Point)
|
|
32
|
+
|
|
33
|
+
When the user input is a large PRD, roadmap, complete product plan, or the clarification summary shows multiple independent capabilities, modules, user journeys, or milestones, must evaluate whether it should be split into multiple changes before creating OpenSpec artifacts.
|
|
34
|
+
|
|
35
|
+
The split preflight must be based on clarified information and output a proposed split list. Each proposed split item must include:
|
|
36
|
+
- Suggested change name
|
|
37
|
+
- Goals and scope boundaries
|
|
38
|
+
- Explicit non-goals
|
|
39
|
+
- Dependencies or recommended execution order
|
|
40
|
+
- Core acceptance scenarios
|
|
41
|
+
|
|
42
|
+
Recommend splitting when any condition applies:
|
|
43
|
+
- The PRD contains multiple capabilities that can be independently designed, built, verified, and archived
|
|
44
|
+
- Multiple modules or user journeys are involved, and part of them can be delivered independently
|
|
45
|
+
- Clear phased milestones exist
|
|
46
|
+
- The work is expected to produce multiple delta specs or more than 3 large tasks
|
|
47
|
+
- Failure or delay in one part should not block other parts from entering later phases
|
|
48
|
+
|
|
49
|
+
When splitting is recommended, must follow the `comet/reference/decision-point.md` protocol to pause and wait for the user's choice.
|
|
50
|
+
|
|
51
|
+
The user choices must include:
|
|
52
|
+
- "Create multiple OpenSpec changes" — create independent changes from the proposed split
|
|
53
|
+
- "Keep everything as one change" — continue the single-change flow and record the reason for not splitting in proposal/design/tasks
|
|
54
|
+
- "Adjust the split plan before continuing" — after the user describes the adjustment, output the revised proposed split list and ask for confirmation again
|
|
55
|
+
|
|
56
|
+
Every accepted split item must be created as an independent change through `/comet-open`, not by calling `/opsx:new` directly. `/comet-open` creates both OpenSpec artifacts and `.comet.yaml`, ensuring each change enters the Comet state machine.
|
|
57
|
+
|
|
58
|
+
Must not create proposal.md, design.md, or tasks.md before the user completes the PRD split choice. If the user chooses to create multiple changes, the current `/comet-open` invocation only completes split confirmation and coordination, then enters `/comet-open` for each split item in the user-confirmed order.
|
|
59
|
+
|
|
60
|
+
In batch split mode, entering `/comet-open` for each split item must explicitly mark it as a "confirmed split item" and carry that split item's goals, scope, non-goals, and acceptance scenarios. Confirmed split items skip the PRD split preflight by default, unless the split item itself still clearly contains multiple independent capabilities.
|
|
61
|
+
|
|
62
|
+
In batch split mode, a single split item must not auto-advance to `/comet-design` after completing the open phase. After splitting is complete, must pause and ask the user which change to start; after the user chooses, advance only that change into `/comet-design`, while other changes remain active and can be resumed later through `/comet`.
|
|
63
|
+
|
|
64
|
+
Minimal resume rule: do not add a dedicated batch state file. On resume, first check already-created active changes; split items that already exist and contain `.comet.yaml` must not be created again, while uncreated split items continue through `/comet-open` according to the user-confirmed split list. If the confirmed split list cannot be recovered from the conversation, must ask the user to confirm the split list again before continuing.
|
|
65
|
+
|
|
66
|
+
### 1b. Requirements Clarification Completion Confirmation (Blocking Point)
|
|
67
|
+
|
|
68
|
+
Before creating OpenSpec artifacts, must follow the `comet/reference/decision-point.md` protocol to pause and wait for the user to confirm requirements clarification is complete.
|
|
69
|
+
|
|
70
|
+
When pausing, present the clarification summary: goals, non-goals, scope boundaries, key unknowns, and draft acceptance scenarios.
|
|
71
|
+
|
|
72
|
+
Must not create proposal.md, design.md, or tasks.md before the user confirms requirements clarification is complete, and must not use the Skill tool to load the `openspec-propose` skill to generate all artifacts in one pass.
|
|
73
|
+
|
|
74
|
+
### 1c. Change Name Confirmation (Blocking Point)
|
|
75
|
+
|
|
76
|
+
Before creating the change directory (`openspec new change`), must follow the `comet/reference/decision-point.md` protocol to pause and let the user decide the change name. Must not auto-generate or silently infer the change name.
|
|
77
|
+
|
|
78
|
+
OpenSpec change names must be **kebab-case English** (lowercase letters, digits, hyphens; e.g. `refine-requirements-doc`). Chinese or other non-conforming names are invalid.
|
|
79
|
+
|
|
80
|
+
When pausing, present:
|
|
81
|
+
- **2-3 recommended kebab-case English names** derived from the confirmed clarification summary, each with a one-line description of the scope it implies
|
|
82
|
+
- An explicit option for the user to **enter their own name**
|
|
83
|
+
- A note that **if the user enters Chinese (or any non-kebab-case text), it will be converted into a compliant kebab-case English name**, and the converted result must be shown back to the user for confirmation before use
|
|
84
|
+
|
|
85
|
+
The decision options must include:
|
|
86
|
+
- Pick one of the recommended names
|
|
87
|
+
- "Enter a custom name" — accept the user's input; if it is already valid kebab-case English, use it directly; if it is Chinese or otherwise non-conforming, convert it to compliant kebab-case English and show the converted name for confirmation before continuing
|
|
88
|
+
|
|
89
|
+
Must not run `openspec new change` or create `.comet.yaml` before the user confirms the final change name. If the chosen/converted name collides with an existing change, report the collision and ask the user to choose another name.
|
|
90
|
+
|
|
91
|
+
### 2. Create Change Structure + Initialize State
|
|
92
|
+
|
|
93
|
+
**Immediately execute:** Use the Skill tool to load the `openspec-new-change` skill. Skipping this step is prohibited.
|
|
94
|
+
|
|
95
|
+
Full `/comet` workflow must not use the Skill tool to load the `openspec-propose` skill by default; only load it when the user explicitly requests generating the proposal and artifacts in one pass.
|
|
96
|
+
|
|
97
|
+
After the skill loads, follow its guidance to create the change skeleton, but override its "STOP and wait for user direction" behavior when a confirmed clarification summary from Step 1b is already available in the conversation context.
|
|
98
|
+
|
|
99
|
+
If the user has already confirmed a clarification summary (Step 1b), use that summary directly to populate artifact content. If no clarification summary exists (edge case), fall back to the skill's default behavior of asking the user.
|
|
100
|
+
|
|
101
|
+
After the change skeleton is created, generate `proposal`, `design`, and `tasks` one by one using the standard artifact loop:
|
|
102
|
+
|
|
103
|
+
**Standard Artifact Loop** (for each `artifact-id`: `proposal` → `design` → `tasks`):
|
|
104
|
+
|
|
105
|
+
1. Refresh status: `openspec status --change "<name>" --json`
|
|
106
|
+
2. Fetch artifact instructions:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
openspec instructions proposal --change "<name>" --json
|
|
110
|
+
openspec instructions design --change "<name>" --json
|
|
111
|
+
openspec instructions tasks --change "<name>" --json
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
3. For the returned JSON instruction payload, you must:
|
|
115
|
+
- Read every completed dependency artifact listed in `dependencies`
|
|
116
|
+
- Use `template` as the artifact structure
|
|
117
|
+
- Follow `instruction` guidance
|
|
118
|
+
- Apply `context` and `rules` as constraints — **must not copy them into the artifact content**
|
|
119
|
+
- Write to `resolvedOutputPath`
|
|
120
|
+
- Verify the output file exists and is non-empty
|
|
121
|
+
4. After creating each artifact, re-run `openspec status --change "<name>" --json` to confirm status before continuing to the next artifact
|
|
122
|
+
|
|
123
|
+
**Failure handling**: If `openspec instructions` fails, returns invalid JSON, reports unmet `dependencies`, or does not provide a usable `resolvedOutputPath`, must immediately stop artifact creation and report the OpenSpec error. Must not fall back to hard-coded artifact prose because that would silently bypass project rules.
|
|
124
|
+
|
|
125
|
+
**Naming and scope guard**: Change name must be the kebab-case English name confirmed by the user in Step 1c — must not auto-generate, infer, or use a non-kebab-case (e.g. Chinese) name. Change scope must match the user's description — must not expand or narrow it independently.
|
|
126
|
+
|
|
127
|
+
Confirm the following artifacts have been created:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
openspec/changes/<name>/
|
|
131
|
+
├── .openspec.yaml
|
|
132
|
+
├── .comet.yaml
|
|
133
|
+
├── proposal.md # Why + What: problem, goals, scope
|
|
134
|
+
├── design.md # How (high-level): architecture decisions, approach selection
|
|
135
|
+
└── tasks.md # Task checklist (checkboxes)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Create `.comet.yaml` state file:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
COMET_ENV="${COMET_ENV:-$(find . "$HOME"/.*/skills "$HOME/.config" "$HOME/.gemini" -path '*/comet/scripts/comet-env.sh' -type f -print -quit 2>/dev/null)}"
|
|
142
|
+
if [ -z "$COMET_ENV" ]; then
|
|
143
|
+
echo "ERROR: comet-env.sh not found. Ensure the comet skill is installed." >&2
|
|
144
|
+
return 1
|
|
145
|
+
fi
|
|
146
|
+
. "$COMET_ENV"
|
|
147
|
+
|
|
148
|
+
if [ -z "$COMET_STATE" ] || [ -z "$COMET_GUARD" ]; then
|
|
149
|
+
echo "ERROR: Comet scripts not found. Ensure the comet skill is installed." >&2
|
|
150
|
+
return 1
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
"$COMET_BASH" "$COMET_STATE" init <name> full
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 3. Entry State Verification
|
|
157
|
+
|
|
158
|
+
Verify state machine has been correctly initialized:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
"$COMET_BASH" "$COMET_STATE" check <name> open
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Proceed to Step 4 after verification passes. The script outputs specific failure reasons when verification fails.
|
|
165
|
+
|
|
166
|
+
**Idempotency**: All open phase operations can be safely re-executed. If `.comet.yaml` is already at `phase: open` and all three artifact files exist, skip completed steps and continue from the first missing step.
|
|
167
|
+
|
|
168
|
+
### 4. Content Completeness Check
|
|
169
|
+
|
|
170
|
+
Confirm the three documents have complete content:
|
|
171
|
+
- **proposal.md**: problem background, goals, scope, non-goals
|
|
172
|
+
- **design.md**: high-level architecture decisions, approach selection, data flow
|
|
173
|
+
- **tasks.md**: task list, each task has a clear description
|
|
174
|
+
|
|
175
|
+
**File existence verification**: Confirm all three file paths exist and are non-empty. If any file is missing or empty, must not enter Step 5 or execute phase guard — return to creation step to fill the gap.
|
|
176
|
+
|
|
177
|
+
### 5. User Review and Confirmation (Blocking Point)
|
|
178
|
+
|
|
179
|
+
After the three documents are created and content completeness check passes, **must follow the `comet/reference/decision-point.md` protocol to pause and wait for user confirmation**. Must not execute phase guard or auto-transition before user confirmation.
|
|
180
|
+
|
|
181
|
+
The user confirmation question must be presented as a single-select question with the following summary and options:
|
|
182
|
+
|
|
183
|
+
**Summary content**:
|
|
184
|
+
- **proposal.md**: problem background, goals, scope
|
|
185
|
+
- **design.md**: high-level architecture decisions, approach selection
|
|
186
|
+
- **tasks.md**: task count and key task descriptions
|
|
187
|
+
|
|
188
|
+
**Options**:
|
|
189
|
+
- "Confirm, proceed to next phase" — artifacts meet expectations, execute phase guard transition
|
|
190
|
+
- "Needs adjustment" — include adjustment notes, modify and re-request confirmation
|
|
191
|
+
|
|
192
|
+
After user selects "Confirm", proceed to exit conditions. When user selects "Needs adjustment", modify the corresponding files per their notes, then request confirmation again.
|
|
193
|
+
|
|
194
|
+
## Exit Conditions
|
|
195
|
+
|
|
196
|
+
- proposal.md, design.md, tasks.md all created with complete content
|
|
197
|
+
- **User has confirmed** proposal, design, tasks content meets expectations
|
|
198
|
+
- **Phase guard**: Run `"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply`; after all PASS, auto-transitions to next phase
|
|
199
|
+
|
|
200
|
+
Must use `--apply` before exit, otherwise `.comet.yaml` remains at `phase: open` and the next phase entry check will fail.
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Full workflow auto-transitions to `phase: design`; hotfix/tweak presets auto-transition to `phase: build`.
|
|
207
|
+
|
|
208
|
+
## Automatic Handoff to Next Phase
|
|
209
|
+
|
|
210
|
+
Follow `comet/reference/auto-transition.md`. Key command:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
"$COMET_BASH" "$COMET_STATE" next <change-name>
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
- `NEXT: auto` → invoke the skill pointed to by `SKILL` to enter the next phase
|
|
217
|
+
- `NEXT: manual` → do not invoke the next skill; prompt user to run `/<SKILL>` manually
|
|
218
|
+
- `NEXT: done` → workflow is complete, no further action needed
|
|
219
|
+
|
|
220
|
+
hotfix/tweak presets are controlled by their corresponding preset skill (phase goes directly to build); their `next` returns the corresponding preset skill.
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comet-tweak
|
|
3
|
+
description: "Comet preset path: Non-bug small changes (tweak). Skip brainstorming and full plan, directly open → lightweight build → light verify → archive. Applicable for copy, configuration, documentation or prompt local optimization."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Comet Preset Path: Tweak
|
|
7
|
+
|
|
8
|
+
Tweak is a preset workflow of Comet's five-phase capabilities, not an independent parallel process. It reuses open, build, verify, archive capabilities, only skipping brainstorming and full plan.
|
|
9
|
+
|
|
10
|
+
Applicable for non-bug small scope changes, such as copy adjustment, configuration adjustment, documentation or prompt local optimization.
|
|
11
|
+
|
|
12
|
+
**Applicable conditions** (all must be met):
|
|
13
|
+
1. No new capability
|
|
14
|
+
2. No architecture changes
|
|
15
|
+
3. No interface changes
|
|
16
|
+
4. Typically no more than 3 tasks (file count constraint see upgrade conditions below)
|
|
17
|
+
|
|
18
|
+
**Not applicable**: If change process discovers need for capability, architecture or interface adjustments, should upgrade to full `/comet` workflow.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Process (preset workflow, 4 phases)
|
|
23
|
+
|
|
24
|
+
### 0. Output Language Constraint
|
|
25
|
+
|
|
26
|
+
Streamlined OpenSpec artifacts must use the language of the user request that triggered this workflow.
|
|
27
|
+
|
|
28
|
+
Execution chain: open → lightweight build → light verify → archive. Tweak provides default decisions for each phase: streamlined open, lightweight build, lightweight verification, and final archive confirmation after verification passes.
|
|
29
|
+
|
|
30
|
+
Locate Comet scripts before starting:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
COMET_ENV="${COMET_ENV:-$(find . "$HOME"/.*/skills "$HOME/.config" "$HOME/.gemini" -path '*/comet/scripts/comet-env.sh' -type f -print -quit 2>/dev/null)}"
|
|
34
|
+
if [ -z "$COMET_ENV" ]; then
|
|
35
|
+
echo "ERROR: comet-env.sh not found. Ensure the comet skill is installed." >&2
|
|
36
|
+
return 1
|
|
37
|
+
fi
|
|
38
|
+
. "$COMET_ENV"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 1. Quick Open (preset open)
|
|
42
|
+
|
|
43
|
+
Reuse Comet open capability to create change, but use tweak defaults: do not execute `openspec-explore` long exploration, directly enter streamlined change creation.
|
|
44
|
+
|
|
45
|
+
**Immediately execute:** Use the Skill tool to load the `openspec-new-change` skill. Skipping this step is prohibited.
|
|
46
|
+
|
|
47
|
+
After the skill loads, follow its guidance to create streamlined artifacts:
|
|
48
|
+
- `proposal.md` — change motivation + goals + scope
|
|
49
|
+
- `design.md` — brief implementation description (no solution comparison needed)
|
|
50
|
+
- `tasks.md` — no more than 3 tasks
|
|
51
|
+
- **No delta spec needed** (unless change modifies existing spec acceptance scenarios; once delta spec is needed, upgrade to full `/comet`)
|
|
52
|
+
|
|
53
|
+
Initialize Comet state file:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
"$COMET_BASH" "$COMET_STATE" init <name> tweak
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Verify initialized state:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
"$COMET_BASH" "$COMET_STATE" check <name> open
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Run phase guard to transition open → build:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
"$COMET_BASH" "$COMET_GUARD" <change-name> open --apply
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 2. Lightweight Build (preset build)
|
|
72
|
+
|
|
73
|
+
Use tweak defaults: `build_mode: direct`. Skip Superpowers `brainstorming` and `writing-plans`.
|
|
74
|
+
|
|
75
|
+
Before continuing or starting changes, handle uncommitted changes through `comet/reference/dirty-worktree.md`. If attribution shows scope exceeds tweak, handle it through this file's "Upgrade Conditions".
|
|
76
|
+
|
|
77
|
+
**Immediately execute:** Execute tasks one by one according to tasks.md:
|
|
78
|
+
|
|
79
|
+
1. Read `openspec/changes/<name>/tasks.md`, get incomplete task list
|
|
80
|
+
2. For each incomplete task:
|
|
81
|
+
- Modify target files according to task description
|
|
82
|
+
- Run project formatter (e.g., `mvn spotless:apply`, `npm run format`)
|
|
83
|
+
- Run related tests to confirm pass
|
|
84
|
+
- Check corresponding `- [ ]` to `- [x]` in tasks.md
|
|
85
|
+
- Commit code, commit message format: `tweak: <brief change description>`
|
|
86
|
+
3. After all tasks complete, explicitly run relevant project tests and build commands
|
|
87
|
+
4. Run phase guard to transition build → verify:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
State automatically updates to `phase: verify`, `verify_result: pending`, then enter verification.
|
|
94
|
+
|
|
95
|
+
During tweak execution, whenever running programs, tests, builds, or manual verification results in crashes, abnormal behavior, test failures, or build failures, you must use the Skill tool to load the Superpowers `systematic-debugging` skill. Do not propose or implement source code fixes before completing root cause investigation.
|
|
96
|
+
|
|
97
|
+
For specific investigation, minimal failing test, fix verification, and keeping the current change verification loop, follow `comet/reference/debug-gate.md`.
|
|
98
|
+
|
|
99
|
+
### 3. Lightweight Verification (preset verify)
|
|
100
|
+
|
|
101
|
+
Reuse `/comet-verify`. Tweak must maintain lightweight verification conditions: ≤ 3 tasks, ≤ 4 files, no delta spec, no new capability.
|
|
102
|
+
|
|
103
|
+
**Immediately execute:** Use the Skill tool to load the `comet-verify` skill. Skipping this step is prohibited.
|
|
104
|
+
|
|
105
|
+
If scale assessment enters full verification path, stop tweak, handle per upgrade conditions blocking confirmation.
|
|
106
|
+
|
|
107
|
+
After verification passes, record `.comet.yaml` `verify_result` as `pass` according to `/comet-verify` rules, must not skip this status before archiving. After verification passes, still enter `/comet-archive`'s final archive confirmation; do not automatically run the archive script.
|
|
108
|
+
|
|
109
|
+
### 4. Archive (preset archive)
|
|
110
|
+
|
|
111
|
+
Reuse `/comet-archive`. Must satisfy `verify_result: pass` in `.comet.yaml` before archiving, and wait for `/comet-archive`'s final archive confirmation.
|
|
112
|
+
|
|
113
|
+
**Immediately execute:** Use the Skill tool to load the `comet-archive` skill to archive. Skipping this step is prohibited.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Continuous Execution Mode
|
|
118
|
+
|
|
119
|
+
<IMPORTANT>
|
|
120
|
+
Tweak workflow is **one-time continuous execution**. After invoking `/comet-tweak`, agent must automatically advance through tweak steps, without pausing to wait for user input mid-way.
|
|
121
|
+
|
|
122
|
+
Exception: when `.comet.yaml` has `auto_transition: false`, after each phase guard advances `phase`, do not auto-invoke the next skill. In this case, use `"$COMET_BASH" "$COMET_STATE" next <name>` output and pause for manual continuation as instructed.
|
|
123
|
+
|
|
124
|
+
The following situations must pause and wait for user confirmation:
|
|
125
|
+
|
|
126
|
+
1. Encountering upgrade conditions (see "Upgrade Conditions" section). **Must use the current platform's available user input/confirmation mechanism to pause and wait for the user to explicitly confirm** upgrading to full workflow
|
|
127
|
+
2. verify phase (comet-verify) verification-failure and branch-handling decisions
|
|
128
|
+
3. Final archive confirmation (before comet-archive runs the archive script)
|
|
129
|
+
|
|
130
|
+
Execution order: quick open → lightweight build → lightweight verification → archive → complete
|
|
131
|
+
|
|
132
|
+
After each phase completes, immediately enter next phase. Within each phase, must still call corresponding Comet/OpenSpec/Superpowers skill according to above requirements; if the called skill has its own user decision points, follow that skill's rules.
|
|
133
|
+
</IMPORTANT>
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Upgrade Conditions
|
|
138
|
+
|
|
139
|
+
Upgrade to full `/comet` when **any** of the following conditions are met:
|
|
140
|
+
|
|
141
|
+
| Condition | Explanation |
|
|
142
|
+
|-----------|-------------|
|
|
143
|
+
| Change involves **5+ files** | Exceeds small change scope |
|
|
144
|
+
| Cross-module coordination required | Requires cross-component coordination |
|
|
145
|
+
| **5+** new test cases needed | Change complexity rising |
|
|
146
|
+
| Config item additions or deletions | Config changes beyond value modifications |
|
|
147
|
+
| New capability needed | Exceeds local optimization |
|
|
148
|
+
| Delta spec needed | Affects existing specs |
|
|
149
|
+
|
|
150
|
+
When upgrade conditions are met, **must follow the `comet/reference/decision-point.md` protocol to pause and wait for the user to explicitly confirm** upgrading to the full `/comet` workflow. Do not directly enter `/comet-design`, and do not automatically supplement Design Doc.
|
|
151
|
+
|
|
152
|
+
After user confirms upgrade, **must first update the workflow and phase fields** before entering full flow:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
"$COMET_BASH" "$COMET_STATE" set <name> workflow full
|
|
156
|
+
"$COMET_BASH" "$COMET_STATE" set <name> phase design
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Then on current change basis, supplement Design Doc: **Immediately use the Skill tool to load the `comet-design` skill**, proceed normally with full workflow. If user does not confirm upgrade, stop tweak and report that current change has exceeded tweak scope.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Exit Conditions
|
|
164
|
+
|
|
165
|
+
- Small change completed, tests pass
|
|
166
|
+
- Change archived
|
|
167
|
+
- No new capability, architecture adjustments or interface changes
|
|
168
|
+
- **Phase guard**: Before build → verify run `"$COMET_BASH" "$COMET_GUARD" <change-name> build --apply`; before verify → archive follow `/comet-verify` and run `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`
|
|
169
|
+
|
|
170
|
+
## Automatic Handoff to Next Phase
|
|
171
|
+
|
|
172
|
+
Follow `comet/reference/auto-transition.md`. Key command:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
"$COMET_BASH" "$COMET_STATE" next <name>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
- `NEXT: auto` → invoke the skill pointed to by `SKILL` to continue tweak workflow (`phase: build` returns `comet-tweak`, `verify` returns `comet-verify`, `archive` returns `comet-archive`)
|
|
179
|
+
- `NEXT: manual` → do not invoke the next skill; prompt user to manually run `/<SKILL>` per `HINT`
|
|
180
|
+
- `NEXT: done` → workflow is complete, no further action needed
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: comet-verify
|
|
3
|
+
description: "Comet Phase 4: Verify and Close. Invoke with /comet-verify. Verify implementation matches design, handle development branch."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Comet Phase 4: Verify and Close (Verify)
|
|
7
|
+
|
|
8
|
+
## Prerequisites
|
|
9
|
+
|
|
10
|
+
- Code committed (Phase 3 complete)
|
|
11
|
+
- All tasks.md tasks completed
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
### 0a. Output Language Constraint
|
|
16
|
+
|
|
17
|
+
Verification reports and branch-handling notes must use the language of the user request that triggered this workflow.
|
|
18
|
+
|
|
19
|
+
### 0b. Entry State Verification (Entry Check)
|
|
20
|
+
|
|
21
|
+
Execute entry verification:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
COMET_ENV="${COMET_ENV:-$(find . "$HOME"/.*/skills "$HOME/.config" "$HOME/.gemini" -path '*/comet/scripts/comet-env.sh' -type f -print -quit 2>/dev/null)}"
|
|
25
|
+
if [ -z "$COMET_ENV" ]; then
|
|
26
|
+
echo "ERROR: comet-env.sh not found. Ensure the comet skill is installed." >&2
|
|
27
|
+
return 1
|
|
28
|
+
fi
|
|
29
|
+
. "$COMET_ENV"
|
|
30
|
+
"$COMET_BASH" "$COMET_STATE" check <change-name> verify
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Proceed to Step 1 after verification passes. The script outputs specific failure reasons when verification fails.
|
|
34
|
+
|
|
35
|
+
**Idempotency**: All verify phase checks can be safely re-executed. If `verify_result` is already `pass` and `branch_status` is `handled`, verification is complete — execute guard to transition. If `verify_result` is `pending`, start verification from the beginning.
|
|
36
|
+
|
|
37
|
+
### 1. Scale Assessment
|
|
38
|
+
|
|
39
|
+
Execute scale assessment:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
"$COMET_BASH" "$COMET_STATE" scale <change-name>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The script automatically counts tasks, delta spec count, changed file count, determines light or full verification mode, and sets the verify_mode field. Decision rule (any condition triggers full): tasks > 3, delta spec capabilities > 1, changed files > 4.
|
|
46
|
+
|
|
47
|
+
Before verification begins, handle uncommitted changes through `comet/reference/dirty-worktree.md` protocol. Verify phase special handling:
|
|
48
|
+
|
|
49
|
+
1. If dirty diff belongs to current change and involves implementation, tests, tasks, delta spec, or design doc changes, do not fix or commit directly in verify phase; report failures and enter Step 1b verification failure decision blocking point
|
|
50
|
+
2. If dirty diff is only verify phase artifacts (e.g., verification report draft, branch handling records), may continue and record state in verify phase
|
|
51
|
+
3. If dirty diff shows implementation but tasks.md not checked, treat as build state lag; report failures and enter Step 1b, let user decide to roll back for fix or accept deviation
|
|
52
|
+
|
|
53
|
+
Only after user chooses fix, allow rollback to build phase:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Execute only after user confirms fix
|
|
57
|
+
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Note: When verify-fail rolls back to build, `branch_status` is not reset. If branch handling was already completed during the first verify attempt, skip the branch handling step on re-verify and keep the existing `branch_status: handled`.
|
|
61
|
+
|
|
62
|
+
Note: If every task in build phase was committed, the script's file count based on working tree diff may underestimate change scale. In this case, must read plan file header `base-ref` and verify with commit range:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
PLAN=$("$COMET_BASH" "$COMET_STATE" get <change-name> plan)
|
|
66
|
+
BASE_REF=$(grep '^base-ref:' "$PLAN" 2>/dev/null | head -1 | sed 's/^base-ref: *//')
|
|
67
|
+
git diff --stat "$BASE_REF"...HEAD
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If commit range shows changes exceed lightweight threshold (> 4 files, cross-module coordination, or delta spec spans more than 1 capability), manually set to full verification:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
"$COMET_BASH" "$COMET_STATE" set <change-name> verify_mode full
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Override mechanism**: If the agent or user believes the automated assessment is inappropriate, override at any time with `"$COMET_BASH" "$COMET_STATE" set <change-name> verify_mode <light|full>`.
|
|
77
|
+
|
|
78
|
+
### 1b. Verification Failure Decision (Blocking Point)
|
|
79
|
+
|
|
80
|
+
When verification does not pass, **must follow the `comet/reference/decision-point.md` protocol to pause and wait for the user to decide whether to fix or accept the deviation**. Must not automatically run `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`, nor automatically invoke `/comet-build`.
|
|
81
|
+
|
|
82
|
+
When pausing, must list:
|
|
83
|
+
- Failed items
|
|
84
|
+
- Whether CRITICAL or IMPORTANT (build failure, test failure, security issues, core acceptance scenario failure, lightweight code review correctness/security/edge-case issue)
|
|
85
|
+
- Recommended handling approach
|
|
86
|
+
|
|
87
|
+
**Uncertainty principle**: When severity is unclear, downgrade (SUGGESTION > WARNING > CRITICAL). Only use CRITICAL for build failures, test failures, and security issues; ambiguous or uncertain issues should be WARNING or SUGGESTION.
|
|
88
|
+
|
|
89
|
+
After user selection, continue as follows:
|
|
90
|
+
- **Fix all**: Run `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`, then invoke `/comet-build` to fix
|
|
91
|
+
- **Handle item by item**: CRITICAL or IMPORTANT failures must be fixed; WARNING/SUGGESTION failures may choose to accept deviation, but must record acceptance reason and impact scope in verification report. If any CRITICAL or IMPORTANT failure exists, skipping fix to accept all is not allowed
|
|
92
|
+
|
|
93
|
+
**Retry limit**: After 3 consecutive verify-fail cycles, on the 4th failure the agent must not automatically choose to continue fixing; **must use the current platform's available user input/confirmation mechanism to pause** with only two options: "Accept all deviations and record" or "Continue fixing", for the user to explicitly decide.
|
|
94
|
+
|
|
95
|
+
### 2. Artifact Context Loading (Hash On-Demand Read)
|
|
96
|
+
|
|
97
|
+
When verification needs to read OpenSpec artifacts, first check whether they have changed since the design phase:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
RECORDED_HASH=$("$COMET_BASH" "$COMET_STATE" get <change-name> handoff_hash)
|
|
101
|
+
CURRENT_HASH=$("$COMET_BASH" "$COMET_HANDOFF" <change-name> --hash-only 2>/dev/null || echo "")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- If `RECORDED_HASH` = `CURRENT_HASH` and both are non-empty and neither is `null`: OpenSpec artifacts are unchanged. **tasks.md does not need to be re-read in full** (use `grep -c '\- \[ \]' tasks.md` to confirm completion count). proposal.md, design.md, and delta specs must still be read for comparison checks.
|
|
105
|
+
- If `RECORDED_HASH` is empty, is `null`, or differs from `CURRENT_HASH`: artifacts have changed or hash was never recorded. Read all required files in full normally.
|
|
106
|
+
|
|
107
|
+
This optimization only skips re-reading tasks.md in full. proposal.md and design.md contain the full context needed for verification checks and must not be skipped due to hash match.
|
|
108
|
+
|
|
109
|
+
**Immediately execute:** Use the Skill tool to load the Superpowers `verification-before-completion` skill. Skipping this step is prohibited.
|
|
110
|
+
|
|
111
|
+
After the skill loads, follow the `verify_mode` branch:
|
|
112
|
+
|
|
113
|
+
### 2a. Lightweight Verification (Small Changes)
|
|
114
|
+
|
|
115
|
+
Run these 6 checks:
|
|
116
|
+
|
|
117
|
+
1. All tasks.md tasks completed `[x]`
|
|
118
|
+
2. Changed files match tasks.md descriptions (`git diff --stat` / `git diff --cached --stat` / `git diff --stat <base-ref>...HEAD` compared against tasks content)
|
|
119
|
+
3. Build passes (run project-specific build command, e.g., `npm run build`, `mvn compile`, `cargo build`, etc.)
|
|
120
|
+
4. Related tests pass
|
|
121
|
+
5. No obvious security issues (no hardcoded keys, no new unsafe operations)
|
|
122
|
+
6. Lightweight code review passes: use the Skill tool to load the Superpowers `requesting-code-review` skill and request a lightweight review that checks only correctness, security, and edge cases
|
|
123
|
+
|
|
124
|
+
The lightweight code review input should be limited to this change's diff, tasks.md, and necessary test results; the review scope covers implementation correctness, security risk, and edge cases only, and does not perform spec coverage, Design Doc consistency, or drift checks. If the review finds CRITICAL or IMPORTANT issues, treat verification as failed and enter Step 1b.
|
|
125
|
+
|
|
126
|
+
**Pass criteria**: All 6 items OK, no CRITICAL or IMPORTANT issues.
|
|
127
|
+
|
|
128
|
+
**When not passing**: Report failures, enter Step 1b verification failure decision blocking point. Only after user confirms fix, execute the following command to record failure and roll back to build phase, then invoke `/comet-build` to fix:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# Execute only after user confirms fix
|
|
132
|
+
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
**Report format**: Brief table listing 6 check results + PASS/FAIL.
|
|
136
|
+
|
|
137
|
+
**Skipped items** (not checked in lightweight verification):
|
|
138
|
+
- spec scenario coverage
|
|
139
|
+
- design doc consistency deep comparison
|
|
140
|
+
- code pattern consistency suggestions that do not affect correctness, security, or edge cases
|
|
141
|
+
- delta spec and design doc drift detection
|
|
142
|
+
|
|
143
|
+
### 2b. Full Verification (Large Changes)
|
|
144
|
+
|
|
145
|
+
When scale assessment result is "large":
|
|
146
|
+
|
|
147
|
+
**Immediately execute:** Use the Skill tool to load the `openspec-verify-change` skill. Skipping this step is prohibited.
|
|
148
|
+
|
|
149
|
+
After the skill loads, follow its guidance to verify. Check items:
|
|
150
|
+
1. All tasks.md tasks completed (`[x]`)
|
|
151
|
+
2. Implementation matches `openspec/changes/<name>/design.md` high-level design decisions
|
|
152
|
+
3. Implementation matches Design Doc (technical design documents under `docs/superpowers/specs/`)
|
|
153
|
+
4. All capability spec scenarios pass
|
|
154
|
+
5. proposal.md goals are satisfied
|
|
155
|
+
6. No contradictions between delta spec and design doc (if Build phase had incremental spec modifications, check if design doc has corresponding records)
|
|
156
|
+
7. Associated design documents under `docs/superpowers/specs/` are locatable (file exists and is related to current change)
|
|
157
|
+
|
|
158
|
+
When verification does not pass: report missing items, enter Step 1b verification failure decision blocking point. Only after user confirms fix, execute the following command to record failure and roll back to build phase, then invoke `/comet-build` to supplement:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Execute only after user confirms fix
|
|
162
|
+
"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Spec Drift Handling** (user decision point):
|
|
166
|
+
- If check item 6 finds contradictions (delta spec has content but design doc does not reflect it), **must use the current platform's available user input/confirmation mechanism as a single-select question to pause and wait for the user to choose the handling method**; must not select automatically. Options:
|
|
167
|
+
- Option A: Append "Implementation Divergence" section to design doc recording deviation reason. Option A is a verify phase allowed artifact; after writing, must not re-trigger Step 1b dirty-worktree decision due to that design doc change
|
|
168
|
+
- Option B: After user selects B, run `"$COMET_BASH" "$COMET_STATE" transition <change-name> verify-fail`, then invoke `/comet-build`; `/comet-build`'s Spec Incremental Update rules will load the Superpowers `brainstorming` skill to update Design Doc + delta spec
|
|
169
|
+
- Option C: Confirm deviation is acceptable, continue verification (design doc will be marked as `superseded-by-main-spec` during archiving)
|
|
170
|
+
|
|
171
|
+
### 3. Finishing (Superpowers)
|
|
172
|
+
|
|
173
|
+
**Immediately execute:** Use the Skill tool to load the Superpowers `finishing-a-development-branch` skill. Skipping this step is prohibited.
|
|
174
|
+
|
|
175
|
+
If the Superpowers `finishing-a-development-branch` skill is unavailable, stop the process and prompt to install or enable Superpowers skills. Do not substitute this step with normal conversation.
|
|
176
|
+
|
|
177
|
+
After the skill loads, follow its guidance to finish. Branch handling options:
|
|
178
|
+
1. Merge to main branch locally
|
|
179
|
+
2. Push and create PR
|
|
180
|
+
3. Keep branch (handle later)
|
|
181
|
+
4. Discard work
|
|
182
|
+
|
|
183
|
+
This is a user decision point. **Must follow the `comet/reference/decision-point.md` protocol to pause and wait for the user to choose branch handling method**. Must not select based on recommendations, defaults, or current branch status. Only after the user completes selection and the corresponding operation finishes, may `branch_status: handled` be written.
|
|
184
|
+
|
|
185
|
+
**Confirmation items**:
|
|
186
|
+
- All tests pass
|
|
187
|
+
- No hardcoded keys or security issues
|
|
188
|
+
|
|
189
|
+
### 4. Record Verification Evidence
|
|
190
|
+
|
|
191
|
+
Verification report must be saved to disk and recorded in `.comet.yaml`; after branch handling completes, state fields must also be written. Do not manually set `verify_result: pass`; use guard for auto-transition.
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
mkdir -p docs/superpowers/reports
|
|
195
|
+
# Write verification conclusions to report file, e.g.:
|
|
196
|
+
# docs/superpowers/reports/YYYY-MM-DD-<change-name>-verify.md
|
|
197
|
+
|
|
198
|
+
"$COMET_BASH" "$COMET_STATE" set <change-name> verification_report docs/superpowers/reports/YYYY-MM-DD-<change-name>-verify.md
|
|
199
|
+
"$COMET_BASH" "$COMET_STATE" set <change-name> branch_status handled
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Exit Conditions
|
|
203
|
+
|
|
204
|
+
- Verification report passed
|
|
205
|
+
- Branch handled
|
|
206
|
+
- `verification_report` in `.comet.yaml` points to an existing verification report file
|
|
207
|
+
- `branch_status: handled` in `.comet.yaml`
|
|
208
|
+
- **Phase guard**: Run `"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply`; after all PASS, auto-transitions to `phase: archive` through `comet-state transition verify-pass`
|
|
209
|
+
|
|
210
|
+
After both verification and branch handling are complete, run guard for auto-transition:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
"$COMET_BASH" "$COMET_GUARD" <change-name> verify --apply
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
State file auto-updates to `phase: archive`, `verify_result: pass`, `verified_at: YYYY-MM-DD`.
|
|
217
|
+
|
|
218
|
+
## Automatic Handoff to Next Phase
|
|
219
|
+
|
|
220
|
+
Follow `comet/reference/auto-transition.md`. Key command:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
"$COMET_BASH" "$COMET_STATE" next <change-name>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
- `NEXT: auto` → invoke the skill pointed to by `SKILL` to enter the next phase
|
|
227
|
+
- `NEXT: manual` → do not invoke the next skill; prompt user to run `/<SKILL>` manually
|
|
228
|
+
- `NEXT: done` → workflow is complete, no further action needed
|
|
229
|
+
|
|
230
|
+
Note: after `comet-archive` starts, it must first execute the final archive confirmation blocking point and wait for the user to explicitly choose "Confirm archive" before running the archive script. Must not automatically archive just because verification passed.
|
|
231
|
+
|
|
232
|
+
## Context Compression Recovery
|
|
233
|
+
|
|
234
|
+
Follow `comet/reference/context-recovery.md` with phase set to `verify`.
|