sillyspec 3.11.6 → 3.11.8
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/package.json +1 -1
- package/src/run.js +8 -0
- package/src/stages/brainstorm.js +12 -1
- package/src/stages/scan.js +32 -0
- package/src/stages/verify.js +36 -2
package/package.json
CHANGED
package/src/run.js
CHANGED
|
@@ -154,7 +154,15 @@ function outputStep(stageName, stepIndex, steps, cwd, changeName) {
|
|
|
154
154
|
console.log(personas[stageName])
|
|
155
155
|
console.log('')
|
|
156
156
|
}
|
|
157
|
+
// 注入全局护栏(如 _globalGuardrails)
|
|
158
|
+
const stageDef = stageRegistry[stageName]
|
|
159
|
+
const guardrails = stageDef && stageDef._globalGuardrails ? stageDef._globalGuardrails : ''
|
|
160
|
+
|
|
157
161
|
console.log(`## Step ${stepIndex + 1}/${total}: ${step.name}\n`)
|
|
162
|
+
if (guardrails) {
|
|
163
|
+
console.log(guardrails.trim())
|
|
164
|
+
console.log('')
|
|
165
|
+
}
|
|
158
166
|
console.log(step.prompt)
|
|
159
167
|
console.log(`\n### ⚠️ 铁律`)
|
|
160
168
|
console.log('- **文档是核心资产,代码是文档的产物。** 没有文档就没有代码——文档是 AI 的记忆,是团队协作的基础,是后续维护的唯一依据。任何代码产出必须先有对应的设计/规范文档支撑。')
|
package/src/stages/brainstorm.js
CHANGED
|
@@ -322,8 +322,19 @@ Then 期望结果
|
|
|
322
322
|
- 可测试:...
|
|
323
323
|
\`\`\`
|
|
324
324
|
|
|
325
|
+
### 后续变更包处理
|
|
326
|
+
如果 MASTER.md 中规划了后续变更包(拆分后的子阶段),**必须同时为每个后续包创建独立变更目录**:
|
|
327
|
+
1. 读取 MASTER.md 中的变更包列表(包名 + 边界描述)
|
|
328
|
+
2. 为每个后续包创建目录:\`mkdir -p .sillyspec/changes/<后续包名>\`
|
|
329
|
+
3. 每个目录生成骨架文件:
|
|
330
|
+
- \`proposal.md\`:从 MASTER.md 中提取该包的动机和边界
|
|
331
|
+
- \`design.md\`:从 MASTER.md 中提取该包的职责描述(标记为「待设计 - 本包 design 在该包进入 brainstorm 时完善」)
|
|
332
|
+
- \`requirements.md\`:从 MASTER.md 中提取该包的需求范围(标记为「待完善」)
|
|
333
|
+
- \`tasks.md\`:创建空任务列表,标记为「待 plan 阶段展开」
|
|
334
|
+
4. \`git add .sillyspec/\` — 暂存所有新增文件(不要 commit)
|
|
335
|
+
|
|
325
336
|
### 输出
|
|
326
|
-
|
|
337
|
+
所有规范文件路径(含后续变更包目录列表)
|
|
327
338
|
|
|
328
339
|
### 注意
|
|
329
340
|
- 必须等待用户明确确认
|
package/src/stages/scan.js
CHANGED
|
@@ -4,6 +4,38 @@ export const definition = {
|
|
|
4
4
|
description: '分析项目结构、约定和架构',
|
|
5
5
|
auxiliary: true,
|
|
6
6
|
steps: [
|
|
7
|
+
{
|
|
8
|
+
name: '探测项目结构并建议子项目',
|
|
9
|
+
prompt: `扫描项目顶层目录结构,自动发现可能的子项目,**需用户确认后才创建 projects 配置**。
|
|
10
|
+
|
|
11
|
+
### 操作
|
|
12
|
+
1. 列出项目顶层目录:\`ls -d */ 2>/dev/null | grep -v node_modules | grep -v '.git' | grep -v '.sillyspec'\`
|
|
13
|
+
2. 对每个顶层目录,快速判断是否为独立项目(检查 package.json / pom.xml / build.gradle / pyproject.toml / go.mod 等构建文件)
|
|
14
|
+
3. 对每个疑似独立项目,检测技术栈:\`cat <dir>/package.json 2>/dev/null | head -5\` 或类似
|
|
15
|
+
4. 对比 \`.sillyspec/projects/\` 已有配置,找出未注册的子项目
|
|
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
|
+
- **不要修改任何文件**,只做探测和报告
|
|
33
|
+
|
|
34
|
+
### 输出
|
|
35
|
+
子项目建议列表(含技术栈和注册状态)`,
|
|
36
|
+
outputHint: '子项目建议列表',
|
|
37
|
+
optional: false
|
|
38
|
+
},
|
|
7
39
|
{
|
|
8
40
|
name: '检查已有扫描文档和子项目列表',
|
|
9
41
|
prompt: `检查已有扫描文档和子项目列表。
|
package/src/stages/verify.js
CHANGED
|
@@ -2,6 +2,38 @@ export const definition = {
|
|
|
2
2
|
name: 'verify',
|
|
3
3
|
title: '验证确认',
|
|
4
4
|
description: '对照规范检查 + 测试套件',
|
|
5
|
+
|
|
6
|
+
// ⛔ 全局护栏:verify 阶段禁止一切破坏性操作
|
|
7
|
+
// 子代理只能「读」和「写报告」,不能「改代码」或「改 git 状态」。
|
|
8
|
+
_globalGuardrails: `
|
|
9
|
+
## ⛔ verify 阶段绝对禁止的操作
|
|
10
|
+
|
|
11
|
+
以下操作在 verify 阶段**绝对禁止**,无论出于任何原因(包括「恢复文件」「修复问题」「清理目录」):
|
|
12
|
+
|
|
13
|
+
### 禁止的 Git 操作
|
|
14
|
+
- git checkout(覆盖文件)
|
|
15
|
+
- git restore(覆盖文件)
|
|
16
|
+
- git reset(回滚提交)
|
|
17
|
+
- git revert(撤销提交)
|
|
18
|
+
- git clean(删除未跟踪文件)
|
|
19
|
+
- git stash drop(删除 stash)
|
|
20
|
+
- git branch -D(强制删除分支)
|
|
21
|
+
|
|
22
|
+
### 禁止的文件操作
|
|
23
|
+
- 删除任何源码文件(rm、trash)
|
|
24
|
+
- 覆盖任何源码文件(cp 覆盖、echo > 覆盖)
|
|
25
|
+
- 修改任何源码文件(除了 .sillyspec/ 下的报告文件)
|
|
26
|
+
|
|
27
|
+
### 只允许的操作
|
|
28
|
+
- git status / git diff / git show / git log / git stash list(只读)
|
|
29
|
+
- cat / head / grep / find / wc(只读检查)
|
|
30
|
+
- 写入 .sillyspec/changes/ 下的报告文件(verification.md)
|
|
31
|
+
- 运行测试命令(不修改源码)
|
|
32
|
+
- 运行 lint 命令(不自动修复)
|
|
33
|
+
|
|
34
|
+
如果发现文件缺失或异常,**只报告问题,不尝试修复**。
|
|
35
|
+
`,
|
|
36
|
+
|
|
5
37
|
steps: [
|
|
6
38
|
{
|
|
7
39
|
name: '状态检查',
|
|
@@ -56,8 +88,10 @@ export const definition = {
|
|
|
56
88
|
### 输出
|
|
57
89
|
任务完成度列表 + 完成率
|
|
58
90
|
|
|
59
|
-
###
|
|
60
|
-
-
|
|
91
|
+
### ⛔ 红线提醒
|
|
92
|
+
- **绝对禁止** git checkout/restore/reset 或删除/覆盖任何文件
|
|
93
|
+
- 发现文件缺失只报告,不尝试恢复
|
|
94
|
+
- verify 阶段的唯一职责是「检查 + 报告」,不是「修复」`,
|
|
61
95
|
outputHint: '任务完成度报告',
|
|
62
96
|
optional: false
|
|
63
97
|
},
|