create-specfuse 0.14.0 → 0.16.0
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/README.md +19 -13
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/scaffolder.d.ts.map +1 -1
- package/dist/scaffolder.js +9 -1
- package/dist/scaffolder.js.map +1 -1
- package/dist/templates/claude-md.d.ts.map +1 -1
- package/dist/templates/claude-md.js +5 -3
- package/dist/templates/claude-md.js.map +1 -1
- package/dist/templates/fuseqa-skill.js +2 -2
- package/dist/templates/specfuse-command.d.ts +1 -9
- package/dist/templates/specfuse-command.d.ts.map +1 -1
- package/dist/templates/specfuse-command.js +63 -28
- package/dist/templates/specfuse-command.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> 把 AI 编码从即兴发挥,改造成工程流水线。
|
|
4
4
|
|
|
5
|
-
SpecFuse 不发明新工具。它把 OpenSpec(流程引擎)和 Superpowers(行为约束)编排成一条 **Think → Do → FuseReview → Verify** 四拍流水线,一条命令注入任何项目——它不产生新能力,它约束产出可靠性。端到端 QA
|
|
5
|
+
SpecFuse 不发明新工具。它把 OpenSpec(流程引擎)和 Superpowers(行为约束)编排成一条 **Think → Do → FuseReview → Verify** 四拍流水线,一条命令注入任何项目——它不产生新能力,它约束产出可靠性。端到端 QA 默认是按需技能;`/specfuse:full` 会把它作为完整流水线的一步自动执行。
|
|
6
6
|
|
|
7
7
|
## 快速开始
|
|
8
8
|
|
|
@@ -31,12 +31,14 @@ my-app/
|
|
|
31
31
|
│ ├── settings.local.json # 权限白名单
|
|
32
32
|
│ ├── commands/
|
|
33
33
|
│ │ ├── opsx/ # OpenSpec 提供:/opsx:* 命令面
|
|
34
|
-
│ │
|
|
34
|
+
│ │ ├── specfuse.md # SpecFuse 提供:全自动四拍入口
|
|
35
|
+
│ │ └── specfuse/
|
|
36
|
+
│ │ └── full.md # SpecFuse 提供:全自动完整入口(含 FuseQA)
|
|
35
37
|
│ └── skills/
|
|
36
38
|
│ ├── design-md/ # 设计令牌生成技能(含 16 个原型模板)
|
|
37
39
|
│ ├── fusedoc/ # 文档标准技能(含 3 份参考文件)
|
|
38
40
|
│ ├── fusereview/ # 实施后代码评审技能
|
|
39
|
-
│ ├── fuseqa/ #
|
|
41
|
+
│ ├── fuseqa/ # 端到端验收技能(默认按需;/specfuse:full 自动执行)
|
|
40
42
|
│ └── openspec-*/ # OpenSpec 提供:随其 init 生成
|
|
41
43
|
└── openspec/
|
|
42
44
|
├── config.yaml # spec 规则(流程约束)
|
|
@@ -44,7 +46,7 @@ my-app/
|
|
|
44
46
|
└── changes/archive/ # 变更档案
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
项目目录会自动加入 Claude Code 信任列表。`commands/opsx/` 与 `openspec-*` 由 OpenSpec 自己的 `init` 产生,随其版本更新;`commands/specfuse.md` 与四个技能由 SpecFuse 写入,已存在则不覆盖;`CLAUDE.md` 按 FUSION 标记合并(见下文)。
|
|
49
|
+
项目目录会自动加入 Claude Code 信任列表。`commands/opsx/` 与 `openspec-*` 由 OpenSpec 自己的 `init` 产生,随其版本更新;`commands/specfuse.md`、`commands/specfuse/full.md` 与四个技能由 SpecFuse 写入,已存在则不覆盖;`CLAUDE.md` 按 FUSION 标记合并(见下文)。
|
|
48
50
|
|
|
49
51
|
## 四个阶段
|
|
50
52
|
|
|
@@ -57,17 +59,18 @@ FuseReview apply 收尾检查点 —— 冷读评审
|
|
|
57
59
|
Verify /opsx:verify → /opsx:archive —— 全量验收与归档
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
FuseQA
|
|
62
|
+
默认四拍不含 FuseQA:需要时显式调用 `/fuseqa`,或用 `/specfuse:full` 自动执行。
|
|
61
63
|
|
|
62
|
-
### 无人值守:`/specfuse`
|
|
64
|
+
### 无人值守:`/specfuse` 与 `/specfuse:full`
|
|
63
65
|
|
|
64
66
|
需求已经明确、不想逐拍确认时,用一条命令跑完整条流水线:
|
|
65
67
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
| 命令 | 流程 | FuseQA |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| `/specfuse <需求描述>` | Think → Do → FuseReview → Verify → archive | 不进入;需要时单独调用 `/fuseqa` |
|
|
71
|
+
| `/specfuse:full <需求描述>` | Think → Do → FuseReview → **FuseQA** → Verify → archive | 自动进入,记录 `auto: entered` |
|
|
69
72
|
|
|
70
|
-
|
|
73
|
+
两者都由模型按推荐答案自答并记录在最终报告中:模型切换默认不切换,FuseReview 自动进入,verify 全部通过后 archive,全程不 commit、不 push。verify 仍失败时不 archive,保留变更目录并把失败写进报告。`/specfuse:full` 把 FuseQA 放在 FuseReview 之后、Verify 之前,让它新写的用例进入随后的全量测试。默认的 `/opsx:*` 交互行为不受影响。
|
|
71
74
|
|
|
72
75
|
### Think
|
|
73
76
|
|
|
@@ -87,9 +90,9 @@ brainstorm、`/design-md` 问卷、模型切换与收尾检查点都由模型按
|
|
|
87
90
|
- Blocking 发现走 TDD 修复;修复后只复审修复 diff,不进行第二轮全量评审。
|
|
88
91
|
- 跳过评审必须记录在收尾报告中留痕。
|
|
89
92
|
|
|
90
|
-
### FuseQA
|
|
93
|
+
### FuseQA(默认按需;`/specfuse:full` 自动执行)
|
|
91
94
|
|
|
92
|
-
-
|
|
95
|
+
- 默认只有显式调用 `/fuseqa` 才执行;`/specfuse:full` 会在 FuseReview 之后、Verify 之前自动执行。没有检查点,不进入 apply 收尾,也不影响 verify。
|
|
93
96
|
- 适合能在本地完整部署和验证的小项目:CLI、小型服务、库、本地 Web 应用。
|
|
94
97
|
- 分布式系统在本地复现不了真实拓扑、网络分区与共享状态竞争,应在 CI/CD 中运行等价检查,而不是在开发阶段做本地 QA。
|
|
95
98
|
- 方法仍完整保留:从 specs 的 Scenario 派生用例、真实入口、构建产物而非 `src/`、归因分级、用例台账。
|
|
@@ -126,8 +129,9 @@ brainstorm、`/design-md` 问卷、模型切换与收尾检查点都由模型按
|
|
|
126
129
|
| `openspec/config.yaml` | 已存在 → 跳过 |
|
|
127
130
|
| `.claude/skills/*` | 已存在 → 不覆盖 |
|
|
128
131
|
| `.claude/commands/specfuse.md` | 已存在 → 不覆盖 |
|
|
132
|
+
| `.claude/commands/specfuse/full.md` | 已存在 → 不覆盖 |
|
|
129
133
|
|
|
130
|
-
技能与命令已存在时不会被覆盖。已有项目升级到四拍时,先删除 `.claude/skills/fuseqa/SKILL.md`、`.claude/skills/fusereview/SKILL.md` 和 `.claude/commands/specfuse.md`,再运行 scaffolder:`CLAUDE.md` 的 FUSION
|
|
134
|
+
技能与命令已存在时不会被覆盖。已有项目升级到四拍时,先删除 `.claude/skills/fuseqa/SKILL.md`、`.claude/skills/fusereview/SKILL.md` 和 `.claude/commands/specfuse.md`,再运行 scaffolder:`CLAUDE.md` 的 FUSION 块会被替换,这三个文件会按新模板重写;`specfuse/full.md` 不存在时会自动补写。其它用户自定义技能不受影响。
|
|
131
135
|
|
|
132
136
|
删除 `CLAUDE.md` 里的 FUSION 块,项目即回到无调度状态——整套编排零侵入、可逆。
|
|
133
137
|
|
|
@@ -158,6 +162,8 @@ Options:
|
|
|
158
162
|
|
|
159
163
|
交互模式只问两个问题:是否初始化 git(仅新目录)、是否初始化 OpenSpec。项目名由参数给出,不提问。
|
|
160
164
|
|
|
165
|
+
启动脚手架时先打印一行 `SpecFuse v<版本>`,便于确认当前运行版本;`--version` 仍只输出裸版本号,`--help` 不含该行。
|
|
166
|
+
|
|
161
167
|
**失败行为**:OpenSpec 装不上或初始化失败时,脚手架仍以退出码 0 结束,并打印一条指向手动命令的提示——报告失败不等于让脚手架失败。Superpowers 插件缺失时打印安装提示,不中断。
|
|
162
168
|
|
|
163
169
|
## 开发
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,9 @@ import { collectProjectConfig } from './prompts.js';
|
|
|
7
7
|
import { scaffold } from './scaffolder.js';
|
|
8
8
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
9
|
const pkg = JSON.parse(readFileSync(resolve(__dirname, '..', 'package.json'), 'utf-8'));
|
|
10
|
+
export function formatVersionBanner(version) {
|
|
11
|
+
return `SpecFuse v${version}`;
|
|
12
|
+
}
|
|
10
13
|
export const program = new Command();
|
|
11
14
|
program
|
|
12
15
|
.name('create-specfuse')
|
|
@@ -17,6 +20,7 @@ program
|
|
|
17
20
|
.option('-y, --yes', 'Non-interactive mode (use defaults, CI-friendly)')
|
|
18
21
|
.action(async (projectName, opts) => {
|
|
19
22
|
try {
|
|
23
|
+
console.log(formatVersionBanner(pkg.version));
|
|
20
24
|
const config = await collectProjectConfig(projectName, opts.yes);
|
|
21
25
|
await scaffold(config);
|
|
22
26
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAExF,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,kLAAkL,CAAC;KAC/L,WAAW,CACV,OAAO,EACP,iIAAiI,CAClI;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,QAAQ,CAAC,gBAAgB,EAAE,iEAAiE,CAAC;KAC7F,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,WAA+B,EAAE,IAAuB,EAAE,EAAE;IACzE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,YAAa,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,4EAA4E;AAC5E,kFAAkF;AAClF,iFAAiF;AACjF,8EAA8E;AAC9E,SAAS,YAAY;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,YAAY,EAAE,EAAE,CAAC;IACnB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAExF,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,aAAa,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,iBAAiB,CAAC;KACvB,WAAW,CAAC,kLAAkL,CAAC;KAC/L,WAAW,CACV,OAAO,EACP,iIAAiI,CAClI;KACA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,QAAQ,CAAC,gBAAgB,EAAE,iEAAiE,CAAC;KAC7F,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,WAA+B,EAAE,IAAuB,EAAE,EAAE;IACzE,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,YAAa,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,4EAA4E;AAC5E,kFAAkF;AAClF,iFAAiF;AACjF,8EAA8E;AAC9E,SAAS,YAAY;IACnB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,YAAY,EAAE,EAAE,CAAC;IACnB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
|
package/dist/scaffolder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffolder.d.ts","sourceRoot":"","sources":["../src/scaffolder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqKhD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"scaffolder.d.ts","sourceRoot":"","sources":["../src/scaffolder.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqKhD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0OnE"}
|
package/dist/scaffolder.js
CHANGED
|
@@ -11,7 +11,7 @@ import { composeDesignMdSkill } from './templates/design-md-skill.js';
|
|
|
11
11
|
import { composeFuseReviewSkill } from './templates/fusereview-skill.js';
|
|
12
12
|
import { composeFuseQASkill } from './templates/fuseqa-skill.js';
|
|
13
13
|
import { composeFuseDocSkill } from './templates/fusedoc-skill.js';
|
|
14
|
-
import { composeSpecfuseCommand } from './templates/specfuse-command.js';
|
|
14
|
+
import { composeSpecfuseCommand, composeSpecfuseFullCommand } from './templates/specfuse-command.js';
|
|
15
15
|
import { composeCLAUDEmd } from './templates/claude-md.js';
|
|
16
16
|
import { createDir, writeText, writeJSON, writeYAML } from './utils/fs.js';
|
|
17
17
|
import { gitInit, gitInitialCommit } from './utils/git.js';
|
|
@@ -223,6 +223,13 @@ export async function scaffold(config) {
|
|
|
223
223
|
await createDir(path.join(targetDir, '.claude', 'commands'));
|
|
224
224
|
await writeText(specfuseCommandPath, composeSpecfuseCommand());
|
|
225
225
|
}
|
|
226
|
+
// /specfuse:full command
|
|
227
|
+
spinner.text = 'Writing .claude/commands/specfuse/full.md...';
|
|
228
|
+
const specfuseFullCommandPath = path.join(targetDir, '.claude', 'commands', 'specfuse', 'full.md');
|
|
229
|
+
if (!(await fileExists(specfuseFullCommandPath))) {
|
|
230
|
+
await createDir(path.join(targetDir, '.claude', 'commands', 'specfuse'));
|
|
231
|
+
await writeText(specfuseFullCommandPath, composeSpecfuseFullCommand());
|
|
232
|
+
}
|
|
226
233
|
// Skill templates
|
|
227
234
|
spinner.text = 'Copying skill templates...';
|
|
228
235
|
await copyTemplateDir(path.join(import.meta.dirname, 'design-md', 'templates'), path.join(targetDir, '.claude', 'skills', 'design-md', 'templates'));
|
|
@@ -294,6 +301,7 @@ export async function scaffold(config) {
|
|
|
294
301
|
console.log(` .claude/settings.local.json ${chalk.dim(tag('Permissions'))}`);
|
|
295
302
|
console.log(` .claude/skills/fusedoc/ ${chalk.dim('Documentation standard')}`);
|
|
296
303
|
console.log(` .claude/commands/specfuse.md ${chalk.dim('Unattended pipeline')}`);
|
|
304
|
+
console.log(` .claude/commands/specfuse/full.md ${chalk.dim('Complete unattended pipeline')}`);
|
|
297
305
|
if (config.initOpenspec) {
|
|
298
306
|
console.log(` openspec/config.yaml ${chalk.dim('Spec-driven config')}`);
|
|
299
307
|
}
|
package/dist/scaffolder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../src/scaffolder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scaffolder.js","sourceRoot":"","sources":["../src/scaffolder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyFnD,wBAAgB,gBAAgB,IAAI,MAAM,CA0DzC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CA2B9C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAkB7C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAY9C;AAED,wBAAgB,cAAc,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAyFnD,wBAAgB,gBAAgB,IAAI,MAAM,CA0DzC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CA2B9C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAkB7C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAY9C;AAED,wBAAgB,cAAc,IAAI,MAAM,CA0BvC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAiBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAsC7D"}
|
|
@@ -170,7 +170,7 @@ FuseReview is the post-apply review: Think reviews direction, Do produces code,
|
|
|
170
170
|
export function renderFuseQAOnDemand() {
|
|
171
171
|
return `### On-Demand: FuseQA (E2E Verification)
|
|
172
172
|
|
|
173
|
-
FuseQA verifies the built artifact through real user entry points. It is **not part of the pipeline — not a pipeline beat — and has no checkpoint**:
|
|
173
|
+
FuseQA verifies the built artifact through real user entry points. It is **not part of the default \`/specfuse\` pipeline — not a pipeline beat — and has no checkpoint**: \`/specfuse\` never invokes it, and neither apply completion nor entry to Verify depends on a FuseQA decision. Run it explicitly with \`/fuseqa\` when local end-to-end verification is meaningful; \`/specfuse:full\` is the complete variant that enters it automatically after FuseReview and before Verify.
|
|
174
174
|
|
|
175
175
|
**Applicability.** Use it when the artifact can be deployed and exercised locally — a CLI, a small service, a library, a local web app. A distributed system cannot be meaningfully exercised on one machine; run equivalent checks in CI/CD rather than in the development phase.
|
|
176
176
|
|
|
@@ -209,12 +209,14 @@ export function renderAutoMode() {
|
|
|
209
209
|
- **Design tokens:** when the three-gate test triggers \`/design-md\`, answer the questionnaire with recommended values; never overwrite an existing \`DESIGN-TOKENS.md\`.
|
|
210
210
|
- **Model switch:** record \`continue with current model\`; do not switch and do not ask.
|
|
211
211
|
- **FuseReview:** record \`auto: entered\` and run the review.
|
|
212
|
-
- **FuseQA:** not part of the pipeline; do not invoke it. It remains available only through an explicit \`/fuseqa\` request.
|
|
212
|
+
- **FuseQA:** under \`/specfuse\`, not part of the pipeline; do not invoke it. It remains available only through an explicit \`/fuseqa\` request or the \`/specfuse:full\` variant.
|
|
213
213
|
- **Path B pace control:** generate all artifacts in one pass; do not stop between artifacts for review.
|
|
214
214
|
|
|
215
215
|
**Execution order.** Brainstorming decisions → proposal → specs → design → tasks → apply under \`test-driven-development\` and \`verification-before-completion\` → FuseReview → verify → archive. The command definition at \`.claude/commands/specfuse.md\` carries the full procedure.
|
|
216
216
|
|
|
217
|
-
**Exit sequence.**
|
|
217
|
+
**Exit sequence.** Under \`/specfuse\`, auto mode enters FuseReview. The apply completion report records the FuseReview decision only. FuseQA is not invoked and no FuseQA decision is recorded; it remains an explicit \`/fuseqa\` invocation outside this command.
|
|
218
|
+
|
|
219
|
+
**Full variant.** \`/specfuse:full\` runs the same policy but enters FuseQA after FuseReview and before Verify, recording \`auto: entered\` for both decisions. It keeps the no-commit/no-push and verify-gates-archive rules unchanged; \`/specfuse\` still leaves FuseQA on demand.
|
|
218
220
|
|
|
219
221
|
**Verify gates archive.** Archive only after \`/opsx:verify\`, the project's full test suite, and the project's linter pass. If any check still fails after best-effort repair, do not archive; keep the change directory and write each failure with its raw output into the final report.
|
|
220
222
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAEA,SAAS,sBAAsB;IAC7B,OAAO;;iCAEwB,CAAC;AAClC,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;;;;;;;;;;;;;oJAa2I,CAAC;AACrJ,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;+DAgBsD,CAAC;AAChE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;4EAwBmE,CAAC;AAC7E,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;qGAY4F,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAwDuC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;uHAyB8G,CAAC;AACxH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;6DAgBoD,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;wHAU+G,CAAC;AACzH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO
|
|
1
|
+
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../src/templates/claude-md.ts"],"names":[],"mappings":"AAEA,SAAS,sBAAsB;IAC7B,OAAO;;iCAEwB,CAAC;AAClC,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;;;;;;;;;;;;;oJAa2I,CAAC;AACrJ,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;+DAgBsD,CAAC;AAChE,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;4EAwBmE,CAAC;AAC7E,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;;;;;;;;;;;;qGAY4F,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAwDuC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;uHAyB8G,CAAC;AACxH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;6DAgBoD,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;wHAU+G,CAAC;AACzH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;kNAwByM,CAAC;AACnN,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;0MAQiM,CAAC;AAC3M,CAAC;AAED,SAAS,kBAAkB;IACzB,OAAO;;;;;;;2EAOkE,CAAC;AAC5E,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,IAAqB;IACnD,MAAM,QAAQ,GAAG;QACf,qBAAqB;QACrB,EAAE;QACF,sBAAsB,EAAE;QACxB,EAAE;QACF,uBAAuB,EAAE;QACzB,EAAE;QACF,KAAK;QACL,EAAE;QACF,uBAAuB;QACvB,0DAA0D;QAC1D,EAAE;QACF,4EAA4E;QAC5E,sDAAsD;QACtD,EAAE;QACF,qBAAqB,EAAE;QACvB,EAAE;QACF,cAAc,EAAE;QAChB,EAAE;QACF,WAAW,EAAE;QACb,EAAE;QACF,WAAW,EAAE;QACb,EAAE;QACF,iBAAiB,EAAE;QACnB,EAAE;QACF,gBAAgB,EAAE;QAClB,EAAE;QACF,qBAAqB,EAAE;QACvB,EAAE;QACF,iBAAiB,EAAE;QACnB,EAAE;QACF,oBAAoB,EAAE;QACtB,EAAE;QACF,kBAAkB,EAAE;QACpB,qBAAqB;KACtB,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACpC,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export function composeFuseQASkill(_ctx) {
|
|
2
2
|
return `---
|
|
3
3
|
name: fuseqa
|
|
4
|
-
description: Use only when the user explicitly asks for local end-to-end verification (FuseQA) — derives end-to-end cases for the current change from its specs and drives them through real user entry points against the built artifact. Not part of the default pipeline
|
|
4
|
+
description: Use only when the user explicitly asks for local end-to-end verification (FuseQA) — derives end-to-end cases for the current change from its specs and drives them through real user entry points against the built artifact. Not part of the default \`/specfuse\` pipeline and never invoked by it; \`/specfuse:full\` is the complete variant that enters it. Also handles "write e2e tests", "end-to-end tests", "QA acceptance", or adding test cases for a change.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# FuseQA — On-Demand E2E Verification
|
|
8
8
|
|
|
9
|
-
FuseQA verifies the artifact through real entry points. It is **not part of the default pipeline and has no checkpoint**:
|
|
9
|
+
FuseQA verifies the artifact through real entry points. It is **not part of the default \`/specfuse\` pipeline and has no checkpoint**: \`/specfuse\` never invokes it, and neither apply completion nor entry to Verify depends on it. Run it explicitly with \`/fuseqa\` when local end-to-end verification is meaningful; \`/specfuse:full\` is the complete variant that enters it after FuseReview and before Verify.
|
|
10
10
|
|
|
11
11
|
It authors E2E cases for the current change and handles what those cases expose. It **does not execute the existing regression suite** — that belongs to the Verify phase full test run. A new case failing on first run is the TDD RED step, not a diagnosis stage. An existing case turning red is a regression caught by the Verify gate.
|
|
12
12
|
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Renders the `/specfuse` slash command shipped into scaffolded projects.
|
|
3
|
-
*
|
|
4
|
-
* The command is prose, not a runtime: every ordering rule below is enforced
|
|
5
|
-
* only by the model reading it. Keep clauses exact — the tests assert the
|
|
6
|
-
* sentences that carry each requirement, because a looser paraphrase can drop
|
|
7
|
-
* a prohibition (for example, "archive after verify" without "only when every
|
|
8
|
-
* check passes") while every keyword still appears.
|
|
9
|
-
*/
|
|
10
1
|
export declare function composeSpecfuseCommand(): string;
|
|
2
|
+
export declare function composeSpecfuseFullCommand(): string;
|
|
11
3
|
//# sourceMappingURL=specfuse-command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specfuse-command.d.ts","sourceRoot":"","sources":["../../src/templates/specfuse-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"specfuse-command.d.ts","sourceRoot":"","sources":["../../src/templates/specfuse-command.ts"],"names":[],"mappings":"AA+HA,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD"}
|
|
@@ -1,23 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
function defaultExecution() {
|
|
2
|
+
return `### 4. FuseReview
|
|
3
|
+
|
|
4
|
+
Run the \`fusereview\` skill over the working-tree diff from the recorded baseline, including untracked files. Do not use \`baseline..HEAD\`: no commits are made. Fix Blocking findings test-first and re-review only the fix diff.
|
|
5
|
+
|
|
6
|
+
### 5. Verify
|
|
7
|
+
|
|
8
|
+
Run the verify phase with \`/opsx:verify <change>\`, then the project's full test suite and the project's linter. Paste the raw output for each. Structural validation alone does not check implementation against specs.
|
|
9
|
+
|
|
10
|
+
### 6. Archive
|
|
11
|
+
|
|
12
|
+
Archive only when every verify check passes: run \`openspec archive <change> --yes\`. If any check still fails after best-effort repair, do not archive; leave the change directory in place and write each failure with its raw output into the final report.`;
|
|
13
|
+
}
|
|
14
|
+
function fullExecution() {
|
|
15
|
+
return `### 4. FuseReview
|
|
16
|
+
|
|
17
|
+
Run the \`fusereview\` skill over the working-tree diff from the recorded baseline, including untracked files. Do not use \`baseline..HEAD\`: no commits are made. Fix Blocking findings test-first and re-review only the fix diff.
|
|
18
|
+
|
|
19
|
+
### 5. FuseQA
|
|
20
|
+
|
|
21
|
+
Run the \`fuseqa\` skill over the built artifact. Author E2E cases for this change's entry-point behavior and handle what they expose. It is a step, not a checkpoint: do not ask whether to enter it. Its new cases are included in the Verify full test run.
|
|
22
|
+
|
|
23
|
+
### 6. Verify
|
|
24
|
+
|
|
25
|
+
Run the verify phase with \`/opsx:verify <change>\`, then the project's full test suite and the project's linter. Paste the raw output for each. Structural validation alone does not check implementation against specs.
|
|
26
|
+
|
|
27
|
+
### 7. Archive
|
|
28
|
+
|
|
29
|
+
Archive only when every verify check passes: run \`openspec archive <change> --yes\`. If any check still fails after best-effort repair, do not archive; leave the change directory in place and write each failure with its raw output into the final report.`;
|
|
30
|
+
}
|
|
31
|
+
function renderSpecfuseCommand(mode) {
|
|
32
|
+
const full = mode === 'full';
|
|
33
|
+
const slug = full ? '/specfuse:full' : '/specfuse';
|
|
34
|
+
const description = full
|
|
35
|
+
? 'Run the complete SpecFuse pipeline unattended, including FuseQA, from brainstorming through archive'
|
|
36
|
+
: 'Run the SpecFuse pipeline unattended, from brainstorming through archive';
|
|
37
|
+
const title = full
|
|
38
|
+
? '/specfuse:full — complete unattended pipeline'
|
|
39
|
+
: '/specfuse — unattended pipeline';
|
|
40
|
+
const fuseqaDecision = full
|
|
41
|
+
? '- **FuseQA:** record `auto: entered` and run the `fuseqa` skill after FuseReview, before Verify. It is a step, not a checkpoint.'
|
|
42
|
+
: '- **FuseQA:** not part of the pipeline; do not invoke it. It remains available only through an explicit `/fuseqa` request.';
|
|
43
|
+
const worktreePhases = full
|
|
44
|
+
? 'artifacts, apply, FuseReview, FuseQA, verify, and archive'
|
|
45
|
+
: 'artifacts, apply, FuseReview, verify, and archive';
|
|
46
|
+
const report = full
|
|
47
|
+
? 'State the change name and location, the artifacts written, the task count, verification output, the FuseReview decision (`auto: entered`), the FuseQA decision (`auto: entered`), the archive outcome, any worktree path, every automatic decision with its rationale, and that no commit and no push were performed.'
|
|
48
|
+
: 'State the change name and location, the artifacts written, the task count, verification output, the FuseReview decision (`auto: entered`), the archive outcome, any worktree path, every automatic decision with its rationale, and that no commit and no push were performed. FuseQA is not part of the pipeline, so no FuseQA decision is recorded.';
|
|
49
|
+
const execution = full ? fullExecution() : defaultExecution();
|
|
11
50
|
return `---
|
|
12
|
-
description:
|
|
51
|
+
description: ${description}
|
|
13
52
|
argument-hint: <requirement description>
|
|
14
53
|
---
|
|
15
54
|
|
|
16
|
-
#
|
|
55
|
+
# ${title}
|
|
17
56
|
|
|
18
|
-
Run the full SpecFuse pipeline for: $ARGUMENTS
|
|
57
|
+
Run the ${full ? 'complete ' : 'full '}SpecFuse pipeline for: $ARGUMENTS
|
|
19
58
|
|
|
20
|
-
If \`$ARGUMENTS\` is empty, print usage as
|
|
59
|
+
If \`$ARGUMENTS\` is empty, print usage as \`${slug} <requirement description>\` and stop. Do not create a change or generate an artifact. Do not ask a question.
|
|
21
60
|
|
|
22
61
|
## Automatic decisions
|
|
23
62
|
|
|
@@ -27,7 +66,7 @@ Do not call AskUserQuestion at any decision point. Answer each with the recommen
|
|
|
27
66
|
- **Design tokens:** when the three-gate test triggers \`/design-md\`, answer the questionnaire with recommended values and generate \`DESIGN-TOKENS.md\`; never overwrite an existing \`DESIGN-TOKENS.md\`.
|
|
28
67
|
- **Model switch:** record \`continue with current model\`; do not switch and do not ask.
|
|
29
68
|
- **FuseReview:** record \`auto: entered\` and run the review.
|
|
30
|
-
|
|
69
|
+
${fuseqaDecision}
|
|
31
70
|
- **Pace control:** do not stop between artifacts for review.
|
|
32
71
|
|
|
33
72
|
## Execution order
|
|
@@ -48,21 +87,11 @@ Read \`openspec instructions <artifact-id> --change <name>\` for each artifact a
|
|
|
48
87
|
|
|
49
88
|
Activate \`test-driven-development\` and \`verification-before-completion\`. For every task, write the failing test first, make it pass, then refactor. Before checking a task off, run the project's test command and paste the raw output as evidence. Do not dispatch implementation subagents: their worktrees would require a merge, which auto mode forbids.
|
|
50
89
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
Run the \`fusereview\` skill over the working-tree diff from the recorded baseline, including untracked files. Do not use \`baseline..HEAD\`: no commits are made. Fix Blocking findings test-first and re-review only the fix diff.
|
|
54
|
-
|
|
55
|
-
### 5. Verify
|
|
56
|
-
|
|
57
|
-
Run the verify phase with \`/opsx:verify <change>\`, then the project's full test suite and the project's linter. Paste the raw output for each. Structural validation alone does not check implementation against specs.
|
|
58
|
-
|
|
59
|
-
### 6. Archive
|
|
60
|
-
|
|
61
|
-
Archive only when every verify check passes: run \`openspec archive <change> --yes\`. If any check still fails after best-effort repair, do not archive; leave the change directory in place and write each failure with its raw output into the final report.
|
|
90
|
+
${execution}
|
|
62
91
|
|
|
63
92
|
## Worktree isolation
|
|
64
93
|
|
|
65
|
-
When a Git Worktree trigger condition is met, the worktree is selected in step 0 and the entire pipeline runs inside it:
|
|
94
|
+
When a Git Worktree trigger condition is met, the worktree is selected in step 0 and the entire pipeline runs inside it: ${worktreePhases}. Never merge the worktree back to the trunk; leave it in place for the user to inspect. If worktree creation fails, continue in the current working tree and record the fallback. Because auto mode does not commit, FuseReview reads the working-tree diff from the baseline, including untracked files.
|
|
66
95
|
|
|
67
96
|
## Prohibitions
|
|
68
97
|
|
|
@@ -73,7 +102,13 @@ When a Git Worktree trigger condition is met, the worktree is selected in step 0
|
|
|
73
102
|
|
|
74
103
|
## Final report
|
|
75
104
|
|
|
76
|
-
|
|
105
|
+
${report}
|
|
77
106
|
`;
|
|
78
107
|
}
|
|
108
|
+
export function composeSpecfuseCommand() {
|
|
109
|
+
return renderSpecfuseCommand('default');
|
|
110
|
+
}
|
|
111
|
+
export function composeSpecfuseFullCommand() {
|
|
112
|
+
return renderSpecfuseCommand('full');
|
|
113
|
+
}
|
|
79
114
|
//# sourceMappingURL=specfuse-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specfuse-command.js","sourceRoot":"","sources":["../../src/templates/specfuse-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"specfuse-command.js","sourceRoot":"","sources":["../../src/templates/specfuse-command.ts"],"names":[],"mappings":"AAgBA,SAAS,gBAAgB;IACvB,OAAO;;;;;;;;;;+PAUsP,CAAC;AAChQ,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;;;;;;;;;;;;;;+PAcsP,CAAC;AAChQ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAkB;IAC/C,MAAM,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI;QACtB,CAAC,CAAC,qGAAqG;QACvG,CAAC,CAAC,0EAA0E,CAAC;IAC/E,MAAM,KAAK,GAAG,IAAI;QAChB,CAAC,CAAC,+CAA+C;QACjD,CAAC,CAAC,iCAAiC,CAAC;IACtC,MAAM,cAAc,GAAG,IAAI;QACzB,CAAC,CAAC,kIAAkI;QACpI,CAAC,CAAC,4HAA4H,CAAC;IACjI,MAAM,cAAc,GAAG,IAAI;QACzB,CAAC,CAAC,2DAA2D;QAC7D,CAAC,CAAC,mDAAmD,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI;QACjB,CAAC,CAAC,uTAAuT;QACzT,CAAC,CAAC,uVAAuV,CAAC;IAC5V,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAE9D,OAAO;eACM,WAAW;;;;IAItB,KAAK;;UAEC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO;;+CAES,IAAI;;;;;;;;;;EAUjD,cAAc;;;;;;;;;;;;;;;;;;;;;EAqBd,SAAS;;;;2HAIgH,cAAc;;;;;;;;;;;EAWvI,MAAM;CACP,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC"}
|