specwf 0.2.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.
Files changed (55) hide show
  1. package/README.md +79 -0
  2. package/bin/specwf.js +2 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +1800 -0
  5. package/dist/templates/agents/archiver.md +112 -0
  6. package/dist/templates/agents/executor.md +125 -0
  7. package/dist/templates/agents/planner.md +114 -0
  8. package/dist/templates/agents/researcher.md +104 -0
  9. package/dist/templates/agents/reviewer.md +98 -0
  10. package/dist/templates/agents/verifier.md +129 -0
  11. package/dist/templates/artifacts/context.md +151 -0
  12. package/dist/templates/artifacts/design.md +224 -0
  13. package/dist/templates/artifacts/goal-review.md +95 -0
  14. package/dist/templates/artifacts/project.yml +117 -0
  15. package/dist/templates/artifacts/proposal.md +124 -0
  16. package/dist/templates/artifacts/quality-review.md +131 -0
  17. package/dist/templates/artifacts/research.md +127 -0
  18. package/dist/templates/artifacts/spec-review.md +84 -0
  19. package/dist/templates/artifacts/state.md +158 -0
  20. package/dist/templates/artifacts/summary.md +129 -0
  21. package/dist/templates/artifacts/tasks.md +109 -0
  22. package/dist/templates/artifacts/verification.md +113 -0
  23. package/dist/templates/commands/adhoc.md +38 -0
  24. package/dist/templates/commands/apply.md +20 -0
  25. package/dist/templates/commands/archive.md +21 -0
  26. package/dist/templates/commands/continue.md +27 -0
  27. package/dist/templates/commands/discuss.md +24 -0
  28. package/dist/templates/commands/grill.md +24 -0
  29. package/dist/templates/commands/init.md +20 -0
  30. package/dist/templates/commands/milestone.md +27 -0
  31. package/dist/templates/commands/plan.md +22 -0
  32. package/dist/templates/commands/research-phase.md +20 -0
  33. package/dist/templates/commands/research.md +24 -0
  34. package/dist/templates/commands/review.md +20 -0
  35. package/dist/templates/commands/roadmap.md +23 -0
  36. package/dist/templates/commands/ship.md +36 -0
  37. package/dist/templates/commands/split.md +16 -0
  38. package/dist/templates/commands/verify.md +22 -0
  39. package/dist/templates/skills/adhoc.md +53 -0
  40. package/dist/templates/skills/apply.md +134 -0
  41. package/dist/templates/skills/archive.md +109 -0
  42. package/dist/templates/skills/continue.md +97 -0
  43. package/dist/templates/skills/discuss.md +95 -0
  44. package/dist/templates/skills/grill.md +90 -0
  45. package/dist/templates/skills/init.md +116 -0
  46. package/dist/templates/skills/milestone.md +36 -0
  47. package/dist/templates/skills/plan.md +144 -0
  48. package/dist/templates/skills/research-phase.md +66 -0
  49. package/dist/templates/skills/research.md +76 -0
  50. package/dist/templates/skills/review.md +148 -0
  51. package/dist/templates/skills/roadmap.md +104 -0
  52. package/dist/templates/skills/ship.md +94 -0
  53. package/dist/templates/skills/split.md +96 -0
  54. package/dist/templates/skills/verify.md +147 -0
  55. package/package.json +56 -0
@@ -0,0 +1,94 @@
1
+ # 交付工作流指引
2
+
3
+ ## 概述
4
+
5
+ 将完成的 phase(或其变更集)交付。Ship 分为两级:(1) Ship Phase — 创建 PR + 更新 STATE.md;(2) Ship Milestone — 创建 release tag + 更新 PROJECT.md 版本。
6
+
7
+ Ship Phase 在每个 phase 的 change 循环全部完成后触发。Ship Milestone 在 milestone 的所有 phase 完成后触发。
8
+
9
+ ## 前置条件
10
+
11
+ - 当前 phase 内所有 change 的 verify 已通过(passed 状态)
12
+ - archive 已执行
13
+
14
+ ## 执行步骤
15
+
16
+ ### 1. 检查交付就绪
17
+
18
+ - [ ] 所有 change 的 VERIFICATION.md 状态为 passed
19
+ - [ ] 所有 change 已 archive(delta-specs 已合并、代码认知已提取)
20
+ - [ ] 没有未合并的 delta-spec 冲突
21
+ - [ ] 测试通过、构建通过
22
+
23
+ ### 2. Ship Phase
24
+
25
+ **创建 PR**:
26
+ \`\`\`
27
+ git checkout -b ship/ph-<phase-name>
28
+ git merge --squash <phase-branch>(或逐个 cherry-pick change)
29
+ git commit -m "feat(<phase>): <phase 标题>"
30
+ git push origin ship/ph-<phase-name>
31
+ \`\`\`
32
+
33
+ 创建 PR:
34
+ - 标题:\`feat(<phase>): <标题>\`
35
+ - 正文包含:
36
+ - 本 phase 的 scope 概述
37
+ - 包含的 change 列表
38
+ - 变更统计(文件数、行数)
39
+ - 测试覆盖状态
40
+ - CHECKLIST(所有 change 已 verify passed、已 archive)
41
+
42
+ PR 通过后合并到主分支。
43
+
44
+ **更新 STATE.md**:
45
+ \`\`\`markdown
46
+ # 状态
47
+
48
+ ## Phase: <name>
49
+ - 状态: ✅ shipped
50
+ - PR: #<PR 号>
51
+ - Ship 日期: <date>
52
+ \`\`\`
53
+
54
+ ### 3. Ship Milestone(可选,仅在 milestone 全部完成时)
55
+
56
+ 当 milestone 的最后 phase ship 后:
57
+
58
+ \`\`\`
59
+ git tag v<major>.<minor>.<patch>
60
+ git push origin v<major>.<minor>.<patch>
61
+ \`\`\`
62
+
63
+ 更新 PROJECT.md(或 README.md)的版本号和 changelog。
64
+
65
+ ### 4. 通知
66
+
67
+ (可选)在项目日志或 release notes 中记录交付内容。
68
+
69
+ ## 产物
70
+
71
+ - GitHub PR(ship phase)
72
+ - \`specwf/STATE.md\`(更新,标记 phase 为 shipped)
73
+ - (milestone)git tag + release notes
74
+
75
+ ## 验证
76
+
77
+ - [ ] PR 已创建且包含完整信息
78
+ - [ ] STATE.md 已更新
79
+ - [ ] CI 通过
80
+ - [ ] (milestone)tag 已创建和推送
81
+ - [ ] 主分支代码与 PR 一致
82
+
83
+ ## 常见陷阱
84
+
85
+ - 不要跳过 PR 直接合并到主分支 — PR 是审计轨迹的一部分
86
+ - squash merge 要注意 squash 后的 message 包含所有 change 信息
87
+ - 如果发现 CI 失败,不要强行合并 — 修复后重试
88
+ - STATE.md 更新使用 \`shipped\` 枚举值,不是自由文本
89
+ - Milestone ship 前确认所有 phase 都已 shipped
90
+
91
+ ## 参考
92
+
93
+ - Conventional Commits 规范(feat 类型)
94
+ - GSD Core 的 ship 流程
@@ -0,0 +1,96 @@
1
+ # Change 拆分工作流指引
2
+
3
+ ## 概述
4
+
5
+ 将 Phase 的工作拆分为多个可并行(或有序)执行的 Change。每个 Change 是独立可验证的工作单元,有明确的输入输出和被测试场景覆盖。
6
+
7
+ 拆分产出依赖图,支持三种并行策略:串行、依赖图并行、流水线并行。
8
+
9
+ ## 前置条件
10
+
11
+ - context.md 已完成
12
+ - phase 的 scope 和接口边界明确
13
+
14
+ ## 执行步骤
15
+
16
+ ### 1. 识别独立工作单元
17
+
18
+ 从 phase 的 scope 中识别可独立实现和验证的功能单位:
19
+ - 每个 change 对应一个完整的功能切面
20
+ - 不跨 change 共享未完成的代码(除非依赖图明确)
21
+ - 每个 change 有明确的可验证结果
22
+
23
+ ### 2. 建立依赖关系
24
+
25
+ 绘制 change 之间的依赖图:
26
+ \`\`\`
27
+ Change A ──→ Change B ──→ Change C
28
+
29
+ Change D ──→ Change E
30
+ \`\`\`
31
+
32
+ 依赖类型:
33
+ - **数据依赖**:B 依赖 A 的数据结构
34
+ - **接口依赖**:D 依赖 B 的接口
35
+ - **顺序依赖**:C 必须在 B 之后(但不需要 B 的产出物)
36
+
37
+ ### 3. 为每个 Change 准备 skeleton
38
+
39
+ 每个 change 的目录:
40
+ \`\`\`
41
+ changes/<change-name>/
42
+ ├── proposal.md # 当前 change 的需求范围
43
+ ├── specs/
44
+ │ └── <domain>/
45
+ │ └── spec.md # delta-specs(初始空,plan 阶段写)
46
+ ├── design.md # (plan 阶段产出)
47
+ ├── tasks.md # (plan 阶段产出)
48
+ ├── reviews/ # (review 阶段产出)
49
+ └── VERIFICATION.md # (verify 阶段产出)
50
+ \`\`\`
51
+
52
+ proposal.md 内容:
53
+ \`\`\`markdown
54
+ # Change: <名称>
55
+
56
+ ## 目标
57
+ ## 范围
58
+ ## 依赖(前置 change 列表)
59
+ ## 关键接口(输入/输出/副作用)
60
+ ## 测试场景清单
61
+ \`\`\`
62
+
63
+ ### 4. 确认并行策略
64
+
65
+ 根据 change 依赖图配置并行策略:
66
+
67
+ - **serial**: 所有 change 串行(依赖图全序)
68
+ - **dependency-graph**: 无依赖的 change 并行,有依赖的串行(默认推荐)
69
+ - **pipeline**: 按依赖深度分层,同层并行、异层流水线
70
+
71
+ ## 产物
72
+
73
+ - \`changes/<change-name>/proposal.md\` — 每个 change 的定义
74
+ - \`changes/<change-name>/specs/\` — 每个 change 的 delta-specs 目录(初始空)
75
+ - 依赖图(在 conversation 中记录,不生成独立文件)
76
+
77
+ ## 验证
78
+
79
+ - [ ] 每个 change 有明确的可验证结果
80
+ - [ ] 依赖图无循环
81
+ - [ ] 变更范围不重叠
82
+ - [ ] 所有 phase scope 被覆盖
83
+ - [ ] 依赖关系合理(无缺少的依赖)
84
+
85
+ ## 常见陷阱
86
+
87
+ - change 太大 → 超出 review 合理范围(建议单个 change ≤ 400 行 diff)
88
+ - change 太小 → 上下文切换成本高于并行收益
89
+ - 不要「偷渡」未计划的改动到一个 change 中
90
+ - 依赖图不要太深(3 层以上意味着拆分粒度需要调整)
91
+ - 如果不确定独立程度,宁拆大不拆小
92
+
93
+ ## 参考
94
+
95
+ - OpenSpec 的 change 结构设计
96
+ - GSD Core 的 dependency-graph 并行策略
@@ -0,0 +1,147 @@
1
+ # 测试验证工作流指引
2
+
3
+ ## 概述
4
+
5
+ 在 Review 通过后,对实现进行完整的测试验证。Verify 负责确保代码正确运行、所有场景覆盖,并处理回环路由 —— 根据缺陷类型路由到不同的修复阶段。
6
+
7
+ ## 前置条件
8
+
9
+ - review 阶段已通过(三重审查全部 PASS 或 gate 条件满足)
10
+ - 测试套件完整(包括 RED 阶段写的测试)
11
+
12
+ ## 执行步骤
13
+
14
+ ### 1. 运行完整测试套件
15
+
16
+ \`\`\`
17
+ # 运行所有测试
18
+ bun run test
19
+
20
+ # 运行类型检查
21
+ bun run typecheck
22
+
23
+ #(可选)运行集成测试
24
+ bun run test:integration
25
+ \`\`\`
26
+
27
+ ### 2. 测试覆盖率分析
28
+
29
+ 分析测试覆盖缺口:
30
+ - delta-specs 中每个 SHALL/MUST 是否有测试
31
+ - 正常路径覆盖
32
+ - 边界路径覆盖
33
+ - 异常路径覆盖
34
+
35
+ ### 3. 人工检查点验证
36
+
37
+ 逐项检查 tasks.md 中每个任务的完成标准:
38
+ \`\`\`
39
+ - [ ] 所有 type:behavior 验证通过
40
+ - [ ] 所有非 TDD 任务验证通过
41
+ - [ ] 无回归(已有测试通过)
42
+ - [ ] 代码未破坏依赖项
43
+ \`\`\`
44
+
45
+ ### 4. 诊断失败(如有)
46
+
47
+ 如果任何测试失败或验证不通过:
48
+
49
+ **根因诊断**:
50
+ 1. 确定失败是测试问题还是实现问题
51
+ 2. 明确缺陷的类型(见下方路由规则)
52
+ 3. 在 VERIFICATION.md 中记录根因
53
+
54
+ ### 5. 回环路由
55
+
56
+ 根据缺陷类型路由到不同阶段:
57
+
58
+ \`\`\`
59
+ # 路由规则
60
+
61
+ ## 计划缺陷 → 回 plan 重设计
62
+ 触发条件:
63
+ - delta-specs 中的场景在代码中无法实现(设计不合理)
64
+ - design.md 的方案有架构缺陷
65
+ - 依赖关系在 split 时未正确识别
66
+ - 拆分的 tasks 粒度不合理
67
+
68
+ 行为:
69
+ 1. 标记缺陷类型为 PLAN
70
+ 2. 记录问题和修改建议
71
+ 3. 输出 \`路由目标: plan\`
72
+ 4. 不修代码,回 plan 更新 design.md / tasks.md / delta-specs
73
+
74
+ ## 实现缺陷 → 回 apply 重实现
75
+ 触发条件:
76
+ - 测试失败(实现未满足 delta-spec)
77
+ - 代码逻辑错误
78
+ - 类型错误
79
+ - 性能不达标
80
+ - 缺少边界处理
81
+
82
+ 行为:
83
+ 1. 标记缺陷类型为 IMPLEMENTATION
84
+ 2. 记录根因和具体位置(文件+行号)
85
+ 3. 输出 \`路由目标: apply\`
86
+ 4. 回 apply 修复实现
87
+
88
+ ## 规格缺陷 → 标记 spec 待修(回 plan)
89
+ 触发条件:
90
+ - delta-specs 本身不合理或矛盾
91
+ - 现有 specs/ 被违反但 delta-specs 未覆盖
92
+ - 场景遗漏(关键路径缺少 spec 定义)
93
+ - spec 与需求矛盾
94
+
95
+ 行为:
96
+ 1. 标记缺陷类型为 SPEC
97
+ 2. 记录问题描述和修复建议
98
+ 3. 输出 \`路由目标: plan(spec 待修)\`
99
+ 4. 在 specs/ 中标记 \`[TODO: FIX SPEC]\`
100
+ 5. 回 plan 修正规格
101
+ \`\`\`
102
+
103
+ ### 6. 产出 VERIFICATION.md
104
+
105
+ \`\`\`markdown
106
+ # Change: <名称> — 验证报告
107
+
108
+ ## 测试结果
109
+ - 单元测试: 通过 / 失败(N/N)
110
+ - 类型检查: 通过 / 失败
111
+ - 集成测试: 通过 / 失败(可选)
112
+
113
+ ## 覆盖率
114
+ - 正常路径: N/N
115
+ - 边界路径: N/N
116
+ - 异常路径: N/N
117
+
118
+ ## 路由决策
119
+ - 状态: passed | replan | reapply
120
+ - 路由目标: (通过时不填)
121
+ - 缺陷类型: PLAN | IMPLEMENTATION | SPEC
122
+ - 根因: ...
123
+ \`\`\`
124
+
125
+ ## 产物
126
+
127
+ - \`changes/<change-name>/VERIFICATION.md\` — 验证报告
128
+
129
+ ## 验证
130
+
131
+ - [ ] 测试套件全部通过(passed 时)
132
+ - [ ] delta-specs SHALL/MUST 全覆盖
133
+ - [ ] tasks.md 完成标准全通过
134
+ - [ ] VERIFICATION.md 路由决策清晰
135
+
136
+ ## 常见陷阱
137
+
138
+ - 不要自己修发现的问题 — 路由是给主流程的信号,不是直接在 verify 中修改代码
139
+ - 不要混淆缺陷类型 —「这代码写错了」是 IMPLEMENTATION,「这规格就不对」是 SPEC
140
+ - 如果多个缺陷属于不同类型,按优先级最高的路由
141
+ - 不要只跑单元测试 — 集成测试才能暴露接口交互问题
142
+ - 路由前确认缺陷确实可重现,不是测试环境配置问题
143
+
144
+ ## 参考
145
+
146
+ - GSD Core 的 verify phase 回环机制
147
+ - OpenSpec 的 verification 模板
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "specwf",
3
+ "version": "0.2.0",
4
+ "description": "规格驱动开发工作流 — spec-driven development workflow for AI coding agents",
5
+ "type": "module",
6
+ "bin": {
7
+ "specwf": "bin/specwf.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsup",
11
+ "typecheck": "tsc --noEmit",
12
+ "test": "vitest run",
13
+ "test:watch": "vitest",
14
+ "prepublishOnly": "npm run typecheck && npm run test && npm run build"
15
+ },
16
+ "engines": {
17
+ "node": ">=20"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "bin",
22
+ "README.md"
23
+ ],
24
+ "dependencies": {
25
+ "@clack/prompts": "^1.6.0",
26
+ "commander": "^15.0.0",
27
+ "gray-matter": "^4.0.3",
28
+ "yaml": "^2.9.0",
29
+ "zod": "^4.4.0"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^22.0.0",
33
+ "tsup": "^8.5.0",
34
+ "typescript": "^5.7.0",
35
+ "vitest": "^4.0.0"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "license": "MIT",
41
+ "keywords": [
42
+ "spec-driven",
43
+ "workflow",
44
+ "ai-agent",
45
+ "cli",
46
+ "openspec",
47
+ "gsd"
48
+ ],
49
+ "repository": {
50
+ "type": "git",
51
+ "url": "git+https://github.com/hyperion2144/specwf.git"
52
+ },
53
+ "exports": {
54
+ ".": "./dist/cli.js"
55
+ }
56
+ }