sillyspec 3.20.1 → 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 +2 -8
- 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 -685
- package/src/init.js +63 -119
- package/src/migrate.js +7 -7
- package/src/progress.js +248 -1474
- package/src/run.js +302 -2920
- 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 -468
- 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/.npmrc-tmp +0 -1
- 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 -380
- 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 -77
- 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 -183
- 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/doctor.js
CHANGED
|
@@ -18,10 +18,9 @@ export const definition = {
|
|
|
18
18
|
for d in .sillyspec .sillyspec/projects .sillyspec/docs .sillyspec/changes .sillyspec/.runtime; do
|
|
19
19
|
[ -d "$d" ] && echo "✅ $d" || echo "❌ $d"
|
|
20
20
|
done
|
|
21
|
-
# 检查
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
sqlite3 "$DB_FILE" "SELECT count(*) FROM project" 2>/dev/null && echo "✅ sillyspec.db 可查询" || echo "⚠️ sillyspec.db 不可查询"
|
|
21
|
+
# 检查 progress.json
|
|
22
|
+
[ -f .sillyspec/.runtime/progress.json ] && echo "✅ progress.json 存在" || echo "❌ progress.json 不存在"
|
|
23
|
+
node -e "JSON.parse(require('fs').readFileSync('.sillyspec/.runtime/progress.json','utf8')); console.log('✅ progress.json 可解析')" 2>/dev/null || echo "⚠️ progress.json 不可解析"
|
|
25
24
|
\`\`\`
|
|
26
25
|
|
|
27
26
|
### 2. 项目配置检查
|
|
@@ -41,31 +40,40 @@ done
|
|
|
41
40
|
|
|
42
41
|
### 3. 进度数据一致性
|
|
43
42
|
\`\`\`bash
|
|
44
|
-
#
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
43
|
+
# 读取 currentChange 并检查目录存在性
|
|
44
|
+
node -e "
|
|
45
|
+
const p = JSON.parse(require('fs').readFileSync('.sillyspec/.runtime/progress.json','utf8'));
|
|
46
|
+
const cc = p.currentChange;
|
|
47
|
+
if (!cc) { console.log('ℹ️ 无当前变更'); process.exit(0); }
|
|
48
|
+
const dir = '.sillyspec/changes/' + cc;
|
|
49
|
+
const exists = require('fs').existsSync(dir);
|
|
50
|
+
console.log(exists ? '✅ currentChange 目录存在: ' + cc : '❌ currentChange 目录不存在: ' + cc);
|
|
51
|
+
// 检查各阶段产出
|
|
52
|
+
const stages = p.stages || {};
|
|
53
|
+
for (const [name, sd] of Object.entries(stages)) {
|
|
54
|
+
if (sd.status === 'completed' && sd.steps.length > 0) {
|
|
55
|
+
const hasOutput = sd.steps.some(s => s.output && s.output.trim());
|
|
56
|
+
console.log(' ' + name + ': ' + (hasOutput ? '✅ 有产出' : '⚠️ 已完成但无产出记录'));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
" 2>/dev/null || echo "⚠️ 无法读取 progress.json"
|
|
54
60
|
\`\`\`
|
|
55
61
|
|
|
56
62
|
### 4. 孤儿文件检查
|
|
57
63
|
\`\`\`bash
|
|
58
|
-
DB_FILE='.sillyspec/.runtime/sillyspec.db'
|
|
59
|
-
if [ ! -f "$DB_FILE" ]; then echo "⚠️ sillyspec.db 不存在"; exit 0; fi
|
|
60
64
|
node -e "
|
|
61
65
|
const fs = require('fs');
|
|
62
66
|
const dir = '.sillyspec/changes';
|
|
63
67
|
if (!fs.existsSync(dir)) { console.log('ℹ️ changes/ 目录不存在'); process.exit(0); }
|
|
64
68
|
const subs = fs.readdirSync(dir).filter(f => fs.statSync(dir+'/'+f).isDirectory());
|
|
65
69
|
if (subs.length === 0) { console.log('ℹ️ 无变更目录'); process.exit(0); }
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
let progress;
|
|
71
|
+
try { progress = JSON.parse(fs.readFileSync('.sillyspec/.runtime/progress.json','utf8')); } catch { console.log('⚠️ 无法读取 progress.json'); subs.forEach(s => console.log('❓ ' + s)); process.exit(0); }
|
|
72
|
+
const known = new Set();
|
|
73
|
+
if (progress.currentChange) known.add(progress.currentChange);
|
|
74
|
+
for (const sd of Object.values(progress.stages || {})) {
|
|
75
|
+
(sd.steps || []).forEach(s => { if (s.output) known.add(s.output); });
|
|
76
|
+
}
|
|
69
77
|
subs.forEach(s => {
|
|
70
78
|
console.log(known.has(s) ? '✅ ' + s + ' — 已关联' : '⚠️ ' + s + ' — 孤儿目录(可清理)');
|
|
71
79
|
});
|
|
@@ -84,54 +92,13 @@ for f in .sillyspec/projects/*.yaml; do
|
|
|
84
92
|
stack_md="$p/.sillyspec/STACK.md"
|
|
85
93
|
[ -f "$local_yaml" ] && echo "✅ local.yaml ($name)" || echo "⚠️ local.yaml ($name) — 不存在"
|
|
86
94
|
if [ -f "$local_yaml" ]; then
|
|
95
|
+
grep -q 'build:' "$local_yaml" && echo " ✅ build 命令已配置" || echo " ⚠️ 缺少 build 命令"
|
|
87
96
|
grep -q 'test:' "$local_yaml" && echo " ✅ test 命令已配置" || echo " ⚠️ 缺少 test 命令"
|
|
88
97
|
fi
|
|
89
98
|
[ -f "$stack_md" ] && echo "✅ STACK.md ($name)" || echo "⚠️ STACK.md ($name) — 不存在"
|
|
90
99
|
done
|
|
91
100
|
\`\`\`
|
|
92
101
|
|
|
93
|
-
### 6. Worktree 隔离环境检查
|
|
94
|
-
\`\`\`bash
|
|
95
|
-
# 检测当前目录是否在 submodule 中
|
|
96
|
-
SUPERPROJECT=$(git rev-parse --show-superproject-working-tree 2>/dev/null)
|
|
97
|
-
if [ -n "$SUPERPROJECT" ]; then
|
|
98
|
-
echo "⚠️ 当前目录在 git submodule 内,worktree 隔离不可用"
|
|
99
|
-
else
|
|
100
|
-
echo "✅ 不在 submodule 中"
|
|
101
|
-
fi
|
|
102
|
-
|
|
103
|
-
# 检测是否已在 linked worktree 中
|
|
104
|
-
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
|
105
|
-
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
|
106
|
-
if [ "$GIT_DIR" != "$GIT_COMMON" ] && [ -z "$SUPERPROJECT" ]; then
|
|
107
|
-
echo "✅ 已在 linked worktree 中"
|
|
108
|
-
else
|
|
109
|
-
echo "ℹ️ 在主仓库中(非 worktree)"
|
|
110
|
-
fi
|
|
111
|
-
|
|
112
|
-
# 检查 worktree 存储目录是否被 .gitignore 忽略
|
|
113
|
-
WT_DIR='.sillyspec/.runtime/worktrees'
|
|
114
|
-
if git check-ignore -q "$WT_DIR" 2>/dev/null; then
|
|
115
|
-
echo "✅ worktree 目录已被 .gitignore 忽略 ($WT_DIR)"
|
|
116
|
-
else
|
|
117
|
-
echo "❌ worktree 目录未被 .gitignore 忽略 ($WT_DIR) — worktree 创建将被阻断"
|
|
118
|
-
echo " 修复: 在 .gitignore 中添加 $WT_DIR/"
|
|
119
|
-
fi
|
|
120
|
-
|
|
121
|
-
# 检查 DB 中的 isolation 状态
|
|
122
|
-
DB_FILE='.sillyspec/.runtime/sillyspec.db'
|
|
123
|
-
if [ -f "$DB_FILE" ]; then
|
|
124
|
-
echo ""
|
|
125
|
-
echo "isolation 状态(来自 sillyspec.db):"
|
|
126
|
-
sqlite3 -header -column "$DB_FILE" "SELECT name, isolation_status AS status, isolation_mode AS mode, isolation_reason AS reason FROM changes WHERE status='active'" 2>/dev/null || echo "⚠️ 查询 isolation 失败"
|
|
127
|
-
else
|
|
128
|
-
echo ""
|
|
129
|
-
echo "ℹ️ sillyspec.db 不存在(尚未初始化)"
|
|
130
|
-
fi
|
|
131
|
-
else
|
|
132
|
-
echo "ℹ️ gate-status.json 不存在(尚未进入 execute 阶段)"
|
|
133
|
-
fi
|
|
134
|
-
\`\`\`\n
|
|
135
102
|
### 输出
|
|
136
103
|
汇总所有检查结果,按以下格式:
|
|
137
104
|
\`\`\`
|
|
@@ -141,7 +108,16 @@ fi
|
|
|
141
108
|
|
|
142
109
|
### 注意
|
|
143
110
|
- 不要编造路径或结果,严格基于命令输出
|
|
144
|
-
- 如果 .sillyspec/ 不存在,直接输出 ❌
|
|
111
|
+
- 如果 .sillyspec/ 不存在,直接输出 ❌ 并跳过后续检查
|
|
112
|
+
- 额外运行 deriveState 全量校验:
|
|
113
|
+
\
|
|
114
|
+
\
|
|
115
|
+
\
|
|
116
|
+
node -e "import('./src/derive.js').then(m => { const pm = require('./progress.js'); const r = m.deriveState('.', {mode:'full',fix:false,progress:pm.read('.')}); console.log(JSON.stringify(r, null, 2)); })" 2>/dev/null || echo "deriveState 不可用"
|
|
117
|
+
\
|
|
118
|
+
\
|
|
119
|
+
\
|
|
120
|
+
将 deriveState 的 issues 列表纳入 SillySpec 内部检查结果中`,
|
|
145
121
|
outputHint: 'SillySpec 内部检查结果',
|
|
146
122
|
optional: false
|
|
147
123
|
},
|
|
@@ -151,12 +127,12 @@ fi
|
|
|
151
127
|
|
|
152
128
|
### 1. 探测构建工具
|
|
153
129
|
\`\`\`bash
|
|
154
|
-
# 确定项目路径(使用
|
|
155
|
-
PROJECT_DIR=$(
|
|
130
|
+
# 确定项目路径(使用 progress.json 中的项目或当前目录)
|
|
131
|
+
PROJECT_DIR=$(node -e "
|
|
156
132
|
const fs=require('fs');
|
|
157
|
-
try{const
|
|
133
|
+
try{const p=JSON.parse(fs.readFileSync('.sillyspec/.runtime/progress.json','utf8'));if(p.project){console.log(p.project);process.exit(0)}}catch{}
|
|
134
|
+
const files=fs.readdirSync('.sillyspec/projects').filter(f=>f.endsWith('.yaml'));
|
|
158
135
|
if(files.length>0){const c=fs.readFileSync('.sillyspec/projects/'+files[0],'utf8');const m=c.match(/^path:\\s*(.+)/m);console.log(m?m[1].trim():'.')}else console.log('.')
|
|
159
|
-
}catch{console.log('.')}
|
|
160
136
|
" 2>/dev/null)
|
|
161
137
|
echo "项目目录: $PROJECT_DIR"
|
|
162
138
|
|
|
@@ -279,38 +255,9 @@ timeout 5 which docker 2>/dev/null && echo "✅ Docker 可用" || echo "ℹ️ D
|
|
|
279
255
|
outputHint: '外部依赖检查结果',
|
|
280
256
|
optional: false
|
|
281
257
|
},
|
|
282
|
-
{
|
|
283
|
-
name: '模块文档健康检查',
|
|
284
|
-
prompt: `检查模块索引和卡片文档的健康状态。
|
|
285
|
-
|
|
286
|
-
### 操作
|
|
287
|
-
1. 运行 \`sillyspec modules status\` 查看模块索引概览
|
|
288
|
-
2. 读取 \`.sillyspec/docs/<project>/modules/_module-map.yaml\`
|
|
289
|
-
3. 对每个模块,检查:
|
|
290
|
-
- module_id 是否有对应的卡片文件(modules/<module-id>.md)
|
|
291
|
-
- 卡片文件是否有有效的 frontmatter(schema_version, doc_type, module_id)
|
|
292
|
-
- 人工备注标记是否配对(MANUAL_NOTES_START 和 MANUAL_NOTES_END 必须成对出现)
|
|
293
|
-
- needs_review 为 true 的模块列表
|
|
294
|
-
4. 汇总结果
|
|
295
|
-
|
|
296
|
-
### 输出格式
|
|
297
|
-
\`\`\`
|
|
298
|
-
📋 模块文档健康检查
|
|
299
|
-
✅ _module-map.yaml — 存在,N 个模块
|
|
300
|
-
⚠️ auth-service — needs_review=true,原因:...
|
|
301
|
-
❌ payment-service — 卡片文件缺失
|
|
302
|
-
✅ 所有模块人工备注标记配对正常
|
|
303
|
-
\`\`\`
|
|
304
|
-
|
|
305
|
-
### 注意
|
|
306
|
-
- 如果 _module-map.yaml 不存在,输出"模块索引未生成,建议运行 scan"
|
|
307
|
-
`,
|
|
308
|
-
outputHint: '模块文档健康状态',
|
|
309
|
-
optional: false
|
|
310
|
-
},
|
|
311
258
|
{
|
|
312
259
|
name: '汇总报告',
|
|
313
|
-
prompt:
|
|
260
|
+
prompt: `汇总前三步的所有检查结果,生成最终的自检报告。
|
|
314
261
|
|
|
315
262
|
### 输出格式
|
|
316
263
|
\`\`\`
|
|
@@ -320,7 +267,7 @@ timeout 5 which docker 2>/dev/null && echo "✅ Docker 可用" || echo "ℹ️ D
|
|
|
320
267
|
✅ .sillyspec/ 目录结构 — 正常
|
|
321
268
|
✅ projects/*.yaml — N 个项目已注册
|
|
322
269
|
⚠️ local.yaml (xxx) — 缺少 test 命令
|
|
323
|
-
❌
|
|
270
|
+
❌ progress.json — brainstorm 标记完成但 design.md 不存在
|
|
324
271
|
|
|
325
272
|
## 构建环境
|
|
326
273
|
✅ Node.js v23.4.0 — 可用
|
|
@@ -345,9 +292,9 @@ timeout 5 which docker 2>/dev/null && echo "✅ Docker 可用" || echo "ℹ️ D
|
|
|
345
292
|
**常见问题及修复:**
|
|
346
293
|
- CLI 未安装 → \`npm install -g sillyspec\`
|
|
347
294
|
- 缺少 local.yaml → \`sillyspec init\` 重新生成,或手动创建
|
|
348
|
-
- local.yaml 缺少 test
|
|
295
|
+
- local.yaml 缺少 build/test → 补充对应命令
|
|
349
296
|
- 缺少 STACK.md → \`sillyspec run scan\` 重新扫描
|
|
350
|
-
-
|
|
297
|
+
- progress.json 不一致 → \`sillyspec run <阶段> --reset\` 重置对应阶段
|
|
351
298
|
- 孤儿目录 → 确认后 \`rm -rf .sillyspec/changes/<目录名>\`
|
|
352
299
|
- Maven 私服不可达 → 检查 VPN、settings.xml 配置、私服状态
|
|
353
300
|
- Git remote 不可达 → 检查网络、SSH key 或凭证
|