sillyspec 3.7.16 → 3.7.18
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 +4 -70
- package/.claude/skills/sillyspec-brainstorm/SKILL.md +5 -583
- package/.claude/skills/sillyspec-execute/SKILL.md +5 -225
- package/.claude/skills/sillyspec-plan/SKILL.md +6 -256
- package/.claude/skills/sillyspec-propose/SKILL.md +5 -240
- package/.claude/skills/sillyspec-quick/SKILL.md +4 -95
- package/.claude/skills/sillyspec-scan/SKILL.md +7 -136
- package/.claude/skills/sillyspec-status/SKILL.md +5 -125
- package/.claude/skills/sillyspec-verify/SKILL.md +6 -139
- package/package.json +1 -1
- package/src/progress.js +5 -1
- package/src/run.js +14 -3
- package/src/stages/archive.js +54 -0
- package/src/stages/index.js +13 -2
- package/src/stages/quick.js +93 -0
- package/src/stages/scan.js +141 -0
- package/src/stages/status.js +92 -0
|
@@ -3,144 +3,11 @@ name: sillyspec:verify
|
|
|
3
3
|
description: 验证实现 — 对照规范检查 + 测试套件
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
## 执行
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
运行 `sillyspec run verify`,按提示逐步执行。
|
|
9
|
+
每步完成后运行 `sillyspec run verify --done --output "摘要"`。
|
|
10
|
+
阶段完成后自动提示下一步。
|
|
9
11
|
|
|
10
|
-
##
|
|
11
|
-
|
|
12
|
-
**在开始任何工作之前,先调用 SillySpec CLI 检查当前状态:**
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
sillyspec status --json
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
**根据 CLI 返回的 phase 决定是否允许执行 verify:**
|
|
19
|
-
- `phase: "verify"` → ✅ 可以继续
|
|
20
|
-
- 其他 phase → ❌ 不允许跳步,提示用户运行 `sillyspec next` 获取正确步骤
|
|
21
|
-
|
|
22
|
-
**不要跳过状态检查。不要自己推断阶段。以 CLI 为准。**
|
|
23
|
-
|
|
24
|
-
## 流程
|
|
25
|
-
|
|
26
|
-
### 1. 加载规范
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
LATEST=$(ls -d .sillyspec/changes/*/ | grep -v archive | tail -1)
|
|
30
|
-
cat "$LATEST/proposal.md"
|
|
31
|
-
cat "$LATEST/design.md"
|
|
32
|
-
cat "$LATEST/tasks.md"
|
|
33
|
-
cat "$LATEST/specs/requirements.md" 2>/dev/null
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### 1.5 锚定确认(必须完成)
|
|
37
|
-
|
|
38
|
-
读取相关规范文件。对于存在的文件,确认理解;对于不存在的文件,标注跳过:
|
|
39
|
-
|
|
40
|
-
```
|
|
41
|
-
已读取并理解:
|
|
42
|
-
- [x] proposal.md — 变更动机和范围(如果存在)
|
|
43
|
-
- [x] design.md — 技术方案和文件变更(如果存在)
|
|
44
|
-
- [x] tasks.md — 实现清单(如果存在)
|
|
45
|
-
- [x] specs/requirements.md — 需求和场景(如果存在)
|
|
46
|
-
|
|
47
|
-
所有可用上下文已加载,开始验证。
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
**文件不存在不是错误**。只确认实际存在的文件。不准跳过此步骤。
|
|
51
|
-
|
|
52
|
-
### 2. 逐项检查 tasks.md
|
|
53
|
-
|
|
54
|
-
对每个 checkbox 报告状态:
|
|
55
|
-
- ✅ 已完成 / ❌ 未完成 / ⚠️ 部分完成
|
|
56
|
-
|
|
57
|
-
### 3. 对照 design.md
|
|
58
|
-
|
|
59
|
-
- 架构决策是否遵循?
|
|
60
|
-
- 文件变更清单是否一致?
|
|
61
|
-
- 数据模型是否符合?
|
|
62
|
-
- API 设计是否符合?
|
|
63
|
-
|
|
64
|
-
### 4. 运行完整测试套件(fresh run)
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
# 根据项目技术栈运行
|
|
68
|
-
pnpm test 2>/dev/null || npm test 2>/dev/null || pytest 2>/dev/null || go test ./... 2>/dev/null
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
记录通过/失败数量。如有失败,分析原因。
|
|
72
|
-
|
|
73
|
-
### 5. 代码质量扫描
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
# 搜索技术债务标记
|
|
77
|
-
grep -r "TODO\|FIXME\|HACK\|XXX" src/ lib/ app/ --include="*.ts" --include="*.tsx" --include="*.py" --include="*.js" 2>/dev/null | head -20
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 6. 输出验证报告
|
|
81
|
-
|
|
82
|
-
```markdown
|
|
83
|
-
# SillySpec 验证报告
|
|
84
|
-
|
|
85
|
-
## 任务完成度
|
|
86
|
-
- [x] Task 1: xxx ✅
|
|
87
|
-
- [x] Task 2: xxx ✅
|
|
88
|
-
- [ ] Task 3: xxx ❌ 未实现
|
|
89
|
-
完成度:2/3
|
|
90
|
-
|
|
91
|
-
## 设计一致性
|
|
92
|
-
- ✅ 架构决策遵循
|
|
93
|
-
- ⚠️ API 返回格式与 design.md 略有差异(缺少 error 字段)
|
|
94
|
-
|
|
95
|
-
## 测试结果
|
|
96
|
-
- passed: 42, failed: 3
|
|
97
|
-
|
|
98
|
-
## 技术债务标记
|
|
99
|
-
- src/auth/login.ts:15 // TODO: add rate limiting
|
|
100
|
-
- src/auth/login.ts:45 // FIXME: token expiry
|
|
101
|
-
|
|
102
|
-
## 结论
|
|
103
|
-
⚠️ PASS WITH NOTES
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## 脚本校验(硬验证)
|
|
107
|
-
|
|
108
|
-
在输出验证报告之前,运行综合校验脚本:
|
|
109
|
-
|
|
110
|
-
```bash
|
|
111
|
-
bash scripts/validate-all.sh
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
将脚本输出纳入验证报告中的"设计一致性"部分。
|
|
115
|
-
|
|
116
|
-
### 7. 最后说:
|
|
117
|
-
|
|
118
|
-
**用 CLI 验证并获取下一步:**
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
sillyspec status --json
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
展示结果给用户,然后:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
sillyspec next
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
将 CLI 返回的命令推荐给用户。**不要自己编建议。**
|
|
131
|
-
|
|
132
|
-
### 8. 更新 progress.json
|
|
133
|
-
|
|
134
|
-
verify 完成后,**必须自动更新进度**:
|
|
135
|
-
```bash
|
|
136
|
-
sillyspec progress complete-stage verify
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
- 当前阶段改为 `verify ✅` 或 `verify ⚠️`
|
|
140
|
-
- 下一步改为 `/sillyspec:archive`(PASS 时)或 `修复后重新 /sillyspec:verify`
|
|
141
|
-
- 如果是子阶段,更新阶段进度;如果全部阶段完成,下一步改为 `/sillyspec:archive`
|
|
142
|
-
- 历史记录追加时间 + 验证结果
|
|
143
|
-
|
|
144
|
-
## 绝对规则
|
|
145
|
-
- 不修改任何代码
|
|
146
|
-
- 只做检查和报告
|
|
12
|
+
## 用户指令
|
|
13
|
+
$ARGUMENTS
|
package/package.json
CHANGED
package/src/progress.js
CHANGED
|
@@ -17,7 +17,7 @@ const PROGRESS_FILE = 'progress.json';
|
|
|
17
17
|
const BACKUP_FILE = 'progress.json.bak';
|
|
18
18
|
|
|
19
19
|
const CURRENT_VERSION = 2;
|
|
20
|
-
const VALID_STAGES = ['brainstorm', 'propose', 'plan', 'execute', 'verify'];
|
|
20
|
+
const VALID_STAGES = ['brainstorm', 'propose', 'plan', 'execute', 'verify', 'scan', 'quick', 'archive', 'status'];
|
|
21
21
|
const VALID_STATUSES = ['pending', 'in-progress', 'completed', 'failed', 'blocked'];
|
|
22
22
|
|
|
23
23
|
const STAGE_LABELS = {
|
|
@@ -26,6 +26,10 @@ const STAGE_LABELS = {
|
|
|
26
26
|
plan: '📐 实现计划',
|
|
27
27
|
execute: '⚡ 波次执行',
|
|
28
28
|
verify: '🔍 验证确认',
|
|
29
|
+
scan: '🔍 代码扫描',
|
|
30
|
+
quick: '⚡ 快速任务',
|
|
31
|
+
archive: '📦 归档变更',
|
|
32
|
+
status: '📊 状态查看',
|
|
29
33
|
};
|
|
30
34
|
|
|
31
35
|
function emptyStage() {
|
package/src/run.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { basename, join } from 'path'
|
|
7
7
|
import { existsSync, readdirSync, mkdirSync, writeFileSync } from 'fs'
|
|
8
8
|
import { ProgressManager } from './progress.js'
|
|
9
|
-
import { stageRegistry, getNextStage } from './stages/index.js'
|
|
9
|
+
import { stageRegistry, getNextStage, auxiliaryStages } from './stages/index.js'
|
|
10
10
|
import { buildExecuteSteps } from './stages/execute.js'
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -76,6 +76,11 @@ function outputStep(stageName, stepIndex, steps, cwd) {
|
|
|
76
76
|
console.log(`---\n`)
|
|
77
77
|
console.log(`## Step ${stepIndex + 1}/${total}: ${step.name}\n`)
|
|
78
78
|
console.log(step.prompt)
|
|
79
|
+
console.log(`\n### ⚠️ 铁律`)
|
|
80
|
+
console.log('- 只做本步骤描述的操作,不得自行扩展或跳过')
|
|
81
|
+
console.log('- 不要回头修改已完成的步骤')
|
|
82
|
+
console.log('- 完成后立即执行 --done 命令,不得跳过')
|
|
83
|
+
console.log('- 生成的文件头部必须包含 author(git 用户名)和 created_at(精确到秒)')
|
|
79
84
|
console.log(`\n### 完成后执行`)
|
|
80
85
|
console.log(`sillyspec run ${stageName} --done --output "你的摘要"`)
|
|
81
86
|
}
|
|
@@ -106,12 +111,18 @@ export function runCommand(args, cwd) {
|
|
|
106
111
|
outputText = flags[outputIdx + 1]
|
|
107
112
|
}
|
|
108
113
|
|
|
114
|
+
const isAuxiliary = auxiliaryStages.includes(stageName)
|
|
115
|
+
|
|
109
116
|
const pm = new ProgressManager()
|
|
110
117
|
let progress = pm.read(cwd)
|
|
111
118
|
|
|
112
119
|
if (!progress) {
|
|
113
|
-
|
|
114
|
-
|
|
120
|
+
// 辅助命令可以在没有 progress.json 时工作(比如 scan)
|
|
121
|
+
if (!isAuxiliary) {
|
|
122
|
+
console.error('❌ 未找到 progress.json,请先运行 sillyspec init')
|
|
123
|
+
process.exit(1)
|
|
124
|
+
}
|
|
125
|
+
progress = pm.init(cwd)
|
|
115
126
|
}
|
|
116
127
|
|
|
117
128
|
// --reset
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export const definition = {
|
|
2
|
+
name: 'archive',
|
|
3
|
+
title: '归档变更',
|
|
4
|
+
description: '规范沉淀,可追溯',
|
|
5
|
+
auxiliary: true,
|
|
6
|
+
steps: [
|
|
7
|
+
{
|
|
8
|
+
name: '任务完成度检查',
|
|
9
|
+
prompt: `检查 tasks.md 中所有 checkbox 是否已勾选。
|
|
10
|
+
|
|
11
|
+
### 操作
|
|
12
|
+
1. 读取 \`.sillyspec/changes/<change-name>/tasks.md\`
|
|
13
|
+
2. 检查所有 checkbox 是否已勾选
|
|
14
|
+
3. 如有遗漏 → 询问用户是否继续归档
|
|
15
|
+
|
|
16
|
+
### 输出
|
|
17
|
+
完成度报告`,
|
|
18
|
+
outputHint: '完成度报告',
|
|
19
|
+
optional: false
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: '确认归档',
|
|
23
|
+
prompt: `展示即将归档的内容,请用户确认。
|
|
24
|
+
|
|
25
|
+
### 操作
|
|
26
|
+
1. 展示:变更目录名、包含的文件列表、生成总结
|
|
27
|
+
2. 请用户确认是否执行归档
|
|
28
|
+
3. 确认后:将 \`.sillyspec/changes/<change-name>/\` 移动到 \`.sillyspec/changes/archive/YYYY-MM-DD-<change-name>/\`
|
|
29
|
+
4. 确保所有 checkbox 都已勾选
|
|
30
|
+
|
|
31
|
+
### 输出
|
|
32
|
+
归档确认`,
|
|
33
|
+
outputHint: '归档确认',
|
|
34
|
+
optional: false
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: '更新路线图和提交',
|
|
38
|
+
prompt: `更新路线图并 Git 提交。
|
|
39
|
+
|
|
40
|
+
### 操作
|
|
41
|
+
1. 如果 \`.sillyspec/ROADMAP.md\` 存在,标记对应 Phase 为已完成
|
|
42
|
+
2. \`git add .sillyspec/ && git commit -m "docs: archive sillyspec change <change-name>"\`
|
|
43
|
+
3. 更新 progress.json:
|
|
44
|
+
- 清除当前变更信息(归档后不再活跃)
|
|
45
|
+
- 如果是主变更(有 MASTER.md),标记所有阶段为 ✅,然后清除
|
|
46
|
+
- 历史记录追加时间 + 归档完成
|
|
47
|
+
|
|
48
|
+
### 输出
|
|
49
|
+
归档完成确认 + 累积规范统计`,
|
|
50
|
+
outputHint: '归档完成',
|
|
51
|
+
optional: false
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
package/src/stages/index.js
CHANGED
|
@@ -3,16 +3,24 @@ import { definition as propose } from './propose.js'
|
|
|
3
3
|
import { definition as plan } from './plan.js'
|
|
4
4
|
import { definition as execute } from './execute.js'
|
|
5
5
|
import { definition as verify } from './verify.js'
|
|
6
|
+
import { definition as scan } from './scan.js'
|
|
7
|
+
import { definition as quick } from './quick.js'
|
|
8
|
+
import { definition as archive } from './archive.js'
|
|
9
|
+
import { definition as status } from './status.js'
|
|
6
10
|
|
|
7
11
|
export const stageRegistry = {
|
|
8
12
|
brainstorm,
|
|
9
13
|
propose,
|
|
10
14
|
plan,
|
|
11
15
|
execute,
|
|
12
|
-
verify
|
|
16
|
+
verify,
|
|
17
|
+
scan,
|
|
18
|
+
quick,
|
|
19
|
+
archive,
|
|
20
|
+
status
|
|
13
21
|
}
|
|
14
22
|
|
|
15
|
-
//
|
|
23
|
+
// 流程阶段顺序,用于 getNextStage
|
|
16
24
|
const stageOrder = ['brainstorm', 'propose', 'plan', 'execute', 'verify']
|
|
17
25
|
|
|
18
26
|
export function getNextStage(currentStage) {
|
|
@@ -20,3 +28,6 @@ export function getNextStage(currentStage) {
|
|
|
20
28
|
if (index === -1 || index >= stageOrder.length - 1) return null
|
|
21
29
|
return stageOrder[index + 1]
|
|
22
30
|
}
|
|
31
|
+
|
|
32
|
+
// 辅助命令(不影响流程阶段推进)
|
|
33
|
+
export const auxiliaryStages = ['scan', 'quick', 'archive', 'status']
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export const definition = {
|
|
2
|
+
name: 'quick',
|
|
3
|
+
title: '快速任务',
|
|
4
|
+
description: '跳过完整流程,直接做',
|
|
5
|
+
auxiliary: true,
|
|
6
|
+
steps: [
|
|
7
|
+
{
|
|
8
|
+
name: '解析参数和上下文',
|
|
9
|
+
prompt: `解析任务参数,加载项目上下文。
|
|
10
|
+
|
|
11
|
+
### 操作
|
|
12
|
+
1. 检查是否携带 \`--change <变更名>\`,确定记录方式
|
|
13
|
+
2. 理解任务:模糊则问一个问题确认
|
|
14
|
+
3. 加载上下文:\`cat .sillyspec/codebase/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null\`
|
|
15
|
+
4. 加载扫描文档(如存在):\`cat docs/<project>/scan/{CONVENTIONS,ARCHITECTURE}.md 2>/dev/null\`
|
|
16
|
+
|
|
17
|
+
### 输出
|
|
18
|
+
任务理解 + 上下文摘要`,
|
|
19
|
+
outputHint: '任务理解',
|
|
20
|
+
optional: false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: '知识库和文档查询',
|
|
24
|
+
prompt: `查询知识库和外部文档。
|
|
25
|
+
|
|
26
|
+
### 操作
|
|
27
|
+
1. \`cat .sillyspec/knowledge/INDEX.md 2>/dev/null\` — 根据关键词匹配
|
|
28
|
+
2. 命中时 \`cat\` 对应知识文件
|
|
29
|
+
3. 如果涉及不熟悉的库/框架/API:通过 Context7 查询官方文档
|
|
30
|
+
4. 将查询结果纳入后续开发考量
|
|
31
|
+
|
|
32
|
+
### 输出
|
|
33
|
+
相关知识条目和文档查询结果`,
|
|
34
|
+
outputHint: '知识查询结果',
|
|
35
|
+
optional: true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'TDD 实现',
|
|
39
|
+
prompt: `按 TDD 流程实现任务。
|
|
40
|
+
|
|
41
|
+
### 操作
|
|
42
|
+
1. 先读后写:调用已有方法前 \`cat\` 源文件确认签名,\`grep\` 确认方法存在
|
|
43
|
+
2. 🔴 RED → 先写测试,运行确认失败
|
|
44
|
+
3. 🟢 GREEN → 写最少代码让测试通过
|
|
45
|
+
4. 🔵 REFACTOR → 清理,保持测试通过
|
|
46
|
+
5. ✅ STAGE → git add 暂存(测试文件必须包含)
|
|
47
|
+
|
|
48
|
+
### 纯配置/数据/文档可跳过 TDD,其他一律走 TDD。
|
|
49
|
+
|
|
50
|
+
### 输出
|
|
51
|
+
实现摘要 + 修改文件列表
|
|
52
|
+
|
|
53
|
+
### 铁律
|
|
54
|
+
- ❌ 不写测试(底线是仍然要写测试)
|
|
55
|
+
- ❌ 修改无关文件
|
|
56
|
+
- ❌ 跳过测试因为"任务太简单"`,
|
|
57
|
+
outputHint: '实现摘要',
|
|
58
|
+
optional: false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: '运行测试',
|
|
62
|
+
prompt: `运行测试确认通过。
|
|
63
|
+
|
|
64
|
+
### 操作
|
|
65
|
+
1. 检查 local.yaml 构建命令配置:\`cat .sillyspec/local.yaml 2>/dev/null\`
|
|
66
|
+
2. 有则使用 local.yaml 中的命令,否则使用默认命令
|
|
67
|
+
3. 默认命令:\`mvn test -pl <模块> -Dtest=<测试类>\` 或 \`./gradlew test --tests <测试类>\` 或 \`pnpm test\` 或 \`npm test\` 或 \`pytest <测试文件>\`
|
|
68
|
+
|
|
69
|
+
### 输出
|
|
70
|
+
测试通过/失败结果`,
|
|
71
|
+
outputHint: '测试结果',
|
|
72
|
+
optional: false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: '暂存和记录',
|
|
76
|
+
prompt: `Git 暂存并记录任务。
|
|
77
|
+
|
|
78
|
+
### 操作
|
|
79
|
+
1. \`git add -A\` — **不要 commit**,由用户通过统一提交
|
|
80
|
+
2. 记录:
|
|
81
|
+
- 有 \`--change\`:在 \`.sillyspec/changes/<变更名>/tasks.md\` 追加 task 并勾选,记录精确到秒的时间戳
|
|
82
|
+
- 无 \`--change\`:记录到 \`.sillyspec/quicklog/QUICKLOG-<git用户名>.md\`(按 git 用户名隔离)
|
|
83
|
+
3. QUICKLOG 轮转:超过 500 行则重命名为 \`QUICKLOG-<USER>-YYYY-MM-DD.md\`
|
|
84
|
+
4. 如果发现项目特有的坑,追加到 \`.sillyspec/knowledge/uncategorized.md\`
|
|
85
|
+
5. 任务比预期复杂 → 建议用完整流程
|
|
86
|
+
|
|
87
|
+
### 输出
|
|
88
|
+
暂存确认 + 记录路径`,
|
|
89
|
+
outputHint: '暂存和记录确认',
|
|
90
|
+
optional: false
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export const definition = {
|
|
2
|
+
name: 'scan',
|
|
3
|
+
title: '代码扫描',
|
|
4
|
+
description: '分析项目结构、约定和架构',
|
|
5
|
+
auxiliary: true,
|
|
6
|
+
steps: [
|
|
7
|
+
{
|
|
8
|
+
name: '检查工作区和已有文档',
|
|
9
|
+
prompt: `检查工作区模式和已有扫描文档。
|
|
10
|
+
|
|
11
|
+
### 操作
|
|
12
|
+
1. \`ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .\` — 判断是否工作区模式
|
|
13
|
+
2. \`ls docs/*/scan/ 2>/dev/null\` — 检查已有文档
|
|
14
|
+
3. \`wc -l docs/*/scan/*.md 2>/dev/null\` — 文档行数
|
|
15
|
+
4. 已有 3 份 → 建议升级深度扫描;已有 7 份 → 建议刷新或跳过
|
|
16
|
+
5. 工作区模式 → 询问扫描范围(逐个/选子项目/退出)
|
|
17
|
+
|
|
18
|
+
### 输出
|
|
19
|
+
工作区模式判断 + 已有文档状态 + 扫描建议`,
|
|
20
|
+
outputHint: '工作区和文档状态',
|
|
21
|
+
optional: false
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: '构建环境探测',
|
|
25
|
+
prompt: `探测项目的构建环境和依赖。
|
|
26
|
+
|
|
27
|
+
### 操作
|
|
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\`(临时文件,扫描完删除)
|
|
31
|
+
|
|
32
|
+
### 输出
|
|
33
|
+
环境探测结果摘要`,
|
|
34
|
+
outputHint: '环境探测摘要',
|
|
35
|
+
optional: false
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: '断点续扫检测',
|
|
39
|
+
prompt: `检测已有扫描文档,只生成缺失的。
|
|
40
|
+
|
|
41
|
+
### 操作
|
|
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. 只生成缺失的文档
|
|
46
|
+
|
|
47
|
+
### 输出
|
|
48
|
+
已有/缺失文档列表`,
|
|
49
|
+
outputHint: '断点续扫状态',
|
|
50
|
+
optional: false
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: '深度扫描 — 技术架构',
|
|
54
|
+
prompt: `扫描技术栈 + 数据库 Schema + 架构模式。参考 _env-detect.md。
|
|
55
|
+
|
|
56
|
+
### 操作
|
|
57
|
+
1. 用 grep/rg 搜索(\`@Entity\`、\`schema.prisma\`、\`models.py\` 等),**禁止读源码全文**
|
|
58
|
+
2. Schema 只记表名+说明+字段数
|
|
59
|
+
3. 写入 \`docs/<project>/scan/ARCHITECTURE.md\`
|
|
60
|
+
4. 包含 \`## 技术栈\` \`## 架构概览\` \`## 数据模型(摘要)\`
|
|
61
|
+
|
|
62
|
+
### 输出
|
|
63
|
+
ARCHITECTURE.md 路径
|
|
64
|
+
|
|
65
|
+
### 注意
|
|
66
|
+
- 路径用反引号,不编造`,
|
|
67
|
+
outputHint: 'ARCHITECTURE.md 路径',
|
|
68
|
+
optional: false
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: '深度扫描 — 代码约定',
|
|
72
|
+
prompt: `扫描框架隐形规则 + 实体继承 + 代码风格。参考 _env-detect.md。
|
|
73
|
+
|
|
74
|
+
### 操作
|
|
75
|
+
1. 用 grep 搜索拦截器/插件/逻辑删除/基类/审计字段,**禁止读源码全文**
|
|
76
|
+
2. 根据检测到的语言/框架自行决定搜索什么模式
|
|
77
|
+
3. 提取 3-5 个典型示例
|
|
78
|
+
4. 写入 \`docs/<project>/scan/CONVENTIONS.md\`
|
|
79
|
+
5. 包含 \`## 框架隐形规则\` \`## 实体继承规范\` \`## 代码风格\`
|
|
80
|
+
|
|
81
|
+
### 输出
|
|
82
|
+
CONVENTIONS.md 路径
|
|
83
|
+
|
|
84
|
+
### 注意
|
|
85
|
+
- 路径用反引号,不编造`,
|
|
86
|
+
outputHint: 'CONVENTIONS.md 路径',
|
|
87
|
+
optional: false
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: '深度扫描 — 目录结构和集成',
|
|
91
|
+
prompt: `扫描目录结构 + 外部集成。参考 _env-detect.md。
|
|
92
|
+
|
|
93
|
+
### 操作
|
|
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\`(按类型分组)
|
|
98
|
+
|
|
99
|
+
### 输出
|
|
100
|
+
STRUCTURE.md 和 INTEGRATIONS.md 路径
|
|
101
|
+
|
|
102
|
+
### 注意
|
|
103
|
+
- 路径用反引号,不编造`,
|
|
104
|
+
outputHint: 'STRUCTURE.md + INTEGRATIONS.md 路径',
|
|
105
|
+
optional: false
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: '深度扫描 — 测试和债务',
|
|
109
|
+
prompt: `扫描测试现状 + 技术债务 + 项目概览。参考 _env-detect.md。
|
|
110
|
+
|
|
111
|
+
### 操作
|
|
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\`(项目信息)
|
|
116
|
+
|
|
117
|
+
### 输出
|
|
118
|
+
TESTING.md、CONCERNS.md、PROJECT.md 路径`,
|
|
119
|
+
outputHint: '三份文档路径',
|
|
120
|
+
optional: false
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: '自检和提交',
|
|
124
|
+
prompt: `验证扫描完整性,清理并提交。
|
|
125
|
+
|
|
126
|
+
### 操作
|
|
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 . && git commit -m "chore: sillyspec scan - codebase mapped"\`
|
|
131
|
+
|
|
132
|
+
### 输出
|
|
133
|
+
扫描完整性报告 + commit hash
|
|
134
|
+
|
|
135
|
+
### 注意
|
|
136
|
+
- ❌ 修改代码 / 编造路径 / 读源码全文`,
|
|
137
|
+
outputHint: '自检报告 + commit hash',
|
|
138
|
+
optional: false
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export const definition = {
|
|
2
|
+
name: 'status',
|
|
3
|
+
title: '状态查看',
|
|
4
|
+
description: '查看项目进度和状态',
|
|
5
|
+
auxiliary: true,
|
|
6
|
+
steps: [
|
|
7
|
+
{
|
|
8
|
+
name: '检查工作区模式',
|
|
9
|
+
prompt: `判断是否为工作区模式。
|
|
10
|
+
|
|
11
|
+
### 操作
|
|
12
|
+
1. \`ls .sillyspec/projects/*.yaml 2>/dev/null | grep -q .\`
|
|
13
|
+
2. 是 → 工作区模式,对每个子项目执行状态检查
|
|
14
|
+
3. 否 → 单项目模式,继续后续步骤
|
|
15
|
+
|
|
16
|
+
### 工作区模式输出格式:
|
|
17
|
+
\`\`\`
|
|
18
|
+
🏢 工作区状态
|
|
19
|
+
📦 子项目:
|
|
20
|
+
✅ frontend ./frontend
|
|
21
|
+
📋 项目:已初始化
|
|
22
|
+
📂 代码库:已扫描(7 份文档)
|
|
23
|
+
🔄 进行中:1 个变更
|
|
24
|
+
⚠️ backend ./backend
|
|
25
|
+
📂 代码库:未扫描
|
|
26
|
+
📄 共享规范:2 份
|
|
27
|
+
\`\`\`
|
|
28
|
+
|
|
29
|
+
### 输出
|
|
30
|
+
工作区/单项目判断`,
|
|
31
|
+
outputHint: '模式判断',
|
|
32
|
+
optional: false
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: '项目基础信息',
|
|
36
|
+
prompt: `收集项目基础信息。
|
|
37
|
+
|
|
38
|
+
### 操作
|
|
39
|
+
1. \`cat .sillyspec/PROJECT.md 2>/dev/null || echo "未初始化"\`
|
|
40
|
+
2. 获取 project 名
|
|
41
|
+
3. \`ls docs/<project>/scan/ 2>/dev/null | head -10\`
|
|
42
|
+
4. \`cat .sillyspec/REQUIREMENTS.md 2>/dev/null | head -20\`
|
|
43
|
+
5. \`cat .sillyspec/ROADMAP.md 2>/dev/null\`
|
|
44
|
+
|
|
45
|
+
### 输出
|
|
46
|
+
项目基础信息摘要`,
|
|
47
|
+
outputHint: '项目基础信息',
|
|
48
|
+
optional: false
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: '变更状态',
|
|
52
|
+
prompt: `检查进行中的变更和归档历史。
|
|
53
|
+
|
|
54
|
+
### 操作
|
|
55
|
+
1. \`ls .sillyspec/changes/ 2>/dev/null | grep -v archive\`
|
|
56
|
+
2. 对每个进行中的变更:检查 proposal.md ✅/❌、design.md ✅/❌、requirements.md ✅/❌、tasks.md — X/Y 完成
|
|
57
|
+
3. \`ls .sillyspec/changes/archive/ 2>/dev/null | wc -l\`
|
|
58
|
+
4. \`cat .sillyspec/HANDOFF.json 2>/dev/null\`
|
|
59
|
+
|
|
60
|
+
### 输出
|
|
61
|
+
变更状态列表`,
|
|
62
|
+
outputHint: '变更状态',
|
|
63
|
+
optional: false
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: '输出状态报告',
|
|
67
|
+
prompt: `生成完整状态报告。
|
|
68
|
+
|
|
69
|
+
### 输出格式:
|
|
70
|
+
\`\`\`
|
|
71
|
+
📊 SillySpec 状态
|
|
72
|
+
|
|
73
|
+
📋 项目:xxx(已初始化 / 未初始化)
|
|
74
|
+
📂 代码库:已扫描(7 份文档)/ 未扫描
|
|
75
|
+
|
|
76
|
+
🔄 进行中:N 个变更
|
|
77
|
+
- [change-1] Phase 3 (Execute) — tasks 5/8
|
|
78
|
+
|
|
79
|
+
✅ 已归档:N 个变更
|
|
80
|
+
📝 设计文档:N 份
|
|
81
|
+
📝 实现计划:N 份
|
|
82
|
+
|
|
83
|
+
💡 下一步:/sillyspec:continue
|
|
84
|
+
\`\`\`
|
|
85
|
+
|
|
86
|
+
### 注意
|
|
87
|
+
- 不修改任何文件`,
|
|
88
|
+
outputHint: '状态报告',
|
|
89
|
+
optional: false
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
}
|