@gordon.gan/specflow 1.8.0-beta → 1.8.1-beta

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 (179) hide show
  1. package/README.md +7 -5
  2. package/dist/cli/commands/document-run.d.ts +97 -0
  3. package/dist/cli/commands/document-run.js +845 -0
  4. package/dist/cli/index.js +2 -2
  5. package/dist/core/artifact-language.js +11 -1
  6. package/dist/core/document/chapters.d.ts +6 -0
  7. package/dist/core/document/chapters.js +36 -0
  8. package/dist/core/document/coverage.d.ts +25 -0
  9. package/dist/core/document/coverage.js +49 -0
  10. package/dist/core/document/digests.d.ts +40 -0
  11. package/dist/core/document/digests.js +144 -0
  12. package/dist/core/document/engine.d.ts +101 -0
  13. package/dist/core/document/engine.js +722 -0
  14. package/dist/core/document/extract.d.ts +61 -0
  15. package/dist/core/document/extract.js +437 -0
  16. package/dist/core/{approval → document}/forbidden-patterns.d.ts +4 -2
  17. package/dist/core/document/forbidden-patterns.js +36 -0
  18. package/dist/core/document/gates.d.ts +39 -0
  19. package/dist/core/document/gates.js +75 -0
  20. package/dist/core/document/input-digest.d.ts +63 -0
  21. package/dist/core/document/input-digest.js +200 -0
  22. package/dist/core/document/input-features.d.ts +43 -0
  23. package/dist/core/document/input-features.js +161 -0
  24. package/dist/core/document/lint.d.ts +39 -0
  25. package/dist/core/document/lint.js +147 -0
  26. package/dist/core/document/llm.d.ts +28 -0
  27. package/dist/core/document/llm.js +22 -0
  28. package/dist/core/document/map.d.ts +52 -0
  29. package/dist/core/document/map.js +296 -0
  30. package/dist/core/document/outline.d.ts +29 -0
  31. package/dist/core/document/outline.js +171 -0
  32. package/dist/core/document/paths.d.ts +23 -0
  33. package/dist/core/document/paths.js +36 -0
  34. package/dist/core/document/profile-validator.d.ts +23 -0
  35. package/dist/core/document/profile-validator.js +155 -0
  36. package/dist/core/document/profiles.d.ts +23 -0
  37. package/dist/core/document/profiles.js +74 -0
  38. package/dist/core/document/render.d.ts +45 -0
  39. package/dist/core/document/render.js +193 -0
  40. package/dist/core/document/review.d.ts +57 -0
  41. package/dist/core/document/review.js +202 -0
  42. package/dist/core/document/scene-detect.d.ts +32 -0
  43. package/dist/core/document/scene-detect.js +237 -0
  44. package/dist/core/document/schemas.d.ts +1103 -0
  45. package/dist/core/document/schemas.js +171 -0
  46. package/dist/integrations/shared/capability-evidence.js +4 -9
  47. package/dist/integrations/shared/command-catalog.js +2 -1
  48. package/dist/integrations/shared/parity-manifest.js +4 -9
  49. package/package.json +2 -1
  50. package/prompts/apply/phase-a-plan.md +1 -1
  51. package/prompts/document/map/acceptance.md +9 -0
  52. package/prompts/document/map/anti-ai.md +29 -0
  53. package/prompts/document/map/api-design.md +26 -0
  54. package/prompts/document/map/architecture.md +27 -0
  55. package/prompts/document/map/benchmark.md +26 -0
  56. package/prompts/document/map/closed-loop.md +9 -0
  57. package/prompts/document/map/compat-migration.md +31 -0
  58. package/prompts/document/map/component-design.md +30 -0
  59. package/prompts/document/map/config-runtime.md +9 -0
  60. package/prompts/document/map/core-flow.md +62 -0
  61. package/prompts/document/map/core-logic.md +9 -0
  62. package/prompts/document/map/data-model.md +18 -0
  63. package/prompts/document/map/deploy.md +26 -0
  64. package/prompts/document/map/fix.md +8 -0
  65. package/prompts/document/map/frontend-architecture.md +35 -0
  66. package/prompts/document/map/goal.md +8 -0
  67. package/prompts/document/map/impact.md +8 -0
  68. package/prompts/document/map/implementability.md +9 -0
  69. package/prompts/document/map/migration-guide.md +36 -0
  70. package/prompts/document/map/mvp-boundary.md +8 -0
  71. package/prompts/document/map/non-goals.md +8 -0
  72. package/prompts/document/map/ops.md +33 -0
  73. package/prompts/document/map/performance.md +32 -0
  74. package/prompts/document/map/poc-demo.md +25 -0
  75. package/prompts/document/map/regression.md +8 -0
  76. package/prompts/document/map/reproduce.md +8 -0
  77. package/prompts/document/map/requirement.md +8 -0
  78. package/prompts/document/map/research.md +25 -0
  79. package/prompts/document/map/root-cause.md +8 -0
  80. package/prompts/document/map/signoff.md +9 -0
  81. package/prompts/document/map/state-management.md +23 -0
  82. package/prompts/document/map/tech-selection.md +29 -0
  83. package/prompts/document/map/test-strategy.md +24 -0
  84. package/prompts/document/map/ui-design.md +21 -0
  85. package/prompts/document/outline/general.md +46 -0
  86. package/prompts/document/review/ai-review.md +57 -0
  87. package/prompts/document/shared/grounding.md +84 -0
  88. package/prompts/explore/explore-session.md +1 -1
  89. package/prompts/propose/design-draft.md +1 -1
  90. package/prompts/propose/proposal.md +1 -1
  91. package/prompts/propose/specs.md +1 -1
  92. package/prompts/propose/tasks-draft.md +1 -1
  93. package/prompts/refine/design-output.md +1 -1
  94. package/prompts/refine/update-artifacts.md +2 -0
  95. package/prompts/shared/artifact-language.md +13 -0
  96. package/skills/specflow-techdoc/SKILL.md +143 -0
  97. package/skills/specflow-techdoc-synth/SKILL.md +99 -0
  98. package/templates/document/chapters/acceptance.yaml +16 -0
  99. package/templates/document/chapters/api-design.yaml +29 -0
  100. package/templates/document/chapters/architecture.yaml +21 -0
  101. package/templates/document/chapters/benchmark.yaml +20 -0
  102. package/templates/document/chapters/closed-loop.yaml +22 -0
  103. package/templates/document/chapters/compat-migration.yaml +21 -0
  104. package/templates/document/chapters/component-design.yaml +22 -0
  105. package/templates/document/chapters/config-runtime.yaml +16 -0
  106. package/templates/document/chapters/core-flow.yaml +27 -0
  107. package/templates/document/chapters/core-logic.yaml +16 -0
  108. package/templates/document/chapters/data-model.yaml +25 -0
  109. package/templates/document/chapters/deploy.yaml +22 -0
  110. package/templates/document/chapters/fix.yaml +18 -0
  111. package/templates/document/chapters/frontend-architecture.yaml +22 -0
  112. package/templates/document/chapters/goal.yaml +17 -0
  113. package/templates/document/chapters/impact.yaml +16 -0
  114. package/templates/document/chapters/implementability.yaml +22 -0
  115. package/templates/document/chapters/migration-guide.yaml +21 -0
  116. package/templates/document/chapters/mvp-boundary.yaml +20 -0
  117. package/templates/document/chapters/non-goals.yaml +17 -0
  118. package/templates/document/chapters/ops.yaml +25 -0
  119. package/templates/document/chapters/performance.yaml +21 -0
  120. package/templates/document/chapters/poc-demo.yaml +22 -0
  121. package/templates/document/chapters/regression.yaml +16 -0
  122. package/templates/document/chapters/reproduce.yaml +16 -0
  123. package/templates/document/chapters/requirement.yaml +18 -0
  124. package/templates/document/chapters/research.yaml +22 -0
  125. package/templates/document/chapters/root-cause.yaml +18 -0
  126. package/templates/document/chapters/signoff.yaml +15 -0
  127. package/templates/document/chapters/state-management.yaml +22 -0
  128. package/templates/document/chapters/tech-selection.yaml +23 -0
  129. package/templates/document/chapters/test-strategy.yaml +23 -0
  130. package/templates/document/chapters/ui-design.yaml +28 -0
  131. package/templates/document/profiles/0to1.yaml +44 -0
  132. package/templates/document/profiles/approve.yaml +22 -0
  133. package/templates/document/profiles/bugfix.yaml +15 -0
  134. package/templates/document/profiles/feature.yaml +23 -0
  135. package/templates/document/profiles/frontend-0to1.yaml +47 -0
  136. package/templates/document/profiles/migration.yaml +42 -0
  137. package/templates/document/profiles/poc.yaml +46 -0
  138. package/dist/cli/commands/approval-assemble.d.ts +0 -64
  139. package/dist/cli/commands/approval-assemble.js +0 -408
  140. package/dist/core/approval/assemble.d.ts +0 -10
  141. package/dist/core/approval/assemble.js +0 -384
  142. package/dist/core/approval/bundle.d.ts +0 -9
  143. package/dist/core/approval/bundle.js +0 -172
  144. package/dist/core/approval/forbidden-patterns.js +0 -40
  145. package/dist/core/approval/index-schema.d.ts +0 -676
  146. package/dist/core/approval/index-schema.js +0 -193
  147. package/dist/core/approval/index.d.ts +0 -12
  148. package/dist/core/approval/index.js +0 -9
  149. package/dist/core/approval/lint.d.ts +0 -10
  150. package/dist/core/approval/lint.js +0 -302
  151. package/dist/core/approval/paths.d.ts +0 -13
  152. package/dist/core/approval/paths.js +0 -43
  153. package/dist/core/approval/pipeline.d.ts +0 -28
  154. package/dist/core/approval/pipeline.js +0 -146
  155. package/dist/core/approval/playbook-schema.d.ts +0 -182
  156. package/dist/core/approval/playbook-schema.js +0 -51
  157. package/dist/core/approval/render.d.ts +0 -20
  158. package/dist/core/approval/render.js +0 -210
  159. package/dist/core/approval/review-pack.d.ts +0 -26
  160. package/dist/core/approval/review-pack.js +0 -205
  161. package/dist/core/approval/types.d.ts +0 -223
  162. package/dist/core/approval/types.js +0 -1
  163. package/prompts/approval/acp-pipeline.md +0 -106
  164. package/prompts/approval/ai-review.md +0 -145
  165. package/prompts/approval/api-guidance.md +0 -179
  166. package/prompts/approval/database-guidance.md +0 -105
  167. package/prompts/approval/frontend-guidance.md +0 -249
  168. package/prompts/approval/generate.md +0 -1596
  169. package/prompts/approval/multi-repo-guidance.md +0 -263
  170. package/prompts/approval/multi-repo-spoke-subagent.md +0 -94
  171. package/prompts/approval/project-conventions-guidance.md +0 -171
  172. package/prompts/approval/runtime-guidance.md +0 -64
  173. package/prompts/approval/segmented-generation.md +0 -157
  174. package/skills/specflow-approval/SKILL.md +0 -778
  175. package/templates/approval-index.yaml +0 -93
  176. package/templates/approval-part.md +0 -15
  177. package/templates/approval-playbook-talos-scenario-job-compile.yaml +0 -29
  178. package/templates/approval-playbook.yaml +0 -28
  179. package/templates/approval.md +0 -261
package/README.md CHANGED
@@ -72,7 +72,7 @@ explore(可选)→ propose → refine → apply → review → test → veri
72
72
  │ ↓ │
73
73
  │ refine ≥2 轮精化:挑战假设 / 新方案 / 探边界 / 质疑 scope │
74
74
  │ ↓ │
75
- approval [可选] AI 7 维闭环检查 + 设计质量 + 可实施性 → approval.md 供审批
75
+ document [可选] 通用长文档引擎 方案文档(0→1 / bugfix / feature)
76
76
  │ ↓ │
77
77
  │ apply Phase A 重写 tasks.md → Phase B 逐任务 TDD 执行 │
78
78
  │ (可选 /specflow:apply --yes:少打断,成功后串行验收) │
@@ -126,7 +126,7 @@ npm install -g @gordon.gan/specflow
126
126
  npm install -g github:Gordon-Gan-Jiang/specflow
127
127
 
128
128
  # 验证
129
- specflow --version # 以 npm / package.json 为准(当前 1.7.0-beta
129
+ specflow --version # 以 npm / package.json 为准(当前 1.8.0-alpha
130
130
  specflow --help
131
131
  ```
132
132
 
@@ -259,14 +259,15 @@ specflow init
259
259
 
260
260
  ## IDE 工作流命令
261
261
 
262
- 共 **11 个**技能,命名因 IDE 而异:
262
+ 共 **12 个**技能,命名因 IDE 而异:
263
263
 
264
264
  | 阶段 | Claude Code | Cursor | Codex |
265
265
  |------|-------------|--------|-------|
266
266
  | 探索(可选) | `/specflow:explore` | `specflow:explore` | `$specflow-explore` |
267
267
  | 规划 | `/specflow:propose` | `specflow:propose` | `$specflow-propose` |
268
268
  | 精化 | `/specflow:refine` | `specflow:refine` | `$specflow-refine` |
269
- | 审批(可选) | `/specflow:approval` | `specflow:approval` | `$specflow-approval` |
269
+ | 方案文档(可选) | `/specflow:techdoc` | `specflow:techdoc` | `$specflow-techdoc` |
270
+ | 跨仓方案(可选) | `/specflow:techdoc-synth` | `specflow:techdoc-synth` | `$specflow-techdoc-synth` |
270
271
  | 构建 | `/specflow:apply` | `specflow:apply` | `$specflow-apply` |
271
272
  | 审查 | `/specflow:review` | `specflow:review` | `$specflow-review` |
272
273
  | 测试 | `/specflow:test` | `specflow:test` | `$specflow-test` |
@@ -282,7 +283,8 @@ specflow init
282
283
  | **explore** | 读代码、比方案、定边界;产出 `explore.md`,confirmed 后 handoff 到 propose |
283
284
  | **propose** | 一次产出 proposal、delta specs、design、tasks(第一轮深度思考,非占位骨架);叙述语言跟 `artifacts.language` |
284
285
  | **refine** | 内部多轮循环(≥2 轮,AI 判断收敛);可更新任意 artifact |
285
- | **approval** | refine 后可选:AI 7 维闭环 + 设计质量 + 可实施性 `approval.md`;非轻量变更走 **ACP**:分片 `approval/parts/` Stage 12e AI Review**`specflow approval finalize`**。**多仓 mode A**:主仓 `/specflow:approval` 一次发起,Subagent 并行跑子仓 approval,主仓等待后 **`finalize --bundle`** 产出 `approval-unified.md`(各仓 `approval.md` 为 apply 真源) |
286
+ | **techdoc** | 可选:`specflow techdoc run <0to1|frontend-0to1|bugfix|feature|poc|migration>` 用**通用长文档引擎**生成方案文档——**场景轴 × 技术栈轴正交**:场景管「做什么」(0→1 / 加功能 / bug / 预研选型 / 技术升级),输入特征(hasBackend / uiInScope / containsApiChange / hasPersistence)自动决定章节伸缩(纯逻辑功能 ~3 章,全栈功能 ~10 章)。两遍扫描(Pass 1 大纲冻结 Pass 2 逐章按要点填空)+ 分层真源(契约实体 zod + 受控叙述)+ 四层上下文注入(大纲要点 + 依赖摘要 + 契约注入 + 本片片段,保证注意力不稀释 / token 不易打满)+ 覆盖双通道校验 + AI Review。审批文档走独立入口 `techdoc approve`(四件套 → 审批模式,非业务场景)。详见 `docs/GENERIC_LONGDOC_ENGINE_DESIGN.md` |
287
+ | **techdoc-synth** | 可选:`specflow techdoc synthesize --workspace-root <root>` 把多仓四件套合成**一份跨仓文档**(统一大纲 + 契约实体命名空间 `<repo>_<id>` + 每章按仓分节 + 全局结论);省略 `--profile` 时自动识别场景(`--text` 优先,其次四件套内容;不确定且有 `--text` 时确认,无 `--text` 时回退 approve)。带确定性质量门禁(validate 强制每必选章含所有仓 `### <repo>` 小节)。区别于 `techdoc approve --bundle` 的物理拼接;原有多仓多产物不受影响 |
286
288
  | **apply** | Phase A 重写 tasks.md;Phase B 按语言路由 ECC 审查 + TDD 逐任务执行;可选 `--yes` |
287
289
  | **review** | 代码审查,对照 specs 检查回归 |
288
290
  | **test** | 单元 + 集成 + E2E + 回归测试 |
@@ -0,0 +1,97 @@
1
+ /**
2
+ * CLI: specflow techdoc {plan|validate|run} — Generic LongDoc Engine, IDE-model driven.
3
+ *
4
+ * The engine does NOT call a third-party LLM API. In Cursor/Codex the Agent runs on the IDE's
5
+ * model, so:
6
+ * - `document plan <profile>` emits a step list the Agent executes with the IDE model.
7
+ * - `document validate --work-root <path>` deterministically validates + renders Agent-written
8
+ * artifacts (outline.yaml / chapters/*.md / entities.json) — no LLM call.
9
+ * - `document run <profile>` guides: plan → Agent executes → validate (requires injected LLM only
10
+ * for library/tests; CLI itself never fetches an API).
11
+ */
12
+ import type { Command } from 'commander';
13
+ import type { DocumentLLM } from '../../core/document/llm.js';
14
+ export interface DocumentPlanOptions {
15
+ text?: string;
16
+ proposal?: string;
17
+ design?: string;
18
+ specs?: string;
19
+ tasks?: string;
20
+ code?: string;
21
+ workRoot?: string;
22
+ json?: boolean;
23
+ markdown?: boolean;
24
+ signoff?: boolean;
25
+ }
26
+ export interface DocumentValidateOptions {
27
+ workRoot?: string;
28
+ json?: boolean;
29
+ noRender?: boolean;
30
+ }
31
+ export declare function planDocumentCommand(profileId: string, options: DocumentPlanOptions): Promise<{
32
+ exitCode: number;
33
+ payload: unknown;
34
+ }>;
35
+ export declare function validateDocumentCommand(options: DocumentValidateOptions): Promise<{
36
+ exitCode: number;
37
+ payload: unknown;
38
+ }>;
39
+ export declare function injectLLM(llm: DocumentLLM): void;
40
+ export declare function runDocumentCommand(profileId: string | undefined, options: {
41
+ text?: string;
42
+ proposal?: string;
43
+ design?: string;
44
+ specs?: string;
45
+ code?: string;
46
+ workRoot?: string;
47
+ json?: boolean;
48
+ signoff?: boolean;
49
+ } & {
50
+ skipReview?: boolean;
51
+ maxRounds?: number;
52
+ }): Promise<{
53
+ exitCode: number;
54
+ payload: unknown;
55
+ }>;
56
+ export declare function detectDocumentCommand(options: {
57
+ text?: string;
58
+ proposal?: string;
59
+ design?: string;
60
+ specs?: string;
61
+ code?: string;
62
+ json?: boolean;
63
+ }): Promise<{
64
+ exitCode: number;
65
+ payload: unknown;
66
+ }>;
67
+ export interface ApproveOptions {
68
+ proposal?: string;
69
+ specs?: string;
70
+ design?: string;
71
+ tasks?: string;
72
+ change?: string;
73
+ workspaceRoot?: string;
74
+ changes?: string;
75
+ workRoot?: string;
76
+ signoff?: boolean;
77
+ bundle?: boolean;
78
+ json?: boolean;
79
+ }
80
+ export declare function approveDocumentCommand(options: ApproveOptions): Promise<{
81
+ exitCode: number;
82
+ payload: unknown;
83
+ }>;
84
+ export interface SynthesizeOptions {
85
+ workspaceRoot: string;
86
+ changes?: string;
87
+ profile?: string;
88
+ text?: string;
89
+ workRoot?: string;
90
+ signoff?: boolean;
91
+ json?: boolean;
92
+ }
93
+ export declare function synthesizeDocumentCommand(options: SynthesizeOptions): Promise<{
94
+ exitCode: number;
95
+ payload: unknown;
96
+ }>;
97
+ export declare function registerDocumentRunCommand(program: Command): void;