sillyspec 3.9.0 → 3.9.1
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-archive/SKILL.md +17 -0
- package/.claude/skills/sillyspec-auto/SKILL.md +78 -0
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +17 -0
- package/{templates/commit.md → .claude/skills/sillyspec-commit/SKILL.md} +32 -47
- package/.claude/skills/sillyspec-continue/SKILL.md +45 -0
- package/.claude/skills/sillyspec-doctor/SKILL.md +27 -0
- package/.claude/skills/sillyspec-execute/SKILL.md +17 -0
- package/.claude/skills/sillyspec-explore/SKILL.md +96 -0
- package/.claude/skills/sillyspec-export/SKILL.md +53 -0
- package/.claude/skills/sillyspec-init/SKILL.md +170 -0
- package/.claude/skills/sillyspec-plan/SKILL.md +52 -0
- package/.claude/skills/sillyspec-propose/SKILL.md +17 -0
- package/.claude/skills/sillyspec-quick/SKILL.md +17 -0
- package/.claude/skills/sillyspec-resume/SKILL.md +111 -0
- package/.claude/skills/sillyspec-scan/SKILL.md +17 -0
- package/.claude/skills/sillyspec-state/SKILL.md +54 -0
- package/.claude/skills/sillyspec-status/SKILL.md +17 -0
- package/.claude/skills/sillyspec-verify/SKILL.md +17 -0
- package/.claude/skills/sillyspec-workspace/SKILL.md +149 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +97 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +51 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +29 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +34 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +13 -0
- package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +43 -0
- package/.sillyspec/changes/auto-mode/design.md +50 -0
- package/.sillyspec/changes/auto-mode/proposal.md +19 -0
- package/.sillyspec/changes/auto-mode/requirements.md +21 -0
- package/.sillyspec/changes/auto-mode/tasks.md +7 -0
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +199 -0
- package/.sillyspec/changes/dashboard/design.md.braindraft +206 -0
- package/.sillyspec/changes/run-command-design/design.md +1230 -0
- package/.sillyspec/changes/unified-docs-design/design.md +199 -0
- package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
- package/.sillyspec/knowledge/INDEX.md +8 -0
- package/.sillyspec/knowledge/uncategorized.md +3 -0
- package/.sillyspec/projects/sillyspec.yaml +3 -0
- package/README.md +12 -5
- package/package.json +7 -9
- package/packages/dashboard/dist/assets/index-CntACGUN.css +1 -0
- package/packages/dashboard/dist/assets/index-RsLVPAy7.js +7446 -0
- package/packages/dashboard/dist/index.html +3 -2
- package/packages/dashboard/package-lock.json +226 -6
- package/packages/dashboard/package.json +8 -5
- package/packages/dashboard/public/logo.jpg +0 -0
- package/packages/dashboard/server/executor.js +1 -1
- package/packages/dashboard/server/index.js +336 -113
- package/packages/dashboard/server/parser.js +333 -29
- package/packages/dashboard/server/watcher.js +203 -131
- package/packages/dashboard/src/App.vue +187 -11
- package/packages/dashboard/src/components/ActionBar.vue +26 -42
- package/packages/dashboard/src/components/CommandPalette.vue +40 -65
- package/packages/dashboard/src/components/DetailPanel.vue +68 -53
- package/packages/dashboard/src/components/DocPreview.vue +160 -0
- package/packages/dashboard/src/components/DocTree.vue +58 -0
- package/packages/dashboard/src/components/LogStream.vue +13 -33
- package/packages/dashboard/src/components/PipelineStage.vue +8 -8
- package/packages/dashboard/src/components/PipelineView.vue +80 -45
- package/packages/dashboard/src/components/ProjectList.vue +103 -45
- package/packages/dashboard/src/components/ProjectOverview.vue +178 -0
- package/packages/dashboard/src/components/StageBadge.vue +13 -13
- package/packages/dashboard/src/components/StepCard.vue +15 -15
- package/packages/dashboard/src/components/detail/DocsDetail.vue +48 -0
- package/packages/dashboard/src/components/detail/GitDetail.vue +61 -0
- package/packages/dashboard/src/components/detail/TechDetail.vue +43 -0
- package/packages/dashboard/src/composables/useDashboard.js +20 -6
- package/packages/dashboard/src/composables/useKeyboard.js +6 -4
- package/packages/dashboard/src/main.js +4 -1
- package/packages/dashboard/src/style.css +17 -17
- package/src/index.js +134 -22
- package/src/init.js +83 -228
- package/src/migrate.js +117 -0
- package/src/progress.js +459 -0
- package/src/run.js +624 -0
- package/src/setup.js +2 -72
- package/src/stages/archive.js +54 -0
- package/src/stages/brainstorm.js +239 -0
- package/src/stages/doctor.js +303 -0
- package/src/stages/execute.js +262 -0
- package/src/stages/index.js +26 -0
- package/src/stages/plan.js +282 -0
- package/src/stages/propose.js +115 -0
- package/src/stages/quick.js +64 -0
- package/src/stages/scan.js +141 -0
- package/src/stages/status.js +65 -0
- package/src/stages/verify.js +135 -0
- package/dist/steps/brainstorm/01-load-context.md +0 -30
- package/dist/steps/brainstorm/02-reuse-check.md +0 -6
- package/dist/steps/brainstorm/03-prototype-analysis.md +0 -11
- package/dist/steps/brainstorm/04-module-split.md +0 -23
- package/dist/steps/brainstorm/05-dialog-explore.md +0 -8
- package/dist/steps/brainstorm/06-propose-approaches.md +0 -3
- package/dist/steps/brainstorm/07-present-design.md +0 -3
- package/dist/steps/brainstorm/08-write-design.md +0 -21
- package/dist/steps/brainstorm/09-self-review.md +0 -15
- package/dist/steps/brainstorm/10-user-confirm.md +0 -3
- package/dist/steps/brainstorm/11-output-spec.md +0 -7
- package/dist/steps/brainstorm/manifest.yaml +0 -26
- package/dist/steps/execute/01-load-context.md +0 -41
- package/dist/steps/execute/02-scan-conventions.md +0 -47
- package/dist/steps/execute/03-skill-mcp.md +0 -19
- package/dist/steps/execute/04-assign-task.md +0 -22
- package/dist/steps/execute/04b-prompt-template.md +0 -54
- package/dist/steps/execute/05-write-test.md +0 -7
- package/dist/steps/execute/06-write-code.md +0 -8
- package/dist/steps/execute/07-run-test.md +0 -26
- package/dist/steps/execute/08-fix-issues.md +0 -28
- package/dist/steps/execute/09-next-task.md +0 -33
- package/dist/steps/execute/manifest.yaml +0 -28
- package/dist/steps/plan/01-load-context.md +0 -22
- package/dist/steps/plan/02-anchor-confirm.md +0 -1
- package/dist/steps/plan/03-expand-tasks.md +0 -33
- package/dist/steps/plan/04-mark-order.md +0 -15
- package/dist/steps/plan/05-e2e-planning.md +0 -17
- package/dist/steps/plan/06-self-check.md +0 -16
- package/dist/steps/plan/07-save.md +0 -1
- package/dist/steps/plan/manifest.yaml +0 -18
- package/dist/steps/scan/01-env-detect.md +0 -51
- package/dist/steps/scan/02-tech-stack.md +0 -16
- package/dist/steps/scan/03-conventions.md +0 -16
- package/dist/steps/scan/04-structure.md +0 -19
- package/dist/steps/scan/05-quality.md +0 -18
- package/dist/steps/scan/06-complete.md +0 -49
- package/dist/steps/scan/manifest.yaml +0 -16
- package/dist/steps/verify/01-load-specs.md +0 -28
- package/dist/steps/verify/02-check-tasks.md +0 -1
- package/dist/steps/verify/03-check-design.md +0 -6
- package/dist/steps/verify/04-run-tests.md +0 -7
- package/dist/steps/verify/05-e2e-tests.md +0 -27
- package/dist/steps/verify/05b-e2e-fix.md +0 -33
- package/dist/steps/verify/06-code-quality.md +0 -25
- package/dist/steps/verify/07-lint-check.md +0 -27
- package/dist/steps/verify/08-output-report.md +0 -14
- package/dist/steps/verify/manifest.yaml +0 -22
- package/docs/.vitepress/config.mts +0 -45
- package/docs/.vitepress/dist/404.html +0 -25
- package/docs/.vitepress/dist/assets/app.YytxICdd.js +0 -1
- package/docs/.vitepress/dist/assets/chunks/framework.Czhw_PXq.js +0 -19
- package/docs/.vitepress/dist/assets/chunks/theme.DusTRZQk.js +0 -1
- package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.js +0 -1
- package/docs/.vitepress/dist/assets/index.md.C3VCvtQA.lean.js +0 -1
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-cyrillic.By2_1cv3.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek-ext.1u6EdAuj.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-greek.DJ8dCoTZ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin-ext.CN1xVJS-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-latin.C2AdPX0b.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-italic-vietnamese.BSbpV94h.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-greek.BBVDIX6e.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-latin.Di8DUHzh.woff2 +0 -0
- package/docs/.vitepress/dist/assets/inter-roman-vietnamese.BjW4sHH5.woff2 +0 -0
- package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.js +0 -15
- package/docs/.vitepress/dist/assets/sillyspec_commands.md.CXFFsj08.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.js +0 -4
- package/docs/.vitepress/dist/assets/sillyspec_dashboard.md.BuPXHqjX.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_file-io.md.Cz3x7llx.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.js +0 -4
- package/docs/.vitepress/dist/assets/sillyspec_getting-started.md.ClcvV8k3.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.js +0 -5
- package/docs/.vitepress/dist/assets/sillyspec_install.md.CKuR2tiT.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.js +0 -28
- package/docs/.vitepress/dist/assets/sillyspec_lifecycle.md.DY293cR1.lean.js +0 -1
- package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.js +0 -30
- package/docs/.vitepress/dist/assets/sillyspec_structure.md.sVYS4zPs.lean.js +0 -1
- package/docs/.vitepress/dist/assets/style.DFTx90Kk.css +0 -1
- package/docs/.vitepress/dist/hashmap.json +0 -1
- package/docs/.vitepress/dist/index.html +0 -28
- package/docs/.vitepress/dist/sillyspec/commands.html +0 -42
- package/docs/.vitepress/dist/sillyspec/dashboard.html +0 -31
- package/docs/.vitepress/dist/sillyspec/file-io.html +0 -28
- package/docs/.vitepress/dist/sillyspec/getting-started.html +0 -31
- package/docs/.vitepress/dist/sillyspec/install.html +0 -32
- package/docs/.vitepress/dist/sillyspec/lifecycle.html +0 -55
- package/docs/.vitepress/dist/sillyspec/structure.html +0 -57
- package/docs/.vitepress/dist/vp-icons.css +0 -1
- package/docs/index.md +0 -34
- package/docs/sillyspec/commands.md +0 -218
- package/docs/sillyspec/dashboard.md +0 -51
- package/docs/sillyspec/file-io.md +0 -34
- package/docs/sillyspec/getting-started.md +0 -61
- package/docs/sillyspec/install.md +0 -51
- package/docs/sillyspec/lifecycle.md +0 -146
- package/docs/sillyspec/structure.md +0 -62
- package/packages/dashboard/dist/assets/index-Bh-GPjKY.css +0 -1
- package/packages/dashboard/dist/assets/index-CrCn5Gg6.js +0 -17
- package/src/step.js +0 -543
- package/templates/archive.md +0 -120
- package/templates/brainstorm.md +0 -170
- package/templates/continue.md +0 -32
- package/templates/execute.md +0 -304
- package/templates/explore.md +0 -59
- package/templates/export.md +0 -21
- package/templates/init.md +0 -61
- package/templates/plan.md +0 -146
- package/templates/quick.md +0 -135
- package/templates/scan-quick.md +0 -49
- package/templates/scan.md +0 -156
- package/templates/skills/playwright-e2e/SKILL.md +0 -340
- package/templates/status.md +0 -75
- package/templates/verify.md +0 -236
- package/templates/workspace-sync.md +0 -99
- package/templates/workspace.md +0 -70
- /package/.sillyspec/{specs → changes/brainstorm-archive}/2026-04-05-dashboard-design.md +0 -0
- /package/{docs/.vitepress/dist/logo.jpg → logo.jpg} +0 -0
- /package/{docs/.vitepress → packages/dashboard}/dist/favicon.jpg +0 -0
- /package/{docs/public → packages/dashboard/dist}/logo.jpg +0 -0
- /package/{docs → packages/dashboard}/public/favicon.jpg +0 -0
package/templates/brainstorm.md
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 写实现代码(任何语言)
|
|
6
|
-
- ❌ 修改任何源代码文件
|
|
7
|
-
- ❌ 安装依赖或执行构建命令
|
|
8
|
-
- ❌ 创建数据库迁移脚本
|
|
9
|
-
- ❌ 跳过 brainstorm 直接进入 execute/plan
|
|
10
|
-
- ❌ 在 checklist 未完成前开始写设计文档
|
|
11
|
-
- ❌ 编造不存在的表名、字段名、API 端点
|
|
12
|
-
- ❌ 一次性抛出多个问题(必须逐个等待回答)
|
|
13
|
-
- ❌ 用户确认前自行推进到 plan 或任何后续阶段
|
|
14
|
-
|
|
15
|
-
## 用户想法
|
|
16
|
-
$ARGUMENTS
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Checklist(必须按顺序完成,不允许跳步或并行)
|
|
21
|
-
|
|
22
|
-
- [ ] **Step 1** — 加载项目上下文
|
|
23
|
-
- [ ] **Step 2** — 协作与复用检查(同名变更 + 全局模板)
|
|
24
|
-
- [ ] **Step 3** — 原型/设计图分析(如有)
|
|
25
|
-
- [ ] **Step 4** — 评估需求范围,复杂需求拆分子项目/阶段,生成 MASTER.md
|
|
26
|
-
- [ ] **Step 5** — 对话式探索(一次一个问题,2-3 轮内完成)
|
|
27
|
-
- [ ] **Step 6** — 提出 2-3 个方案并推荐
|
|
28
|
-
- [ ] **Step 7** — 分段展示设计,逐段确认
|
|
29
|
-
- [ ] **Step 8** — 写设计文档并保存
|
|
30
|
-
- [ ] **Step 9** — AI 自审(对照约束检查)
|
|
31
|
-
- [ ] **Step 10** — 用户确认设计方案
|
|
32
|
-
- [ ] **Step 11** — 输出 design.md
|
|
33
|
-
|
|
34
|
-
**终态:** brainstorm 完成后唯一出口是 `/sillyspec:plan`。不允许直接进入 execute 或任何代码操作。
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## 各步骤详解
|
|
39
|
-
|
|
40
|
-
### Step 1: 加载项目上下文
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**工作区模式:** AskUserQuestion 选子项目,**cd 到子项目目录执行**,加载子项目上下文 + 共享规范 + 工作区概览,设计文档保存到子项目 `.sillyspec/docs/<project>/changes/`。修改在子项目目录中暂存。
|
|
47
|
-
|
|
48
|
-
**单项目模式:**
|
|
49
|
-
```bash
|
|
50
|
-
cat .sillyspec/{PROJECT,REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
51
|
-
cat .sillyspec/docs/<project>/scan/{STRUCTURE,CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
52
|
-
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
53
|
-
ls .sillyspec/knowledge/ 2>/dev/null
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Step 2: 协作与复用检查
|
|
57
|
-
|
|
58
|
-
- **同名变更:** `ls .sillyspec/changes/ | grep -v archive` — 有相关变更则提示避免冲突
|
|
59
|
-
- **全局模板:** `ls ~/.sillyspec/templates/ 2>/dev/null` — 有匹配模板则建议复用
|
|
60
|
-
|
|
61
|
-
无匹配则跳过,不输出。
|
|
62
|
-
|
|
63
|
-
### Step 3: 原型/设计图分析(如有图片则必做)
|
|
64
|
-
|
|
65
|
-
**不要只看描述文字,图片包含布局、字段、交互等视觉信息。**
|
|
66
|
-
|
|
67
|
-
对每张图逐页分析(先主页面后子页面):
|
|
68
|
-
1. **页面结构** — 识别搜索区、操作栏、表格、表单等区块
|
|
69
|
-
2. **表单字段** — 字段名、类型、必填、选项
|
|
70
|
-
3. **交互流程** — 页面跳转、按钮行为、流程线
|
|
71
|
-
4. **标注备注** — 业务规则、状态说明、权限说明
|
|
72
|
-
|
|
73
|
-
展示分析结果,问用户确认有无遗漏。
|
|
74
|
-
|
|
75
|
-
### Step 4: 大模块拆分
|
|
76
|
-
|
|
77
|
-
**满足以下任意 2 条就建议拆分:**
|
|
78
|
-
- 3+ 个可独立交付的功能模块
|
|
79
|
-
- 3+ 种角色有不同权限和视图
|
|
80
|
-
- 跨页面状态流转(审批流、多步表单)
|
|
81
|
-
- brainstorm 提问发现需求范围过大
|
|
82
|
-
|
|
83
|
-
确认拆分后生成 MASTER.md:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
mkdir -p .sillyspec/changes/<变更名>/stages
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
`MASTER.md` 内容:概述、拆分计划表(阶段/范围/状态)、整体技术方向、阶段间依赖、原型分析摘要、经验记录。
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
git add .sillyspec/changes/<变更名>/MASTER.md
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
💡 大模块计划已暂存。准备好后用 `/sillyspec:commit` 提交。
|
|
96
|
-
|
|
97
|
-
提示用户:`/sillyspec:brainstorm <变更名>/stage-1`
|
|
98
|
-
|
|
99
|
-
**子阶段 brainstorm:** 读取 MASTER.md + 前序阶段经验 + 对应原型,设计文档保存到 `.sillyspec/changes/<变更名>/stages/<stage-N>/`。
|
|
100
|
-
|
|
101
|
-
### Step 5: 对话式探索
|
|
102
|
-
|
|
103
|
-
**核心规则:一次只问一个问题。**
|
|
104
|
-
|
|
105
|
-
1. 从最核心的问题开始(用户到底想做什么?)
|
|
106
|
-
2. 等待回答,根据信息量决定追问还是进入方案讨论
|
|
107
|
-
3. 探索顺序按需:目的 → 约束 → 边界 → 成功标准
|
|
108
|
-
4. **大多数 brainstorm 2-3 轮就应进入方案讨论**
|
|
109
|
-
|
|
110
|
-
探索阶段可使用项目已配置的 MCP 工具或 web search 调研技术方案和 API 用法,不要凭记忆写方案。检测可用工具:`cat .claude/mcp.json .cursor/mcp.json 2>/dev/null`
|
|
111
|
-
|
|
112
|
-
### Step 6: 提出 2-3 种方案
|
|
113
|
-
|
|
114
|
-
每种方案列优劣,给出推荐和理由。
|
|
115
|
-
|
|
116
|
-
### Step 7: 分段展示设计
|
|
117
|
-
|
|
118
|
-
简单项目几句话;复杂项目每段 200-300 字逐段确认。
|
|
119
|
-
|
|
120
|
-
### Step 8: 写设计文档
|
|
121
|
-
|
|
122
|
-
保存到 `.sillyspec/changes/<变更名>/design.md`:
|
|
123
|
-
|
|
124
|
-
```markdown
|
|
125
|
-
# [Feature Name] 设计
|
|
126
|
-
|
|
127
|
-
## 动机与范围
|
|
128
|
-
(为什么做、范围边界、成功标准)
|
|
129
|
-
|
|
130
|
-
## 功能需求
|
|
131
|
-
(需求场景、验收标准)
|
|
132
|
-
- [ ] 标准 1
|
|
133
|
-
|
|
134
|
-
## 技术方案
|
|
135
|
-
## 约束和假设
|
|
136
|
-
## 不在范围内
|
|
137
|
-
## 文件变更
|
|
138
|
-
## 代码风格参照
|
|
139
|
-
(参考已有源文件,标注返回值类型、异常类型、注解风格)
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**注意:** 引用的表名必须来自 ARCHITECTURE.md 数据模型或明确标注"新增"。必须先读取 `.sillyspec/docs/<project>/scan/ARCHITECTURE.md`。
|
|
143
|
-
|
|
144
|
-
### Step 9: AI 自审(必须执行)
|
|
145
|
-
|
|
146
|
-
- 需求覆盖:是否完整覆盖 Step 5 确认的需求点?
|
|
147
|
-
- 约束一致性:技术方案是否与 ARCHITECTURE.md、CONVENTIONS.md 一致?
|
|
148
|
-
- 表名/字段真实性:是否来自真实 schema?
|
|
149
|
-
- 范围控制:是否包含不必要功能(YAGNI)?
|
|
150
|
-
- 验收标准:是否具体、可测试?
|
|
151
|
-
- 变更冲突:是否与 Step 2 检测到的已有变更冲突?
|
|
152
|
-
- 缺口:模糊表述("适当的"/"必要时"等)是否已明确化
|
|
153
|
-
- 缺口:隐含假设(登录态、数据量、并发预期)是否已显式写出
|
|
154
|
-
- 缺口:边界场景(空数据、并发、服务不可用)是否已考虑
|
|
155
|
-
|
|
156
|
-
发现问题 → 修改文档,重新自审。不确定的标注「⚠️ 自审存疑」让用户判断。
|
|
157
|
-
|
|
158
|
-
### Step 10: 用户确认(⛔ 门禁)
|
|
159
|
-
|
|
160
|
-
展示设计方案,AskUserQuestion:确认 / 需要修改 / 推翻重来。
|
|
161
|
-
|
|
162
|
-
### Step 11: 输出技术方案
|
|
163
|
-
|
|
164
|
-
用户确认后,确认 design.md 已包含完整内容(动机、需求、方案、文件变更、代码风格参照)。如 Step 8 已保存则无需重复。
|
|
165
|
-
|
|
166
|
-
## 关键原则
|
|
167
|
-
- YAGNI — 无情砍掉不需要的功能
|
|
168
|
-
- 总是探索替代方案
|
|
169
|
-
- 设计可以很短,但必须存在
|
|
170
|
-
- "简单"的项目更需要设计——未检视的假设造成最大浪费
|
package/templates/continue.md
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
## 核心约束(必须遵守)
|
|
2
|
-
- ❌ 跳过自动判断,直接执行某个阶段
|
|
3
|
-
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
## 判断逻辑
|
|
7
|
-
|
|
8
|
-
**先检查是否工作区模式:**
|
|
9
|
-
```bash
|
|
10
|
-
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
**工作区模式:** 同时检查根目录和每个子项目,列出所有未完成的工作,让用户选择继续哪个。
|
|
14
|
-
|
|
15
|
-
**单项目模式:** 按顺序检查,第一个未完成的就执行:
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
1. 有进行中的变更?
|
|
19
|
-
1a. 无 design.md → 提示补充设计(/sillyspec:brainstorm)
|
|
20
|
-
1b. 无 tasks.md → 执行 /sillyspec:plan
|
|
21
|
-
1c. tasks.md 有未完成项 + 有计划 → 执行 /sillyspec:execute
|
|
22
|
-
1d. tasks.md 全完成 + 未验证 → 执行 /sillyspec:verify(可选)
|
|
23
|
-
1e. 已验证通过 → 执行 /sillyspec:archive
|
|
24
|
-
|
|
25
|
-
2. 有 .sillyspec/docs/*/scan/ 但无进行中工作?
|
|
26
|
-
→ /sillyspec:brainstorm "你的想法"
|
|
27
|
-
|
|
28
|
-
3. 什么都没有?
|
|
29
|
-
→ /sillyspec:init(新项目)或 /sillyspec:scan(棕地项目)
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
先报告检测结果,再执行。
|
package/templates/execute.md
DELETED
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 跳步执行(不允许跳过 plan 直接 execute)
|
|
6
|
-
- ❌ 先写代码后补测试
|
|
7
|
-
- ❌ 编造不存在的方法/注解/路径/类/字段
|
|
8
|
-
- ❌ 自行补全缺失的接口/方法(应报告 BLOCKED)
|
|
9
|
-
- ❌ 意外修改了计划外的文件却不报告
|
|
10
|
-
|
|
11
|
-
## 状态检查(必须先执行)
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
cat .sillyspec/STATE.md 2>/dev/null
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## 执行范围
|
|
18
|
-
$ARGUMENTS
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## 加载上下文
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**工作区模式:** 根据计划 Task 标注确定子项目,额外加载共享规范 + CODEBASE-OVERVIEW.md。所有代码修改、测试运行在子项目目录中执行。
|
|
29
|
-
|
|
30
|
-
**加载以下文件(主代理读取,后续注入子代理):**
|
|
31
|
-
```bash
|
|
32
|
-
PLAN=$(ls -t .sillyspec/changes/*/tasks.md 2>/dev/null | head -1); cat "$PLAN"
|
|
33
|
-
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
34
|
-
cat "$LATEST"/{tasks,design}.md 2>/dev/null
|
|
35
|
-
cat .sillyspec/docs/<project>/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
36
|
-
cat .sillyspec/local.yaml 2>/dev/null
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**知识库查询(强制步骤):**
|
|
40
|
-
主代理在 dispatch 每个子代理前,必须执行:
|
|
41
|
-
```bash
|
|
42
|
-
cat .sillyspec/knowledge/INDEX.md 2>/dev/null
|
|
43
|
-
```
|
|
44
|
-
根据当前 task 描述中的关键词(技术名词、模块名、文件路径等)匹配 INDEX.md 条目。命中时读取对应 knowledge 文件,将内容注入子代理 prompt 的「相关知识」段。未命中则跳过,不注入空段。
|
|
45
|
-
|
|
46
|
-
子代理遇到不熟悉的库或 API 时,优先使用已配置的 MCP 工具(Context7 等)或 web search 查最新文档,不要凭记忆猜测用法。
|
|
47
|
-
|
|
48
|
-
**编码规范扫描(主代理执行):**
|
|
49
|
-
主代理在 dispatch 子代理前,扫描项目中常见的编码规范配置文件,将关键规则注入子代理 prompt 的「编码规范约束」段。
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
# 检测存在的配置文件
|
|
53
|
-
for f in .eslintrc .eslintrc.js .eslintrc.cjs .eslintrc.json .eslintrc.yml \
|
|
54
|
-
.prettierrc .prettierrc.js .prettierrc.json .prettierrc.yml \
|
|
55
|
-
tsconfig.json tsconfig.base.json \
|
|
56
|
-
.editorconfig \
|
|
57
|
-
.tailwind.config.js .tailwind.config.ts \
|
|
58
|
-
.stylelintrc .stylelintrc.js .stylelintrc.json \
|
|
59
|
-
CONTRIBUTING.md CODE_STYLE.md; do
|
|
60
|
-
[ -f "$f" ] && echo "=== $f ===" && cat "$f"
|
|
61
|
-
done
|
|
62
|
-
# 也检查 package.json 中的 lint/format 脚本
|
|
63
|
-
cat package.json 2>/dev/null | grep -A5 '"lint\|"format\|"typecheck\|"type-check'
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
扫描后,主代理根据检测结果生成**编码规范摘要**(不是原文粘贴,是提炼关键约束),格式如下。如果某个类别未检测到对应配置文件,则省略该段:
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
## 编码规范约束(自动扫描)
|
|
70
|
-
|
|
71
|
-
### ESLint
|
|
72
|
-
{提取的关键规则,如:禁止 var、要求分号、禁止未使用变量、特定插件规则等}
|
|
73
|
-
|
|
74
|
-
### Prettier
|
|
75
|
-
{提取的格式化规则,如:单引号、2空格缩进、无分号、行宽 80 等}
|
|
76
|
-
|
|
77
|
-
### TypeScript
|
|
78
|
-
{从 tsconfig 提取的严格模式设置,如:strict: true、noUncheckedIndexedAccess 等}
|
|
79
|
-
|
|
80
|
-
### Import / 命名约定
|
|
81
|
-
{从 eslint/import 插件或 editorconfig 提取的导入排序、命名风格等}
|
|
82
|
-
|
|
83
|
-
### 框架约定
|
|
84
|
-
{检测到的框架特定约定,如:Next.js App Router、Tailwind 类名风格等}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
将此摘要注入到每个子代理 prompt 的「项目约定」段之后,并追加一条铁律:
|
|
88
|
-
> **10. 遵守编码规范:** 以上「编码规范约束」中的所有规则必须严格遵守。如规则与任务描述冲突,优先遵守规范约束并报告。
|
|
89
|
-
|
|
90
|
-
**测试模式扫描(主代理执行):**
|
|
91
|
-
对包含 E2E/测试任务时,扫描项目已有的测试文件,提取测试风格注入子代理 prompt 的「测试模式参考」段。
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
# 检测测试框架
|
|
95
|
-
cat package.json 2>/dev/null | grep -E "playwright|cypress|jest|vitest|mocha"
|
|
96
|
-
|
|
97
|
-
# 查找已有测试文件
|
|
98
|
-
find . -name "*.spec.ts" -o -name "*.test.ts" -o -name "*.spec.tsx" -o -name "*.spec.js" \
|
|
99
|
-
-o -name "playwright.config.*" -o -name "vitest.config.*" -o -name "jest.config.*" \
|
|
100
|
-
2>/dev/null | grep -v node_modules | head -10
|
|
101
|
-
|
|
102
|
-
# 读取 1-2 个已有测试文件作为风格参考
|
|
103
|
-
# 优先读 E2E 测试,其次读通用测试
|
|
104
|
-
find tests/e2e e2e cypress/e2e __tests__ src -name "*.spec.ts" -o -name "*.test.ts" \
|
|
105
|
-
2>/dev/null | grep -v node_modules | head -3 | xargs cat 2>/dev/null
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
扫描后生成**测试模式摘要**:
|
|
109
|
-
|
|
110
|
-
```
|
|
111
|
-
## 测试模式参考(自动扫描)
|
|
112
|
-
|
|
113
|
-
### 测试框架
|
|
114
|
-
{检测到的框架及版本,如:Playwright 1.42、Vitest 1.2}
|
|
115
|
-
|
|
116
|
-
### 断言风格
|
|
117
|
-
{从已有测试提取的断言模式,如:expect(page).toHaveText()、toEqual、toBeTruthy 等}
|
|
118
|
-
|
|
119
|
-
### Fixtures / Helper
|
|
120
|
-
{项目自定义的 test fixtures、page objects、helper 函数}
|
|
121
|
-
|
|
122
|
-
### 文件组织
|
|
123
|
-
{测试文件目录结构、命名约定、文件内组织方式}
|
|
124
|
-
|
|
125
|
-
### 配置要点
|
|
126
|
-
{playwright.config.ts 中的 baseURL、timeout、retries 等关键配置}
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
将此摘要注入到每个 E2E/测试子代理 prompt 的「任务描述」段之后,并追加一条铁律:
|
|
130
|
-
> **11. 参照已有测试风格:** 编写新测试时必须参照以上「测试模式参考」中的风格,包括断言方式、fixtures 使用、文件组织。不要凭记忆写测试。
|
|
131
|
-
> **12. 参考已有实现:** 写新功能前,先 grep 项目中类似功能的已有代码(`grep -r "关键词" src/`),照着项目现有的模式、风格和封装方式写,不要凭记忆编造。
|
|
132
|
-
|
|
133
|
-
**Skill 扫描(主代理执行):**
|
|
134
|
-
对每个子代理 dispatch 前,扫描项目中已安装的 skill,匹配相关 skill 注入子代理 prompt 的「本地 Skills」段。
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
for skill_dir in .claude/skills/*/SKILL.md .cursor/skills/*/SKILL.md .opencode/skills/*/SKILL.md; do
|
|
138
|
-
[ -f "$skill_dir" ] && echo "=== $skill_dir ===" && cat "$skill_dir"
|
|
139
|
-
done
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
扫描后,根据当前任务描述的关键词匹配 skill 的 name 和 description:
|
|
143
|
-
- 任务包含"E2E"/"端到端"/"测试用例" → 匹配 playwright-e2e skill
|
|
144
|
-
- 未来可扩展更多 skill
|
|
145
|
-
|
|
146
|
-
匹配到的 skill → 将 SKILL.md 全文注入子代理 prompt。未匹配则省略该段。
|
|
147
|
-
|
|
148
|
-
**MCP 能力检测(主代理执行):**
|
|
149
|
-
检查当前可用工具列表中是否存在以下类型的 MCP 工具(不要只依赖配置文件路径,不同客户端配置位置不同):
|
|
150
|
-
- Context7 / 文档查询工具
|
|
151
|
-
- 数据库工具(postgres/sqlite/mysql/redis)
|
|
152
|
-
- 浏览器工具(browser/chrome/playwright/devtools)
|
|
153
|
-
- 搜索工具(search/web_search)
|
|
154
|
-
根据检测结果,在子代理 prompt 的「文档查询指引」段动态注入:
|
|
155
|
-
- 有 `context7` → `遇到不熟悉的库/API,使用 Context7 MCP(resolve-library-id → query-docs)查询最新文档`
|
|
156
|
-
- 无 `context7` → `遇到不熟悉的库/API,使用 web search 查询最新官方文档`
|
|
157
|
-
- 有数据库 MCP(postgres/sqlite/mysql/redis)→ 在「数据操作」段注入对应 MCP 可用
|
|
158
|
-
- 检测为空 → 不注入额外提示
|
|
159
|
-
|
|
160
|
-
如果 `$ARGUMENTS` 指定范围(如 `wave-1`、`task-3`),只执行对应部分。
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## 确认频率
|
|
165
|
-
|
|
166
|
-
用 AskUserQuestion 询问用户选择:
|
|
167
|
-
- **每个 Wave 确认** — 每个 Wave 完成后展示结果,等用户确认后继续下一 Wave
|
|
168
|
-
- **AI 自主判断** — AI 在遇到 BLOCKED 或计划外变更时才询问,其余自动推进
|
|
169
|
-
- **全自动** — 全部自动执行,不在中途打断用户
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## 子代理执行(强制模式)
|
|
174
|
-
|
|
175
|
-
**所有任务通过子代理执行,主代理负责调度和记录。**
|
|
176
|
-
|
|
177
|
-
### 执行流程
|
|
178
|
-
|
|
179
|
-
1. 解析 tasks.md,按 Wave 分组
|
|
180
|
-
2. 同一 Wave 内的任务**并行启动**子代理,不同 Wave **串行等待**
|
|
181
|
-
3. 每个 Wave 完成后,根据用户选择的确认频率决定是否暂停
|
|
182
|
-
4. 子代理返回结果后,主代理勾选 tasks.md、更新 STATE.md
|
|
183
|
-
|
|
184
|
-
### 子代理 Prompt 模板
|
|
185
|
-
|
|
186
|
-
主代理在 dispatch 子代理前,必须准备以下 prompt(所有内容**内联**,不让子代理自己读文件):
|
|
187
|
-
|
|
188
|
-
```
|
|
189
|
-
你正在执行任务:
|
|
190
|
-
|
|
191
|
-
## 任务描述
|
|
192
|
-
{tasks.md 中当前 task 的完整内容,包括步骤字段}
|
|
193
|
-
|
|
194
|
-
## 项目约定
|
|
195
|
-
{CONVENTIONS.md 全文}
|
|
196
|
-
|
|
197
|
-
## 编码规范约束(自动扫描)
|
|
198
|
-
{主代理扫描项目配置文件后生成的规范摘要,见上方「编码规范扫描」步骤}
|
|
199
|
-
|
|
200
|
-
## 测试模式参考(自动扫描,仅 E2E/测试任务注入)
|
|
201
|
-
{主代理扫描项目已有测试文件后生成的测试风格摘要,见上方「测试模式扫描」步骤。非 E2E/测试任务省略此段}
|
|
202
|
-
|
|
203
|
-
## 项目架构
|
|
204
|
-
{ARCHITECTURE.md 全文}
|
|
205
|
-
|
|
206
|
-
## 构建命令
|
|
207
|
-
{local.yaml 中的 build 命令,如无则给默认命令}
|
|
208
|
-
|
|
209
|
-
## 工作目录
|
|
210
|
-
{子项目目录路径,工作区模式需要 cd 到此目录}
|
|
211
|
-
|
|
212
|
-
## 相关知识(如有)
|
|
213
|
-
{主代理从 knowledge/ 中按任务关键词匹配到的内容,未命中则删除此段}
|
|
214
|
-
|
|
215
|
-
## 文档查询指引
|
|
216
|
-
{主代理根据 MCP 检测结果动态注入:有 Context7 提示用 MCP,无则提示用 web search}
|
|
217
|
-
|
|
218
|
-
## 本地 Skills(如有)
|
|
219
|
-
{主代理在 dispatch 前扫描 .claude/skills/、.cursor/skills/、.opencode/skills/ 下的 SKILL.md,根据当前任务关键词匹配相关 skill,将 SKILL.md 全文注入此段。无匹配 skill 则省略此段。}
|
|
220
|
-
|
|
221
|
-
## 数据操作
|
|
222
|
-
{主代理根据 MCP 检测结果动态注入:如检测到数据库 MCP,提示可用}
|
|
223
|
-
⛔ 任何改变现有数据的操作(DML: INSERT/UPDATE/DELETE/DML、DDL: ALTER/DROP/TRUNCATE/RENAME,以及所有非 SELECT 的数据库操作)必须暂停并报告给用户确认,不得自动执行。新建表不受此限制。
|
|
224
|
-
|
|
225
|
-
## 铁律(必须遵守)
|
|
226
|
-
1. **先读后写:** 先 cat 要修改的文件和参考文件,确认风格和方法签名后再写
|
|
227
|
-
2. **grep 确认:** 调用已有方法前必须 grep 确认存在,grep 不到 → 报告 BLOCKED
|
|
228
|
-
3. **不编造:** 不编造不存在的方法/注解/类/字段
|
|
229
|
-
4. **不自行补全:** 发现缺失接口/方法,不自己写,报告 BLOCKED
|
|
230
|
-
5. **TDD 不跳步:** 按任务步骤逐步执行,每步必须运行测试命令并确认结果
|
|
231
|
-
6. **测试直接通过 = 测了已有行为,重写测试**
|
|
232
|
-
7. **E2E 任务:** 如果任务描述包含"E2E"或"端到端":
|
|
233
|
-
- 先 cat 相关功能代码和页面组件,理解交互逻辑
|
|
234
|
-
- 参考 prompt 中「测试模式参考」段的已有测试风格
|
|
235
|
-
- **查阅 Playwright 用法:** 优先使用已安装的 playwright skill(SKILL.md),不要凭记忆写 API。未安装则通过 Context7 MCP 或 web search 查最新文档
|
|
236
|
-
- 有测试框架则编写测试文件,无框架则编写 `.sillyspec/changes/<变更名>/e2e-steps.md` 结构化测试步骤
|
|
237
|
-
- **写完必须立即跑一遍确认通过**,失败则修复后重跑,不要"写了就算完成"
|
|
238
|
-
8. **Lint 校验:** 完成后对修改的文件运行 lint 工具(与 quick 相同规则),自动修复可修复的问题,不可修复的标注在报告中
|
|
239
|
-
9. **暂存:** lint 通过后执行 git add -A(不要 commit,由用户通过 /sillyspec:commit 统一提交)
|
|
240
|
-
9. **不修改计划外的文件**,如必须修改则在报告中说明
|
|
241
|
-
10. **遵守编码规范:** prompt 中「编码规范约束」段的所有规则必须严格遵守。如规范与任务描述冲突,优先遵守规范并报告
|
|
242
|
-
|
|
243
|
-
## 完成后报告(严格按此格式)
|
|
244
|
-
|
|
245
|
-
- **Status:** DONE / DONE_WITH_CONCERNS / BLOCKED
|
|
246
|
-
- **改动文件:** {列表}
|
|
247
|
-
- **测试结果:** {通过/失败/跳过及原因}
|
|
248
|
-
- **Commit:** {hash 或 "无"}
|
|
249
|
-
- **问题:** {BLOCKED 原因 / DONE_WITH_CONCERNS 描述 / 无}
|
|
250
|
-
- **发现的坑:** {执行过程中发现的项目特有规律/陷阱/约定,如无则写"无"。示例:"XxxMapper.selectPage() 第一个参数必须是 IPage 对象,传 null 会 NPE 而非返回全部"}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### 子代理结果处理
|
|
254
|
-
|
|
255
|
-
子代理返回后,主代理:
|
|
256
|
-
|
|
257
|
-
1. **DONE** → 勾选 tasks.md,记录精确到秒的时间戳
|
|
258
|
-
2. **DONE_WITH_CONCERNS** → 勾选 tasks.md,记录问题到报告
|
|
259
|
-
3. **BLOCKED** → 不勾选,报告给用户,AskUserQuestion 三选一:
|
|
260
|
-
- 重试(重新 dispatch 同一任务)
|
|
261
|
-
- 跳过(勾选并标注 SKIPPED)
|
|
262
|
-
- 停止(暂停执行,用户处理后继续)
|
|
263
|
-
|
|
264
|
-
**知识库写入:** 如果子代理报告中「发现的坑」不为"无",主代理将内容追加到 `.sillyspec/knowledge/uncategorized.md`,格式:
|
|
265
|
-
```markdown
|
|
266
|
-
### [待确认] {简短标题}
|
|
267
|
-
> 来源:{变更名} / {task 编号} | {时间戳}
|
|
268
|
-
|
|
269
|
-
{坑的具体描述}
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
---
|
|
273
|
-
|
|
274
|
-
## 完成后
|
|
275
|
-
|
|
276
|
-
**任务勾选自检(必须执行):**
|
|
277
|
-
所有任务完成后,主代理必须执行以下检查:
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
cat .sillyspec/changes/*/tasks.md 2>/dev/null
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
逐条验证:
|
|
284
|
-
1. **所有返回 DONE/DONE_WITH_CONCERNS 的任务是否已勾选 `- [x]`?**
|
|
285
|
-
2. **勾选的任务是否都记录了精确到秒的时间戳 `[YYYY-MM-DD HH:MM:SS]`?**
|
|
286
|
-
3. **tasks.md 中是否还有未勾选 `- [ ]` 的已完成任务?**
|
|
287
|
-
|
|
288
|
-
发现遗漏 → 立即补勾选 + 补时间戳,不要等用户提醒。
|
|
289
|
-
|
|
290
|
-
**知识库审阅:** 检查是否有待确认的知识条目:
|
|
291
|
-
```bash
|
|
292
|
-
grep -c '^\### \[待确认\]' .sillyspec/knowledge/uncategorized.md 2>/dev/null
|
|
293
|
-
```
|
|
294
|
-
如果有待确认条目,提示用户:
|
|
295
|
-
> 📚 本轮执行发现了 N 条新知识,请审阅:`cat .sillyspec/knowledge/uncategorized.md`
|
|
296
|
-
> 确认后请将 `[待确认]` 改为 `[已确认]`,并可归类到 knowledge/ 下的专题文件中更新 INDEX.md。
|
|
297
|
-
|
|
298
|
-
💡 所有修改已暂存。准备好后用 `/sillyspec:commit` 提交。
|
|
299
|
-
|
|
300
|
-
所有任务完成后,用 AskUserQuestion 询问用户下一步:
|
|
301
|
-
1. **验证** — 执行 `/sillyspec:verify` 全面验证
|
|
302
|
-
2. **归档** — 跳过 verify,执行 `/sillyspec:archive`
|
|
303
|
-
3. **继续开发** — 不结束当前阶段
|
|
304
|
-
|
package/templates/explore.md
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 写实现代码
|
|
6
|
-
- ❌ 安装依赖
|
|
7
|
-
- ❌ 修改文件(除非用户明确要求保存发现)
|
|
8
|
-
- ❌ 强行下结论或强行结构化
|
|
9
|
-
|
|
10
|
-
## 话题
|
|
11
|
-
$ARGUMENTS
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 这是什么模式
|
|
16
|
-
|
|
17
|
-
**探索模式用于思考,不用于实现。** 读文件、搜代码、调查代码库,但绝对不能写代码。没有固定步骤、没有必需的输出。
|
|
18
|
-
|
|
19
|
-
## 姿态
|
|
20
|
-
|
|
21
|
-
- **好奇不说教** — 问自然产生的问题
|
|
22
|
-
- **开放式线程** — 展示多个有趣方向
|
|
23
|
-
- **可视化** — 大量使用 ASCII 图表
|
|
24
|
-
- **自适应** — 追随有趣线索随时转向
|
|
25
|
-
- **务实** — 探索实际代码库,不只纸上谈兵
|
|
26
|
-
|
|
27
|
-
## 上下文感知
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
ls .sillyspec/changes/ 2>/dev/null | grep -v archive
|
|
31
|
-
cat .sillyspec/{REQUIREMENTS,ROADMAP}.md 2>/dev/null
|
|
32
|
-
cat .sillyspec/docs/*/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null
|
|
33
|
-
cat .sillyspec/knowledge/INDEX.md 2>/dev/null
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
有进行中变更时读取其 design/tasks,自然引用。发现重要决策时可提议保存(不自动保存)。
|
|
37
|
-
|
|
38
|
-
## MCP 能力(按需使用)
|
|
39
|
-
|
|
40
|
-
检查当前可用工具列表中是否存在 MCP 工具(Context7/浏览器/数据库/搜索等),不依赖配置文件路径。
|
|
41
|
-
|
|
42
|
-
- 有 Context7 → 探索时查询最新文档,验证技术方案的可行性
|
|
43
|
-
- 有浏览器 MCP → 可浏览相关网站、查竞品实现
|
|
44
|
-
- 有搜索 MCP → 搜索技术方案、最佳实践
|
|
45
|
-
- 无 MCP → 使用 web search
|
|
46
|
-
|
|
47
|
-
## 话题升级提示
|
|
48
|
-
|
|
49
|
-
探索过程中,当对话达到一定深度时(讨论了 5+ 轮、或涉及具体实现方案、或用户表达"试试看"/"能不能做"/"怎么搞"),主动用 AskUserQuestion 提示用户:
|
|
50
|
-
|
|
51
|
-
1. **🧠 头脑风暴** — `/sillyspec:brainstorm` 深度探索需求和方案
|
|
52
|
-
2. **⚡ 快速执行** — `/sillyspec:quick` 直接动手做
|
|
53
|
-
4. **🔍 继续探索** — 还没聊透,继续
|
|
54
|
-
|
|
55
|
-
不需要每次都提示,只在对话**明显转向执行意图**时触发。纯讨论、提问、查资料时不要打断。
|
|
56
|
-
|
|
57
|
-
## 没有必需的结束
|
|
58
|
-
|
|
59
|
-
探索可以创建变更提案、产出文档、继续探索或结束。
|
package/templates/export.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
## 核心约束(必须遵守)
|
|
2
|
-
- ❌ 修改任何文件(只读)
|
|
3
|
-
|
|
4
|
-
## 参数解析
|
|
5
|
-
`$ARGUMENTS`:变更名 + 可选 `--to` 输出路径(默认 `~/.sillyspec/templates/<change-name>/`)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 流程
|
|
10
|
-
|
|
11
|
-
1. **读取变更文件:**
|
|
12
|
-
- 先检查根目录:`cat .sillyspec/changes/$ARGUMENTS/{design}.md 2>/dev/null`
|
|
13
|
-
- 根目录没有 → 检查子项目:遍历 `projects/*.yaml` 中的子项目路径,查找 `$ARGUMENTS`
|
|
14
|
-
2. **清理为通用模板:** 移除项目特定信息,保留通用设计方案,添加 `notes.md` 使用建议。
|
|
15
|
-
3. **导出:** `mkdir -p ~/.sillyspec/templates/<change-name>` 并复制文件。
|
|
16
|
-
4. **确认:** 展示摘要和模板路径。
|
|
17
|
-
|
|
18
|
-
### 最后说:
|
|
19
|
-
|
|
20
|
-
> ✅ 已导出到 `~/.sillyspec/templates/<change-name>/`
|
|
21
|
-
> 其他项目使用:`/sillyspec:brainstorm` → AI 自动发现并建议复用
|
package/templates/init.md
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
## 交互规范
|
|
2
|
-
**当需要用户从多个选项中做出选择时,必须使用 Claude Code 内置的 AskUserQuestion 工具,将选项以参数传入。**
|
|
3
|
-
|
|
4
|
-
## 核心约束(必须遵守)
|
|
5
|
-
- ❌ 写任何实现代码
|
|
6
|
-
- ❌ 安装任何依赖
|
|
7
|
-
- ❌ 一次问多个问题
|
|
8
|
-
- ❌ 接受模糊需求(❌"好用" → ✅"首屏加载 < 2 秒")
|
|
9
|
-
|
|
10
|
-
## 用户输入
|
|
11
|
-
$ARGUMENTS
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 流程
|
|
16
|
-
|
|
17
|
-
### Step 1: 检查工作区模式
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
有 `projects` → 工作区模式:AskUserQuestion 选子项目,切换到子项目目录执行。
|
|
24
|
-
|
|
25
|
-
### Step 2: 检查项目状态
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
ls -la
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
已有代码/配置 → 提示用 `/sillyspec:scan`。空目录 → 继续。
|
|
32
|
-
|
|
33
|
-
### Step 3: 深度提问(一次一个问题)
|
|
34
|
-
|
|
35
|
-
按需探索(不是每个都要):项目本质 → 核心功能 → 技术偏好 → 非功能需求 → 设计偏好 → 约束 → 不在范围内。
|
|
36
|
-
|
|
37
|
-
### Step 4: 技术选型(如需要)
|
|
38
|
-
|
|
39
|
-
用户无明确偏好时,推荐 2-3 套技术栈并列优劣和推荐理由。可选快速调研选定框架的版本、生态、已知坑。
|
|
40
|
-
|
|
41
|
-
### Step 5: 生成文档
|
|
42
|
-
|
|
43
|
-
**`REQUIREMENTS.md`:** 概述、目标用户、功能需求(P0/P1/P2)、非功能需求、不在范围内、技术选型表。
|
|
44
|
-
|
|
45
|
-
**`ROADMAP.md`:** Phase 分阶段路线图(目标 + 交付物)。
|
|
46
|
-
|
|
47
|
-
**`PROJECT.md`:** 项目名、一句话描述、状态。
|
|
48
|
-
|
|
49
|
-
### Step 6: Git 初始化
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
git init && git add .
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
💡 项目已初始化并暂存。准备好后用 `/sillyspec:commit` 提交。
|
|
56
|
-
|
|
57
|
-
### 最后说:
|
|
58
|
-
|
|
59
|
-
> ✅ 项目初始化完成!
|
|
60
|
-
> 生成文件:PROJECT.md、REQUIREMENTS.md、ROADMAP.md
|
|
61
|
-
> 下一步:`/sillyspec:brainstorm "Phase 1: xxx"` 或直接告诉我改什么
|