sillyspec 3.27.2 → 3.27.5
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/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/foreign-declared.js +78 -0
- package/src/index.js +89 -9
- 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 +122 -43
- package/src/run/complete-handlers.js +48 -19
- package/src/run/complete.js +5 -2
- package/src/run/gates.js +87 -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.js +2 -2
- package/src/scan-postcheck.js +30 -17
- package/src/stage-contract-spec.js +2 -1
- package/src/stage-contract.js +68 -4
- package/src/stages/archive.js +53 -12
- package/src/stages/brainstorm-auto.js +7 -0
- package/src/stages/brainstorm.js +11 -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 +1 -0
- package/src/stages/quick.js +6 -1
- package/src/stages/verify.js +31 -14
- package/src/sync.js +41 -3
- package/src/task-review.js +2 -2
- package/src/taskcard-placeholders.js +21 -0
- package/src/taskcard.js +10 -1
- package/src/verify-postcheck.js +315 -13
- package/src/verify-probes.js +46 -4
- package/src/worktree-apply.js +184 -7
- package/src/worktree-deps.js +57 -0
- package/src/worktree.js +201 -58
- package/templates/prompts/taskcard-rules.md +1 -0
|
@@ -176,6 +176,7 @@ execute 还有**第二道**独立的 stage 级审查:除逐 task review.json
|
|
|
176
176
|
```bash
|
|
177
177
|
sillyspec worktree apply <变更名> # 校验并应用 worktree 变更到主工作区
|
|
178
178
|
sillyspec worktree apply <变更名> --check-only # 只检查不应用
|
|
179
|
+
sillyspec worktree apply <变更名> --skip-overlap # 主仓有并行在途变更时:跳过重叠文件,只应用非重叠子集
|
|
179
180
|
sillyspec worktree assess <变更名> # 风险审计 + 自动 apply
|
|
180
181
|
sillyspec worktree list # 列出所有活跃 worktree
|
|
181
182
|
sillyspec worktree meta <变更名> # 读取 worktree meta.json
|
|
@@ -183,6 +184,13 @@ sillyspec worktree cleanup <变更名> # 清理 worktree
|
|
|
183
184
|
sillyspec worktree doctor [--fix] # 健康检查 + 修复
|
|
184
185
|
```
|
|
185
186
|
|
|
187
|
+
**apply 并发要点(多 agent 仓库)**:
|
|
188
|
+
- **主仓互斥锁**:apply / worktree cleanup / 归档收尾共用主仓级互斥锁(`.sillyspec/.runtime/main-repo.lock`,10 分钟 stale)——两会话并发对主仓的写操作会报「主仓互斥锁被占用(持有者: pid=…, change=…, 操作=…)」并退出,等对方完成重试即可;确认持有进程已崩溃时按报错里的路径删锁。等待时长可用 env `SILLYSPEC_MAIN_REPO_LOCK_TIMEOUT_MS` 调短。
|
|
189
|
+
- **`--skip-overlap`**:主仓有与本次变更**同文件**的未提交改动(并行会话在途变更)时,默认整批拦截;带 `--skip-overlap` 则只应用非重叠子集,重叠文件安全留在 worktree(不覆盖主仓在途改动),输出后续指引——主仓提交/stash 后重新 apply 只补剩余文件,或确认放弃后 `cleanup --force`。优先用这条路,别再走 rescue 手动 cp。
|
|
190
|
+
- **`--merge` 冲突保留现场**:--merge 遇真冲突不再直接 abort——主仓保留 merge-in-progress(冲突标记 + MERGE_HEAD),按提示编辑冲突文件 → `git add` → `git commit` 完成合并即可(无需重跑 apply);`git merge --abort` 可放弃。若主仓有未提交改动会被合并覆盖,git 会拒绝启动合并(无现场),按提示先 commit/stash 或改用 `--skip-overlap`。
|
|
191
|
+
- **派生产物基线漂移提示**:apply 输出若警告「N 个变更文件在 worktree 基线后主仓已有新提交」——多 agent 并发仓中并行变更可能已把新内容合入主仓,你 worktree 里生成的产物(api-types/generated 等)是旧基线版本,apply 会覆盖已合入内容;**apply 后必须在新基线重跑一次生成命令**(如 gen:types)再验证。
|
|
192
|
+
- **worktree 目录残留清理**:apply/cleanup 输出若提示「部分清理残留」——Windows 下**勿直接 rm -rf**(会穿透 node_modules junction 删主仓依赖):先 `cmd /c rmdir "<worktree>\node_modules"` 解链(含子模块 junction)再删目录,或跑 `sillyspec worktree doctor --fix`。
|
|
193
|
+
|
|
186
194
|
## 阶段流转
|
|
187
195
|
|
|
188
196
|
```
|
|
@@ -60,7 +60,7 @@ sillyspec run quick --done --change quick-<hash> --output "…" # 完成该会
|
|
|
60
60
|
| 参数 | 说明 |
|
|
61
61
|
|---|---|
|
|
62
62
|
| `--linked-changes none\|a,b` | **显式关联变更(取代 `--change`,推荐)**。none=不关联,a,b=关联列表 |
|
|
63
|
-
| `--files a.js,b.js` | 显式声明本次允许修改的文件(边界保护 + 声明即归属:多 agent 并发仓防他者窗口文件混入 QUICKLOG
|
|
63
|
+
| `--files a.js,b.js` | 显式声明本次允许修改的文件(边界保护 + 声明即归属:多 agent 并发仓防他者窗口文件混入 QUICKLOG 文件行,未声明窗口文件进「审计:」行追溯;**他向亦然**——其他 active 会话已声明的文件在你的 `--done` 审计中自动剔除归该会话,不再误拦、无需 `--force-baseline`)。**中途可追加**:发现要改声明外文件(如新写的测试)时,带新增文件恢复会话即并入边界(追加不替换)——`sillyspec run quick --files <新增> --change <sessionId>`;不带 `--files` 恢复则边界原样保留 |
|
|
64
64
|
| `--file-notes "p::注 \|\| p::注"` | quick `--done` 用:QUICKLOG「文件:」行落盘为多行带括注 bullet(省事后手改文件行)。格式 `path::括注`,`\|\|` 分隔多条;**只随 step3 --done 同命令传**(CLI 短进程,step1/step2 传无效,不带到 step3) |
|
|
65
65
|
| `--allow-new` | 允许新增文件(默认禁止,防意外创建) |
|
|
66
66
|
| `--allow-delete` | 允许删除文件(默认 fail-closed,删除是破坏性操作;确认删除带此 flag 显式解锁) |
|
|
@@ -72,6 +72,7 @@ sillyspec run quick --done --change quick-<hash> --output "…" # 完成该会
|
|
|
72
72
|
`--done` 收尾时对比 step1 baseline 与当前 `git status`,拦「危险文件 / 新增文件 / 覆盖 baseline」。要点:
|
|
73
73
|
|
|
74
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`)。
|
|
75
76
|
- **关联变更的文件仍走审计**:reverse-sync 改自己关联变更的 `design.md` 会被拦,需 `--force-baseline` 显式确认。
|
|
76
77
|
- **baseline 折叠目录前缀匹配**:step1 启动时整片 `changes/` 未跟踪会被 git 折叠成 `?? .sillyspec/changes/`(带尾斜杠 token);审计时若该目录下文件被并发会话跟踪而展开成文件级路径,按尾斜杠 token 前缀放行其下所有文件,不误判。
|
|
77
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 后自行决定是否分离。
|
package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-archive/SKILL.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:archive
|
|
3
|
+
description: 用于归档已验证完成的变更。适合用户说"归档、archive、收尾这个变更"。执行模块影响分析 + 同步模块文档 + 移动到 archive 目录 + 更新 ROADMAP。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 何时使用
|
|
7
|
+
|
|
8
|
+
- 用户说"归档、archive、收尾这个变更"
|
|
9
|
+
- verify 已通过,把变更包归档沉淀
|
|
10
|
+
- 5 步:任务完成度检查 → 模块影响分析 → 同步模块文档 → 确认归档 → 更新路线图
|
|
11
|
+
|
|
12
|
+
> 🔧 模块影响分析步:先跑 `sillyspec module-impact --change <变更名>` 生成 module-impact.md 骨架——文件×模块归属按 `_module-map.yaml` paths 前缀匹配预填 + 未匹配文件清单,你只需逐行填「影响类型」与 review 标记(以 git diff 为准,真实 > 声明);已存在不覆盖。
|
|
13
|
+
|
|
14
|
+
## 多变更说明
|
|
15
|
+
|
|
16
|
+
项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录)时,所有 `sillyspec run` 命令需加 `--change <变更名>` 指定操作目标;只有一个变更时可省略(CLI 自动检测)。
|
|
17
|
+
|
|
18
|
+
## 步骤生命周期(所有阶段通用)
|
|
19
|
+
|
|
20
|
+
> `sillyspec archive` 是 `sillyspec run archive` 的顶层别名,两者等价。
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
sillyspec run archive # 输出当前步骤 prompt
|
|
24
|
+
sillyspec run archive --done --output "摘要" # 完成当前步骤
|
|
25
|
+
sillyspec run archive --status # 查看阶段进度
|
|
26
|
+
sillyspec run archive --skip # 跳过可选步骤
|
|
27
|
+
sillyspec run archive --reset # 重置阶段(从头开始)
|
|
28
|
+
sillyspec run archive --reopen --from-step N # 重新打开已完成阶段修订(N=序号或名称)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 通用参数(所有阶段适用)
|
|
32
|
+
|
|
33
|
+
| 参数 | 说明 |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `--change <名>` | 指定变更名(多活跃变更必填,单变更可省略自动检测) |
|
|
36
|
+
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
37
|
+
| `--non-interactive` | CI/脚本下禁用交互式 prompt |
|
|
38
|
+
| `--skip-approval` | 跳过阶段转换/审批检查(不能跳产物校验 gate——review.json/文档产物硬校验仍在) |
|
|
39
|
+
|
|
40
|
+
## archive 特有
|
|
41
|
+
|
|
42
|
+
### `--confirm`(确认归档步骤必填)
|
|
43
|
+
|
|
44
|
+
第 4 步「确认归档」由 CLI 执行目录移动,**必须带 `--confirm`**:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
sillyspec run archive --done --confirm --output "确认归档"
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
不带 `--confirm` 时 CLI 回退步骤为 pending 并提示,不会误归档。
|
|
51
|
+
|
|
52
|
+
### 归档前硬校验
|
|
53
|
+
|
|
54
|
+
CLI 移动目录前会校验 `plan.md` 存在——缺失则 `exit(1)` 阻断(目录尚未移动,可补全后重试)。移动后校验 `design.md` / `module-impact.md`(缺失只告警,因目录已移动)。
|
|
55
|
+
|
|
56
|
+
### 模块文档同步(第 3 步)
|
|
57
|
+
|
|
58
|
+
第 3 步「sync-module-docs」会更新 `_module-map.yaml` + 模块卡片,**必须暂停等用户确认**:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
sillyspec run archive --wait --reason "等待用户确认模块文档同步" --options "确认写入,跳过同步" --output "diff 摘要"
|
|
62
|
+
sillyspec run archive --continue --answer "确认写入"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
只有用户 `--continue --answer "确认写入"` 后才写入文件。
|
|
66
|
+
|
|
67
|
+
### 归档结果
|
|
68
|
+
|
|
69
|
+
归档后变更目录从 `changes/<名>/` 移到 `changes/archive/<名>/`,并从活跃列表注销。后续用 `/sillyspec:commit` 提交。
|
|
70
|
+
|
|
71
|
+
## 阶段流转
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
verify → archive → git commit
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
archive 完成后,运行 `/sillyspec:commit` 提交归档结果(`git add .sillyspec/changes/`)。
|
|
78
|
+
|
|
79
|
+
## 铁律
|
|
80
|
+
|
|
81
|
+
- **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
|
|
82
|
+
- 不要用 `mv`/`rename` 重命名变更目录,必须由 CLI 的「确认归档」步骤移动
|
|
83
|
+
- 归档不可逆——确认前核对变更名、文件列表、module-impact.md
|
|
84
|
+
- 完成后立即 `--done`,不跳过
|
|
85
|
+
|
|
86
|
+
## 用户指令
|
|
87
|
+
$ARGUMENTS
|
package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-auto/SKILL.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:auto
|
|
3
|
+
description: 自动模式 — 全流程自动推进(通用版)
|
|
4
|
+
argument-hint: "<需求描述>"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 交互规范
|
|
8
|
+
|
|
9
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。** 不要用编号列表让用户手动输入数字。
|
|
10
|
+
|
|
11
|
+
## 用法
|
|
12
|
+
|
|
13
|
+
- `/sillyspec:auto 实现用户登录功能`
|
|
14
|
+
- `/sillyspec:auto 修复搜索结果的排序问题`
|
|
15
|
+
|
|
16
|
+
## 任务
|
|
17
|
+
$ARGUMENTS
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 执行流程
|
|
22
|
+
|
|
23
|
+
你是全流程编排器,按 brainstorm → plan → execute → verify 顺序自动推进。
|
|
24
|
+
|
|
25
|
+
### 启动
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
sillyspec run auto --input "<用户需求>" [--mode <模式>]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
2. 读取 CLI 输出的 step prompt(含角色描述)
|
|
32
|
+
3. 执行 prompt 中的操作
|
|
33
|
+
4. **记录 CLI 输出中显示的 Change 名称**(如 `Change: 2026-06-02-xxx`)
|
|
34
|
+
|
|
35
|
+
### 步骤循环
|
|
36
|
+
|
|
37
|
+
重复以下循环直到 CLI 输出"全部流程已完成":
|
|
38
|
+
|
|
39
|
+
1. **读取 CLI 输出的 step prompt**
|
|
40
|
+
2. **判断是否需要用户确认:**
|
|
41
|
+
- prompt 含"请用户选择 / 等待用户回答 / 展示给用户 / 用户确认" → **暂停,等用户回复**
|
|
42
|
+
- 纯内部操作 → **直接执行**
|
|
43
|
+
3. **执行 prompt 要求的操作**
|
|
44
|
+
4. **完成后运行:**
|
|
45
|
+
```bash
|
|
46
|
+
sillyspec run auto --done --change <变更名> --output "<你的摘要>"
|
|
47
|
+
```
|
|
48
|
+
- ⚠️ **必须携带 `--change <变更名>`**,变更名来自启动时 CLI 输出的 `Change:` 字段
|
|
49
|
+
- **绝不使用 `--change default`**,除非 CLI 启动时明确显示的 Change 名称就是 `default`
|
|
50
|
+
5. **读取 CLI 输出的下一步 prompt**,回到步骤 1
|
|
51
|
+
|
|
52
|
+
### auto 参数
|
|
53
|
+
|
|
54
|
+
| 参数 | 说明 |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `--input "<需求>"` | 启动时传入用户需求 |
|
|
57
|
+
| `--mode <模式>` | 显式指定流程模式(默认按复杂度自动分类) |
|
|
58
|
+
| `--done --change <名> --output "..."` | 完成当前步骤(必带 --change) |
|
|
59
|
+
| `--spec-dir <path>` | 指定规范目录 |
|
|
60
|
+
| `--non-interactive` | CI/脚本下禁用交互 |
|
|
61
|
+
|
|
62
|
+
## 阶段审核门控(Stage Review Gate)
|
|
63
|
+
|
|
64
|
+
审核发生在 brainstorm / plan / execute 各阶段的 review 步骤,**分级由 CLI 按变更规模自动判定**(不是 agent 凭关键词或复杂度启发式判断):
|
|
65
|
+
|
|
66
|
+
- **tier=self**(变更 ≤3 文件):当前 agent 自审,直接产 review.json。
|
|
67
|
+
- **tier=independent**(变更 >3 文件):必须派发**独立 QA 子代理**(独立上下文,不共享实现者分析)产 review.json。
|
|
68
|
+
|
|
69
|
+
CLI 会在 review 步骤注入:完整 JSON schema 表 + 示例 + docHash 算法 + 自动决策 checklist(AC-001 起,逐条核验公共 API / schema / 鉴权 / 文件边界 / 依赖 / 核心模块 / 兼容性 / 业务等维度)。你按**实际注入的契约与 tier 指令**执行:
|
|
70
|
+
|
|
71
|
+
- checklist 全 ✅ 且方案唯一合理 → AUTO_DECIDED,推进下一阶段
|
|
72
|
+
- checklist 有 ❌(影响架构/数据/接口/权限/兼容性/业务)→ 暂停,用 AskUserQuestion 让用户选择
|
|
73
|
+
|
|
74
|
+
**不要**自行编造"简单/中等/复杂 → N 个审核子代理"规则——审核子代理数量由 tier 决定(self=0 额外子代理,independent=1 个独立 QA),不是复杂度启发式;以 CLI 实际注入的 tier 与 checklist 为准。
|
|
75
|
+
|
|
76
|
+
## 关键规则
|
|
77
|
+
|
|
78
|
+
- 不要跳过任何步骤
|
|
79
|
+
- 不要手动修改进度数据(SQLite 数据库)
|
|
80
|
+
- 不要自动 commit,只 `git add`
|
|
81
|
+
- 不要使用 npx
|
|
82
|
+
- 不要编造不存在的 CLI 子命令
|
|
83
|
+
- 遇到命令报错 → 展示错误,暂停等用户介入
|
|
84
|
+
- **每次 `sillyspec run auto --done` 都必须携带 `--change <变更名>`**(= CLI 首次输出的 Change 名)
|
|
85
|
+
|
|
86
|
+
## 异常处理
|
|
87
|
+
|
|
88
|
+
- 命令执行失败 → 展示错误信息,暂停等待用户指示
|
|
89
|
+
- 用户说"停止"/"暂停" → 立即停止,报告当前进度
|
|
90
|
+
|
|
91
|
+
## 完成条件
|
|
92
|
+
|
|
93
|
+
CLI 输出"全部流程已完成"后,输出完整流程总结,提示用户提交改动(`/sillyspec:commit`)。
|
package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-brainstorm/SKILL.md
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:brainstorm
|
|
3
|
+
description: 用于正式开始开发前的需求澄清和技术方案设计。适合用户提出新功能、新模块、架构调整、复杂改造,或说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"。产出结构化方案(design/proposal/requirements/tasks 四件套),但不直接写代码。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 交互规范
|
|
7
|
+
|
|
8
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。** 不要用编号列表让用户手动输入数字。
|
|
9
|
+
|
|
10
|
+
## 何时使用
|
|
11
|
+
|
|
12
|
+
- 用户提出新功能、新模块、架构调整、复杂改造
|
|
13
|
+
- 用户说"先做需求分析、输出技术方案、创建变更前先梳理、帮我设计下"
|
|
14
|
+
- 产出:`design.md` + `proposal.md` + `requirements.md` + `tasks.md`(四件套),不写代码
|
|
15
|
+
|
|
16
|
+
## 多变更说明
|
|
17
|
+
|
|
18
|
+
项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录)时,所有 `sillyspec run` 命令需加 `--change <变更名>` 指定操作目标;只有一个变更时可省略(CLI 自动检测)。建议变更名格式:`YYYY-MM-DD-<简短描述>`。
|
|
19
|
+
|
|
20
|
+
## 步骤生命周期(所有阶段通用)
|
|
21
|
+
|
|
22
|
+
> `sillyspec brainstorm` 是 `sillyspec run brainstorm` 的顶层别名,两者等价。
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
sillyspec run brainstorm # 输出当前步骤 prompt
|
|
26
|
+
sillyspec run brainstorm --done --output "摘要" # 完成当前步骤(--input "用户原话" 记录输入)
|
|
27
|
+
sillyspec run brainstorm --status # 查看阶段进度
|
|
28
|
+
sillyspec run brainstorm --skip # 跳过可选步骤
|
|
29
|
+
sillyspec run brainstorm --reset # 重置阶段(从头开始)
|
|
30
|
+
sillyspec run brainstorm --reopen --from-step N # 重新打开已完成阶段修订(N=序号或名称)
|
|
31
|
+
sillyspec run brainstorm --wait --reason "..." --options "A,B" # 暂停等用户决策
|
|
32
|
+
sillyspec run brainstorm --continue --answer "..." # 恢复等待中的步骤
|
|
33
|
+
sillyspec run brainstorm --done --answer "..." --output "..." # 一步完成 wait+done
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 通用参数(所有阶段适用)
|
|
37
|
+
|
|
38
|
+
| 参数 | 说明 |
|
|
39
|
+
|---|---|
|
|
40
|
+
| `--change <名>` | 指定变更名(多活跃变更必填,单变更可省略自动检测) |
|
|
41
|
+
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
42
|
+
| `--non-interactive` | CI/脚本下禁用交互式 prompt |
|
|
43
|
+
| `--interactive` | 强制交互(即便 stdin 非 TTY) |
|
|
44
|
+
| `--skip-approval` | 跳过阶段转换/审批检查(不能跳产物校验 gate——review.json/文档产物硬校验仍在) |
|
|
45
|
+
|
|
46
|
+
## brainstorm 特有:requiresWait 步骤
|
|
47
|
+
|
|
48
|
+
某些步骤(如"对话式探索与需求澄清")需要用户输入。两种方式:
|
|
49
|
+
|
|
50
|
+
> 自动去重:若前置 step 已对同一问题(waitReason 归一化后相同)确认过,后续重复 wait 会自动跳过,无需再 `--wait`。
|
|
51
|
+
|
|
52
|
+
- **方式一(推荐)**:分步——先 `--wait` 记录等待,让用户亲眼看到 CLI 打出的选项再作答,再 `--continue --answer`,最后 `--done`:
|
|
53
|
+
```bash
|
|
54
|
+
sillyspec run brainstorm --wait --change <名> --reason "等待用户回答" --output "探索问题"
|
|
55
|
+
sillyspec run brainstorm --continue --answer "用户回答" --change <名>
|
|
56
|
+
sillyspec run brainstorm --done --change <名> --output "需求已澄清"
|
|
57
|
+
```
|
|
58
|
+
- **方式二**:AI 自行与用户交互后,一步完成(仅在用户已在对话中明确给出答案、无需再走 CLI 等待展示时用):
|
|
59
|
+
```bash
|
|
60
|
+
sillyspec run brainstorm --done --change <名> --answer "用户回答" --output "需求已澄清"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
> ⚠️ 两种方式都要求 `--answer` 是**用户真实的回答**,不是你替用户编的回答。`requiresWait` 门只校验 `--answer` 非空,挡不住「AI 伪造用户回答」——所以对方案选择/设计确认这类关键决策,优先用方式一让用户亲手作答,而不是 AI 中继一句话带过。
|
|
64
|
+
|
|
65
|
+
## 阶段流转
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
┌─ scale=large → plan(四件套齐)
|
|
69
|
+
scan → brainstorm ┤
|
|
70
|
+
└─ scale=small → quick --linked-changes(仅 design.md)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
brainstorm 完成时按 design.md frontmatter 的 `scale` 分叉:
|
|
74
|
+
- **large**(多文件/跨模块/有状态机或 schema 变更):四件套齐 + Design Grill 审查通过(tier=independent 时由独立审查子代理产出 stage review.json)→ `sillyspec run plan --change <变更名>`
|
|
75
|
+
- **small**(≤2 文件、单模块、无跨模块依赖):仅生成 design.md → `sillyspec run quick --linked-changes <变更名>`
|
|
76
|
+
|
|
77
|
+
> 规模由 AI 在 brainstorm 最后一步评估并写入 design.md frontmatter。判错可手动改 `scale` 后再跑相应阶段。
|
|
78
|
+
|
|
79
|
+
### Stage Review Gate(brainstorm 末尾的 design review.json)
|
|
80
|
+
|
|
81
|
+
brainstorm 在 `tier=independent` 规模下除 design.md 等四件套外,还需产出一个 stage 级 `review.json`,CLI `Stage Review Gate` 硬校验其 schema 与 `docHash` 真实性。
|
|
82
|
+
|
|
83
|
+
- 路径:`.sillyspec/.runtime/stage-reviews/brainstorm-review-<stage-review-run-id>/review.json`(目录可能不存在需手建;run-id 由该步 `--done` prompt 输出指定)。marker 文件 `.runtime/current-stage-review-run-id-brainstorm-<变更名>`。
|
|
84
|
+
- **run-id / marker 由 CLI 自动生成注入**(review step prompt 渲染时 echo 完整目录路径 + 写 marker;撞 gate 报缺 review.json 时 gate 也 echo 完整路径 + 写 marker)。直接用 CLI 给的路径写 review.json,**勿手算 run-id(必须 `review-` 前缀)、勿手写 marker**。卡住时用 `sillyspec register-stage-review --change <名> --stage brainstorm` 一步生成。
|
|
85
|
+
- 字段(`schemaVersion:1`,`reviewType=design` —— 区别于 execute 的 `acceptance`):
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"schemaVersion": 1,
|
|
90
|
+
"reviewType": "design",
|
|
91
|
+
"reviewedFiles": ["changes/<变更名>/design.md"], // [0] 为主文档
|
|
92
|
+
"docHash": "<sha256(reviewedFiles[0] 文件内容,hex)>",
|
|
93
|
+
"specVerdict": "pass", // pass | fail | cannot_verify
|
|
94
|
+
"qualityVerdict": "pass", // pass | fail | cannot_verify
|
|
95
|
+
"checklist": [ // 扁平数组,逐条对照 design 章节核验
|
|
96
|
+
{ "item": "背景与目标", "result": "pass", "note": "..." } // result: pass | gap | fail
|
|
97
|
+
],
|
|
98
|
+
"requiredEvidence": [], // cannot_verify 时必填非空
|
|
99
|
+
"reviewerNotes": "..."
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
- `docHash` = `sha256(主审查文档内容)`(hex)—— brainstorm 主文档是 `design.md`(即 `reviewedFiles[0]`)。CLI 重算 sha256 比对,不符判伪造(fail-closed)。docHash 可先占位(如 "TODO");改 design.md 后勿手算 sha256——跑 `sillyspec register-stage-review --change <变更名> --stage brainstorm --refresh-hash` 一键重算代填(verdict 保留;design 改版多阶段联动加 --all)。`tier=self`(≤3 文件)降级为当前 agent 自审,不强制独立子代理。
|
|
104
|
+
- 运行时 CLI 会把精确 schema 表 + 完整 JSON 示例 + docHash 算法注入到该步 prompt,以你实际收到的注入版契约为权威逐字模板。
|
|
105
|
+
|
|
106
|
+
## 铁律
|
|
107
|
+
|
|
108
|
+
- **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
|
|
109
|
+
- 只做当前步骤 prompt 描述的操作,不跳过、不自行扩展
|
|
110
|
+
- 产物写入 CLI 输出的 `changeDir` 目录(如 `<changeDir>/design.md`),不要自己拼路径
|
|
111
|
+
- 完成后立即 `--done`,不跳过
|
|
112
|
+
|
|
113
|
+
## 用户指令
|
|
114
|
+
$ARGUMENTS
|
package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-commit/SKILL.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:commit
|
|
3
|
+
description: 智能提交 — 自动收集变更信息,生成 commit message
|
|
4
|
+
argument-hint: "[可选:自定义 commit message]"
|
|
5
|
+
version: "3.7.32"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 交互规范
|
|
9
|
+
当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。
|
|
10
|
+
|
|
11
|
+
## 用法
|
|
12
|
+
- /sillyspec:commit — 智能提交:自动收集变更信息,生成 commit message
|
|
13
|
+
- /sillyspec:commit "自定义 message" — 使用指定 message 直接提交
|
|
14
|
+
|
|
15
|
+
## 任务
|
|
16
|
+
$ARGUMENTS
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 流程
|
|
21
|
+
|
|
22
|
+
### 1. 收集变更上下文 + 建议 message(一条命令)
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
sillyspec commit
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
CLI 已接管全部手工收集(上次 commit 时间过滤 QUICKLOG 条目、活跃变更已勾 task、按路径模式归类阶段产出、diff stat),并按下方 type 表生成建议 message + 可照抄的 `git add -A && git commit -m ...` 命令。**它只建议不提交。**
|
|
29
|
+
|
|
30
|
+
- 命令输出「没有需要提交的修改」→ 结束。
|
|
31
|
+
- 无语义来源匹配(输出会明说)→ 展示 diff stat,让用户自己写。
|
|
32
|
+
|
|
33
|
+
### 2. 展示确认
|
|
34
|
+
|
|
35
|
+
把 `sillyspec commit` 的建议 message + 文件统计原样展示给用户(AskUserQuestion):
|
|
36
|
+
|
|
37
|
+
选择:确认提交 / 编辑 message / 取消
|
|
38
|
+
|
|
39
|
+
用户选择编辑 → 让用户输入新 message → 再次确认。
|
|
40
|
+
|
|
41
|
+
### 3. 执行提交
|
|
42
|
+
|
|
43
|
+
用户确认后执行 `git add -A` + 输出里给出的 `git commit` 命令(或用户编辑后的 message)。
|
|
44
|
+
|
|
45
|
+
提交成功后展示 commit hash + 文件数 + 行数统计。
|
|
46
|
+
|
|
47
|
+
### 参考:message 生成口径(CLI 同源实现,src/commit-suggest.js)
|
|
48
|
+
|
|
49
|
+
| 来源 | type | 示例 |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| 只有 quick 条目 | fix | fix: 手机号校验修复(含正则修正) |
|
|
52
|
+
| 只有 execute 已勾 task | feat | feat: <变更名> 完成 task ×N |
|
|
53
|
+
| 只有阶段产出 | docs | docs: sillyspec scan 完成 |
|
|
54
|
+
| 混合来源 | 取最主要的 type | body 里列出所有条目 |
|
|
55
|
+
| 无匹配来源 | — | 展示 diff stat,让用户自己写 |
|
|
56
|
+
|
|
57
|
+
**如果 $ARGUMENTS 非空**,直接使用用户指定的 message,跳过自动生成,但仍展示 diff stat。
|
|
58
|
+
|
|
59
|
+
## 多项目
|
|
60
|
+
检查修改的文件分别属于哪个子项目:
|
|
61
|
+
- 修改集中在一个子项目 → 在该子项目目录中 commit
|
|
62
|
+
- 修改跨多个子项目 → 用 AskUserQuestion 让用户选择:分开提交(每个子项目一个 commit)/ 合并提交
|
|
63
|
+
|
|
64
|
+
## 绝对规则
|
|
65
|
+
- ❌ 不要自动提交,必须展示 message 让用户确认
|
|
66
|
+
- ❌ 不要丢弃用户的修改
|
|
67
|
+
- ✅ $ARGUMENTS 非空时展示 diff stat 后直接提交(不需手动确认)
|
package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-continue/SKILL.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:continue
|
|
3
|
+
description: 自动判断并执行下一步
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
你现在是 SillySpec 的自动推进器。
|
|
9
|
+
|
|
10
|
+
## 判断逻辑
|
|
11
|
+
|
|
12
|
+
> 🔧 **先跑 `sillyspec next`**——CLI 已内置下方探测表(含活跃变更逐个推断 + task 勾选进度),输出「状态 + 下一步命令 + 依据」。直接按输出的建议命令执行;CLI 异常/输出与实际不符时才按下方手工表兜底。
|
|
13
|
+
|
|
14
|
+
按顺序检查,第一个未完成的就执行:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
1. 有 HANDOFF.json?→ 执行 /sillyspec:resume
|
|
18
|
+
|
|
19
|
+
2. .sillyspec/changes/ 有进行中的变更?
|
|
20
|
+
2a. 没有任何文件 → 提示检查 proposal 是否需要完善
|
|
21
|
+
2b. 没有 design.md → 提示补充 design(运行 /sillyspec:brainstorm 推进到设计产物步)
|
|
22
|
+
2c. 没有 tasks.md → 执行 /sillyspec:brainstorm(规范文件 proposal/requirements/tasks 由 brainstorm 末步生成)
|
|
23
|
+
2d. 有 tasks.md 但没有 plan.md → 执行 /sillyspec:plan
|
|
24
|
+
2e. tasks.md 有未完成项 + 有计划文件 → 执行 /sillyspec:execute
|
|
25
|
+
2f. tasks.md 全完成 + 没验证 → 执行 /sillyspec:verify
|
|
26
|
+
2g. 已验证通过 → 执行 /sillyspec:archive
|
|
27
|
+
|
|
28
|
+
3. 有设计文档但没有对应变更?
|
|
29
|
+
→ 提示运行 /sillyspec:brainstorm(基于设计文档建立变更并生成规范文件)
|
|
30
|
+
|
|
31
|
+
4. 有 .sillyspec/docs/*/scan/ 但没有进行中的工作?
|
|
32
|
+
→ 提示运行 /sillyspec:brainstorm "你的想法"
|
|
33
|
+
|
|
34
|
+
5. 什么都没有?
|
|
35
|
+
→ 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 输出
|
|
39
|
+
|
|
40
|
+
先报告检测结果,再执行:
|
|
41
|
+
|
|
42
|
+
> 🤖 SillySpec 自动检测
|
|
43
|
+
>
|
|
44
|
+
> 当前状态:[描述]
|
|
45
|
+
> 下一步:[执行的命令]
|
|
46
|
+
>
|
|
47
|
+
> [开始执行...]
|
package/.claude/worktrees/sillyspec-data-model-research/.claude/skills/sillyspec-doctor/SKILL.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sillyspec:doctor
|
|
3
|
+
description: 用于 SillySpec 自检和状态修复。适合用户说"检查下状态、修复 progress、doctor、状态不对"。全量扫描进度一致性,修复进度数据与实际产出不匹配的问题。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## 何时使用
|
|
7
|
+
|
|
8
|
+
- 用户说"检查下状态、修复 progress、doctor、状态不对"
|
|
9
|
+
- 进度数据与实际产出不匹配时自检修复
|
|
10
|
+
- 5 步:环境检查 → 项目配置 → 数据库完整性 → 状态一致性 → 修复建议
|
|
11
|
+
|
|
12
|
+
## 前置检查
|
|
13
|
+
|
|
14
|
+
**执行任何步骤前,先确认 SillySpec CLI 可用:**
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
sillyspec --version
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
失败则提示 `❌ SillySpec CLI 未安装` + 安装命令 `npm install -g sillyspec`,停止。
|
|
21
|
+
|
|
22
|
+
## 步骤生命周期(所有阶段通用)
|
|
23
|
+
|
|
24
|
+
> `sillyspec doctor` 是 `sillyspec run doctor` 的顶层别名,两者等价。
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
sillyspec run doctor # 输出当前步骤 prompt
|
|
28
|
+
sillyspec run doctor --done --output "摘要" # 完成当前步骤
|
|
29
|
+
sillyspec run doctor --status # 查看阶段进度
|
|
30
|
+
sillyspec run doctor --reset # 重置阶段(从头开始)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 通用参数(所有阶段适用)
|
|
34
|
+
|
|
35
|
+
| 参数 | 说明 |
|
|
36
|
+
|---|---|
|
|
37
|
+
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
38
|
+
| `--non-interactive` | CI/脚本下禁用交互式 prompt |
|
|
39
|
+
| `--json` | 输出 JSON(程序化读取) |
|
|
40
|
+
|
|
41
|
+
## doctor 特有
|
|
42
|
+
|
|
43
|
+
doctor 是辅助阶段,用于诊断而非推进流程。配套的轻量诊断命令(不经 run):
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
sillyspec progress show # 查看当前进度
|
|
47
|
+
sillyspec progress check # 状态一致性检查(只报告,不修复)
|
|
48
|
+
sillyspec progress repair # 修复状态元数据(dry-run)
|
|
49
|
+
sillyspec progress repair --apply # 真正修复
|
|
50
|
+
sillyspec progress validate # 校验并修复
|
|
51
|
+
sillyspec worktree doctor [--fix] # worktree 健康检查 + 修复
|
|
52
|
+
sillyspec doctor --align-execute-progress --change <name> # 按 plan.md 声明对齐 execute 派生戳(dry-run,只报告将补哪些 step)
|
|
53
|
+
sillyspec doctor --align-execute-progress --change <name> --confirm # 实际落盘:补 step 戳 + 置 execute stage status=completed
|
|
54
|
+
sillyspec doctor --cleanup-remnant # 扫描并报告 0 字节空占位 db(dry-run)
|
|
55
|
+
sillyspec doctor --cleanup-remnant --confirm # 实际删除空占位 db(仅删 0 字节,不动有内容的 db)
|
|
56
|
+
sillyspec doctor --dump-db --path <db 路径> # dump 指定 db 内容到文件(取证,查 stages/steps/changes 表)
|
|
57
|
+
sillyspec doctor --json # 结构化诊断 + 落盘 .sillyspec/.runtime/doctor-diagnosis.json
|
|
58
|
+
sillyspec runtime list # 枚举 .sillyspec/.runtime/ 下所有运行时产物(只读,看手上有哪些证据/状态文件)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
> `--align-execute-progress` 仅当 `plan.md` 所有 task checkbox 全勾时才对齐 execute 阶段进度戳。典型用于 worktree 已 cleanup(终态)但 execute 派生戳未盖上的死锁。默认 dry-run,加 `--confirm` 才写盘。doctor 信任 `plan.md` 声明、不复核代码,verify 阶段兜底。`--change` 缺省时按单活跃变更自动兜底。
|
|
62
|
+
>
|
|
63
|
+
> `--cleanup-remnant` 清理 init/平台切换残留的 0 字节空 db(占位但无数据)。默认 dry-run 只报告,`--confirm` 才删。绝不删有内容的 db。
|
|
64
|
+
>
|
|
65
|
+
> `runtime list` 是只读枚举:列出 `.sillyspec/.runtime/` 下的 db、doctor-diagnosis.json、workflow-runs/、user-inputs.md 等产物及用途。多会话/压缩后想知道「我手上有哪些证据文件」时用。加 `--json` 程序化读取。
|
|
66
|
+
>
|
|
67
|
+
> `doctor --json` 的 pointer_health 维度含 `pointer_missing_but_managed` 信号:项目根存在平台接管声明(`.sillyspec-platform-managed`)但恢复指针缺失——此状态下裸调命令会 fail-closed 拒绝静默落本地。恢复路径见信号文案:重跑平台 scan 重建指针 / `sillyspec platform disconnect` 彻底脱离 / 显式 `--spec-dir` 临时指定。
|
|
68
|
+
|
|
69
|
+
## 铁律
|
|
70
|
+
|
|
71
|
+
- **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
|
|
72
|
+
- doctor 只诊断和建议,修复操作要让用户确认
|
|
73
|
+
- 完成后立即 `--done`,不跳过
|
|
74
|
+
|
|
75
|
+
## 用户指令
|
|
76
|
+
$ARGUMENTS
|