sillyspec 3.27.2 → 3.27.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/sillyspec-execute/SKILL.md +8 -0
- package/.claude/skills/sillyspec-quick/SKILL.md +2 -1
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-archive/SKILL.md +87 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-auto/SKILL.md +93 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-commit/SKILL.md +67 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-continue/SKILL.md +47 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-doctor/SKILL.md +76 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-execute/SKILL.md +214 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-explore/SKILL.md +102 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-export/SKILL.md +57 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-init/SKILL.md +177 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-plan/SKILL.md +156 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-quick/SKILL.md +116 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-resume/SKILL.md +70 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-scan/SKILL.md +79 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-state/SKILL.md +64 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-status/SKILL.md +54 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-verify/SKILL.md +87 -0
- package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-workspace/SKILL.md +175 -0
- package/.claude/worktrees/sillyspec-data-model-research/.gitattributes +2 -0
- package/.claude/worktrees/sillyspec-data-model-research/.husky/pre-push +20 -0
- package/.claude/worktrees/sillyspec-data-model-research/README.md +203 -0
- package/.claude/worktrees/sillyspec-data-model-research/SKILL.md +91 -0
- package/.claude/worktrees/sillyspec-data-model-research/bin/sillyspec.js +2 -0
- package/.claude/worktrees/sillyspec-data-model-research/logo.jpg +0 -0
- package/.claude/worktrees/sillyspec-data-model-research/package-lock.json +977 -0
- package/.claude/worktrees/sillyspec-data-model-research/package.json +39 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/dist/favicon.jpg +0 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/dist/index.html +16 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/dist/logo.jpg +0 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/dist/prototype-dashboard.html +836 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/dist/prototype-overview.html +256 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/package.json +25 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/server/executor.js +95 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/server/index.js +679 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/server/parser.js +526 -0
- package/.claude/worktrees/sillyspec-data-model-research/packages/dashboard/server/watcher.js +357 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/agent-session-log.js +803 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/change-list.js +290 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/change-risk-profile.js +270 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/check-primitives.js +65 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/classify-change.js +109 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/commit-suggest.js +202 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/config-cat.js +88 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/config-schema.js +328 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/constants.js +97 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/contract-matrix.js +480 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/datetime.js +20 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/db-engine.js +55 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/db.js +381 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/decision-distill.js +517 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/dispatch/backends/local-agent.js +155 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/dispatch/backends/sillyhub-mcp.js +245 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/dispatch/probe.js +246 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/dispatch/strategy.js +121 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/docs-check.js +825 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/docs-debt.js +393 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/docs-gate.js +107 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/doctor-diagnostics.js +1099 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/endpoint-extractor.js +420 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/foreign-declared.js +78 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/fs-atomic.js +73 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/git-helper.js +150 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/hooks/claude-pre-tool-use.cjs +130 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/hooks/worktree-guard.js +892 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/index.js +2798 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/init.js +626 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/knowledge-match.js +231 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/local-detect.js +128 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/local-register.js +104 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/machine-interface.js +543 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/migrate.js +127 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/module-impact.js +166 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/module-resolve.js +222 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/modules.js +580 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/progress/change-registry.js +336 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/progress/consistency-doctor.js +355 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/progress/shared.js +36 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/progress/stage-machine.js +594 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/progress/step-store.js +265 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/progress.js +1304 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/quick-recommend.js +115 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/quicklog.js +852 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/review-tier.js +77 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/command.js +1595 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/complete-handlers.js +1552 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/complete.js +1259 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/concurrent-detect.js +156 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/gates.js +1084 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/multi-repo-context.js +208 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/next.js +128 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/prompt.js +843 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/quick-audit.js +186 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/scan-profile.js +269 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/shared.js +1562 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run/stage.js +584 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/run.js +23 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/scan-diff.js +388 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/scan-postcheck.js +512 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/scan-staleness.js +95 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/setup.js +414 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/sillyhub-mcp/client.js +597 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/sillyhub-mcp/config.js +62 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/spec-dir-typo.js +50 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/spec-sync.js +358 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stage-contract-engine.js +171 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stage-contract-spec.js +550 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stage-contract.js +889 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stage-review.js +597 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/archive.js +199 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/brainstorm-auto.js +236 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/brainstorm.js +617 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/cmd-existence.js +145 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/doctor.js +540 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/execute.js +1275 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/explore.js +43 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/index.js +29 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/knowledge.js +514 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/plan-postcheck.js +1344 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/plan.js +650 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/quick.js +167 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/scan.js +608 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/status.js +64 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/stages/verify.js +246 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/sync.js +1470 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/task-review.js +1498 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/taskcard.js +210 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/verify-postcheck.js +1718 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/verify-probes.js +277 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/version.js +19 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/workflow.js +600 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/workspace.js +125 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/worktree-apply.js +1446 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/worktree-deps.js +576 -0
- package/.claude/worktrees/sillyspec-data-model-research/src/worktree.js +1715 -0
- package/.claude/worktrees/sillyspec-data-model-research/templates/claude-instruction.md +23 -0
- package/.claude/worktrees/sillyspec-data-model-research/templates/prompts/taskcard-rules.md +28 -0
- package/.claude/worktrees/sillyspec-data-model-research/templates/prompts/testcase-design.md +12 -0
- package/.claude/worktrees/sillyspec-data-model-research/templates/prompts/verify-probes.md +32 -0
- package/.claude/worktrees/sillyspec-data-model-research/templates/workflows/archive-impact.yaml +79 -0
- package/.claude/worktrees/sillyspec-data-model-research/templates/workflows/scan-docs.yaml +132 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-archive/SKILL.md +87 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-auto/SKILL.md +93 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-commit/SKILL.md +67 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-continue/SKILL.md +47 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-doctor/SKILL.md +76 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-execute/SKILL.md +214 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-explore/SKILL.md +102 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-export/SKILL.md +57 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-init/SKILL.md +177 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-knowledge/SKILL.md +270 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-plan/SKILL.md +156 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-propose/SKILL.md +87 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-quick/SKILL.md +116 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-resume/SKILL.md +70 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-scan/SKILL.md +79 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-state/SKILL.md +64 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-status/SKILL.md +54 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-verify/SKILL.md +87 -0
- package/.worktrees/8d2d0392/.claude/skills/sillyspec-workspace/SKILL.md +175 -0
- package/.worktrees/8d2d0392/.claude/skills/verify-per-user/SKILL.md +6 -0
- package/.worktrees/8d2d0392/.gitattributes +2 -0
- package/.worktrees/8d2d0392/.husky/pre-push +20 -0
- package/.worktrees/8d2d0392/README.md +203 -0
- package/.worktrees/8d2d0392/SKILL.md +91 -0
- package/.worktrees/8d2d0392/architecture-analysis.md +448 -0
- package/.worktrees/8d2d0392/bin/sillyspec.js +2 -0
- package/.worktrees/8d2d0392/eval/README.md +86 -0
- package/.worktrees/8d2d0392/eval/eval.config.json +28 -0
- package/.worktrees/8d2d0392/eval/lib/adapters/cli.mjs +63 -0
- package/.worktrees/8d2d0392/eval/lib/adapters/dryrun.mjs +27 -0
- package/.worktrees/8d2d0392/eval/lib/config.mjs +82 -0
- package/.worktrees/8d2d0392/eval/lib/db.mjs +76 -0
- package/.worktrees/8d2d0392/eval/lib/report.mjs +120 -0
- package/.worktrees/8d2d0392/eval/lib/runner.mjs +157 -0
- package/.worktrees/8d2d0392/eval/lib/tasks.mjs +73 -0
- package/.worktrees/8d2d0392/eval/lib/util.mjs +107 -0
- package/.worktrees/8d2d0392/eval/lib/workdir.mjs +30 -0
- package/.worktrees/8d2d0392/eval/run.mjs +83 -0
- package/.worktrees/8d2d0392/eval/tasks/001-slugify/files/package.json +6 -0
- package/.worktrees/8d2d0392/eval/tasks/001-slugify/solution/src/slugify.mjs +26 -0
- package/.worktrees/8d2d0392/eval/tasks/001-slugify/task.json +6 -0
- package/.worktrees/8d2d0392/eval/tasks/001-slugify/verify.mjs +28 -0
- package/.worktrees/8d2d0392/eval/tasks/002-each-day/files/package.json +6 -0
- package/.worktrees/8d2d0392/eval/tasks/002-each-day/files/src/dates.mjs +4 -0
- package/.worktrees/8d2d0392/eval/tasks/002-each-day/solution/src/dates.mjs +30 -0
- package/.worktrees/8d2d0392/eval/tasks/002-each-day/task.json +6 -0
- package/.worktrees/8d2d0392/eval/tasks/002-each-day/verify.mjs +31 -0
- package/.worktrees/8d2d0392/eval/tasks/003-word-report/files/data/notes.txt +5 -0
- package/.worktrees/8d2d0392/eval/tasks/003-word-report/files/package.json +6 -0
- package/.worktrees/8d2d0392/eval/tasks/003-word-report/solution/bin/report.mjs +36 -0
- package/.worktrees/8d2d0392/eval/tasks/003-word-report/task.json +6 -0
- package/.worktrees/8d2d0392/eval/tasks/003-word-report/verify.mjs +38 -0
- package/.worktrees/8d2d0392/logo.jpg +0 -0
- package/.worktrees/8d2d0392/package-lock.json +977 -0
- package/.worktrees/8d2d0392/package.json +41 -0
- package/.worktrees/8d2d0392/packages/dashboard/dist/assets/index-Bq_Z2hne.js +7446 -0
- package/.worktrees/8d2d0392/packages/dashboard/dist/assets/index-O2W5RV4z.css +1 -0
- package/.worktrees/8d2d0392/packages/dashboard/dist/favicon.jpg +0 -0
- package/.worktrees/8d2d0392/packages/dashboard/dist/index.html +16 -0
- package/.worktrees/8d2d0392/packages/dashboard/dist/logo.jpg +0 -0
- package/.worktrees/8d2d0392/packages/dashboard/dist/prototype-dashboard.html +836 -0
- package/.worktrees/8d2d0392/packages/dashboard/dist/prototype-overview.html +256 -0
- package/.worktrees/8d2d0392/packages/dashboard/package.json +25 -0
- package/.worktrees/8d2d0392/packages/dashboard/server/executor.js +95 -0
- package/.worktrees/8d2d0392/packages/dashboard/server/index.js +679 -0
- package/.worktrees/8d2d0392/packages/dashboard/server/parser.js +526 -0
- package/.worktrees/8d2d0392/packages/dashboard/server/watcher.js +357 -0
- package/.worktrees/8d2d0392/src/agent-session-log.js +803 -0
- package/.worktrees/8d2d0392/src/change-list.js +290 -0
- package/.worktrees/8d2d0392/src/change-risk-profile.js +339 -0
- package/.worktrees/8d2d0392/src/check-primitives.js +65 -0
- package/.worktrees/8d2d0392/src/classify-change.js +109 -0
- package/.worktrees/8d2d0392/src/commit-suggest.js +202 -0
- package/.worktrees/8d2d0392/src/config-cat.js +88 -0
- package/.worktrees/8d2d0392/src/config-schema.js +328 -0
- package/.worktrees/8d2d0392/src/constants.js +97 -0
- package/.worktrees/8d2d0392/src/contract-matrix.js +533 -0
- package/.worktrees/8d2d0392/src/datetime.js +20 -0
- package/.worktrees/8d2d0392/src/db-engine.js +55 -0
- package/.worktrees/8d2d0392/src/db.js +381 -0
- package/.worktrees/8d2d0392/src/decision-distill.js +517 -0
- package/.worktrees/8d2d0392/src/dispatch/backends/local-agent.js +155 -0
- package/.worktrees/8d2d0392/src/dispatch/backends/sillyhub-mcp.js +245 -0
- package/.worktrees/8d2d0392/src/dispatch/probe.js +246 -0
- package/.worktrees/8d2d0392/src/dispatch/strategy.js +121 -0
- package/.worktrees/8d2d0392/src/docs-check.js +825 -0
- package/.worktrees/8d2d0392/src/docs-debt.js +393 -0
- package/.worktrees/8d2d0392/src/docs-gate.js +107 -0
- package/.worktrees/8d2d0392/src/doctor-diagnostics.js +1099 -0
- package/.worktrees/8d2d0392/src/endpoint-extractor.js +409 -0
- package/.worktrees/8d2d0392/src/foreign-declared.js +78 -0
- package/.worktrees/8d2d0392/src/fs-atomic.js +73 -0
- package/.worktrees/8d2d0392/src/git-helper.js +150 -0
- package/.worktrees/8d2d0392/src/hooks/claude-pre-tool-use.cjs +130 -0
- package/.worktrees/8d2d0392/src/hooks/worktree-guard.js +892 -0
- package/.worktrees/8d2d0392/src/index.js +2854 -0
- package/.worktrees/8d2d0392/src/init.js +626 -0
- package/.worktrees/8d2d0392/src/knowledge-match.js +231 -0
- package/.worktrees/8d2d0392/src/local-detect.js +128 -0
- package/.worktrees/8d2d0392/src/local-register.js +104 -0
- package/.worktrees/8d2d0392/src/machine-interface.js +543 -0
- package/.worktrees/8d2d0392/src/migrate.js +127 -0
- package/.worktrees/8d2d0392/src/module-impact.js +166 -0
- package/.worktrees/8d2d0392/src/module-resolve.js +222 -0
- package/.worktrees/8d2d0392/src/modules.js +580 -0
- package/.worktrees/8d2d0392/src/plan-adopt-waves.js +126 -0
- package/.worktrees/8d2d0392/src/progress/change-registry.js +336 -0
- package/.worktrees/8d2d0392/src/progress/consistency-doctor.js +355 -0
- package/.worktrees/8d2d0392/src/progress/shared.js +36 -0
- package/.worktrees/8d2d0392/src/progress/stage-machine.js +594 -0
- package/.worktrees/8d2d0392/src/progress/step-store.js +265 -0
- package/.worktrees/8d2d0392/src/progress.js +1304 -0
- package/.worktrees/8d2d0392/src/quick-recommend.js +115 -0
- package/.worktrees/8d2d0392/src/quicklog.js +883 -0
- package/.worktrees/8d2d0392/src/review-tier.js +77 -0
- package/.worktrees/8d2d0392/src/run/command.js +1641 -0
- package/.worktrees/8d2d0392/src/run/complete-handlers.js +1552 -0
- package/.worktrees/8d2d0392/src/run/complete.js +1259 -0
- package/.worktrees/8d2d0392/src/run/concurrent-detect.js +156 -0
- package/.worktrees/8d2d0392/src/run/gates.js +1094 -0
- package/.worktrees/8d2d0392/src/run/multi-repo-context.js +208 -0
- package/.worktrees/8d2d0392/src/run/next.js +128 -0
- package/.worktrees/8d2d0392/src/run/prompt.js +843 -0
- package/.worktrees/8d2d0392/src/run/quick-audit.js +186 -0
- package/.worktrees/8d2d0392/src/run/scan-profile.js +269 -0
- package/.worktrees/8d2d0392/src/run/shared.js +1562 -0
- package/.worktrees/8d2d0392/src/run/stage.js +587 -0
- package/.worktrees/8d2d0392/src/run.js +23 -0
- package/.worktrees/8d2d0392/src/scan-diff.js +388 -0
- package/.worktrees/8d2d0392/src/scan-postcheck.js +524 -0
- package/.worktrees/8d2d0392/src/scan-staleness.js +95 -0
- package/.worktrees/8d2d0392/src/setup.js +414 -0
- package/.worktrees/8d2d0392/src/sillyhub-mcp/client.js +597 -0
- package/.worktrees/8d2d0392/src/sillyhub-mcp/config.js +62 -0
- package/.worktrees/8d2d0392/src/spec-dir-typo.js +50 -0
- package/.worktrees/8d2d0392/src/spec-sync.js +358 -0
- package/.worktrees/8d2d0392/src/stage-contract-engine.js +171 -0
- package/.worktrees/8d2d0392/src/stage-contract-spec.js +551 -0
- package/.worktrees/8d2d0392/src/stage-contract.js +948 -0
- package/.worktrees/8d2d0392/src/stage-review.js +597 -0
- package/.worktrees/8d2d0392/src/stages/archive.js +199 -0
- package/.worktrees/8d2d0392/src/stages/brainstorm-auto.js +285 -0
- package/.worktrees/8d2d0392/src/stages/brainstorm.js +624 -0
- package/.worktrees/8d2d0392/src/stages/cmd-existence.js +145 -0
- package/.worktrees/8d2d0392/src/stages/doctor.js +540 -0
- package/.worktrees/8d2d0392/src/stages/execute.js +1277 -0
- package/.worktrees/8d2d0392/src/stages/explore.js +43 -0
- package/.worktrees/8d2d0392/src/stages/index.js +29 -0
- package/.worktrees/8d2d0392/src/stages/knowledge.js +514 -0
- package/.worktrees/8d2d0392/src/stages/plan-postcheck.js +1398 -0
- package/.worktrees/8d2d0392/src/stages/plan.js +651 -0
- package/.worktrees/8d2d0392/src/stages/quick.js +167 -0
- package/.worktrees/8d2d0392/src/stages/scan.js +608 -0
- package/.worktrees/8d2d0392/src/stages/status.js +64 -0
- package/.worktrees/8d2d0392/src/stages/verify.js +246 -0
- package/.worktrees/8d2d0392/src/sync.js +1470 -0
- package/.worktrees/8d2d0392/src/task-review.js +1498 -0
- package/.worktrees/8d2d0392/src/taskcard-placeholders.js +21 -0
- package/.worktrees/8d2d0392/src/taskcard.js +217 -0
- package/.worktrees/8d2d0392/src/verify-postcheck.js +1718 -0
- package/.worktrees/8d2d0392/src/verify-probes.js +327 -0
- package/.worktrees/8d2d0392/src/version.js +19 -0
- package/.worktrees/8d2d0392/src/workflow.js +600 -0
- package/.worktrees/8d2d0392/src/workspace.js +125 -0
- package/.worktrees/8d2d0392/src/worktree-apply.js +1611 -0
- package/.worktrees/8d2d0392/src/worktree-deps.js +576 -0
- package/.worktrees/8d2d0392/src/worktree.js +1838 -0
- package/.worktrees/8d2d0392/templates/claude-instruction.md +23 -0
- package/.worktrees/8d2d0392/templates/prompts/taskcard-rules.md +29 -0
- package/.worktrees/8d2d0392/templates/prompts/testcase-design.md +12 -0
- package/.worktrees/8d2d0392/templates/prompts/verify-probes.md +32 -0
- package/.worktrees/8d2d0392/templates/workflows/archive-impact.yaml +79 -0
- package/.worktrees/8d2d0392/templates/workflows/scan-docs.yaml +132 -0
- package/architecture-analysis.md +448 -0
- package/eval/README.md +86 -0
- package/eval/eval.config.json +28 -0
- package/eval/lib/adapters/cli.mjs +63 -0
- package/eval/lib/adapters/dryrun.mjs +27 -0
- package/eval/lib/config.mjs +82 -0
- package/eval/lib/db.mjs +76 -0
- package/eval/lib/report.mjs +120 -0
- package/eval/lib/runner.mjs +157 -0
- package/eval/lib/tasks.mjs +73 -0
- package/eval/lib/util.mjs +107 -0
- package/eval/lib/workdir.mjs +30 -0
- package/eval/run.mjs +83 -0
- package/eval/tasks/001-slugify/files/package.json +6 -0
- package/eval/tasks/001-slugify/solution/src/slugify.mjs +26 -0
- package/eval/tasks/001-slugify/task.json +6 -0
- package/eval/tasks/001-slugify/verify.mjs +28 -0
- package/eval/tasks/002-each-day/files/package.json +6 -0
- package/eval/tasks/002-each-day/files/src/dates.mjs +4 -0
- package/eval/tasks/002-each-day/solution/src/dates.mjs +30 -0
- package/eval/tasks/002-each-day/task.json +6 -0
- package/eval/tasks/002-each-day/verify.mjs +31 -0
- package/eval/tasks/003-word-report/files/data/notes.txt +5 -0
- package/eval/tasks/003-word-report/files/package.json +6 -0
- package/eval/tasks/003-word-report/solution/bin/report.mjs +36 -0
- package/eval/tasks/003-word-report/task.json +6 -0
- package/eval/tasks/003-word-report/verify.mjs +38 -0
- package/package.json +4 -2
- package/src/agent-session-log.js +45 -5
- package/src/change-risk-profile.js +83 -14
- package/src/config-schema.js +18 -3
- package/src/contract-matrix.js +90 -29
- package/src/datetime.js +20 -0
- package/src/decision-distill.js +517 -0
- package/src/dispatch/backends/local-agent.js +4 -4
- package/src/docs-check.js +227 -0
- package/src/docs-debt.js +187 -24
- package/src/doctor-diagnostics.js +102 -2
- package/src/endpoint-extractor.js +41 -52
- package/src/foreign-declared.js +155 -0
- package/src/index.js +95 -13
- package/src/init.js +9 -7
- package/src/knowledge-match.js +107 -6
- package/src/local-register.js +7 -1
- package/src/module-resolve.js +12 -1
- package/src/modules.js +2 -1
- package/src/plan-adopt-waves.js +126 -0
- package/src/quicklog.js +50 -4
- package/src/run/command.js +124 -44
- package/src/run/complete-handlers.js +48 -19
- package/src/run/complete.js +5 -2
- package/src/run/gates.js +104 -22
- package/src/run/prompt.js +84 -42
- package/src/run/quick-audit.js +11 -0
- package/src/run/shared.js +152 -10
- package/src/run/stage.js +8 -5
- package/src/run.js +2 -2
- package/src/scan-postcheck.js +30 -17
- package/src/stage-contract-spec.js +3 -2
- package/src/stage-contract.js +68 -4
- package/src/stages/archive.js +53 -12
- package/src/stages/brainstorm-auto.js +50 -1
- package/src/stages/brainstorm.js +13 -0
- package/src/stages/doctor.js +157 -1
- package/src/stages/execute.js +32 -6
- package/src/stages/plan-postcheck.js +76 -17
- package/src/stages/plan.js +9 -4
- package/src/stages/quick.js +6 -1
- package/src/stages/verify.js +32 -15
- package/src/sync.js +41 -3
- package/src/task-review.js +2 -2
- package/src/taskcard-placeholders.js +21 -0
- package/src/taskcard.js +43 -1
- package/src/verify-postcheck.js +315 -13
- package/src/verify-probes.js +73 -10
- package/src/worktree-apply.js +569 -227
- package/src/worktree-deps.js +150 -1
- package/src/worktree.js +285 -77
- package/templates/prompts/taskcard-rules.md +2 -1
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:quick
|
|
3
|
+
description: 用于明确、低风险、范围很小的直接任务。适合用户说"直接改、快速修、顺手调整、改个文案、修个小 bug、更新一个文件、不要完整流程"。跳过 brainstorm/plan,但仍按 sillyspec quick 流程执行。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 何时使用
|
|
7
|
+
|
|
8
|
+
- 明确、低风险、范围小的直接修改:改文案、修小 bug、更新单个文件
|
|
9
|
+
- 用户说"直接改、快速修、顺手调整、不要完整流程"
|
|
10
|
+
- brainstorm 判定 `scale=small` 的变更:带 design.md 进 quick(`sillyspec run quick --linked-changes <变更名>`),design 当背景
|
|
11
|
+
- 跳过 brainstorm/plan,但仍走 quick 的 3 步流程(理解任务 → 实现 → 自检提交)
|
|
12
|
+
|
|
13
|
+
## 多变更说明(quick 特殊,务必注意)
|
|
14
|
+
|
|
15
|
+
quick 阶段的 `--change` 语义是「关联变更」**且会触发步骤重置**,**不要用 `--change` 来指定关联变更**。多活跃变更时改用:
|
|
16
|
+
|
|
17
|
+
- `--linked-changes none`:不关联,仅记 QUICKLOG(CLI 启动时写入)
|
|
18
|
+
- `--linked-changes a,b`:显式关联到变更 a、b
|
|
19
|
+
- `--non-interactive`:CI/脚本环境,默认不关联(避免交互 prompt 崩溃)
|
|
20
|
+
|
|
21
|
+
首次 `sillyspec run quick` 选定的关联会持久化到 `.runtime/quick-sessions/<quick-session-id>/guard.json`(每个 quick 会话独立,多会话并发不互覆盖),后续 `--done` 自动复用,**不会重复弹交互 prompt**。
|
|
22
|
+
|
|
23
|
+
## 步骤生命周期(所有阶段通用)
|
|
24
|
+
|
|
25
|
+
> `sillyspec quick` 是 `sillyspec run quick` 的顶层别名,两者等价。
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
sillyspec run quick # 输出当前步骤 prompt(首次会记录 baseline)
|
|
29
|
+
sillyspec run quick --done --output "摘要" # 完成当前步骤
|
|
30
|
+
sillyspec run quick --status # 查看阶段进度
|
|
31
|
+
sillyspec run quick --skip # 跳过可选步骤
|
|
32
|
+
sillyspec run quick --reset # 重置阶段(从头开始)
|
|
33
|
+
sillyspec run quick --reopen --from-step N # 重新打开已完成阶段修订(N=序号或名称)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 已有进行中会话的恢复(sessionId)
|
|
37
|
+
|
|
38
|
+
`sillyspec run quick` / `run quick --done` / `--status` **不带 `--change` 时,是启动一个新 quick 会话**(CLI 分配新 `quick-<hash>` + 新 ql-ID,QUICKLOG 追加「进行中」条目),不是恢复正在进行的旧会话。多会话并发或中断恢复时,必须带上启动时 CLI 打印的 sessionId:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
sillyspec run quick --change quick-<hash> # 恢复查看该会话当前 step prompt
|
|
42
|
+
sillyspec run quick --done --change quick-<hash> --output "…" # 完成该会话步骤
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- 这里的 `--change quick-<hash>` 是「恢复到该 CLI 生成的 session」,与下方 `--linked-changes` 的关联业务变更语义不同:想关联真实业务变更才用 `--linked-changes`。
|
|
46
|
+
- 误启动的空壳会话:`sillyspec run quick --cancel --change quick-<hash>` 一键取消(QUICKLOG 条目翻「已取消」+ tasks.md 挂载行移除 + 会话目录清理 + db 行注销;已完成/已勾选的拒绝取消)。
|
|
47
|
+
|
|
48
|
+
## 通用参数(所有阶段适用)
|
|
49
|
+
|
|
50
|
+
| 参数 | 说明 |
|
|
51
|
+
|---|---|
|
|
52
|
+
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
53
|
+
| `--input "<一句话任务描述>"` | 通用参数,**quick 启动时强烈建议带**:作为 QUICKLOG 条目标题,条目从第一分钟即语义可读。不带则落「(quick 任务)」占位标题——平台「快速修复」列表默认隐藏进行中的占位条目,语义标题要到最终 `--done` 才回填(关联变更有 proposal/design 标题时可自动提取,免传) |
|
|
54
|
+
| `--non-interactive` | CI/脚本下禁用交互式 prompt |
|
|
55
|
+
| `--interactive` | 强制交互(即便 stdin 非 TTY) |
|
|
56
|
+
| `--skip-approval` | 跳过阶段转换/审批检查(不能跳产物校验 gate——review.json/文档产物硬校验仍在) |
|
|
57
|
+
|
|
58
|
+
## quick 特有参数
|
|
59
|
+
|
|
60
|
+
| 参数 | 说明 |
|
|
61
|
+
|---|---|
|
|
62
|
+
| `--linked-changes none\|a,b` | **显式关联变更(取代 `--change`,推荐)**。none=不关联,a,b=关联列表 |
|
|
63
|
+
| `--files a.js,b.js` | 显式声明本次允许修改的文件(边界保护 + 声明即归属:多 agent 并发仓防他者窗口文件混入 QUICKLOG 文件行,未声明窗口文件进「审计:」行追溯;**他向亦然**——其他 active 会话已声明的文件在你的 `--done` 审计中自动剔除归该会话,不再误拦、无需 `--force-baseline`)。**中途可追加**:发现要改声明外文件(如新写的测试)时,带新增文件恢复会话即并入边界(追加不替换)——`sillyspec run quick --files <新增> --change <sessionId>`;不带 `--files` 恢复则边界原样保留 |
|
|
64
|
+
| `--file-notes "p::注 \|\| p::注"` | quick `--done` 用:QUICKLOG「文件:」行落盘为多行带括注 bullet(省事后手改文件行)。格式 `path::括注`,`\|\|` 分隔多条;**只随 step3 --done 同命令传**(CLI 短进程,step1/step2 传无效,不带到 step3) |
|
|
65
|
+
| `--allow-new` | 允许新增文件(默认禁止,防意外创建) |
|
|
66
|
+
| `--allow-delete` | 允许删除文件(默认 fail-closed,删除是破坏性操作;确认删除带此 flag 显式解锁) |
|
|
67
|
+
| `--force-baseline` | 允许覆盖 baseline 受保护文件 / 压制 `.sillyspec/` 危险判定(危险,慎用) |
|
|
68
|
+
| `--confirm` | ⚠️ 仅打印变更概览,**不解锁 blocked**(blocked 仍 exit 1)。真正解锁用 `--force-baseline`/`--allow-new`/`--allow-delete` |
|
|
69
|
+
|
|
70
|
+
## 审计与并发变更(`--done` 边界审计)
|
|
71
|
+
|
|
72
|
+
`--done` 收尾时对比 step1 baseline 与当前 `git status`,拦「危险文件 / 新增文件 / 覆盖 baseline」。要点:
|
|
73
|
+
|
|
74
|
+
- **并发其他会话的 `.sillyspec/changes/<非关联变更>/` 不再被本 quick 拦截**。quick 自己没有 `changes/` 目录,该路径下非关联内容视为并发会话的工作,整体放行(确定性审计无法区分「并发工作」与「本 quick 偷建变更」,后者这类意图软判定留给 sillyhub)。
|
|
75
|
+
- **其他 active 会话已声明的文件自动豁免(`--files` 的他向语义)**。多 agent 并发时,并行 quick 会话 `--files` 显式声明的文件(如它的 `daemon/router.py`)出现在你的窗口内(它在你启动后改的、不在你的 baseline)——`--done` 审计自动剔除归该会话边界管,不再判危险 BLOCK、无需 `--force-baseline`。放行可见:输出 🔗 软警告逐文件列归属会话;若确系你的改动,恢复会话时 `--files` 追加声明;超 7 天未收尾的僵尸会话声明自动失效(`sillyspec run quick --cancel --change <他者会话ID>` 清理)。豁免只认他者**显式声明**——未声明的他者文件照旧走各门判定(漏声明的补 `--files`,危险文件仍需 `--force-baseline`)。
|
|
76
|
+
- **关联变更的文件仍走审计**:reverse-sync 改自己关联变更的 `design.md` 会被拦,需 `--force-baseline` 显式确认。
|
|
77
|
+
- **baseline 折叠目录前缀匹配**:step1 启动时整片 `changes/` 未跟踪会被 git 折叠成 `?? .sillyspec/changes/`(带尾斜杠 token);审计时若该目录下文件被并发会话跟踪而展开成文件级路径,按尾斜杠 token 前缀放行其下所有文件,不误判。
|
|
78
|
+
- **同文件并发 warn(advisory,不阻断)**:step1 启动时若你的某个 `allowedFile` 已在他者脏文件列表里(他者也改了这文件),--done 时 CLI 会比对当前内容 hash 与启动时录入的 hash——不一致(你也改了它)即判「同文件并发」并 warn:整文件 pathspec 提交会夹带他者 hunk。warn 给出分离指引(`git add -p <file>` 交互选你自己的 hunk,或 `git diff <file> > mine.patch` 编辑后 `git apply --cached mine.patch` 再 commit)。这**不阻断** --done(你可能有意整文件提交),看 warn 后自行决定是否分离。
|
|
79
|
+
- **`--confirm` ≠ 解锁**:它只打印概览。blocked 时真正解锁的是 `--force-baseline`(压制 `.sillyspec/` 危险判定 + baseline 覆盖)/`--allow-new`(放行新增)/`--allow-delete`(放行删除,删除是破坏性操作默认 fail-closed,须显式 opt-in),三者可在 step1 或 `--done` 传,都生效。
|
|
80
|
+
|
|
81
|
+
## 典型用法
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# 推荐启动:带一句话语义标题(QUICKLOG/平台快速修复列表进行中即可见可读)
|
|
85
|
+
sillyspec run quick --input "修复登录限流 INCR 计数误清" --linked-changes none --files src/auth.ts
|
|
86
|
+
|
|
87
|
+
# 单变更项目,直接开始
|
|
88
|
+
sillyspec run quick
|
|
89
|
+
|
|
90
|
+
# 多变更项目,显式不关联
|
|
91
|
+
sillyspec run quick --linked-changes none
|
|
92
|
+
|
|
93
|
+
# 多变更项目,关联到指定变更
|
|
94
|
+
sillyspec run quick --linked-changes 2026-07-03-add-login
|
|
95
|
+
|
|
96
|
+
# CI/脚本(非交互,避免 prompt 崩溃)
|
|
97
|
+
sillyspec run quick --non-interactive
|
|
98
|
+
sillyspec run quick --done --linked-changes none --output "修复手机号校验"
|
|
99
|
+
|
|
100
|
+
# 限定修改文件范围
|
|
101
|
+
sillyspec run quick --files src/phone.ts,src/phone.test.ts
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 铁律
|
|
105
|
+
|
|
106
|
+
- **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
|
|
107
|
+
- quick 直接在主工作区改代码(不创建 worktree),范围必须小且明确
|
|
108
|
+
- 完成后立即 `--done`,不跳过
|
|
109
|
+
- QUICKLOG 记录的**骨架由 CLI 接管**:启动时 CLI 自动分配 ql-ID 并在 `.sillyspec/quicklog/QUICKLOG-<user>.md` 写「进行中」条目(含关联变更 tasks.md),`--done` 时 CLI 自动翻「已完成」+ 勾选 task + 回填文件路径。ql-ID 分配/状态/task 你无需手写,只需用注入的 `<quicklog-id>` 在模块文档变更索引引用
|
|
110
|
+
- **QUICKLOG 落盘已结构化(`--done` 后按需核对,多数无需手改)**:CLI 已落盘结构化条目——标题从 `--output` 的「需求:」自动提取、正文四字段自动分行、文件行用 `--file-notes` 时为多行带括注。`--done` 后只需核对:标题弱才改(禁留 `(quick 任务)` 占位);没用 `--file-notes` 时文件行是单行、可事后补括注(参照同文件早期丰富条目);正文 `需求:`/`根因:`/`方案:`/`结果:` 四段按需充实(禁只留一段「结果:」)。一条 quick = 一条独立 ql,不追加到旧条目
|
|
111
|
+
- **收尾顺序(模块文档在 `--done` 前,QUICKLOG 在 `--done` 后,别记混)**:① 命中模块→改模块文档→`git add`;② `sillyspec run quick --done --change <id> --output "四字段" [--file-notes "..."]`(CLI 自动翻完成 + 勾 task + 落盘 QUICKLOG 标题/文件/正文;若 `--linked-changes` 关联的真实变更其 tasks.md 已全部勾选**且该变更未进入完整流程**(进度库阶段停在 brainstorm 及之前),CLI 会自动将其归档到 `changes/archive/`;已走到 plan/execute/verify/archive 的变更不自动归档(tasks.md 全勾不等于流程收尾),须走原流程收尾);③ 核对 QUICKLOG 标题(CLI 已从「需求:」提取并截断,写成短标题则无需改)→若改了再 `git add`
|
|
112
|
+
- **最后一步 `--done` 必须给全四字段**(逐项一句话):🔧 **推荐四参数形式**(CLI 自动合成结构化模板,无格式事故面):`--done --change <id> --req "一句语义化短标题" --cause "为什么改" --solution "怎么改的" --result "验证结果"`。兼容旧形式 `--output "需求:… 根因:… 方案:… 结果:…"`(手拼须懂截断规则、禁嵌套全角冒号,缺字段被拒 exit 1)。这是 QUICKLOG「结果:」归档的唯一来源。**`--req` 写一句语义化短标题**(写「改了什么」,如「登录限流修复——INCR 计数误清」)——CLI 把它提取为 QUICKLOG 条目标题,截到首个标点、超 80 字截断;写完整需求长句会被截成语义不完整的状语前半段,需求背景放 `--cause`/`--solution`。前两个 step 的 `--output` 是中间摘要,不用此模板
|
|
113
|
+
- **禁止**在没有运行 CLI 的情况下自行决定流程
|
|
114
|
+
|
|
115
|
+
## 用户指令
|
|
116
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:resume
|
|
3
|
+
description: 恢复工作 — 从中断处继续
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 交互规范
|
|
7
|
+
|
|
8
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项传入。**
|
|
9
|
+
|
|
10
|
+
不要用编号列表让用户手动输入数字。
|
|
11
|
+
如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
你现在是 SillySpec 的恢复管理器。
|
|
16
|
+
|
|
17
|
+
## 流程
|
|
18
|
+
|
|
19
|
+
### 1. 读取进度
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
sillyspec progress show
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 2. 如果有活跃变更
|
|
26
|
+
|
|
27
|
+
从 `sillyspec progress show` 输出中提取并展示当前状态。
|
|
28
|
+
|
|
29
|
+
然后问用户:
|
|
30
|
+
1. 直接继续执行下一步
|
|
31
|
+
2. 查看更多细节
|
|
32
|
+
|
|
33
|
+
### 3. 如果没有活跃变更
|
|
34
|
+
|
|
35
|
+
> 🔧 优先跑 `sillyspec next`——CLI 已内置下方探测表,直接输出「状态 + 下一步命令 + 依据」,按输出执行;异常时才按下方手工探测兜底。
|
|
36
|
+
|
|
37
|
+
自动探测项目状态:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# 检查活跃变更
|
|
41
|
+
ls -d .sillyspec/changes/*/ | grep -v archive 2>/dev/null
|
|
42
|
+
|
|
43
|
+
# 检查大需求拆分
|
|
44
|
+
ls .sillyspec/changes/*/MASTER.md 2>/dev/null
|
|
45
|
+
|
|
46
|
+
# 检查扫描文档
|
|
47
|
+
ls .sillyspec/docs/*/scan/ 2>/dev/null | wc -l
|
|
48
|
+
|
|
49
|
+
# 检查需求/路线图
|
|
50
|
+
cat .sillyspec/REQUIREMENTS.md 2>/dev/null
|
|
51
|
+
cat .sillyspec/ROADMAP.md 2>/dev/null
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
根据探测结果推断:
|
|
55
|
+
|
|
56
|
+
| 探测到的文件 | 推断阶段 | 建议操作 |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| 无任何 .sillyspec/ 内容 | 未开始 | `/sillyspec:init` 或 `/sillyspec:scan` |
|
|
59
|
+
| 有 docs/ 但缺失文档 | 扫描中断 | `/sillyspec:scan`(断点续扫) |
|
|
60
|
+
| 有 docs/ 7 份齐全但无 changes/ | 已扫描,未开始需求 | `/sillyspec:brainstorm "想法"` |
|
|
61
|
+
| 有 REQUIREMENTS.md 但无 changes/ | 绿地项目,已有需求 | `/sillyspec:brainstorm "想法"` |
|
|
62
|
+
| changes/ 下有 proposal + design,无 plan.md | 已有规范,待计划 | `/sillyspec:plan` |
|
|
63
|
+
| changes/ 下有 plan.md,tasks 有未完成项 | 执行中 | `/sillyspec:execute` |
|
|
64
|
+
| tasks.md / plan.md 全部 checkbox 已勾选 | 待验证 | `/sillyspec:verify` |
|
|
65
|
+
| 已验证通过 | 待归档 | `/sillyspec:archive` |
|
|
66
|
+
|
|
67
|
+
### 4. 关键原则
|
|
68
|
+
|
|
69
|
+
- 进度数据存储在 SQLite 数据库中(`.sillyspec/.runtime/sillyspec.db`),通过 `sillyspec progress show` 命令查看
|
|
70
|
+
- 进度随 `sillyspec run <stage> --done` 自动更新,不需要手动保存
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:scan
|
|
3
|
+
description: 用于扫描项目代码库,生成架构文档、代码约定、目录结构等。适合用户说"扫描项目、分析代码库、生成文档、scan"。产出 7 份扫描文档 + 模块映射。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 何时使用
|
|
7
|
+
|
|
8
|
+
- 用户说"扫描项目、分析代码库、生成文档、scan"
|
|
9
|
+
- 棕地项目首次接入 sillyspec,生成架构/约定/结构等基础文档
|
|
10
|
+
- 产出 7 份 scan 文档(PROJECT/ARCHITECTURE/CONVENTIONS/STRUCTURE/INTEGRATIONS/TESTING/CONCERNS)+ 模块映射
|
|
11
|
+
|
|
12
|
+
## 多变更说明
|
|
13
|
+
|
|
14
|
+
scan 是辅助阶段,通常不需要 `--change`。但项目有多个活跃变更时,所有 `sillyspec run` 命令加 `--change <变更名>` 可指定操作目标。
|
|
15
|
+
|
|
16
|
+
## 步骤生命周期(所有阶段通用)
|
|
17
|
+
|
|
18
|
+
> `sillyspec scan` 是 `sillyspec run scan` 的顶层别名,两者等价。
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
sillyspec run scan # 输出当前步骤 prompt
|
|
22
|
+
sillyspec run scan --done --output "摘要" # 完成当前步骤
|
|
23
|
+
sillyspec run scan --status # 查看阶段进度
|
|
24
|
+
sillyspec run scan --skip # 跳过可选步骤
|
|
25
|
+
sillyspec run scan --reset # 重置阶段(从头开始)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 通用参数(所有阶段适用)
|
|
29
|
+
|
|
30
|
+
| 参数 | 说明 |
|
|
31
|
+
|---|---|
|
|
32
|
+
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
33
|
+
| `--non-interactive` | CI/脚本下禁用交互式 prompt |
|
|
34
|
+
| `--skip-approval` | 跳过阶段转换/审批检查(不能跳产物校验 gate——review.json/文档产物硬校验仍在) |
|
|
35
|
+
|
|
36
|
+
## scan 特有参数
|
|
37
|
+
|
|
38
|
+
| 参数 | 说明 |
|
|
39
|
+
|---|---|
|
|
40
|
+
| `--quick` | 强制 quick profile(快速接入,仅 4 份核心文档,0 子代理) |
|
|
41
|
+
| `--standard` | 强制 standard profile(压缩步骤,最多 1 子代理) |
|
|
42
|
+
| `--deep` | 强制 deep profile(完整流程,不按规模裁剪) |
|
|
43
|
+
| `--force-rescan` | 覆盖已有 scan 文档的保护(默认覆盖需 source_commit/updated_at 匹配) |
|
|
44
|
+
| `--diff` | 增量漂移清单:`sillyspec scan diff`(或 `--diff` flag)算 source_commit..HEAD 的 A/D/M/R 四分类漂移,按 module-map paths 归模块,agent 据此定点补文档而非全量重扫(2026-08-16) |
|
|
45
|
+
|
|
46
|
+
### scanProfile(显式选择优先,否则按规模自动裁剪)
|
|
47
|
+
|
|
48
|
+
可用 `--quick` / `--standard` / `--deep` **显式指定 profile**(三档互斥,优先于自动判定)。
|
|
49
|
+
不带 flag 时 CLI 按源码规模自动选择:
|
|
50
|
+
|
|
51
|
+
| profile | 触发条件 | 行为 |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| quick | `--quick` 或 ≤30 文件 且 ≤80KB 且 ≤3 项目 | 3 步,0 子代理,4 份核心文档 |
|
|
54
|
+
| standard | `--standard` 或 ≤200 文件 且 ≤800KB | 压缩步骤,最多 1 子代理 |
|
|
55
|
+
| deep | `--deep` 或 大项目 | 完整流程 |
|
|
56
|
+
|
|
57
|
+
> **平台快速接入**:对大项目用 `sillyspec run scan --quick`(含平台参数 `--spec-root`/`--workspace-id`/`--scan-run-id`)只生成 4 份核心文档完成接入,后续 `sillyspec run scan --deep` 覆盖升级为完整 7 份。quick 文档 frontmatter 标 `scan_depth: quick`,深度扫描识别后允许覆盖。
|
|
58
|
+
|
|
59
|
+
### post-check
|
|
60
|
+
|
|
61
|
+
scan 完成时 CLI **按 profile 校验文档齐全**:quick 模式只要求 4 份核心文档(PROJECT/ARCHITECTURE/CONVENTIONS/STRUCTURE),standard/deep 要求完整 7 份。缺失会设状态为 `failed_post_check`,阻断进入主流程下游(brainstorm/plan 等),需修复后重跑 scan。quick 模式带一条 informational warning(`quick_profile_notice`),状态落 `completed_with_warnings`,不阻断完成。
|
|
62
|
+
|
|
63
|
+
## 阶段流转
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
(项目起点) → scan → brainstorm
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
scan 完成后,运行 `sillyspec run brainstorm "<需求>"` 开始具体变更的设计。
|
|
70
|
+
|
|
71
|
+
## 铁律
|
|
72
|
+
|
|
73
|
+
- **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
|
|
74
|
+
- 只做当前步骤 prompt 描述的操作,不跳过
|
|
75
|
+
- scan 文档写入 `{DOCS_ROOT}/scan/`(平台模式用占位符路径,不写裸 `.sillyspec/`)
|
|
76
|
+
- 完成后立即 `--done`,不跳过
|
|
77
|
+
|
|
78
|
+
## 用户指令
|
|
79
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:state
|
|
3
|
+
description: 查看当前工作状态 — 显示 SillySpec 进度
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
你现在是 SillySpec 的状态查看器。
|
|
7
|
+
|
|
8
|
+
## 流程
|
|
9
|
+
|
|
10
|
+
### 1. 读取进度
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
sillyspec progress show
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 2. 如果有活跃变更
|
|
17
|
+
|
|
18
|
+
格式化展示当前状态:
|
|
19
|
+
|
|
20
|
+
> 📊 当前状态
|
|
21
|
+
>
|
|
22
|
+
> **变更**:<名称>
|
|
23
|
+
> **阶段**:<当前阶段>
|
|
24
|
+
> **进度**:<具体进度>
|
|
25
|
+
> **下一步**:<命令>
|
|
26
|
+
>
|
|
27
|
+
> **阶段进度**(大模块):
|
|
28
|
+
> (显示各阶段状态表)
|
|
29
|
+
>
|
|
30
|
+
> **关键决策**:
|
|
31
|
+
> - xxx
|
|
32
|
+
>
|
|
33
|
+
> **阻塞项**:
|
|
34
|
+
> - xxx(如无则省略)
|
|
35
|
+
|
|
36
|
+
### 3. 如果没有活跃变更
|
|
37
|
+
|
|
38
|
+
提示用户项目还没有开始:
|
|
39
|
+
|
|
40
|
+
> 📊 还没有工作记录。
|
|
41
|
+
>
|
|
42
|
+
> 开始使用:
|
|
43
|
+
> - 新项目:`/sillyspec:init`
|
|
44
|
+
> - 已有项目:`/sillyspec:scan`
|
|
45
|
+
> - 恢复中断的工作:`/sillyspec:resume`
|
|
46
|
+
>
|
|
47
|
+
> 进度数据会在 `sillyspec init` 时自动创建到 SQLite 数据库中。
|
|
48
|
+
|
|
49
|
+
## progress 完整子命令(只读查询 / 诊断)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
sillyspec progress show [--change <名>] # 当前工作状态(本 skill 主命令)
|
|
53
|
+
sillyspec progress check # 状态一致性检查(只报告,不修复)
|
|
54
|
+
sillyspec progress repair # 修复状态元数据(dry-run,加 --apply 才真改)
|
|
55
|
+
sillyspec progress validate # 校验并修复
|
|
56
|
+
sillyspec progress reset [--stage <阶段>] # 重置进度(破坏性,慎用)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 注意
|
|
60
|
+
|
|
61
|
+
- 这是只读命令,**不修改任何文件**(repair/validate/reset 除外)
|
|
62
|
+
- `/sillyspec:status` 查看项目整体进度(change 文件级别)
|
|
63
|
+
- `/sillyspec:state` 查看当前工作状态(阶段/步骤级别)
|
|
64
|
+
- 两者互补:status 看"有什么",state 看"在做什么"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:status
|
|
3
|
+
description: 用于查看 SillySpec 当前进度和状态。适合用户说"看下状态、当前进度、status"。显示当前阶段、步骤完成度、活跃变更。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 何时使用
|
|
7
|
+
|
|
8
|
+
- 用户说"看下状态、当前进度、status"
|
|
9
|
+
- 查看项目整体进度:活跃变更、各阶段状态、步骤完成度
|
|
10
|
+
|
|
11
|
+
## status vs state 分工
|
|
12
|
+
|
|
13
|
+
- **`/sillyspec:status`**(本 skill)— 查看项目整体进度(change 文件级别、各阶段状态)。走 `sillyspec run status` 阶段。
|
|
14
|
+
- **`/sillyspec:state`** — 查看当前工作状态(阶段/步骤级别、下一步建议)。走 `sillyspec progress show`。
|
|
15
|
+
|
|
16
|
+
两者互补:status 看"有什么",state 看"在做什么"。
|
|
17
|
+
|
|
18
|
+
## 多变更说明
|
|
19
|
+
|
|
20
|
+
status 是辅助阶段。项目有多个活跃变更时,加 `--change <变更名>` 查看指定变更的详情;不指定时汇总显示所有变更。
|
|
21
|
+
|
|
22
|
+
## 步骤生命周期(所有阶段通用)
|
|
23
|
+
|
|
24
|
+
> `sillyspec status` 是 `sillyspec run status` 的顶层别名,两者等价。status 是辅助阶段,只读。
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
sillyspec run status # 输出当前步骤 prompt
|
|
28
|
+
sillyspec run status --done --output "摘要" # 完成阶段
|
|
29
|
+
sillyspec run status --status # 查看阶段状态
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 通用参数(所有阶段适用)
|
|
33
|
+
|
|
34
|
+
| 参数 | 说明 |
|
|
35
|
+
|---|---|
|
|
36
|
+
| `--change <名>` | 指定变更名(多变更时查看指定变更详情) |
|
|
37
|
+
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
38
|
+
|
|
39
|
+
## 配套的只读查询命令(不经 run)
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
sillyspec progress show # 当前工作状态(阶段/步骤级)
|
|
43
|
+
sillyspec progress show --change <名> # 指定变更详情
|
|
44
|
+
sillyspec progress check # 状态一致性检查
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 铁律
|
|
48
|
+
|
|
49
|
+
- status 是只读阶段,**不修改任何文件**
|
|
50
|
+
- **必须用 exec 工具(shell)执行 CLI**
|
|
51
|
+
- 完成后立即 `--done`,不跳过
|
|
52
|
+
|
|
53
|
+
## 用户指令
|
|
54
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:verify
|
|
3
|
+
description: 用于验证代码实现是否符合 design 和模块文档。适合用户说"验证下、检查下、跑 verify"。对照 design.md + 模块文档检查任务完成度、设计一致性、运行测试。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 何时使用
|
|
7
|
+
|
|
8
|
+
- 用户说"验证下、检查下、跑 verify"
|
|
9
|
+
- 对照 design.md + 模块文档检查任务完成度
|
|
10
|
+
- 设计一致性检查 + 运行测试套件
|
|
11
|
+
- 产出 `verify-result.md`(PASS / PASS WITH NOTES / FAIL)
|
|
12
|
+
|
|
13
|
+
## 多变更说明
|
|
14
|
+
|
|
15
|
+
项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录)时,所有 `sillyspec run` 命令需加 `--change <变更名>` 指定操作目标;只有一个变更时可省略(CLI 自动检测)。
|
|
16
|
+
|
|
17
|
+
## 步骤生命周期(所有阶段通用)
|
|
18
|
+
|
|
19
|
+
> `sillyspec verify` 是 `sillyspec run verify` 的顶层别名,两者等价。
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
sillyspec run verify # 输出当前步骤 prompt
|
|
23
|
+
sillyspec run verify --done --output "摘要" # 完成当前步骤(--input "用户原话" 记录输入)
|
|
24
|
+
sillyspec run verify --status # 查看阶段进度
|
|
25
|
+
sillyspec run verify --skip # 跳过可选步骤
|
|
26
|
+
sillyspec run verify --reset # 重置阶段(从头开始)
|
|
27
|
+
sillyspec run verify --reopen --from-step N # 重新打开已完成阶段修订(N=序号或名称)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 通用参数(所有阶段适用)
|
|
31
|
+
|
|
32
|
+
| 参数 | 说明 |
|
|
33
|
+
|---|---|
|
|
34
|
+
| `--change <名>` | 指定变更名(多活跃变更必填,单变更可省略自动检测) |
|
|
35
|
+
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
36
|
+
| `--non-interactive` | CI/脚本下禁用交互式 prompt |
|
|
37
|
+
| `--skip-approval` | 跳过阶段转换/审批检查(不能跳产物校验 gate——review.json/文档产物硬校验仍在) |
|
|
38
|
+
|
|
39
|
+
## verify 特有:完成门控(重要)
|
|
40
|
+
|
|
41
|
+
verify 是只读阶段(**禁止改代码/改 git 状态**,只检查 + 写报告)。
|
|
42
|
+
|
|
43
|
+
**diff 对账基点**:本变更走 worktree 时,「加载规范并锚定」步骤会注入 worktree 基线锚点(分支名 + `git merge-base` 真实基点)——对照设计做 diff 对账时以它为基点,**不要拿主仓当前 HEAD 当基点**(主仓在 execute 期间可能被并行推进,用错基点会把别人的演进误判为本变更越权改动)。task review 的 base/head 引用分支上的 commit,逐 task 核验用 `git diff <base>..<head>`。完成时有硬校验:
|
|
44
|
+
|
|
45
|
+
- **必须产出 `verify-result.md`**——不存在则阻断完成(不能跳过报告直接 `--done`)
|
|
46
|
+
- **结论为 `FAIL` 则阻断完成**——不能带着 FAIL 标记 verify 完成
|
|
47
|
+
- **`integration-critical` / `deployment-critical` 变更**(design/plan 含 daemon/session/lease/lifecycle 等关键词):结论 PASS WITH NOTES 降级为 FAIL,必须有真实集成证据(Runtime Evidence section)——该证据为 Agent 自报告,CLI 仅校验其字面存在、不独立运行时核验,须真实执行过
|
|
48
|
+
- `verify-required-evidence.json`(execute 写入,schema `{items:[{task,verdict,evidence:[]}]}`)中 cannot_verify 任务未在 verify-result.md 体现 → **advisory warn(不阻断归档)**;evidence 是否真满足(satisfied/missing/partial)由 agent 在 verify-result.md 自报告,CLI 只查任务被提及、不替你语义判定。结论能否 PASS 由你诚实判定(有 missing evidence 不应 PASS)。
|
|
49
|
+
|
|
50
|
+
被阻断时 CLI 打印 ❌ 校验失败,不会提示"验证通过"。修复 `verify-result.md` 后重新 `--done`。
|
|
51
|
+
|
|
52
|
+
## verify-result.md 格式
|
|
53
|
+
|
|
54
|
+
> 🔧 **机械探针 + 报告骨架一条命令**:`sillyspec verify-probes --change <变更名> --init`——探针 1(TODO 标记)/3(测试覆盖)/5(API 契约对账)/6(删除对账)CLI 跑完并预填进 verify-result.md 骨架(七章节、已存在不覆盖);探针 2/4(关键词/决策追踪)与断言抽查、集成盲区标注是语义判断,替换骨架里的 `<!--TODO-->` 完成。结论必须写明 PASS/FAIL——留「待填」会被 gate 判不过。
|
|
55
|
+
>
|
|
56
|
+
> 🔧 **test/lint 实测对账**:`--done` 时 CLI 亲自执行 local.yaml 的 `commands.test`(实测失败阻断 verify 完成)与 `commands.lint`(advisory 对账,实测失败会明示)——自报告与实测不符时以实测为准,勿谎报跑过。
|
|
57
|
+
|
|
58
|
+
```markdown
|
|
59
|
+
# 验证报告
|
|
60
|
+
## 结论
|
|
61
|
+
PASS / PASS WITH NOTES / FAIL ← 必须有结论章节(标题含"结论/Conclusion/Result/结果"即可,不限于确切"## 结论"),FAIL 会阻断 verify 完成
|
|
62
|
+
## 任务完成度
|
|
63
|
+
## 设计一致性
|
|
64
|
+
## 探针结果
|
|
65
|
+
## 测试结果
|
|
66
|
+
## 变更风险等级
|
|
67
|
+
## Runtime Evidence(integration/deployment-critical 必填;自报告,CLI 仅字面校验、不独立核验)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## 阶段流转
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
execute → verify → archive
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
verify 通过(PASS)后,运行 `sillyspec run archive --change <变更名>` 归档。FAIL 则修复后重跑 `sillyspec run verify`。
|
|
77
|
+
|
|
78
|
+
## 铁律
|
|
79
|
+
|
|
80
|
+
- **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
|
|
81
|
+
- verify 阶段**绝对禁止** git checkout/restore/reset、删除/覆盖源码文件——只检查 + 报告
|
|
82
|
+
- 发现问题只报告,不尝试修复(修复回 execute)
|
|
83
|
+
- `verify-result.md` 结论必须基于证据,不写"看起来没问题"
|
|
84
|
+
- 完成后立即 `--done`,不跳过
|
|
85
|
+
|
|
86
|
+
## 用户指令
|
|
87
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:workspace
|
|
3
|
+
description: 工作区管理 — 初始化、管理多项目工作区,查看子项目状态
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 交互规范
|
|
7
|
+
|
|
8
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
9
|
+
|
|
10
|
+
不要用编号列表让用户手动输入数字。
|
|
11
|
+
如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## CLI 边界(重要)
|
|
16
|
+
|
|
17
|
+
`sillyspec workspace` 命令已存在(2026-08-21 落地):
|
|
18
|
+
```bash
|
|
19
|
+
sillyspec workspace add <名> <相对路径> [--role <角色>] [--repo <仓库地址>] # 登记子项目(外科写入 yaml,已有字段保留)
|
|
20
|
+
sillyspec workspace remove <名> # 删除登记(项目本体不动)
|
|
21
|
+
sillyspec workspace status # 三态探测表(已扫描/已初始化/未初始化)
|
|
22
|
+
```
|
|
23
|
+
优先用命令;命令异常时才按下文手工兜底(yaml 字段口径:init 写 name/path/status 三字段,role/repo 由 add 追加)。
|
|
24
|
+
|
|
25
|
+
## 相关 CLI 命令
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
sillyspec scan # 扫描子项目生成文档
|
|
29
|
+
sillyspec init [--tool <名>] # 安装命令模板
|
|
30
|
+
sillyspec progress show # 查看进度
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
你现在是 SillySpec 的工作区管理器。
|
|
34
|
+
|
|
35
|
+
## 用户指令
|
|
36
|
+
$ARGUMENTS
|
|
37
|
+
|
|
38
|
+
## 核心流程
|
|
39
|
+
|
|
40
|
+
### Step 1: 检查工作区配置
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
如果不存在 → 这是一个尚未配置工作区的项目。询问用户:
|
|
47
|
+
1. 初始化工作区
|
|
48
|
+
2. 跳过
|
|
49
|
+
|
|
50
|
+
### Step 2: 解析指令
|
|
51
|
+
|
|
52
|
+
根据 `$ARGUMENTS` 或默认行为:
|
|
53
|
+
|
|
54
|
+
- **无参数 / `status`** → 显示工作区状态
|
|
55
|
+
- **`add`** → 添加子项目
|
|
56
|
+
- **`remove`** → 移除子项目
|
|
57
|
+
- **`info`** → 显示某个子项目详情
|
|
58
|
+
- 无参数且 projects/*.yaml 不存在 → 初始化工作区
|
|
59
|
+
|
|
60
|
+
### Step 3: 执行对应操作
|
|
61
|
+
|
|
62
|
+
#### 3a. 初始化工作区(projects/ 不存在时)
|
|
63
|
+
|
|
64
|
+
1. 询问工作区名称(默认用当前目录名)
|
|
65
|
+
2. 逐个添加子项目:
|
|
66
|
+
- 询问子项目名称(如 `frontend`、`backend`)
|
|
67
|
+
- 询问子项目路径(相对于工作区根目录,如 `./frontend`)
|
|
68
|
+
- 询问子项目角色描述(如 `前端 - Vue3 + TypeScript`)
|
|
69
|
+
- 询问仓库地址(可选)
|
|
70
|
+
- 验证路径存在
|
|
71
|
+
添加完后询问:
|
|
72
|
+
> 1. 继续添加子项目
|
|
73
|
+
> 2. 完成,配置共享规范
|
|
74
|
+
3. 询问共享规范文件
|
|
75
|
+
4. 为每个子项目创建 `.sillyspec/projects/<name>.yaml`:
|
|
76
|
+
```yaml
|
|
77
|
+
name: <name>
|
|
78
|
+
path: <relative-path>
|
|
79
|
+
status: active
|
|
80
|
+
```
|
|
81
|
+
> ⚠️ `sillyspec init` 只会写入 `name`、`path`、`status` 三个字段。
|
|
82
|
+
> `role` 和 `repo` 由 `/sillyspec:workspace add` 追加。
|
|
83
|
+
5. 创建 `.sillyspec/shared/` 目录
|
|
84
|
+
|
|
85
|
+
#### 3b. 添加子项目(`add`)
|
|
86
|
+
|
|
87
|
+
1. 询问名称、路径、角色
|
|
88
|
+
2. 验证路径存在
|
|
89
|
+
3. 创建/更新 `.sillyspec/projects/<name>.yaml`
|
|
90
|
+
4. Git 提交
|
|
91
|
+
|
|
92
|
+
#### 3c. 移除子项目(`remove`)
|
|
93
|
+
|
|
94
|
+
1. 显示当前所有子项目列表
|
|
95
|
+
2. 询问要移除哪个:
|
|
96
|
+
> 1. (列出子项目名称)
|
|
97
|
+
> 2. 取消
|
|
98
|
+
3. 删除 `.sillyspec/projects/<name>.yaml`
|
|
99
|
+
4. Git 提交
|
|
100
|
+
|
|
101
|
+
#### 3d. 工作区状态(`status`,默认)
|
|
102
|
+
|
|
103
|
+
读取所有 `projects/*.yaml`,对每个子项目检查:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# 读取子项目列表
|
|
107
|
+
for f in .sillyspec/projects/*.yaml; do
|
|
108
|
+
[ -f "$f" ] || continue
|
|
109
|
+
proj_name=$(basename "$f" .yaml)
|
|
110
|
+
proj_path=$(grep '^path:' "$f" | head -1 | sed 's/^path:[[:space:]]*//')
|
|
111
|
+
proj_role=$(grep '^role:' "$f" | head -1 | sed 's/^role:[[:space:]]*//')
|
|
112
|
+
# 检查子项目状态
|
|
113
|
+
cd "$proj_path"
|
|
114
|
+
ls .sillyspec/ 2>/dev/null
|
|
115
|
+
cat .sillyspec/PROJECT.md 2>/dev/null
|
|
116
|
+
ls .sillyspec/docs/${proj_name}/scan/ 2>/dev/null | wc -l
|
|
117
|
+
cd -
|
|
118
|
+
done
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
输出格式:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
🏢 工作区:<workspace-name>
|
|
125
|
+
|
|
126
|
+
📦 子项目(N 个):
|
|
127
|
+
✅ frontend ./frontend 前端 - Vue3 + TypeScript 已扫描(7 份文档)
|
|
128
|
+
⚠️ backend ./backend 后端 - Node.js 已初始化(未扫描)
|
|
129
|
+
❌ miniprogram ./miniprogram 小程序 - Taro 未初始化
|
|
130
|
+
|
|
131
|
+
📄 共享规范:2 份
|
|
132
|
+
- api-contract.md
|
|
133
|
+
- data-models.md
|
|
134
|
+
|
|
135
|
+
💡 操作:
|
|
136
|
+
/sillyspec:workspace add — 添加子项目
|
|
137
|
+
/sillyspec:workspace remove — 移除子项目
|
|
138
|
+
/sillyspec:init — 初始化子项目
|
|
139
|
+
/sillyspec:scan — 扫描子项目
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### 3e. 子项目详情(`info <name>`)
|
|
143
|
+
|
|
144
|
+
显示指定子项目的详细信息,包括 PROJECT.md、REQUIREMENTS.md 内容摘要、扫描文档列表。
|
|
145
|
+
|
|
146
|
+
### Step 4: projects/*.yaml 格式
|
|
147
|
+
|
|
148
|
+
每个子项目对应 `.sillyspec/projects/<name>.yaml`:
|
|
149
|
+
|
|
150
|
+
**sillyspec init 创建的格式(3 字段):**
|
|
151
|
+
```yaml
|
|
152
|
+
name: frontend
|
|
153
|
+
path: ./frontend
|
|
154
|
+
status: active
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**workspace add 扩展的格式(最多 5 字段):**
|
|
158
|
+
```yaml
|
|
159
|
+
name: frontend
|
|
160
|
+
path: ./frontend
|
|
161
|
+
status: active
|
|
162
|
+
role: 前端 - Vue3 + TypeScript
|
|
163
|
+
repo: https://github.com/xxx/frontend.git # 可选
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 最后说:
|
|
167
|
+
|
|
168
|
+
> 工作区已更新。
|
|
169
|
+
> 下一步:对子项目运行 `/sillyspec:init` 或 `/sillyspec:scan`。
|
|
170
|
+
|
|
171
|
+
## 绝对规则
|
|
172
|
+
- 不修改子项目目录下的任何文件
|
|
173
|
+
- projects/*.yaml 必须是合法 YAML
|
|
174
|
+
- 子项目路径必须是相对于工作区根目录的相对路径
|
|
175
|
+
- 路径必须验证存在性
|