sillyspec 3.28.0 → 3.28.3

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.
Files changed (60) hide show
  1. package/.claude/skills/sillyspec-auto/SKILL.md +54 -93
  2. package/.claude/skills/sillyspec-brainstorm/SKILL.md +114 -114
  3. package/.claude/skills/sillyspec-continue/SKILL.md +17 -47
  4. package/.claude/skills/sillyspec-execute/SKILL.md +222 -214
  5. package/.claude/skills/sillyspec-knowledge/SKILL.md +40 -270
  6. package/.claude/skills/sillyspec-plan/SKILL.md +156 -156
  7. package/.claude/skills/sillyspec-propose/SKILL.md +16 -87
  8. package/.claude/skills/sillyspec-resume/SKILL.md +21 -70
  9. package/.claude/skills/sillyspec-state/SKILL.md +25 -64
  10. package/.claude/skills/sillyspec-workspace/SKILL.md +33 -175
  11. package/package.json +1 -1
  12. package/src/archive-delta.js +462 -0
  13. package/src/constants.js +6 -0
  14. package/src/design-facts.js +418 -0
  15. package/src/dispatch/backends/sillyhub-mcp.js +17 -5
  16. package/src/docs-check.js +197 -34
  17. package/src/docs-migrate.js +124 -0
  18. package/src/doctor-diagnostics.js +11 -2
  19. package/src/endpoint-baseline.js +109 -0
  20. package/src/git-helper.js +31 -0
  21. package/src/index.js +381 -22
  22. package/src/modules.js +41 -12
  23. package/src/progress/change-registry.js +39 -0
  24. package/src/progress/consistency-doctor.js +124 -5
  25. package/src/progress/stage-machine.js +13 -2
  26. package/src/progress.js +5 -0
  27. package/src/quicklog.js +51 -0
  28. package/src/run/command.js +199 -5
  29. package/src/run/complete-handlers.js +60 -4
  30. package/src/run/complete.js +105 -6
  31. package/src/run/gates.js +353 -2
  32. package/src/run/progress-confirm.js +66 -0
  33. package/src/run/prompt.js +193 -15
  34. package/src/run/quick-audit.js +12 -5
  35. package/src/run/scan-profile.js +117 -7
  36. package/src/run/shared.js +22 -6
  37. package/src/run/stage.js +14 -1
  38. package/src/scan-diff.js +54 -1
  39. package/src/scan-facts.js +173 -0
  40. package/src/scan-postcheck.js +114 -3
  41. package/src/spec-sync.js +19 -2
  42. package/src/stage-review.js +62 -3
  43. package/src/stages/archive.js +5 -5
  44. package/src/stages/brainstorm-auto.js +2 -1
  45. package/src/stages/brainstorm.js +12 -20
  46. package/src/stages/execute.js +19 -21
  47. package/src/stages/plan-postcheck.js +194 -1
  48. package/src/stages/plan.js +8 -3
  49. package/src/stages/quick.js +4 -2
  50. package/src/stages/scan.js +44 -102
  51. package/src/stages/verify.js +18 -18
  52. package/src/task-review.js +200 -0
  53. package/src/taskcard.js +8 -1
  54. package/src/verify-postcheck.js +771 -29
  55. package/src/verify-probes.js +89 -10
  56. package/src/workflow.js +30 -0
  57. package/templates/agents-instruction.md +1 -1
  58. package/templates/prompts/taskcard-rules.md +5 -0
  59. package/templates/workflows/scan-docs.yaml +6 -0
  60. package/.claude/skills/verify-per-user/SKILL.md +0 -6
@@ -1,87 +1,16 @@
1
- ---
2
- name: sillyspec:propose
3
- description: 生成结构化规范 — proposal + design + tasks。适合用户说"生成规范、补全四件套、propose"。产出 proposal.md + design.md + tasks.md(+ 可能的 requirements.md)。
4
- ---
5
-
6
- ## 何时使用
7
-
8
- - 用户说"生成规范、补全四件套、propose"
9
- - 已有零散设计/需求,需补全结构化规范四件套
10
- - 产出:`proposal.md` + `design.md` + `tasks.md`(+ 可选 `requirements.md`)
11
-
12
- > 注:propose 与 brainstorm 都产出四件套。brainstorm 是从需求开始的完整设计流程;propose 更偏"补全/生成规范"。新需求一般走 brainstorm。
13
-
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`,不跳过
85
-
86
- ## 用户指令
87
- $ARGUMENTS
1
+ ---
2
+ name: sillyspec:propose
3
+ description: 已废弃重定向 — 生成结构化规范四件套请直接走 brainstorm。适合用户说"生成规范、补全四件套、propose"——一律转用 /sillyspec:brainstorm。
4
+ ---
5
+
6
+ ## propose 阶段已废弃(重定向到 brainstorm)
7
+
8
+ `propose` 阶段已从 CLI 移除(`src/stages/propose.js` 标注 @deprecated 且未注册进 stageRegistry)——**`sillyspec run propose` 不存在**(报「未知阶段: propose」)。本 skill 只保留触发词重定向,没有任何 propose 专属流程,勿尝试执行任何 `run propose` 命令。
9
+
10
+ 用户说"生成规范 / 补全四件套 / propose"时,**直接执行 `/sillyspec:brainstorm`**:
11
+
12
+ - brainstorm 产出同一套四件套(`proposal.md` + `design.md` + `requirements.md` + `tasks.md`),且含需求澄清与 Design Grill 审查
13
+ - 「已有零散设计只需补全」与「新需求从零设计」在 brainstorm 内同流程处理——若用户明确要求跳过澄清,在对话探索步骤直接说明「需求已明确」尽早推进即可
14
+
15
+ ## 用户指令
16
+ $ARGUMENTS
@@ -1,70 +1,21 @@
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` 自动更新,不需要手动保存
1
+ ---
2
+ name: sillyspec:resume
3
+ description: 恢复工作 — 从中断处继续
4
+ ---
5
+
6
+ ## 交互规范
7
+
8
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项传入。** 不要用编号列表让用户手动输入数字。需要自由输入时在选项中加入"Other(自定义输入)"。
9
+
10
+ ## 流程
11
+
12
+ 1. **读进度**:跑 `sillyspec progress show`。
13
+ 2. **有活跃变更**:把当前状态(变更/阶段/步骤)转述给用户,用 AskUserQuestion 问「直接继续执行下一步 / 查看更多细节」。
14
+ 3. **无活跃变更**:跑 `sillyspec next`——CLI 已内置全套探测(文件存在性 → 推断阶段 → 建议命令 + 依据),按输出转述并执行建议命令。勿自行 ls/cat 重算(输出与实际不符时才手工核对)。
15
+
16
+ ## 关键原则
17
+
18
+ - 进度存 SQLite(`.sillyspec/.runtime/sillyspec.db`),随 `sillyspec run <stage> --done` 自动更新,不需要手动保存、不需要从中途状态"恢复文件"——直接续跑即可。
19
+
20
+ ## 用户指令
21
+ $ARGUMENTS
@@ -1,64 +1,25 @@
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 看"在做什么"
1
+ ---
2
+ name: sillyspec:state
3
+ description: 查看当前工作状态 — 显示 SillySpec 进度
4
+ ---
5
+
6
+ ## 流程
7
+
8
+ 跑 `sillyspec progress show [--change <名>]`,把 CLI 输出**原样转述**给用户即可——输出本身已是成品格式(变更/阶段/最近活跃/未决冲突/滞留信号/下一步建议),勿再按自备模板重排。
9
+
10
+ - 多活跃变更时输出为汇总表;需要单变更细节加 `--change <名>`。
11
+ - 输出「没有活跃的变更」时,提示用户:新项目 `/sillyspec:init`、已有项目 `/sillyspec:scan`、恢复中断 `/sillyspec:resume`。
12
+
13
+ ## progress 只读子命令(诊断用)
14
+
15
+ ```bash
16
+ sillyspec progress check # 状态一致性检查(只报告,不修复)
17
+ sillyspec progress repair # 修复状态元数据(dry-run,加 --apply 才真改)
18
+ sillyspec progress validate # 校验并修复
19
+ sillyspec progress reset [--stage <阶段>] # 重置进度(破坏性,慎用)
20
+ ```
21
+
22
+ - `/sillyspec:status` 看项目整体进度(change 文件级别);`/sillyspec:state` 看当前工作状态(阶段/步骤级别)——status 看"有什么",state 看"在做什么"。
23
+
24
+ ## 用户指令
25
+ $ARGUMENTS
@@ -1,175 +1,33 @@
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
- - 路径必须验证存在性
1
+ ---
2
+ name: sillyspec:workspace
3
+ description: 工作区管理 — 初始化、管理多项目工作区,查看子项目状态
4
+ ---
5
+
6
+ ## 交互规范
7
+
8
+ **当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。** 不要用编号列表让用户手动输入数字。需要自由输入时在选项中加入"Other(自定义输入)"。
9
+
10
+ ## CLI 命令(一切读写都走命令,勿手写 yaml / 勿 bash 解析)
11
+
12
+ ```bash
13
+ sillyspec workspace add <名> <相对路径> [--role <角色>] [--repo <仓库地址>] # 登记子项目(外科写入 yaml,已有字段保留;路径须存在)
14
+ sillyspec workspace remove <名> # 删除登记(项目本体不动)
15
+ sillyspec workspace status # 三态探测表(未初始化/已初始化/已扫描+文档数)
16
+ ```
17
+
18
+ 无参运行任一子命令可见用法。`status` 的输出即成品状态表,直接转述给用户即可,勿再自行 for-loop 探测。
19
+
20
+ ## 核心流程
21
+
22
+ 1. **解析指令**:无参数 / `status` → 跑 `workspace status` 转述;`add` / `remove` → 交互收集参数后跑命令;`info <名>` → 读该子项目 `PROJECT.md` / `REQUIREMENTS.md` 摘要转述。
23
+ 2. **初始化工作区**(`projects/` 尚无任何 yaml 且用户同意时):用 AskUserQuestion 逐个收集子项目名称/相对路径/角色(可选 repo),每收集一个跑一次 `workspace add`;添加完询问是否继续或完成。共享规范目录 `.sillyspec/shared/` 需要时手动创建。
24
+ 3. **收尾**:add/remove 后建议 git 提交(CLI 只写 yaml 不提交);提示下一步对子项目跑 `/sillyspec:init` 或 `/sillyspec:scan`。
25
+
26
+ ## 绝对规则
27
+
28
+ - 不修改子项目目录下的任何文件
29
+ - 子项目路径必须是相对于工作区根目录的相对路径,且真实存在(`workspace add` 会校验)
30
+ - yaml 读写一律交给 CLI——字段口径(name/path/status/role/repo)由命令维护,不手工拼
31
+
32
+ ## 用户指令
33
+ $ARGUMENTS
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sillyspec",
3
- "version": "3.28.0",
3
+ "version": "3.28.3",
4
4
  "description": "SillySpec CLI — 流程状态机,让 AI 严格按步骤来",
5
5
  "icon": "logo.jpg",
6
6
  "homepage": "https://sillyspec.ppdmq.top/",