sillyspec 3.28.2 → 3.28.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/sillyspec-auto/SKILL.md +16 -55
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +1 -1
- package/.claude/skills/sillyspec-continue/SKILL.md +8 -38
- package/.claude/skills/sillyspec-execute/SKILL.md +10 -2
- package/.claude/skills/sillyspec-knowledge/SKILL.md +19 -249
- package/.claude/skills/sillyspec-plan/SKILL.md +1 -1
- package/.claude/skills/sillyspec-propose/SKILL.md +6 -77
- package/.claude/skills/sillyspec-resume/SKILL.md +8 -57
- package/.claude/skills/sillyspec-state/SKILL.md +7 -46
- package/.claude/skills/sillyspec-workspace/SKILL.md +14 -156
- package/AGENTS.md +24 -0
- package/INSTRUCTIONS.md +12 -0
- package/package.json +1 -1
- package/src/archive-delta.js +127 -2
- package/src/change-delete.js +2 -1
- package/src/change-list.js +7 -2
- package/src/change-risk-profile.js +77 -6
- package/src/config-cat.js +12 -1
- package/src/constants.js +9 -1
- package/src/design-facts.js +64 -0
- package/src/dispatch/backends/sillyhub-mcp.js +17 -5
- package/src/docs-check.js +153 -27
- package/src/docs-migrate.js +124 -0
- package/src/doctor-diagnostics.js +441 -5
- package/src/foreign-declared.js +53 -2
- package/src/index.js +353 -28
- package/src/module-impact.js +77 -12
- package/src/plan-adopt-waves.js +13 -5
- package/src/progress/change-registry.js +35 -0
- package/src/progress.js +64 -1
- package/src/quick-recommend.js +6 -1
- package/src/quicklog.js +10 -2
- package/src/run/command.js +159 -13
- package/src/run/complete-handlers.js +162 -9
- package/src/run/complete.js +104 -5
- package/src/run/gates.js +116 -8
- package/src/run/progress-confirm.js +66 -0
- package/src/run/prompt.js +235 -36
- package/src/run/quick-audit.js +12 -5
- package/src/run/scan-profile.js +20 -2
- package/src/run/shared.js +84 -11
- package/src/run/stage.js +42 -0
- package/src/runtime-hygiene.js +84 -0
- package/src/scan-postcheck.js +5 -1
- package/src/spec-sync.js +63 -8
- package/src/stage-contract.js +83 -3
- package/src/stage-review.js +3 -0
- package/src/stages/archive.js +4 -4
- package/src/stages/brainstorm-auto.js +2 -1
- package/src/stages/brainstorm.js +11 -25
- package/src/stages/doctor.js +41 -515
- package/src/stages/execute.js +10 -14
- package/src/stages/plan-postcheck.js +191 -7
- package/src/stages/plan.js +7 -27
- package/src/stages/quick.js +15 -13
- package/src/stages/verify.js +23 -21
- package/src/sync-noise.js +158 -0
- package/src/sync.js +42 -17
- package/src/task-review.js +225 -1
- package/src/verify-facts-schema.js +141 -0
- package/src/verify-postcheck.js +421 -49
- package/src/verify-probes.js +142 -13
- package/src/workflow.js +6 -0
- package/src/worktree-apply.js +51 -13
- package/src/worktree.js +5 -1
- package/templates/agents-instruction.md +1 -1
- package/.claude/skills/verify-per-user/SKILL.md +0 -6
|
@@ -20,7 +20,7 @@ $ARGUMENTS
|
|
|
20
20
|
|
|
21
21
|
## 执行流程
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
按 brainstorm → plan → execute → verify 顺序自动推进;**编排由 CLI driver 承担,你只执行判断步**。
|
|
24
24
|
|
|
25
25
|
### 启动
|
|
26
26
|
|
|
@@ -28,66 +28,27 @@ $ARGUMENTS
|
|
|
28
28
|
sillyspec run auto --input "<用户需求>" [--mode <模式>]
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
3. 执行 prompt 中的操作
|
|
33
|
-
4. **记录 CLI 输出中显示的 Change 名称**(如 `Change: 2026-06-02-xxx`)
|
|
31
|
+
零活跃变更时 CLI 自动创建(也可 `--change <名>` 指定);多活跃变更 CLI 会列出候选要求显式指定。单活跃自动选中并回显,无需记忆/传递变更名。
|
|
34
32
|
|
|
35
|
-
###
|
|
33
|
+
### 每步循环(唯一纪律)
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
1. 跑 CLI 给出的命令(启动时是上面的 run auto;此后每步读上一步输出尾部的 **SS-META 块**)。
|
|
36
|
+
2. 读 prompt 尾部机器可读元数据块:
|
|
38
37
|
|
|
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
38
|
```
|
|
48
|
-
-
|
|
49
|
-
|
|
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
|
-
## 关键规则
|
|
39
|
+
<!--SS-META:{"stage":...,"requiresUser":true|false,"doneCommand":"...","waitHint":"..."}-->
|
|
40
|
+
```
|
|
77
41
|
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
|
|
82
|
-
- 不要编造不存在的 CLI 子命令
|
|
83
|
-
- 遇到命令报错 → 展示错误,暂停等用户介入
|
|
84
|
-
- **每次 `sillyspec run auto --done` 都必须携带 `--change <变更名>`**(= CLI 首次输出的 Change 名)
|
|
42
|
+
3. 按块驱动:
|
|
43
|
+
- `requiresUser=true` → 本步需要用户输入:按 prompt 的 wait 指令先展示选项,取得用户回答后走 `--continue --answer`,再 `--done`(用户在终端且带 `--wait-interactive` 时 CLI 会直接 readline 收,无需转抄)。
|
|
44
|
+
- `requiresUser=false` → 执行本步任务(设计/实现/审查等判断工作),完成后**逐字执行 `doneCommand`**(`--output "你的摘要"` 换成真实一句话摘要)。
|
|
45
|
+
4. CLI 会在阶段边界自动流转(gate 不过会给出修复指引——修完重跑,进度不丢)。
|
|
85
46
|
|
|
86
|
-
|
|
47
|
+
### 终止
|
|
87
48
|
|
|
88
|
-
|
|
89
|
-
- 用户说"停止"/"暂停" → 立即停止,报告当前进度
|
|
49
|
+
**CLI 打印「流程收尾总结」分隔线块(变更/阶段/任务勾选/产物清单)即全流程完成**——不要自行判断完成、不要自撰总结。CLI 若提示「全部流程已完成」(All auto flow stages are complete)同义。
|
|
90
50
|
|
|
91
|
-
|
|
51
|
+
### 边界
|
|
92
52
|
|
|
93
|
-
|
|
53
|
+
- 中断恢复:直接重跑 `sillyspec run auto`(进度已落盘,从断点续)。
|
|
54
|
+
- 分类为 quick 的小变更:CLI 会提示改跑 `sillyspec run quick`,照提示执行。
|
|
@@ -100,7 +100,7 @@ brainstorm 在 `tier=independent` 规模下除 design.md 等四件套外,还
|
|
|
100
100
|
}
|
|
101
101
|
```
|
|
102
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
|
|
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)。忘跑也不会被拦:gate 检测到「仅 docHash 失配」时自动机械重算放行(verdict 保留 + 审计行留痕);schema/verdict 错误照常 fail-closed。`tier=self`(≤3 文件)降级为当前 agent 自审,不强制独立子代理。
|
|
104
104
|
- 运行时 CLI 会把精确 schema 表 + 完整 JSON 示例 + docHash 算法注入到该步 prompt,以你实际收到的注入版契约为权威逐字模板。
|
|
105
105
|
|
|
106
106
|
## 铁律
|
|
@@ -3,45 +3,15 @@ name: sillyspec:continue
|
|
|
3
3
|
description: 自动判断并执行下一步
|
|
4
4
|
---
|
|
5
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 "你的想法"
|
|
6
|
+
## 流程
|
|
33
7
|
|
|
34
|
-
|
|
35
|
-
→ 提示运行 /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
36
|
-
```
|
|
8
|
+
**先跑 `sillyspec next`**——CLI 已内置全套探测(HANDOFF / 活跃变更逐个产物推断 / task 勾选进度 / scan 文档 / 绿地棕地判定),直接输出「状态 + 下一步命令 + 依据」。
|
|
37
9
|
|
|
38
|
-
|
|
10
|
+
1. 把探测结果转述给用户(状态 / 下一步 / 依据三行)。
|
|
11
|
+
2. 按输出的建议命令直接执行对应 skill(如 `sillyspec run brainstorm` / `plan` / `execute` / `verify` / `archive`)。
|
|
12
|
+
3. 仅当 CLI 异常或输出与实际明显不符时,才手工核对 `.sillyspec/` 下的产物文件后重新判断。
|
|
39
13
|
|
|
40
|
-
|
|
14
|
+
勿自行 ls/cat 重算探测表——那就是 `next` 命令本体。
|
|
41
15
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
> 当前状态:[描述]
|
|
45
|
-
> 下一步:[执行的命令]
|
|
46
|
-
>
|
|
47
|
-
> [开始执行...]
|
|
16
|
+
## 用户指令
|
|
17
|
+
$ARGUMENTS
|
|
@@ -90,7 +90,15 @@ execute 完成时,每个 task 必须有 `review.json` 且 verdict 通过,否
|
|
|
90
90
|
|
|
91
91
|
- `base` / `head` 必须是**真实 git commit**(`git rev-parse --verify`),否则判伪造并阻断。`changedFiles` 与实际 `git diff base..head` 完全不相交也判伪造。base..head 空 commit diff 但 working-tree 有未提交改动 → 视为有效改动(warning 不阻断)。
|
|
92
92
|
|
|
93
|
-
> 🔧
|
|
93
|
+
> 🔧 **首选命令式写入(2026-09-07 起)——不要手拼 JSON**:
|
|
94
|
+
>
|
|
95
|
+
> ```bash
|
|
96
|
+
> sillyspec review write --change <变更名> --task task-NN --spec pass --quality pass --notes "评审备注"
|
|
97
|
+
> ```
|
|
98
|
+
>
|
|
99
|
+
> verdict/notes/evidence 由你给;`schemaVersion`/路径目录/`execute-run-id`/`base`/`head`/`changedFiles`/`diffPaths` 全由 CLI 从 git + task 卡代算,写完即过 schema。`cannot_verify` 必须加 `--evidence "..."`;归属切片为空(改了声明外文件 / 纯验证任务)时 CLI 会报错列出 diff 候选——确认后用 `--changed-files <a,b>` 显式给出(纯验证任务 `--changed-files ""` 空覆盖 + evidence 披露);已存在的 review 拒覆盖,`--force` 越过。
|
|
100
|
+
>
|
|
101
|
+
> 手写整文件仍是兼容路径:mechanics 字段勿手算——可瞎填占位(如 `"base": "TODO"`),写完跑 `sillyspec backfill-reviews --change <变更名> --adopt` 一键重算代填(verdict 原样保留);gate 拦下 mechanics 错误时也跑同一条命令修复。
|
|
94
102
|
|
|
95
103
|
- 后端 router task 另需产出 API 端点清单:`sillyspec endpoints extract --change <变更名> --task <task-NN>`(CLI 静态扫描 FastAPI/Express/Spring 路由装饰器生成 endpoints.json,verify 探针 5 消费;扫描面默认取 task 卡 allowed_paths ∪ design 清单,也可 `--dir`/`--files` 显式指定)。勿手扫装饰器手写——易漏 endpoint。
|
|
96
104
|
|
|
@@ -118,7 +126,7 @@ execute 还有**第二道**独立的 stage 级审查:除逐 task review.json
|
|
|
118
126
|
}
|
|
119
127
|
```
|
|
120
128
|
|
|
121
|
-
- `docHash` = `sha256(主审查文档内容)`(hex)—— execute 主审查文档是 `design.md`,即 `reviewedFiles[0]`。CLI 会重算 sha256 比对,不符判伪造(fail-closed);找不到主文档也 fail。**docHash 可先占位(如 "TODO")勿手算**——改 design.md 后跑 `sillyspec register-stage-review --change <变更名> --stage execute --refresh-hash` 一键重算代填(verdict 保留;design 改版多阶段联动加 --all
|
|
129
|
+
- `docHash` = `sha256(主审查文档内容)`(hex)—— execute 主审查文档是 `design.md`,即 `reviewedFiles[0]`。CLI 会重算 sha256 比对,不符判伪造(fail-closed);找不到主文档也 fail。**docHash 可先占位(如 "TODO")勿手算**——改 design.md 后跑 `sillyspec register-stage-review --change <变更名> --stage execute --refresh-hash` 一键重算代填(verdict 保留;design 改版多阶段联动加 --all)。忘跑也不会被拦:gate 检测到「仅 docHash 失配」时自动机械重算放行(verdict 保留 + 审计行留痕);schema/verdict 错误照常 fail-closed。
|
|
122
130
|
- `tier=independent` 时必须由独立 QA 子代理产出该 review.json(独立上下文,不共享实现者分析);`tier=self`(变更 ≤3 文件)降级为当前 agent 自审。
|
|
123
131
|
- **审查范围分级**(tier=independent 时省重复消耗):Task Review Gate 已产出 review.json 且 specVerdict/qualityVerdict 双 pass 的 task,QA 子代理只抽查(读 1-2 个核心 diff 文件抽验 reviewerNotes 与实际改动相符);fail/cannot_verify/缺失的 task 全量重审。三项始终必查:跨 task 交界、design.md 整体对照、组装行为(全量测试/构建/启动)——task review 只看单 task diff,覆盖不到这三项。
|
|
124
132
|
- 该 acceptance review 同时覆盖"代码审查"视角,后续代码审查步骤仅需轻量复审。
|
|
@@ -5,266 +5,36 @@ argument-hint: "search --query \"<text>\" --limit N | inspect --id \"<id>\" | va
|
|
|
5
5
|
version: "3.19.2"
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
## 交互规范
|
|
9
|
-
当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。
|
|
10
|
-
|
|
11
8
|
## 何时使用此技能
|
|
12
|
-
Use this skill when working on a SillySpec repository and the task may depend on prior project knowledge, known issues, implementation patterns, scan-derived learnings, execute-stage knowledge hits, or `.sillyspec/knowledge`.
|
|
13
|
-
|
|
14
|
-
Before implementing changes, **first search the knowledge base** to avoid repeating known work or running into known issues.
|
|
15
|
-
|
|
16
|
-
## 命令列表
|
|
17
|
-
|
|
18
|
-
### 1. knowledge search — 搜索知识库
|
|
19
|
-
在执行任务前搜索相关知识。
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
sillyspec knowledge search --query "<task summary>" --limit 5
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**示例:**
|
|
26
|
-
```bash
|
|
27
|
-
sillyspec knowledge search --query "worktree baseline apply conflict" --limit 5
|
|
28
|
-
sillyspec knowledge search --query "postcheck validation error"
|
|
29
|
-
sillyspec knowledge search --query "GLM usage metadata"
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**输出(JSON):**
|
|
33
|
-
```json
|
|
34
|
-
{
|
|
35
|
-
"ok": true,
|
|
36
|
-
"query": "worktree baseline",
|
|
37
|
-
"matches": [
|
|
38
|
-
{
|
|
39
|
-
"id": "patterns",
|
|
40
|
-
"path": "knowledge/patterns.md",
|
|
41
|
-
"title": "Patterns",
|
|
42
|
-
"summary": "每个阶段一个独立模块定义(含步骤与提示词)...",
|
|
43
|
-
"score": 3,
|
|
44
|
-
"tags": ["worktree", "git-worktree", "WorktreeManager"],
|
|
45
|
-
"category": "Patterns"
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**使用场景:**
|
|
52
|
-
- 实现新功能前,检查是否有现有模式可复用
|
|
53
|
-
- 遇到报错前,搜索是否是已知问题
|
|
54
|
-
- 修改特定模块前,了解约定和坑点
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
### 2. knowledge inspect — 读取知识条目详情
|
|
59
|
-
搜索命中后,读取完整条目内容。
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
sillyspec knowledge inspect --id "<knowledge-id>"
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
**示例:**
|
|
66
|
-
```bash
|
|
67
|
-
sillyspec knowledge inspect --id "patterns"
|
|
68
|
-
sillyspec knowledge inspect --id "known-issues/sqljs-wasm-only"
|
|
69
|
-
sillyspec knowledge inspect --id "generated/worktree-baseline-conflict"
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**输出(JSON):**
|
|
73
|
-
```json
|
|
74
|
-
{
|
|
75
|
-
"ok": true,
|
|
76
|
-
"entry": {
|
|
77
|
-
"id": "patterns",
|
|
78
|
-
"title": "Patterns",
|
|
79
|
-
"summary": "每个阶段对应 `src/stages/` 下的独立模块...",
|
|
80
|
-
"zone": "manual",
|
|
81
|
-
"path": "knowledge/patterns.md",
|
|
82
|
-
"meta": {
|
|
83
|
-
"author": "<git-user>",
|
|
84
|
-
"created_at": "2026-06-19T12:40:00+08:00",
|
|
85
|
-
"updated_at": "2026-06-24T10:00:00+08:00"
|
|
86
|
-
},
|
|
87
|
-
"body": "完整 markdown 内容..."
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**zone 说明:**
|
|
93
|
-
- `manual` — 人工维护的知识(可直接信任)
|
|
94
|
-
- `generated` — 自动提取的知识(scan 生成,需人工审核)
|
|
95
|
-
- `proposed` — 提议待审核的知识(未合并)
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
### 3. knowledge validate — 校验知识库健康度
|
|
100
|
-
在 commit/archive 前检查知识库是否可用。
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
sillyspec knowledge validate
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
**输出(JSON):**
|
|
107
|
-
```json
|
|
108
|
-
{
|
|
109
|
-
"ok": false,
|
|
110
|
-
"errors": [
|
|
111
|
-
{
|
|
112
|
-
"code": "broken_reference",
|
|
113
|
-
"path": "knowledge/generated/foo.md",
|
|
114
|
-
"referenced_in": "INDEX.md",
|
|
115
|
-
"display": "Foo Pattern"
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
"code": "empty_file",
|
|
119
|
-
"path": "knowledge/bar.md"
|
|
120
|
-
}
|
|
121
|
-
],
|
|
122
|
-
"warnings": [
|
|
123
|
-
{
|
|
124
|
-
"code": "too_many_uncategorized",
|
|
125
|
-
"count": 12,
|
|
126
|
-
"path": "knowledge/uncategorized.md"
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"code": "unregistered_file",
|
|
130
|
-
"path": "knowledge/new-file.md"
|
|
131
|
-
}
|
|
132
|
-
]
|
|
133
|
-
}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
**错误码说明:**
|
|
137
|
-
| code | 说明 |
|
|
138
|
-
|---|---|
|
|
139
|
-
| `knowledge_dir_missing` | `.sillyspec/knowledge/` 目录不存在 |
|
|
140
|
-
| `missing_index` | `INDEX.md` 不存在 |
|
|
141
|
-
| `broken_reference` | INDEX.md 引用的文件不存在 |
|
|
142
|
-
| `empty_file` | 知识文件为空 |
|
|
143
|
-
| `too_many_uncategorized` | uncategorized.md 条目 ≥10,需清理 |
|
|
144
|
-
| `unregistered_file` | 手动知识文件未在 INDEX.md 注册 |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
### 4. knowledge refresh — 从 scan 文档刷新自动知识
|
|
149
|
-
**仅写 generated/ 区,不覆盖 manual/。**
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
sillyspec knowledge refresh
|
|
153
|
-
```
|
|
154
9
|
|
|
155
|
-
|
|
156
|
-
- scan 阶段完成后,自动提取可复用知识
|
|
157
|
-
- archive 阶段完成后,沉淀长期有效的模式
|
|
10
|
+
任务可能依赖项目既有知识(known issues / patterns / scan 结论 / `.sillyspec/knowledge`)时。**实现前先 search,避免重复踩坑。**
|
|
158
11
|
|
|
159
|
-
|
|
160
|
-
1. 扫描 `.sillyspec/docs/<project>/scan/*.md`
|
|
161
|
-
2. 提取每个 `## 章节`(至少 3 行)作为知识条目
|
|
162
|
-
3. 写入 `.sillyspec/knowledge/generated/<slug>.md`
|
|
163
|
-
4. 生成 `generated/INDEX.md`
|
|
12
|
+
## 命令速查
|
|
164
13
|
|
|
165
|
-
|
|
166
|
-
```json
|
|
167
|
-
{
|
|
168
|
-
"ok": true,
|
|
169
|
-
"generated_count": 8,
|
|
170
|
-
"new_count": 5,
|
|
171
|
-
"overwritten_count": 3,
|
|
172
|
-
"files": [
|
|
173
|
-
{ "file": "generated/worktree-isolation.md", "title": "...", "new": true },
|
|
174
|
-
{ "file": "generated/progress-management.md", "title": "...", "new": false }
|
|
175
|
-
]
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**注意事项:**
|
|
180
|
-
- generated/ 区知识是自动生成,不保证准确,需人工审核后合并到 manual/
|
|
181
|
-
- 已有文件会被覆盖( overwrite_count)
|
|
182
|
-
|
|
183
|
-
---
|
|
14
|
+
所有命令输出均为 stdout 纯 JSON(`ok` 顶层字段 + 失败 `code` 错误码),以实际输出为准——参数细节跑 `sillyspec knowledge <子命令>` 无参可见用法,勿背示例。
|
|
184
15
|
|
|
185
|
-
|
|
186
|
-
不直接编辑 manual/,而是写入 proposed/ 供审核。
|
|
187
|
-
|
|
188
|
-
```bash
|
|
189
|
-
sillyspec knowledge propose --title "<title>" --category <category> --body "<content>" --from "<source>"
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
**参数说明:**
|
|
193
|
-
| 参数 | 必填 | 说明 |
|
|
16
|
+
| 命令 | 用途 | 关键参数 |
|
|
194
17
|
|---|---|---|
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
|
|
200
|
-
**示例:**
|
|
201
|
-
```bash
|
|
202
|
-
sillyspec knowledge propose --title "GLM API 超时处理" --category known-issues --body "GLM 模型默认超时 30 秒..." --from "execute"
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
**输出(JSON):**
|
|
206
|
-
```json
|
|
207
|
-
{
|
|
208
|
-
"ok": true,
|
|
209
|
-
"id": "proposed/glm-api-timeout",
|
|
210
|
-
"path": "knowledge/proposed/glm-api-timeout.md",
|
|
211
|
-
"title": "GLM API 超时处理",
|
|
212
|
-
"category": "known-issues",
|
|
213
|
-
"new": true,
|
|
214
|
-
"action": "created"
|
|
215
|
-
}
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
**后续流程:**
|
|
219
|
-
- archive/commit 阶段审核 proposed/ 条目
|
|
220
|
-
- 合格的合并到 manual/,不合格的删除
|
|
18
|
+
| `sillyspec knowledge search --query "<任务关键词>" --limit 5` | 任务前搜知识库(与 execute 阶段同款匹配引擎) | `--query` 必填 |
|
|
19
|
+
| `sillyspec knowledge inspect --id "<id>"` | 读命中条目全文 | id 形如 `patterns` / `known-issues/xxx` / `generated/xxx` |
|
|
20
|
+
| `sillyspec knowledge validate` | commit/archive 前校验健康度 | errors(broken_reference/empty_file 等)须先修复 |
|
|
21
|
+
| `sillyspec knowledge refresh` | scan/archive 后从 scan 文档刷新自动知识 | 仅写 `generated/`,不碰 manual/ |
|
|
22
|
+
| `sillyspec knowledge propose --title "..." --category <分类> --body "..."` | 提议新知识 | 仅写 `proposed/` 供人工审核;`--from` 标来源 |
|
|
221
23
|
|
|
222
|
-
|
|
24
|
+
zone 语义:`manual`(人工维护,可直接信任)/ `generated`(自动提取,需人工审核)/ `proposed`(待审,未合并)。
|
|
223
25
|
|
|
224
26
|
## Agent 使用指南
|
|
225
27
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
3. 遵循知识中的约定和避坑建议
|
|
231
|
-
|
|
232
|
-
### 发现新知识
|
|
233
|
-
执行任务中发现可复用模式或新坑:
|
|
234
|
-
1. `knowledge propose --title "<标题>" --category <分类> --body "<内容>"`
|
|
235
|
-
2. 不要直接编辑 `.sillyspec/knowledge/manual/*.md`
|
|
236
|
-
|
|
237
|
-
### 提交前校验
|
|
238
|
-
commit/archive 前检查知识库状态:
|
|
239
|
-
1. `knowledge validate`
|
|
240
|
-
2. 如有 errors,先修复再提交
|
|
241
|
-
|
|
242
|
-
### 扫描后刷新
|
|
243
|
-
scan 阶段完成后:
|
|
244
|
-
1. `knowledge refresh`
|
|
245
|
-
2. 审核生成的 `generated/*.md`,有用的合并到 manual/
|
|
246
|
-
|
|
247
|
-
---
|
|
28
|
+
1. **任务前必查**:实现/改代码/排错前 `search` → 命中则 `inspect` → 遵循其中约定与避坑建议。
|
|
29
|
+
2. **发现新知识**:可复用模式或新坑用 `propose` 提议,不直接编辑 manual/。
|
|
30
|
+
3. **提交前校验**:commit/archive 前 `validate`,有 errors 先修复。
|
|
31
|
+
4. **扫描后刷新**:scan 完成后 `refresh`,`generated/` 中有用的条目待人工合并。
|
|
248
32
|
|
|
249
33
|
## 禁止事项
|
|
250
34
|
|
|
251
|
-
❌
|
|
252
|
-
-
|
|
253
|
-
-
|
|
254
|
-
|
|
255
|
-
❌ **不要使用 `grep` 或 `cat` 直接读取知识文件**
|
|
256
|
-
- 使用 `knowledge search` 和 `knowledge inspect`
|
|
257
|
-
- 它们使用与 execute 阶段相同的匹配引擎
|
|
258
|
-
|
|
259
|
-
❌ **不要让 agent 去审核 proposed/ 条目**
|
|
260
|
-
- 提议供人工审核,不要自动合并
|
|
261
|
-
- 只有用户明确要求才合并
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
## 设计原则
|
|
35
|
+
- ❌ 不要直接编辑 `manual/` 或 `generated/`——新知识走 `propose`,自动知识走 `refresh`
|
|
36
|
+
- ❌ 不要用 `grep`/`cat` 直接读知识文件——用 `search`/`inspect`(同款匹配引擎,索引语义一致)
|
|
37
|
+
- ❌ 不要自动审核合并 `proposed/` 条目——提议供人工审核,仅用户明确要求才合并
|
|
266
38
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
- **匹配引擎:** 使用 `knowledge-match.js`(与 execute 阶段一致)
|
|
270
|
-
- **审计友好:** 每个条目记录来源、创建/更新时间
|
|
39
|
+
## 用户指令
|
|
40
|
+
$ARGUMENTS
|
|
@@ -69,7 +69,7 @@ plan 的步骤是动态的:`generate_plan`(生成分级计划)→ `review_
|
|
|
69
69
|
}
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
- `docHash` = `sha256(主审查文档内容)`(hex)—— plan 主文档是 `plan.md`(`reviewedFiles[0]`)。CLI 重算 sha256 比对,不符判伪造(fail-closed)。docHash 可先占位(如 "TODO");改 plan.md 后勿手算 sha256——跑 `sillyspec register-stage-review --change <变更名> --stage plan --refresh-hash` 一键重算代填(verdict 保留;多阶段联动加 --all
|
|
72
|
+
- `docHash` = `sha256(主审查文档内容)`(hex)—— plan 主文档是 `plan.md`(`reviewedFiles[0]`)。CLI 重算 sha256 比对,不符判伪造(fail-closed)。docHash 可先占位(如 "TODO");改 plan.md 后勿手算 sha256——跑 `sillyspec register-stage-review --change <变更名> --stage plan --refresh-hash` 一键重算代填(verdict 保留;多阶段联动加 --all)。忘跑也不会被拦:gate 检测到「仅 docHash 失配」时自动机械重算放行(verdict 保留 + 审计行留痕);schema/verdict 错误照常 fail-closed。`tier=self`(≤3 文件)降级为当前 agent 自审。
|
|
73
73
|
- 运行时 CLI 会把精确 schema 表 + 完整 JSON 示例 + docHash 算法注入到该步 prompt,以你实际收到的注入版契约为权威逐字模板。
|
|
74
74
|
|
|
75
75
|
### 契约门控(阻断完成)
|
|
@@ -1,87 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sillyspec:propose
|
|
3
|
-
description:
|
|
3
|
+
description: 已废弃重定向 — 生成结构化规范四件套请直接走 brainstorm。适合用户说"生成规范、补全四件套、propose"——一律转用 /sillyspec:brainstorm。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
##
|
|
6
|
+
## propose 阶段已废弃(重定向到 brainstorm)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- 已有零散设计/需求,需补全结构化规范四件套
|
|
10
|
-
- 产出:`proposal.md` + `design.md` + `tasks.md`(+ 可选 `requirements.md`)
|
|
8
|
+
`propose` 阶段已从 CLI 移除(`src/stages/propose.js` 标注 @deprecated 且未注册进 stageRegistry)——**`sillyspec run propose` 不存在**(报「未知阶段: propose」)。本 skill 只保留触发词重定向,没有任何 propose 专属流程,勿尝试执行任何 `run propose` 命令。
|
|
11
9
|
|
|
12
|
-
|
|
10
|
+
用户说"生成规范 / 补全四件套 / propose"时,**直接执行 `/sillyspec:brainstorm`**:
|
|
13
11
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
项目有多个活跃变更(`.sillyspec/changes/` 下有多个目录)时,所有 `sillyspec run` 命令需加 `--change <变更名>` 指定操作目标;只有一个变更时可省略(CLI 自动检测)。
|
|
17
|
-
|
|
18
|
-
## 步骤生命周期(所有阶段通用)
|
|
19
|
-
|
|
20
|
-
> `sillyspec run propose` 需用 `run` 形式(propose 无顶层别名,与 brainstorm/plan 等不同)。
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
sillyspec run propose # 输出当前步骤 prompt
|
|
24
|
-
sillyspec run propose --done --output "摘要" # 完成当前步骤
|
|
25
|
-
sillyspec run propose --status # 查看阶段进度
|
|
26
|
-
sillyspec run propose --skip # 跳过可选步骤
|
|
27
|
-
sillyspec run propose --reset # 重置阶段(从头开始)
|
|
28
|
-
sillyspec run propose --reopen --from-step N # 重新打开已完成阶段修订
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## 通用参数(所有阶段适用)
|
|
32
|
-
|
|
33
|
-
| 参数 | 说明 |
|
|
34
|
-
|---|---|
|
|
35
|
-
| `--change <名>` | 指定变更名(多活跃变更必填,单变更可省略自动检测) |
|
|
36
|
-
| `--spec-dir <path>` | 指定规范目录(默认 `<项目>/.sillyspec`) |
|
|
37
|
-
| `--non-interactive` | CI/脚本下禁用交互式 prompt |
|
|
38
|
-
| `--skip-approval` | 跳过审批/校验门控 |
|
|
39
|
-
| `--json` | 输出 JSON(程序化读取) |
|
|
40
|
-
|
|
41
|
-
## propose 特有:自检门控
|
|
42
|
-
|
|
43
|
-
propose 含自检步骤(按规模分级:tier=self 当前 agent 自审 / tier=independent 启动独立审查子代理产出 stage review.json),完成时校验四件套文档齐全 + 内容章节(如 proposal 的 Non-Goals、design 的文件变更清单/风险登记/自审)。缺失会阻断完成。
|
|
44
|
-
|
|
45
|
-
### Stage Review Gate(propose 的 proposal review.json)
|
|
46
|
-
|
|
47
|
-
propose 在 `tier=independent` 时产出一个 stage 级 `review.json`,CLI `Stage Review Gate` 硬校验其 schema 与 `docHash` 真实性。
|
|
48
|
-
|
|
49
|
-
- 路径:`.sillyspec/.runtime/stage-reviews/propose-review-<stage-review-run-id>/review.json`(目录可能不存在需手建;run-id 由该步 `--done` prompt 输出指定)。marker 文件 `.runtime/current-stage-review-run-id-propose-<变更名>`。
|
|
50
|
-
- 字段(`schemaVersion:1`,`reviewType=proposal` —— propose 阶段主审查文档是 `proposal.md`):
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"schemaVersion": 1,
|
|
55
|
-
"reviewType": "proposal",
|
|
56
|
-
"reviewedFiles": ["changes/<变更名>/proposal.md"], // [0] 为主文档
|
|
57
|
-
"docHash": "<sha256(reviewedFiles[0] 文件内容,hex)>",
|
|
58
|
-
"specVerdict": "pass", // pass | fail | cannot_verify
|
|
59
|
-
"qualityVerdict": "pass", // pass | fail | cannot_verify
|
|
60
|
-
"checklist": [ // 扁平数组,逐条对照 proposal 章节/Non-Goals 核验
|
|
61
|
-
{ "item": "Non-Goals 明确", "result": "pass", "note": "..." } // result: pass | gap | fail
|
|
62
|
-
],
|
|
63
|
-
"requiredEvidence": [], // cannot_verify 时必填非空
|
|
64
|
-
"reviewerNotes": "..."
|
|
65
|
-
}
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
- `docHash` = `sha256(主审查文档内容)`(hex)—— propose 主文档是 `proposal.md`(`reviewedFiles[0]`)。CLI 重算 sha256 比对,不符判伪造(fail-closed)。改 proposal.md 后须重算 docHash。`tier=self`(≤3 文件)降级为当前 agent 自审。
|
|
69
|
-
- 运行时 CLI 通过 `{REVIEW_JSON_CONTRACT}` 注入精确 schema+示例,以注入版为权威逐字模板。
|
|
70
|
-
|
|
71
|
-
## 阶段流转
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
(零散设计/需求) → propose → plan
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
propose 完成后(四件套齐 + 自检通过),运行 `sillyspec run plan --change <变更名>` 进入实现计划。
|
|
78
|
-
|
|
79
|
-
## 铁律
|
|
80
|
-
|
|
81
|
-
- **必须用 exec 工具(shell)执行 CLI,不要自己编造流程**
|
|
82
|
-
- 只做当前步骤 prompt 描述的操作,不跳过
|
|
83
|
-
- 产物写入 CLI 输出的 `changeDir` 目录
|
|
84
|
-
- 完成后立即 `--done`,不跳过
|
|
12
|
+
- brainstorm 产出同一套四件套(`proposal.md` + `design.md` + `requirements.md` + `tasks.md`),且含需求澄清与 Design Grill 审查
|
|
13
|
+
- 「已有零散设计只需补全」与「新需求从零设计」在 brainstorm 内同流程处理——若用户明确要求跳过澄清,在对话探索步骤直接说明「需求已明确」尽早推进即可
|
|
85
14
|
|
|
86
15
|
## 用户指令
|
|
87
16
|
$ARGUMENTS
|
|
@@ -5,66 +5,17 @@ description: 恢复工作 — 从中断处继续
|
|
|
5
5
|
|
|
6
6
|
## 交互规范
|
|
7
7
|
|
|
8
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项传入。**
|
|
9
|
-
|
|
10
|
-
不要用编号列表让用户手动输入数字。
|
|
11
|
-
如果需要自由输入,在 AskUserQuestion 的选项中加入"Other(自定义输入)"。
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
你现在是 SillySpec 的恢复管理器。
|
|
8
|
+
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项传入。** 不要用编号列表让用户手动输入数字。需要自由输入时在选项中加入"Other(自定义输入)"。
|
|
16
9
|
|
|
17
10
|
## 流程
|
|
18
11
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
根据探测结果推断:
|
|
12
|
+
1. **读进度**:跑 `sillyspec progress show`。
|
|
13
|
+
2. **有活跃变更**:把当前状态(变更/阶段/步骤)转述给用户,用 AskUserQuestion 问「直接继续执行下一步 / 查看更多细节」。
|
|
14
|
+
3. **无活跃变更**:跑 `sillyspec next`——CLI 已内置全套探测(文件存在性 → 推断阶段 → 建议命令 + 依据),按输出转述并执行建议命令。勿自行 ls/cat 重算(输出与实际不符时才手工核对)。
|
|
55
15
|
|
|
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` |
|
|
16
|
+
## 关键原则
|
|
66
17
|
|
|
67
|
-
|
|
18
|
+
- 进度存 SQLite(`.sillyspec/.runtime/sillyspec.db`),随 `sillyspec run <stage> --done` 自动更新,不需要手动保存、不需要从中途状态"恢复文件"——直接续跑即可。
|
|
68
19
|
|
|
69
|
-
|
|
70
|
-
|
|
20
|
+
## 用户指令
|
|
21
|
+
$ARGUMENTS
|