sillyspec 3.11.5 → 3.11.7
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 +17 -8
- 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 的记忆,是团队协作的基础,是后续维护的唯一依据。任何代码产出必须先有对应的设计/规范文档支撑。')
|
|
@@ -233,17 +241,18 @@ export async function runCommand(args, cwd) {
|
|
|
233
241
|
if (autoChange) {
|
|
234
242
|
progress = pm.initChange(cwd, autoChange)
|
|
235
243
|
} else if (!isAuxiliary) {
|
|
236
|
-
// brainstorm / propose
|
|
244
|
+
// brainstorm / propose 作为流程入口,自动生成变更名并初始化
|
|
237
245
|
if (stageName === 'brainstorm' || stageName === 'propose') {
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
console.
|
|
241
|
-
console.
|
|
246
|
+
const date = new Date().toISOString().slice(0, 10)
|
|
247
|
+
const autoName = `${date}-new-change`
|
|
248
|
+
console.log(`🔄 自动创建变更:${autoName}`)
|
|
249
|
+
console.log(` 提示:可以用 --change <名称> 指定自定义变更名`)
|
|
250
|
+
progress = pm.initChange(cwd, autoName)
|
|
251
|
+
changeName = autoName
|
|
252
|
+
} else {
|
|
253
|
+
console.error('❌ 未找到 progress.json,请先运行 sillyspec init 或指定 --change <变更名>')
|
|
242
254
|
process.exit(1)
|
|
243
255
|
}
|
|
244
|
-
console.error('❌ 未找到 progress.json,请先运行 sillyspec init')
|
|
245
|
-
console.error(' 提示:使用 --change <name> 指定变更名')
|
|
246
|
-
process.exit(1)
|
|
247
256
|
}
|
|
248
257
|
}
|
|
249
258
|
|
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
|
},
|