sillyspec 3.20.2 → 3.20.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.
- package/.claude/skills/sillyspec-archive/SKILL.md +1 -5
- package/.claude/skills/sillyspec-auto/SKILL.md +2 -8
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +1 -28
- package/.claude/skills/sillyspec-commit/SKILL.md +3 -4
- package/.claude/skills/sillyspec-continue/SKILL.md +4 -5
- package/.claude/skills/sillyspec-doctor/SKILL.md +3 -12
- package/.claude/skills/sillyspec-execute/SKILL.md +2 -15
- package/.claude/skills/sillyspec-explore/SKILL.md +1 -14
- package/.claude/skills/sillyspec-plan/SKILL.md +36 -5
- package/.claude/skills/sillyspec-propose/SKILL.md +0 -4
- package/.claude/skills/sillyspec-quick/SKILL.md +1 -5
- package/.claude/skills/sillyspec-resume/SKILL.md +66 -23
- package/.claude/skills/sillyspec-scan/SKILL.md +1 -5
- package/.claude/skills/sillyspec-state/SKILL.md +8 -8
- package/.claude/skills/sillyspec-status/SKILL.md +1 -5
- package/.claude/skills/sillyspec-verify/SKILL.md +1 -5
- package/.claude/skills/sillyspec-workspace/SKILL.md +3 -11
- 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-dashboard-design.md +206 -0
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +199 -0
- package/.sillyspec/changes/dashboard/design.md +219 -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/plans/2026-04-05-dashboard.md +737 -0
- package/.sillyspec/projects/sillyspec.yaml +3 -0
- package/README.md +11 -13
- package/SKILL.md +40 -44
- package/dist/steps/brainstorm/01-load-context.md +30 -0
- package/dist/steps/brainstorm/02-reuse-check.md +6 -0
- package/dist/steps/brainstorm/03-prototype-analysis.md +11 -0
- package/dist/steps/brainstorm/04-module-split.md +23 -0
- package/dist/steps/brainstorm/05-dialog-explore.md +8 -0
- package/dist/steps/brainstorm/06-propose-approaches.md +3 -0
- package/dist/steps/brainstorm/07-present-design.md +3 -0
- package/dist/steps/brainstorm/08-write-design.md +21 -0
- package/dist/steps/brainstorm/09-self-review.md +15 -0
- package/dist/steps/brainstorm/10-user-confirm.md +3 -0
- package/dist/steps/brainstorm/11-output-spec.md +7 -0
- package/dist/steps/brainstorm/manifest.yaml +26 -0
- package/dist/steps/execute/01-load-context.md +41 -0
- package/dist/steps/execute/02-scan-conventions.md +47 -0
- package/dist/steps/execute/03-skill-mcp.md +19 -0
- package/dist/steps/execute/04-assign-task.md +22 -0
- package/dist/steps/execute/04b-prompt-template.md +54 -0
- package/dist/steps/execute/05-write-test.md +7 -0
- package/dist/steps/execute/06-write-code.md +8 -0
- package/dist/steps/execute/07-run-test.md +26 -0
- package/dist/steps/execute/08-fix-issues.md +28 -0
- package/dist/steps/execute/09-next-task.md +33 -0
- package/dist/steps/execute/manifest.yaml +28 -0
- package/dist/steps/plan/01-load-context.md +22 -0
- package/dist/steps/plan/02-anchor-confirm.md +1 -0
- package/dist/steps/plan/03-expand-tasks.md +33 -0
- package/dist/steps/plan/04-mark-order.md +15 -0
- package/dist/steps/plan/05-e2e-planning.md +17 -0
- package/dist/steps/plan/06-self-check.md +16 -0
- package/dist/steps/plan/07-save.md +1 -0
- package/dist/steps/plan/manifest.yaml +18 -0
- package/dist/steps/scan/01-env-detect.md +51 -0
- package/dist/steps/scan/02-tech-stack.md +16 -0
- package/dist/steps/scan/03-conventions.md +16 -0
- package/dist/steps/scan/04-structure.md +19 -0
- package/dist/steps/scan/05-quality.md +18 -0
- package/dist/steps/scan/06-complete.md +49 -0
- package/dist/steps/scan/manifest.yaml +16 -0
- package/dist/steps/verify/01-load-specs.md +28 -0
- package/dist/steps/verify/02-check-tasks.md +1 -0
- package/dist/steps/verify/03-check-design.md +6 -0
- package/dist/steps/verify/04-run-tests.md +7 -0
- package/dist/steps/verify/05-e2e-tests.md +27 -0
- package/dist/steps/verify/05b-e2e-fix.md +33 -0
- package/dist/steps/verify/06-code-quality.md +25 -0
- package/dist/steps/verify/07-lint-check.md +27 -0
- package/dist/steps/verify/08-output-report.md +14 -0
- package/dist/steps/verify/manifest.yaml +22 -0
- package/package.json +1 -7
- package/packages/dashboard/dist/assets/{index-Bq_Z2hne.js → index-D1EVTLmc.js} +1264 -1264
- package/packages/dashboard/dist/assets/index-DGe8CqeP.css +1 -0
- package/packages/dashboard/dist/index.html +2 -2
- package/packages/dashboard/package-lock.json +6 -6
- package/packages/dashboard/server/executor.js +1 -1
- package/packages/dashboard/server/index.js +18 -98
- package/packages/dashboard/server/parser.js +71 -139
- package/packages/dashboard/server/watcher.js +6 -14
- package/packages/dashboard/src/App.vue +185 -418
- package/packages/dashboard/src/components/ActionBar.vue +1 -10
- package/packages/dashboard/src/components/CommandPalette.vue +1 -5
- package/packages/dashboard/src/components/DocPreview.vue +8 -105
- package/packages/dashboard/src/components/DocTree.vue +19 -75
- package/packages/dashboard/src/components/PipelineStage.vue +2 -22
- package/packages/dashboard/src/components/PipelineView.vue +5 -32
- package/packages/dashboard/src/components/ProjectOverview.vue +139 -113
- package/packages/dashboard/src/components/StageBadge.vue +3 -17
- package/packages/dashboard/src/components/StepCard.vue +2 -7
- package/packages/dashboard/src/composables/useDashboard.js +0 -28
- package/src/derive.js +147 -0
- package/src/index.js +40 -688
- package/src/init.js +63 -119
- package/src/migrate.js +7 -7
- package/src/progress.js +248 -1474
- package/src/run.js +302 -3008
- package/src/setup.js +64 -2
- package/src/stages/archive.js +17 -123
- package/src/stages/brainstorm.js +48 -454
- package/src/stages/doctor.js +46 -99
- package/src/stages/execute.js +59 -420
- package/src/stages/index.js +18 -12
- package/src/stages/plan.js +189 -492
- package/src/stages/propose.js +11 -70
- package/src/stages/quick.js +13 -52
- package/src/stages/scan.js +68 -485
- package/src/stages/status.js +1 -1
- package/src/stages/verify.js +16 -203
- package/src/step.js +543 -0
- package/.claude/skills/sillyspec-knowledge/SKILL.md +0 -270
- package/.husky/pre-push +0 -13
- package/CLAUDE.md +0 -18
- package/docs/brainstorm-plan-contract.md +0 -64
- package/docs/plan-execute-contract.md +0 -123
- package/docs/platform-scan-protocol.md +0 -298
- package/docs/revision-mode.md +0 -115
- package/docs/sillyspec/file-lifecycle/known-implementation-gaps.md +0 -99
- package/docs/sillyspec/file-lifecycle/platform-workflows-sync.md +0 -218
- package/docs/sillyspec/file-lifecycle/stage-artifacts.md +0 -167
- package/docs/sillyspec/file-lifecycle/storage-and-state.md +0 -148
- package/docs/sillyspec/file-lifecycle/worktree-and-guard.md +0 -193
- package/docs/sillyspec/file-lifecycle.md +0 -125
- package/docs/workflow-contract-regression.md +0 -106
- package/docs/worktree-isolation.md +0 -252
- package/packages/dashboard/dist/assets/index-O2W5RV4z.css +0 -1
- package/packages/dashboard/dist/prototype-dashboard.html +0 -836
- package/packages/dashboard/dist/prototype-overview.html +0 -256
- package/packages/dashboard/public/prototype-dashboard.html +0 -836
- package/packages/dashboard/public/prototype-overview.html +0 -256
- package/packages/dashboard/src/components/HResizeHandle.vue +0 -48
- package/packages/dashboard/src/components/ProjectCard.vue +0 -187
- package/packages/dashboard/src/components/VResizeHandle.vue +0 -61
- package/packages/dashboard/src/composables/useLayout.js +0 -131
- package/src/brainstorm-postcheck.js +0 -158
- package/src/change-list.js +0 -52
- package/src/change-risk-profile.js +0 -352
- package/src/classify-change.js +0 -73
- package/src/constants.js +0 -70
- package/src/contract-matrix.js +0 -278
- package/src/db.js +0 -201
- package/src/endpoint-extractor.js +0 -315
- package/src/hooks/claude-pre-tool-use.cjs +0 -125
- package/src/hooks/worktree-guard.js +0 -761
- package/src/knowledge-match.js +0 -130
- package/src/modules.js +0 -482
- package/src/scan-postcheck.js +0 -383
- package/src/stage-contract.js +0 -700
- package/src/stages/brainstorm-auto.js +0 -229
- package/src/stages/explore.js +0 -34
- package/src/stages/knowledge.js +0 -498
- package/src/stages/plan-postcheck.js +0 -513
- package/src/sync.js +0 -497
- package/src/task-review.js +0 -346
- package/src/workflow.js +0 -785
- package/src/worktree-apply.js +0 -549
- package/src/worktree.js +0 -932
- package/templates/workflows/archive-impact.yaml +0 -79
- package/templates/workflows/scan-docs.yaml +0 -132
- package/test/brainstorm-plan-contract.test.mjs +0 -273
- package/test/check-syntax.mjs +0 -26
- package/test/cli-top-level-aliases.test.mjs +0 -174
- package/test/contract-artifacts.test.mjs +0 -323
- package/test/decision-supersede.test.mjs +0 -277
- package/test/knowledge-match.test.mjs +0 -231
- package/test/plan-execute-contract.test.mjs +0 -330
- package/test/plan-optimization.test.mjs +0 -572
- package/test/platform-artifacts.test.mjs +0 -190
- package/test/platform-failure-samples.test.mjs +0 -199
- package/test/platform-recovery-chain.test.mjs +0 -179
- package/test/platform-recovery.test.mjs +0 -167
- package/test/platform-scan-p0.test.mjs +0 -175
- package/test/revision-v1.test.mjs +0 -1145
- package/test/run-sanitize-project-name.test.mjs +0 -51
- package/test/run-scan-postcheck-fail.test.mjs +0 -64
- package/test/run-scan-project-parse.test.mjs +0 -200
- package/test/run-tests.mjs +0 -48
- package/test/scan-docs-yaml-placeholders.test.mjs +0 -84
- package/test/scan-knowledge.test.mjs +0 -175
- package/test/scan-paths.test.mjs +0 -68
- package/test/scan-postcheck-project-priority.test.mjs +0 -85
- package/test/scan-postcheck.test.mjs +0 -197
- package/test/scan-workflow-anyfailed-block.test.mjs +0 -52
- package/test/spec-dir.test.mjs +0 -206
- package/test/stage-contract-failed-post-check.test.mjs +0 -102
- package/test/stage-contract.test.mjs +0 -299
- package/test/stage-definitions.test.mjs +0 -39
- package/test/wait-gates.test.mjs +0 -501
- package/test/workflow-spec-base.test.mjs +0 -142
- package/test/worktree-guard.test.mjs +0 -136
- package/test/worktree-native-overlay.test.mjs +0 -188
package/src/stages/scan.js
CHANGED
|
@@ -5,549 +5,132 @@ export const definition = {
|
|
|
5
5
|
auxiliary: true,
|
|
6
6
|
steps: [
|
|
7
7
|
{
|
|
8
|
-
name: '
|
|
9
|
-
prompt:
|
|
8
|
+
name: '检查已有扫描文档和子项目列表',
|
|
9
|
+
prompt: `检查已有扫描文档和子项目列表。
|
|
10
10
|
|
|
11
11
|
### 操作
|
|
12
|
-
1.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
### 判断标准(满足任一即为子项目)
|
|
18
|
-
- 有独立的构建文件(package.json, pom.xml, build.gradle, pyproject.toml 等)
|
|
19
|
-
- 有独立的源码目录结构(src/, app/, lib/ 等)
|
|
20
|
-
- 有独立的测试目录(test/, tests/, __tests__/ 等)
|
|
21
|
-
- 不是 .git / node_modules / .sillyspec / dist / build 等工具目录
|
|
22
|
-
|
|
23
|
-
### 输出格式
|
|
24
|
-
列出发现的可能子项目列表,每个含:
|
|
25
|
-
- 目录名
|
|
26
|
-
- 技术栈(如 Next.js + TypeScript、FastAPI + Python)
|
|
27
|
-
- 是否已注册到 projects/
|
|
28
|
-
- 建议:注册 / 跳过
|
|
29
|
-
|
|
30
|
-
### ⛔ 红线
|
|
31
|
-
- **不要自动创建 projects 配置文件**,只列出建议供用户确认
|
|
32
|
-
- **不要修改任何文件**,只做探测和报告
|
|
12
|
+
1. \`ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .\` — 检查已有文档
|
|
13
|
+
1. \`ls docs/*/scan/ 2>/dev/null\` — 检查已有文档
|
|
14
|
+
2. \`wc -l docs/*/scan/*.md 2>/dev/null\` — 文档行数
|
|
15
|
+
3. 已有 3 份 → 建议升级深度扫描;已有 7 份 → 建议刷新或跳过
|
|
16
|
+
5. 显示子项目列表供选择扫描范围
|
|
33
17
|
|
|
34
18
|
### 输出
|
|
35
|
-
|
|
36
|
-
outputHint: '
|
|
37
|
-
optional: false
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: '构建扫描项目列表',
|
|
41
|
-
prompt: `确定本次要扫描的项目列表。
|
|
42
|
-
|
|
43
|
-
### 操作
|
|
44
|
-
1. \`ls {PROJECTS_ROOT}/*.yaml 2>/dev/null\` — 列出所有已注册项目
|
|
45
|
-
2. 对每个项目,检查已有的 scan 文档状态:\`ls {DOCS_ROOT}/scan/*.md 2>/dev/null\`
|
|
46
|
-
3. 按以下格式展示:
|
|
47
|
-
|
|
48
|
-
\`\`\`
|
|
49
|
-
扫描项目列表:
|
|
50
|
-
1. sillyspec(主项目)— scan 文档:0/7 已存在
|
|
51
|
-
2. dashboard(子项目)— scan 文档:0/7 已存在
|
|
52
|
-
\`\`\`
|
|
53
|
-
|
|
54
|
-
4. **如果存在歧义(多项目且无法自动判定),必须暂停等待用户**:
|
|
55
|
-
- 选择要扫描的项目(默认全部)
|
|
56
|
-
- 每个项目的扫描策略:**重新扫描(全部覆盖)** / **只补扫描缺失的文档** / **跳过**
|
|
57
|
-
- 调用:\`sillyspec run scan --wait --reason "等待用户确认扫描项目列表" --options "全部重新扫描,只补缺失,跳过" --output "项目列表和策略建议"\`
|
|
58
|
-
5. **如果只有单一项目且已明确,正常完成即可,不需要等待。**
|
|
59
|
-
|
|
60
|
-
### ⛔ 重要
|
|
61
|
-
- **不要自行决定跳过**,有歧义时暂停等用户选择后再继续
|
|
62
|
-
- 最终确定的项目列表将用于后续所有步骤
|
|
63
|
-
- **后续每个需要生成文档的步骤,都必须对列表中的每个项目分别执行**
|
|
64
|
-
|
|
65
|
-
### 输出格式规范
|
|
66
|
-
--output 必须使用以下结构化格式之一(CLI 只解析这些格式,**不要输出自由文本列表**):
|
|
67
|
-
|
|
68
|
-
**格式 A:scan_projects YAML block**
|
|
69
|
-
在 --output 中输出:
|
|
70
|
-
scan_projects:
|
|
71
|
-
- id: backend
|
|
72
|
-
- id: frontend
|
|
73
|
-
- id: daemon
|
|
74
|
-
|
|
75
|
-
**格式 B:BEGIN_PROJECT_LIST 标记块**
|
|
76
|
-
在 --output 中输出:
|
|
77
|
-
BEGIN_PROJECT_LIST
|
|
78
|
-
- backend
|
|
79
|
-
- frontend
|
|
80
|
-
- daemon
|
|
81
|
-
END_PROJECT_LIST
|
|
82
|
-
|
|
83
|
-
如果不需要解析项目列表(如单项目已明确),--output 写普通摘要即可。`,
|
|
84
|
-
outputHint: '结构化项目列表(YAML block 或 BEGIN_PROJECT_LIST)',
|
|
19
|
+
已有文档状态 + 扫描建议`,
|
|
20
|
+
outputHint: '工作区和文档状态',
|
|
85
21
|
optional: false
|
|
86
22
|
},
|
|
87
23
|
{
|
|
88
24
|
name: '构建环境探测',
|
|
89
|
-
|
|
90
|
-
prompt: `探测当前项目的构建环境和依赖。
|
|
25
|
+
prompt: `探测项目的构建环境和依赖。
|
|
91
26
|
|
|
92
27
|
### 操作
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
3. \`find <project-dir> -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null\`
|
|
97
|
-
4. 结果保存到 \`{DOCS_ROOT}/scan/_env-detect.md\`(临时文件,扫描完删除)
|
|
28
|
+
1. \`cat package.json pom.xml build.gradle go.mod Cargo.toml requirements.txt pyproject.toml Gemfile composer.json 2>/dev/null\`
|
|
29
|
+
2. \`find . -maxdepth 2 -name "*.config.*" -not -path "*/node_modules/*" -not -path "*/.git/*" | head -20 | xargs cat 2>/dev/null\`
|
|
30
|
+
3. 结果保存到 \`docs/<project>/scan/_env-detect.md\`(临时文件,扫描完删除)
|
|
98
31
|
|
|
99
32
|
### 输出
|
|
100
|
-
|
|
33
|
+
环境探测结果摘要`,
|
|
101
34
|
outputHint: '环境探测摘要',
|
|
102
35
|
optional: false
|
|
103
36
|
},
|
|
104
37
|
{
|
|
105
38
|
name: '断点续扫检测',
|
|
106
|
-
|
|
107
|
-
prompt: `检测当前项目已有扫描文档,列出缺失的。
|
|
39
|
+
prompt: `检测已有扫描文档,只生成缺失的。
|
|
108
40
|
|
|
109
41
|
### 操作
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
42
|
+
1. \`PROJECT=$(python3 -c "import sys,json; print(json.load(open('.sillyspec/.runtime/progress.json')).get('project',''))" 2>/dev/null || basename "$(pwd)")\`
|
|
43
|
+
2. 检查 7 份文档是否存在:ARCHITECTURE、STRUCTURE、CONVENTIONS、INTEGRATIONS、TESTING、CONCERNS、PROJECT
|
|
44
|
+
3. 列出已有 ✅ 和缺失 ⬜
|
|
45
|
+
4. 只生成缺失的文档
|
|
114
46
|
|
|
115
47
|
### 输出
|
|
116
|
-
|
|
48
|
+
已有/缺失文档列表`,
|
|
117
49
|
outputHint: '断点续扫状态',
|
|
118
50
|
optional: false
|
|
119
51
|
},
|
|
120
52
|
{
|
|
121
|
-
name: '深度扫描 —
|
|
122
|
-
|
|
123
|
-
prompt: `按照 \`{WORKFLOWS_ROOT}/scan-docs.yaml\` 中定义的角色和检查规则,使用子代理并行生成当前项目的 7 份扫描文档。
|
|
124
|
-
|
|
125
|
-
**你必须使用子代理执行,不要自己写文档。**
|
|
126
|
-
**对扫描列表中的每个项目分别执行以下流程。**
|
|
53
|
+
name: '深度扫描 — 技术架构',
|
|
54
|
+
prompt: `扫描技术栈 + 数据库 Schema + 架构模式。参考 _env-detect.md。
|
|
127
55
|
|
|
128
56
|
### 操作
|
|
129
|
-
1.
|
|
130
|
-
2.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
c. 子代理的搜索范围限定在该项目目录内(子项目如 \`packages/dashboard/\`,不要搜索主项目源码)
|
|
134
|
-
d. 子代理直接用 grep/rg 搜索源码并写入文件,结果不回传到你的上下文
|
|
135
|
-
e. 等待该项目所有子代理完成后,验证文件是否生成且非空
|
|
136
|
-
f. 该项目完成后,继续下一个项目
|
|
137
|
-
3. 所有项目完成后,运行以下命令检查产物:
|
|
138
|
-
\`node -e "import('./src/workflow.js').then(w => { const r = w.runPostCheck(w.loadWorkflow('.', 'scan-docs'), '.', '<project>'); console.log(w.formatCheckReport(r)) })\`
|
|
139
|
-
对每个项目分别执行(将 \`<project>\` 替换为实际项目名)
|
|
140
|
-
4. 如果检查报告有失败项,按报告中的角色和文件重试失败的部分
|
|
141
|
-
|
|
142
|
-
### 覆盖保护
|
|
143
|
-
- 生成每份 scan 文档时,frontmatter 必须包含:
|
|
144
|
-
\`\`\`yaml
|
|
145
|
-
---
|
|
146
|
-
source_commit: <git-head-short>
|
|
147
|
-
updated_at: <now-iso-datetime>
|
|
148
|
-
generator: sillyspec-scan
|
|
149
|
-
---
|
|
150
|
-
\`\`\`
|
|
151
|
-
- 覆盖已有 scan 文档前先读取旧 frontmatter;如果旧文档的 \`source_commit\` 与当前 HEAD 不一致,或旧文档 \`updated_at\` 晚于本次 scan 开始时间,不要覆盖。
|
|
152
|
-
- 如果用户明确传入 \`--force-rescan\`,允许覆盖,但仍需写入新的 \`source_commit\` 和 \`updated_at\`。
|
|
57
|
+
1. 用 grep/rg 搜索(\`@Entity\`、\`schema.prisma\`、\`models.py\` 等),**禁止读源码全文**
|
|
58
|
+
2. Schema 只记表名+说明+字段数
|
|
59
|
+
3. 写入 \`docs/<project>/scan/ARCHITECTURE.md\`
|
|
60
|
+
4. 包含 \`## 技术栈\` \`## 架构概览\` \`## 数据模型(摘要)\`
|
|
153
61
|
|
|
154
|
-
###
|
|
155
|
-
|
|
156
|
-
- 项目名(直接用实际项目名)
|
|
157
|
-
- 目标文件路径(从 workflow YAML 中 \`<project>\` 替换后的路径)
|
|
158
|
-
- 检查要求(从 workflow YAML 中该角色的 checks)
|
|
159
|
-
- 断点续扫步骤列出的缺失文档列表
|
|
160
|
-
- 环境探测结果摘要(如有 _env-detect.md,直接贴入)
|
|
161
|
-
- **⚠️ 必须强调:子代理必须用 write 工具将文件写入磁盘**
|
|
62
|
+
### 输出
|
|
63
|
+
ARCHITECTURE.md 路径
|
|
162
64
|
|
|
163
|
-
###
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
- ✅ CONVENTIONS.md / ❌ 缺失
|
|
167
|
-
- ...`,
|
|
168
|
-
outputHint: '7 份文档生成状态(含 workflow 检查报告)',
|
|
65
|
+
### 注意
|
|
66
|
+
- 路径用反引号,不编造`,
|
|
67
|
+
outputHint: 'ARCHITECTURE.md 路径',
|
|
169
68
|
optional: false
|
|
170
69
|
},
|
|
171
70
|
{
|
|
172
|
-
name: '
|
|
173
|
-
prompt:
|
|
71
|
+
name: '深度扫描 — 代码约定',
|
|
72
|
+
prompt: `扫描框架隐形规则 + 实体继承 + 代码风格。参考 _env-detect.md。
|
|
174
73
|
|
|
175
74
|
### 操作
|
|
176
|
-
1.
|
|
177
|
-
2.
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
- **通用项目**:只写注释模板, type: generic
|
|
182
|
-
3. 确保目录存在:mkdir -p {SPEC_ROOT}
|
|
183
|
-
4. 原子写入(先写 tmp 文件再 rename)
|
|
184
|
-
|
|
185
|
-
### 文件格式
|
|
186
|
-
\`\`\`yaml
|
|
187
|
-
# SillySpec 本地配置(自动生成,可手动修改)
|
|
188
|
-
project:
|
|
189
|
-
type: nodejs # nodejs/maven/gradle/generic
|
|
190
|
-
|
|
191
|
-
commands:
|
|
192
|
-
build: "npm run build"
|
|
193
|
-
test: "npm test"
|
|
194
|
-
lint: "npm run lint"
|
|
195
|
-
|
|
196
|
-
# 测试策略:full=全量测试, module=只测变更模块, skip=跳过测试
|
|
197
|
-
test_strategy: module
|
|
198
|
-
|
|
199
|
-
# 模块测试路径映射(可选)
|
|
200
|
-
# module_paths:
|
|
201
|
-
# user-service: "user/"
|
|
202
|
-
# order-service: "order/"
|
|
203
|
-
\`\`\`
|
|
75
|
+
1. 用 grep 搜索拦截器/插件/逻辑删除/基类/审计字段,**禁止读源码全文**
|
|
76
|
+
2. 根据检测到的语言/框架自行决定搜索什么模式
|
|
77
|
+
3. 提取 3-5 个典型示例
|
|
78
|
+
4. 写入 \`docs/<project>/scan/CONVENTIONS.md\`
|
|
79
|
+
5. 包含 \`## 框架隐形规则\` \`## 实体继承规范\` \`## 代码风格\`
|
|
204
80
|
|
|
205
81
|
### 输出
|
|
206
|
-
|
|
207
|
-
|
|
82
|
+
CONVENTIONS.md 路径
|
|
83
|
+
|
|
84
|
+
### 注意
|
|
85
|
+
- 路径用反引号,不编造`,
|
|
86
|
+
outputHint: 'CONVENTIONS.md 路径',
|
|
208
87
|
optional: false
|
|
209
88
|
},
|
|
210
89
|
{
|
|
211
|
-
name: '
|
|
212
|
-
|
|
213
|
-
prompt: `生成当前项目的模块索引文件 \`_module-map.yaml\`。
|
|
214
|
-
|
|
215
|
-
### ⚠️ 重要:这个文件是唯一的结构化索引源
|
|
216
|
-
所有结构化事实(paths/tags/entrypoints/depends_on/used_by)只维护在这个文件里。
|
|
217
|
-
模块卡片(modules/*.md)只负责人类语义说明,不重复索引信息。
|
|
90
|
+
name: '深度扫描 — 目录结构和集成',
|
|
91
|
+
prompt: `扫描目录结构 + 外部集成。参考 _env-detect.md。
|
|
218
92
|
|
|
219
93
|
### 操作
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
- 每个有明确职责的独立目录识别为一个模块
|
|
225
|
-
- 路径用 glob 模式
|
|
226
|
-
3. 用 grep/rg 分析每个模块:
|
|
227
|
-
- \`main_symbols\`:模块导出的主要函数/类/常量(grep export / module.exports / def / class)
|
|
228
|
-
- \`entrypoints\`:对外 API 端点或命令入口(grep route / router / @Controller / @GetMapping 等)
|
|
229
|
-
- \`tags\`:模块相关关键词标签
|
|
230
|
-
- \`aliases\`:模块的别名(其他开发者可能怎么称呼这个模块)
|
|
231
|
-
4. 分析跨模块依赖关系:
|
|
232
|
-
- 用 grep import/require 分析模块间的引用链
|
|
233
|
-
- 填充 depends_on(本模块依赖谁)和 used_by(谁依赖本模块)
|
|
234
|
-
5. 生成 \`{DOCS_ROOT}/modules/_module-map.yaml\`
|
|
235
|
-
6. 如果 modules/ 目录不存在,先创建
|
|
236
|
-
7. 原子写入(先写 tmp 文件再 rename)
|
|
237
|
-
|
|
238
|
-
### YAML 格式
|
|
239
|
-
\`\`\`yaml
|
|
240
|
-
schema_version: 1
|
|
241
|
-
project: <project-name>
|
|
242
|
-
source_commit: <git-head-short>
|
|
243
|
-
generated_at: <now-datetime>
|
|
244
|
-
generator: sillyspec-scan
|
|
245
|
-
|
|
246
|
-
modules:
|
|
247
|
-
<module-id>:
|
|
248
|
-
status: active
|
|
249
|
-
doc: modules/<module-id>.md
|
|
250
|
-
paths:
|
|
251
|
-
- <glob-pattern>
|
|
252
|
-
tags:
|
|
253
|
-
- <tag1>
|
|
254
|
-
- <tag2>
|
|
255
|
-
aliases:
|
|
256
|
-
- <alias1>
|
|
257
|
-
entrypoints:
|
|
258
|
-
- <exported-symbol-or-api-endpoint>
|
|
259
|
-
main_symbols:
|
|
260
|
-
- <exported-class-or-function>
|
|
261
|
-
depends_on:
|
|
262
|
-
- <other-module-id>
|
|
263
|
-
used_by:
|
|
264
|
-
- <other-module-id>
|
|
265
|
-
needs_review: false
|
|
266
|
-
concerns: []
|
|
267
|
-
review_reasons: []
|
|
268
|
-
\`\`\`
|
|
269
|
-
|
|
270
|
-
### 示例
|
|
271
|
-
\`\`\`yaml
|
|
272
|
-
schema_version: 1
|
|
273
|
-
project: multi-agent-platform
|
|
274
|
-
source_commit: abc1234
|
|
275
|
-
generated_at: 2026-06-02 22:00:00
|
|
276
|
-
generator: sillyspec-scan
|
|
277
|
-
|
|
278
|
-
modules:
|
|
279
|
-
auth-service:
|
|
280
|
-
status: active
|
|
281
|
-
doc: modules/auth-service.md
|
|
282
|
-
paths:
|
|
283
|
-
- src/modules/auth/**
|
|
284
|
-
- src/middleware/auth.js
|
|
285
|
-
tags:
|
|
286
|
-
- auth
|
|
287
|
-
- jwt
|
|
288
|
-
- rbac
|
|
289
|
-
- middleware
|
|
290
|
-
aliases:
|
|
291
|
-
- login
|
|
292
|
-
- token
|
|
293
|
-
- authentication
|
|
294
|
-
entrypoints:
|
|
295
|
-
- authenticate
|
|
296
|
-
- authorize
|
|
297
|
-
- signToken
|
|
298
|
-
- refreshToken
|
|
299
|
-
main_symbols:
|
|
300
|
-
- AuthService
|
|
301
|
-
- AuthController
|
|
302
|
-
- hashPassword
|
|
303
|
-
- verifyPassword
|
|
304
|
-
depends_on:
|
|
305
|
-
- users
|
|
306
|
-
- redis
|
|
307
|
-
used_by:
|
|
308
|
-
- api-routes
|
|
309
|
-
- admin-routes
|
|
310
|
-
needs_review: false
|
|
311
|
-
concerns: []
|
|
312
|
-
review_reasons: []
|
|
313
|
-
\`\`\`
|
|
314
|
-
|
|
315
|
-
### 关键规则
|
|
316
|
-
- module-id 用 kebab-case(如 auth-service)
|
|
317
|
-
- depends_on / used_by 引用其他模块的 module-id
|
|
318
|
-
- tags 和 aliases 用于 brainstorm 阶段的需求→模块匹配,尽量覆盖开发者可能用的词
|
|
319
|
-
- entrypoints 和 main_symbols 用于 execute 阶段快速定位源码
|
|
320
|
-
- 不要编造无法从源码 grep 到的符号
|
|
321
|
-
- 如果无法确定依赖关系,depends_on/used_by 留空列表,不要猜
|
|
94
|
+
1. 用 find/ls/tree 和 grep,**禁止读源码全文**
|
|
95
|
+
2. 搜索 API 调用、MQ 配置、缓存、第三方 SDK
|
|
96
|
+
3. 写入 \`docs/<project>/scan/STRUCTURE.md\`(目录树+模块说明)
|
|
97
|
+
4. 写入 \`docs/<project>/scan/INTEGRATIONS.md\`(按类型分组)
|
|
322
98
|
|
|
323
99
|
### 输出
|
|
324
|
-
|
|
325
|
-
outputHint: '_module-map.yaml 生成状态',
|
|
326
|
-
optional: true
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
name: '生成模块卡片文档',
|
|
330
|
-
perProject: true,
|
|
331
|
-
prompt: `根据当前项目的 \`_module-map.yaml\` 生成模块卡片文档。
|
|
332
|
-
|
|
333
|
-
### ⚠️ 重要:模块卡片只负责人类语义说明
|
|
334
|
-
结构化索引(paths/tags/entrypoints/depends_on/used_by)已经在 _module-map.yaml 里维护。
|
|
335
|
-
卡片里不要重复这些信息,只写 _module-map.yaml 无法表达的语义内容。
|
|
336
|
-
|
|
337
|
-
### 操作
|
|
338
|
-
对扫描列表中的每个项目分别执行:
|
|
339
|
-
1. 读取 \`{DOCS_ROOT}/modules/_module-map.yaml\`,获取模块列表和路径
|
|
340
|
-
2. 检查 \`{DOCS_ROOT}/modules/\` 下已有的模块文档(<module>.md)
|
|
341
|
-
3. 列出每个模块的状态:已有文档 / 缺失
|
|
342
|
-
4. **如果有覆盖风险(已有模块文档会被覆盖),必须暂停等待用户**:
|
|
343
|
-
- 展示模块列表及现有文档状态
|
|
344
|
-
- 明确提供选项:**为缺失模块生成初始文档** / **全部重新生成(覆盖已有)** / **跳过**
|
|
345
|
-
- 调用:\`sillyspec run scan --wait --reason "检测到已有模块文档覆盖风险" --options "只生成缺失,全部重新生成,跳过" --output "受影响模块列表"\`
|
|
346
|
-
5. **如果没有覆盖风险(全部都是缺失模块),正常完成即可,不需要等待。**
|
|
347
|
-
|
|
348
|
-
### 生成方法(子代理并行,只针对用户选中的模块)
|
|
349
|
-
**你必须为每个模块启动独立子代理执行,不要自己写文档。**
|
|
350
|
-
|
|
351
|
-
每个子代理的 prompt(**主 agent 启动前必须拼入**:
|
|
352
|
-
- 模块名和路径(从 _module-map.yaml 读取)
|
|
353
|
-
- 环境探测结果摘要(构建工具、语言框架)
|
|
354
|
-
- scan 文档关键信息摘要(ARCHITECTURE.md 的技术栈、CONVENTIONS.md 的代码风格要点,如已生成)
|
|
355
|
-
\`\`\`
|
|
356
|
-
模块名:<module-id>
|
|
357
|
-
模块路径:<glob patterns>
|
|
358
|
-
目标文件:{DOCS_ROOT}/modules/<module-id>.md
|
|
359
|
-
|
|
360
|
-
操作:
|
|
361
|
-
1. 用 grep/rg 搜索模块路径范围内的源码(禁止读源码全文)
|
|
362
|
-
2. 提取:模块职责、对外接口、关键逻辑、注意事项
|
|
363
|
-
3. 按以下模板写入目标文件:
|
|
364
|
-
|
|
365
|
-
---
|
|
366
|
-
schema_version: 1
|
|
367
|
-
doc_type: module-card
|
|
368
|
-
module_id: <module-id>
|
|
369
|
-
---
|
|
100
|
+
STRUCTURE.md 和 INTEGRATIONS.md 路径
|
|
370
101
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
## 契约摘要
|
|
377
|
-
(核心能力列表,具体导出符号以 _module-map.yaml 的 entrypoints/main_symbols 为准)
|
|
378
|
-
|
|
379
|
-
## 关键逻辑
|
|
380
|
-
(最核心的流程摘要,用 text 伪代码,不超过 3-5 行)
|
|
381
|
-
|
|
382
|
-
## 注意事项
|
|
383
|
-
(维护提醒、已知限制、修改时需同步检查的模块)
|
|
384
|
-
|
|
385
|
-
## 人工备注
|
|
386
|
-
|
|
387
|
-
<!-- MANUAL_NOTES_START -->
|
|
388
|
-
|
|
389
|
-
<!-- MANUAL_NOTES_END -->
|
|
390
|
-
|
|
391
|
-
规则:
|
|
392
|
-
- 不要编造接口或依赖,只写 grep/rg 能搜到的
|
|
393
|
-
- 目标长度:500-1000 字 / 80-150 行
|
|
394
|
-
- 如果模块特别复杂(状态机、多角色交互、复杂领域规则),可以在 modules/details/ 下生成扩展文档(如 details/<module-id>-flow.md),agent 默认不读
|
|
395
|
-
- 不要重复 _module-map.yaml 中的索引信息
|
|
396
|
-
- 不要写设计决策表、完整依赖表、变更索引长表
|
|
397
|
-
- 人工备注区域保持空标记,留给用户填写
|
|
398
|
-
\`\`\`
|
|
399
|
-
|
|
400
|
-
等待所有子代理完成,验证文件是否生成且非空。
|
|
401
|
-
|
|
402
|
-
### 输出
|
|
403
|
-
已生成的模块文档路径列表`,
|
|
404
|
-
outputHint: '模块文档生成状态',
|
|
405
|
-
optional: true
|
|
406
|
-
},
|
|
407
|
-
{
|
|
408
|
-
name: '生成业务流程和术语表(可选)',
|
|
409
|
-
perProject: true,
|
|
410
|
-
prompt: `根据当前项目的模块依赖关系和源码,生成跨模块业务流程文档和术语表。
|
|
411
|
-
|
|
412
|
-
⚠️ 这一步是可选的。如果项目模块简单、流程不明显,可以跳过。
|
|
413
|
-
|
|
414
|
-
### flows/ 目录
|
|
415
|
-
目标目录:\`{DOCS_ROOT}/flows/\`
|
|
416
|
-
|
|
417
|
-
根据 _module-map.yaml 中的模块依赖关系,识别跨模块业务流程:
|
|
418
|
-
1. 读取 \`_module-map.yaml\`,分析 used_by 链条
|
|
419
|
-
2. 用 grep/rg 搜索路由定义、API 端点、事件处理
|
|
420
|
-
3. 识别跨模块的完整业务流程(如登录→下单→支付)
|
|
421
|
-
4. 每个流程生成一个文件:\`flows/<flow-name>.md\`
|
|
422
|
-
|
|
423
|
-
文件格式:
|
|
424
|
-
\`\`\`markdown
|
|
425
|
-
# <flow-name>
|
|
426
|
-
|
|
427
|
-
## 目标
|
|
428
|
-
(一句话描述这个流程的业务目的)
|
|
429
|
-
|
|
430
|
-
## 参与模块
|
|
431
|
-
- module-a:做什么
|
|
432
|
-
- module-b:做什么
|
|
433
|
-
|
|
434
|
-
## 流程摘要
|
|
435
|
-
\`\`\`text
|
|
436
|
-
step1 → step2 → step3
|
|
437
|
-
\`\`\`
|
|
438
|
-
|
|
439
|
-
## 失败回滚
|
|
440
|
-
| 失败点 | 处理 |
|
|
441
|
-
|---|---|
|
|
442
|
-
\`\`\`
|
|
443
|
-
|
|
444
|
-
### glossary.md
|
|
445
|
-
目标文件:\`{DOCS_ROOT}/glossary.md\`
|
|
446
|
-
|
|
447
|
-
提取项目专有术语:
|
|
448
|
-
1. 用 grep 搜索 TODO/FIXME 注释中的术语定义
|
|
449
|
-
2. 从数据库表注释提取
|
|
450
|
-
3. 从 README 和文档中提取定义段落
|
|
451
|
-
|
|
452
|
-
文件格式:
|
|
453
|
-
\`\`\`markdown
|
|
454
|
-
# Glossary
|
|
455
|
-
|
|
456
|
-
## Session
|
|
457
|
-
在本项目中,session 指...(项目内特殊含义)
|
|
458
|
-
|
|
459
|
-
## Order
|
|
460
|
-
订单主实体,代表...(业务定义)
|
|
461
|
-
\`\`\`
|
|
462
|
-
|
|
463
|
-
### 操作
|
|
464
|
-
1. 分析模块依赖关系,识别可能的业务流程
|
|
465
|
-
2. 如果发现 2+ 个跨模块流程,生成 flows/ 文档
|
|
466
|
-
3. 提取术语生成 glossary.md
|
|
467
|
-
4. 如果没有明显的流程或术语,跳过此步
|
|
468
|
-
|
|
469
|
-
### 输出
|
|
470
|
-
生成的文件路径列表(或"已跳过")`,
|
|
471
|
-
outputHint: '流程和术语表生成状态',
|
|
472
|
-
optional: true
|
|
102
|
+
### 注意
|
|
103
|
+
- 路径用反引号,不编造`,
|
|
104
|
+
outputHint: 'STRUCTURE.md + INTEGRATIONS.md 路径',
|
|
105
|
+
optional: false
|
|
473
106
|
},
|
|
474
107
|
{
|
|
475
|
-
name: '
|
|
476
|
-
|
|
477
|
-
prompt: `从本次 scan 产物中提取长期有效、跨变更复用的项目知识,写入知识库。
|
|
478
|
-
|
|
479
|
-
### 知识分类
|
|
480
|
-
| 文件 | 内容 |
|
|
481
|
-
|------|------|
|
|
482
|
-
| conventions.md | 项目约定:目录规范、命名规范、提交规范、测试规范 |
|
|
483
|
-
| patterns.md | 可复用模式:鉴权方式、错误处理方式、模块组织方式 |
|
|
484
|
-
| known-issues.md | 已知坑:不可直接改的模块、历史兼容问题、代理限制 |
|
|
485
|
-
| uncategorized.md | 不确定分类、需要人工确认的知识 |
|
|
486
|
-
|
|
487
|
-
INDEX.md 维护索引,格式(每行:关键词1|关键词2 → [条目名](文件#锚点);关键词用于 execute 阶段命中匹配,必须给出能区分该知识的词):
|
|
488
|
-
\`\`\`markdown
|
|
489
|
-
# Knowledge Index
|
|
490
|
-
|
|
491
|
-
## Conventions
|
|
492
|
-
- ESM|module|import → [ESM Only](conventions.md#esm-only)
|
|
493
|
-
\`\`\`
|
|
494
|
-
|
|
495
|
-
### ⛔ 硬规则(必须遵守)
|
|
496
|
-
1. **只写未来变更会反复用到的知识** — 不要把 scan 报告摘要塞进知识库
|
|
497
|
-
2. **不要重复 knowledge 文件中已有的内容** — 读取现有文件,追加新条目,不覆盖
|
|
498
|
-
3. **不确定分类或不确定长期有效 → uncategorized.md** — 宁可不确定也不要放错
|
|
499
|
-
4. **每个正式分类条目必须更新 INDEX.md** — 添加对应分类下的链接
|
|
500
|
-
5. **每个条目用 markdown 锚点格式** — 文件内用 \`## 标题\`,INDEX 用 \`[#标题]\` 或 \`(文件名#标题)\`
|
|
108
|
+
name: '深度扫描 — 测试和债务',
|
|
109
|
+
prompt: `扫描测试现状 + 技术债务 + 项目概览。参考 _env-detect.md。
|
|
501
110
|
|
|
502
111
|
### 操作
|
|
503
|
-
1.
|
|
504
|
-
2.
|
|
505
|
-
3.
|
|
506
|
-
4.
|
|
507
|
-
5. 如果确实没有新知识可提取(已有文件已覆盖),输出"无新知识"而非创建空条目
|
|
112
|
+
1. 用 grep 搜索测试文件、TODO/FIXME、过时依赖,**禁止读源码全文**
|
|
113
|
+
2. 写入 \`docs/<project>/scan/TESTING.md\`(测试结构)
|
|
114
|
+
3. 写入 \`docs/<project>/scan/CONCERNS.md\`(按严重程度分组)
|
|
115
|
+
4. 写入 \`docs/<project>/scan/PROJECT.md\`(项目信息)
|
|
508
116
|
|
|
509
117
|
### 输出
|
|
510
|
-
|
|
511
|
-
outputHint: '
|
|
118
|
+
TESTING.md、CONCERNS.md、PROJECT.md 路径`,
|
|
119
|
+
outputHint: '三份文档路径',
|
|
512
120
|
optional: false
|
|
513
121
|
},
|
|
514
122
|
{
|
|
515
123
|
name: '自检和提交',
|
|
516
|
-
|
|
517
|
-
prompt: `验证当前项目的扫描完整性,清理并提交。
|
|
124
|
+
prompt: `验证扫描完整性,清理并提交。
|
|
518
125
|
|
|
519
126
|
### 操作
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
4. 检查 flows/ 和 glossary.md 是否已生成(如有)
|
|
525
|
-
5. 清理:\`rm -f {DOCS_ROOT}/scan/_env-detect.md\`
|
|
526
|
-
6. 如果非平台模式:\`git add .sillyspec/\` — 暂存扫描结果(不要 commit,由用户通过统一提交工具处理)。如果平台模式:跳过 git add(specRoot 不在 sourceRoot 的 git repo 内)。
|
|
527
|
-
|
|
528
|
-
### ⛔ 路径合规检查(平台模式下必须执行)
|
|
529
|
-
7. 确认所有文档都写入 \`{DOCS_ROOT}/\`(spec-root 下),**而非源码目录下的 .sillyspec/**
|
|
530
|
-
8. 检查是否出现 tool_use_error 或 API Error 未恢复
|
|
531
|
-
9. 检查 7 份文档 header 是否包含 author 和 created_at
|
|
532
|
-
10. 检查 local.yaml 中 commands 是否在 package.json scripts 中真实存在,不存在的必须标记 unavailable
|
|
533
|
-
|
|
534
|
-
### ⛔ API 错误处理
|
|
535
|
-
- 遇到 API Error 529(服务过载)或 rate_limit 时,**停止当前操作并报告**,不要自动重试
|
|
536
|
-
- 遇到 tool_use_error 时,记录错误信息并跳过该文件/操作,继续处理下一项
|
|
537
|
-
- 如果连续 3 次操作失败,输出失败摘要并停止
|
|
538
|
-
|
|
539
|
-
### ⛔ 最终状态判定
|
|
540
|
-
如果出现以下**任意**情况,最终状态**不能**写"全部通过",只能写 \`completed_with_warnings\` 或 \`failed_post_check\`:
|
|
541
|
-
- 源码目录下存在 docs(路径合规检查失败)
|
|
542
|
-
- source_commit 为 null
|
|
543
|
-
- Write 工具出现过失败
|
|
544
|
-
- API Error 529 或 rate_limit
|
|
545
|
-
- fallback / retry / skipped validation
|
|
546
|
-
- 文档引用不存在的文件或模块
|
|
547
|
-
- 文档内容包含 .sillyspec/ 等工具目录的扫描结果
|
|
127
|
+
1. 检查 7 份文档是否全部生成
|
|
128
|
+
2. 自检门控:ARCHITECTURE(技术栈+Schema摘要)、CONVENTIONS(隐形规则+代码风格)、STRUCTURE(目录结构)、INTEGRATIONS(外部依赖)、TESTING(测试现状)、CONCERNS(技术债务)、PROJECT(项目概览)
|
|
129
|
+
3. 清理:\`rm -f docs/<project>/scan/_env-detect.md\`
|
|
130
|
+
4. \`git add .\` — **不要 commit**,由用户通过统一提交工具处理
|
|
548
131
|
|
|
549
132
|
### 输出
|
|
550
|
-
|
|
133
|
+
扫描完整性报告
|
|
551
134
|
|
|
552
135
|
### 注意
|
|
553
136
|
- ❌ 修改代码 / 编造路径 / 读源码全文`,
|
package/src/stages/status.js
CHANGED
|
@@ -11,7 +11,7 @@ export const definition = {
|
|
|
11
11
|
### 操作
|
|
12
12
|
1. \`cat .sillyspec/PROJECT.md 2>/dev/null || echo "未初始化"\`
|
|
13
13
|
2. 获取 project 名
|
|
14
|
-
3. \`ls
|
|
14
|
+
3. \`ls docs/<project>/scan/ 2>/dev/null | head -10\`
|
|
15
15
|
4. \`cat .sillyspec/REQUIREMENTS.md 2>/dev/null | head -20\`
|
|
16
16
|
5. \`cat .sillyspec/ROADMAP.md 2>/dev/null\`
|
|
17
17
|
|