@chenguangyao/devflow-kit 0.1.43

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 (198) hide show
  1. package/CHANGELOG.md +232 -0
  2. package/LICENSE +21 -0
  3. package/README.md +539 -0
  4. package/bin/devflow.js +9 -0
  5. package/docs/RFC-001-devflow-kit.md +617 -0
  6. package/docs/RFC-002-workflow-kernel.md +134 -0
  7. package/docs/enterprise-integration-supplement.md +274 -0
  8. package/docs/internal-gitlab-setup.md +426 -0
  9. package/docs/marketplace-skills.md +231 -0
  10. package/docs/migration-from-arb.md +232 -0
  11. package/docs/tooling-overview.md +774 -0
  12. package/docs/workflow-orchestration.md +695 -0
  13. package/docs/workflow-ui-prototype.html +271 -0
  14. package/package.json +52 -0
  15. package/schemas/config.schema.json +51 -0
  16. package/schemas/delta.schema.json +22 -0
  17. package/schemas/state.schema.json +130 -0
  18. package/schemas/status-surface.schema.json +197 -0
  19. package/schemas/workflow-confirmation-surface.schema.json +70 -0
  20. package/schemas/workflow-picker.schema.json +94 -0
  21. package/scripts/postinstall.js +101 -0
  22. package/scripts/render-workflow-ui-prototype.js +271 -0
  23. package/skills/apply/SKILL.md +313 -0
  24. package/skills/apply/references/discipline-checklist.md +145 -0
  25. package/skills/apply/references/subagent-implementer-prompt.md +113 -0
  26. package/skills/apply/references/subagent-orchestration.md +150 -0
  27. package/skills/apply/references/subagent-reviewer-prompt.md +180 -0
  28. package/skills/apply/references/tdd-loop.md +287 -0
  29. package/skills/apply/references/when-plan-is-wrong.md +279 -0
  30. package/skills/apply/references/worktree-swarm.md +292 -0
  31. package/skills/archive/SKILL.md +229 -0
  32. package/skills/archive/references/conflict-resolution.md +336 -0
  33. package/skills/archive/references/knowledge-deposit.md +381 -0
  34. package/skills/archive/references/spec-merge.md +365 -0
  35. package/skills/brainstorm/SKILL.md +123 -0
  36. package/skills/brainstorm/references/proposal-template.md +244 -0
  37. package/skills/brainstorm/references/question-catalog.md +168 -0
  38. package/skills/brainstorm/references/session-template.md +184 -0
  39. package/skills/ci-fix/SKILL.md +63 -0
  40. package/skills/ci-fix/references/loop.md +25 -0
  41. package/skills/code-review/SKILL.md +279 -0
  42. package/skills/code-review/references/escalation-playbook.md +192 -0
  43. package/skills/code-review/references/language-cheatsheets/go.md +175 -0
  44. package/skills/code-review/references/language-cheatsheets/java-spring-mybatis.md +246 -0
  45. package/skills/code-review/references/language-cheatsheets/python.md +170 -0
  46. package/skills/code-review/references/language-cheatsheets/vue.md +199 -0
  47. package/skills/code-review/references/output-template.md +275 -0
  48. package/skills/code-review/references/review-checklist.md +251 -0
  49. package/skills/complexity-grading/SKILL.md +259 -0
  50. package/skills/deliver/SKILL.md +271 -0
  51. package/skills/deliver/references/delivery-modes.md +299 -0
  52. package/skills/deliver/references/notify.md +359 -0
  53. package/skills/deliver/references/pr-description.md +319 -0
  54. package/skills/dependency-upgrade/SKILL.md +57 -0
  55. package/skills/dependency-upgrade/references/risk-matrix.md +38 -0
  56. package/skills/df-orchestrator/SKILL.md +407 -0
  57. package/skills/df-orchestrator/references/complexity-grading.md +177 -0
  58. package/skills/df-orchestrator/references/escalation-matrix.md +191 -0
  59. package/skills/df-orchestrator/references/routing-rules.md +290 -0
  60. package/skills/df-orchestrator/references/workflow-state-machine.md +208 -0
  61. package/skills/frontend-quality/SKILL.md +61 -0
  62. package/skills/frontend-quality/references/checklist.md +35 -0
  63. package/skills/handoff-resume/SKILL.md +59 -0
  64. package/skills/handoff-resume/references/handoff-template.md +54 -0
  65. package/skills/plan/SKILL.md +166 -0
  66. package/skills/plan/references/task-breakdown.md +207 -0
  67. package/skills/plan/references/task-sequencing.md +143 -0
  68. package/skills/plan/references/task-template.md +248 -0
  69. package/skills/requirement-analysis/SKILL.md +499 -0
  70. package/skills/requirement-analysis/references/acceptance-criteria.md +183 -0
  71. package/skills/requirement-analysis/references/code-recon.md +151 -0
  72. package/skills/requirement-analysis/references/edge-case-catalog.md +164 -0
  73. package/skills/requirement-analysis/references/requirement-template.md +339 -0
  74. package/skills/requirement-analysis/references/scope-negotiation.md +162 -0
  75. package/skills/security-hardening/SKILL.md +60 -0
  76. package/skills/security-hardening/references/checklist.md +42 -0
  77. package/skills/tech-spec/SKILL.md +388 -0
  78. package/skills/tech-spec/references/api-contract-design.md +172 -0
  79. package/skills/tech-spec/references/decision-records.md +110 -0
  80. package/skills/tech-spec/references/design-template.md +301 -0
  81. package/skills/tech-spec/references/rollout-and-rollback.md +203 -0
  82. package/skills/tech-spec/references/spec-delta-conventions.md +250 -0
  83. package/skills/tech-spec/references/transaction-patterns.md +212 -0
  84. package/skills/test-spec/SKILL.md +219 -0
  85. package/skills/test-spec/references/coverage-strategy.md +218 -0
  86. package/skills/test-spec/references/edge-case-to-test.md +143 -0
  87. package/skills/test-spec/references/test-case-template.md +276 -0
  88. package/skills/verify/SKILL.md +232 -0
  89. package/skills/verify/references/nfr-verification.md +292 -0
  90. package/skills/verify/references/report-templates.md +510 -0
  91. package/skills/verify/references/self-test-guide.md +240 -0
  92. package/skills/verify/references/verify-rollback-map.md +247 -0
  93. package/src/cli/commands/_helpers.js +108 -0
  94. package/src/cli/commands/_submit.js +718 -0
  95. package/src/cli/commands/apply.js +198 -0
  96. package/src/cli/commands/archive.js +180 -0
  97. package/src/cli/commands/checkpoint.js +113 -0
  98. package/src/cli/commands/deliver.js +377 -0
  99. package/src/cli/commands/deploy.js +504 -0
  100. package/src/cli/commands/design.js +158 -0
  101. package/src/cli/commands/disable.js +21 -0
  102. package/src/cli/commands/doctor.js +178 -0
  103. package/src/cli/commands/enable.js +21 -0
  104. package/src/cli/commands/flow.js +645 -0
  105. package/src/cli/commands/help.js +93 -0
  106. package/src/cli/commands/ingest.js +602 -0
  107. package/src/cli/commands/init.js +341 -0
  108. package/src/cli/commands/knowledge.js +523 -0
  109. package/src/cli/commands/logs.js +43 -0
  110. package/src/cli/commands/new.js +202 -0
  111. package/src/cli/commands/plan.js +49 -0
  112. package/src/cli/commands/propose.js +27 -0
  113. package/src/cli/commands/provider.js +698 -0
  114. package/src/cli/commands/report.js +143 -0
  115. package/src/cli/commands/requirement.js +227 -0
  116. package/src/cli/commands/review.js +301 -0
  117. package/src/cli/commands/skills.js +457 -0
  118. package/src/cli/commands/status.js +925 -0
  119. package/src/cli/commands/switch.js +27 -0
  120. package/src/cli/commands/sync.js +47 -0
  121. package/src/cli/commands/test.js +366 -0
  122. package/src/cli/commands/uninstall.js +32 -0
  123. package/src/cli/commands/update.js +74 -0
  124. package/src/cli/commands/verify.js +354 -0
  125. package/src/cli/commands/worktree.js +78 -0
  126. package/src/cli/index.js +72 -0
  127. package/src/cli/parse-args.js +102 -0
  128. package/src/core/autodetect.js +271 -0
  129. package/src/core/change.js +208 -0
  130. package/src/core/checkpoint.js +217 -0
  131. package/src/core/config.js +60 -0
  132. package/src/core/delta.js +290 -0
  133. package/src/core/markers.js +59 -0
  134. package/src/core/paths.js +173 -0
  135. package/src/core/plan-tasks.js +36 -0
  136. package/src/core/project-routing.js +285 -0
  137. package/src/core/projects.js +200 -0
  138. package/src/core/state.js +200 -0
  139. package/src/core/workflow-check.js +177 -0
  140. package/src/core/workflow-init.js +34 -0
  141. package/src/core/workflow-picker.js +154 -0
  142. package/src/core/workflow-policy.js +119 -0
  143. package/src/core/workflow-suggest.js +181 -0
  144. package/src/core/workflow-verify.js +88 -0
  145. package/src/core/workflow.js +433 -0
  146. package/src/core/worktree.js +241 -0
  147. package/src/knowledge/categories.js +107 -0
  148. package/src/knowledge/classify.js +125 -0
  149. package/src/knowledge/deposit.js +414 -0
  150. package/src/knowledge/migrate.js +149 -0
  151. package/src/knowledge/mr.js +219 -0
  152. package/src/knowledge/query.js +131 -0
  153. package/src/knowledge/registry.js +151 -0
  154. package/src/knowledge/sync.js +179 -0
  155. package/src/providers/base.js +74 -0
  156. package/src/providers/drivers/api-yapi.js +78 -0
  157. package/src/providers/drivers/ci-jenkins.js +109 -0
  158. package/src/providers/drivers/intake-confluence.js +544 -0
  159. package/src/providers/drivers/kb-git.js +549 -0
  160. package/src/providers/drivers/kb-weknora.js +472 -0
  161. package/src/providers/drivers/notify-smtp.js +515 -0
  162. package/src/providers/drivers/observability-oss.js +43 -0
  163. package/src/providers/drivers/observability-sls.js +50 -0
  164. package/src/providers/lifecycle.js +135 -0
  165. package/src/providers/loader.js +132 -0
  166. package/src/providers/local.js +190 -0
  167. package/src/providers/userconfig.js +283 -0
  168. package/src/reports/aggregate.js +185 -0
  169. package/src/reports/coverage.js +163 -0
  170. package/src/reports/detect.js +143 -0
  171. package/src/reports/parse.js +236 -0
  172. package/src/templates/files/ci/github.yml +38 -0
  173. package/src/templates/files/ci/gitlab.yml +27 -0
  174. package/src/templates/files/design.md +63 -0
  175. package/src/templates/files/ide/devflow-workflow.md +58 -0
  176. package/src/templates/files/ide/project-overview-reference.md +1 -0
  177. package/src/templates/files/ide/project-overview.md +27 -0
  178. package/src/templates/files/knowledge-index.json +17 -0
  179. package/src/templates/files/knowledge.md +28 -0
  180. package/src/templates/files/meta.json +8 -0
  181. package/src/templates/files/plan.md +38 -0
  182. package/src/templates/files/proposal.md +33 -0
  183. package/src/templates/files/reports/contract-test.md +40 -0
  184. package/src/templates/files/reports/e2e-test.md +30 -0
  185. package/src/templates/files/reports/integration-test.md +36 -0
  186. package/src/templates/files/reports/joint-test.md +58 -0
  187. package/src/templates/files/reports/perf.md +24 -0
  188. package/src/templates/files/reports/regression.md +20 -0
  189. package/src/templates/files/reports/remote-test.md +55 -0
  190. package/src/templates/files/reports/self-test.md +43 -0
  191. package/src/templates/files/reports/smoke-test.md +22 -0
  192. package/src/templates/files/reports/unit-test.md +36 -0
  193. package/src/templates/files/requirement.md +51 -0
  194. package/src/templates/files/review.md +38 -0
  195. package/src/templates/files/tests.md +36 -0
  196. package/src/templates/files/verify.md +32 -0
  197. package/src/templates/index.js +21 -0
  198. package/src/utils/log.js +37 -0
@@ -0,0 +1,271 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>devflow Workflow UI Prototype</title>
7
+ <style>
8
+ :root { color-scheme: light; --ink: #172026; --muted: #60707a; --line: #d8e0e5; --panel: #f8fafb; --accent: #146b5f; --warn: #b85c00; }
9
+ * { box-sizing: border-box; }
10
+ body { margin: 0; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: var(--ink); background: #eef3f5; }
11
+ .page { width: min(1180px, calc(100vw - 32px)); margin: 0 auto; padding: 28px 0 40px; }
12
+ .toolbar { display: flex; align-items: end; justify-content: space-between; gap: 20px; padding: 10px 0 18px; }
13
+ h1, h2, h3, p { margin: 0; }
14
+ h1 { font-size: 28px; line-height: 1.15; }
15
+ h2 { font-size: 18px; }
16
+ h3 { font-size: 14px; color: var(--muted); }
17
+ p { color: var(--muted); margin-top: 6px; }
18
+ code { display: inline-block; max-width: 100%; overflow-wrap: anywhere; border: 1px solid var(--line); border-radius: 6px; padding: 5px 7px; background: white; font-size: 12px; color: #263840; }
19
+ .surface { margin-top: 18px; border: 1px solid var(--line); border-radius: 8px; background: white; padding: 18px; }
20
+ .surface-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
21
+ .surface-head span { color: var(--muted); font-size: 13px; }
22
+ .groups { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
23
+ .group { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 12px; }
24
+ ol { list-style: none; margin: 0; padding: 0; }
25
+ .group li { min-height: 112px; display: grid; gap: 6px; align-content: start; border-top: 1px solid var(--line); padding: 10px 0; }
26
+ .group li:first-child { border-top: 0; }
27
+ label { display: flex; align-items: center; gap: 8px; font-weight: 700; }
28
+ input { width: 16px; height: 16px; accent-color: var(--accent); }
29
+ small { color: var(--muted); font-size: 12px; line-height: 1.35; }
30
+ li p { color: var(--warn); font-size: 12px; margin: 0; }
31
+ .command-row, .actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; align-items: center; }
32
+ .timeline { display: grid; grid-template-columns: repeat(8, minmax(96px, 1fr)); gap: 8px; overflow-x: auto; padding-bottom: 4px; }
33
+ .timeline li { min-width: 96px; border: 1px solid var(--line); border-radius: 8px; padding: 10px; background: var(--panel); display: grid; gap: 5px; }
34
+ .timeline span { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 999px; background: var(--accent); color: white; font-size: 12px; font-weight: 700; }
35
+ button { border: 0; border-radius: 6px; padding: 8px 12px; background: var(--accent); color: white; font-weight: 700; }
36
+ @media (max-width: 860px) { .toolbar { align-items: start; flex-direction: column; } .groups { grid-template-columns: 1fr; } .timeline { grid-template-columns: repeat(4, minmax(96px, 1fr)); } }
37
+ </style>
38
+ </head>
39
+ <body>
40
+ <main class="page">
41
+ <section class="toolbar" aria-label="Workflow actions">
42
+ <div>
43
+ <h1>Workflow 编排</h1>
44
+ <p>线性 skill 选项卡 + 推荐勾选 + workflow 确认卡。</p>
45
+ </div>
46
+ <code>snapshot-card-safe · devflow flow picker --slug=snapshot-card-safe --json</code>
47
+ </section>
48
+ <section class="surface" data-surface="workflow-picker" aria-label="默认推荐">
49
+ <div class="surface-head"><h2>默认推荐</h2><span>standard / draft</span></div>
50
+ <div class="groups">
51
+ <section class="group" aria-label="核心流程">
52
+ <h3>核心流程</h3>
53
+ <ol>
54
+ <li>
55
+ <label><input type="checkbox" checked aria-label="requirement"><span>requirement</span></label>
56
+ <small>requirement-analysis · 已选</small>
57
+ <p>included by base recipe</p>
58
+ </li>
59
+ <li>
60
+ <label><input type="checkbox" checked aria-label="design"><span>design</span></label>
61
+ <small>tech-spec · 已选</small>
62
+ <p>included by base recipe</p>
63
+ </li>
64
+ <li>
65
+ <label><input type="checkbox" checked aria-label="plan"><span>plan</span></label>
66
+ <small>plan · 已选</small>
67
+ <p>included by base recipe</p>
68
+ </li>
69
+ <li>
70
+ <label><input type="checkbox" checked aria-label="apply"><span>apply</span></label>
71
+ <small>apply · 已选</small>
72
+ <p>included by base recipe</p>
73
+ </li>
74
+ </ol>
75
+ </section>
76
+ <section class="group" aria-label="专项检查">
77
+ <h3>专项检查</h3>
78
+ <ol>
79
+ <li>
80
+ <label><input type="checkbox" aria-label="dependency-upgrade"><span>dependency-upgrade</span></label>
81
+ <small>dependency-upgrade · 可选 · optional</small>
82
+ <code>devflow flow add-step dependency-upgrade --slug=snapshot-picker-default --before=plan</code>
83
+ </li>
84
+ <li>
85
+ <label><input type="checkbox" aria-label="ci-fix"><span>ci-fix</span></label>
86
+ <small>ci-fix · 可选 · optional</small>
87
+ <code>devflow flow add-step ci-fix --slug=snapshot-picker-default --before=apply</code>
88
+ </li>
89
+ <li>
90
+ <label><input type="checkbox" aria-label="frontend-quality"><span>frontend-quality</span></label>
91
+ <small>frontend-quality · 可选 · optional</small>
92
+ <code>devflow flow add-step frontend-quality --slug=snapshot-picker-default --after=apply</code>
93
+ </li>
94
+ <li>
95
+ <label><input type="checkbox" aria-label="security-hardening"><span>security-hardening</span></label>
96
+ <small>security-hardening · 可选 · optional</small>
97
+ <code>devflow flow add-step security-hardening --slug=snapshot-picker-default --after=apply</code>
98
+ </li>
99
+ </ol>
100
+ </section>
101
+ <section class="group" aria-label="质量闸与交付">
102
+ <h3>质量闸与交付</h3>
103
+ <ol>
104
+ <li>
105
+ <label><input type="checkbox" checked disabled aria-label="review locked"><span>review</span></label>
106
+ <small>code-review · 已选 · required / protected / locked</small>
107
+ <p>included by base recipe</p>
108
+ </li>
109
+ <li>
110
+ <label><input type="checkbox" checked disabled aria-label="verify locked"><span>verify</span></label>
111
+ <small>verify · 已选 · required / protected / locked</small>
112
+ <p>included by base recipe</p>
113
+ </li>
114
+ <li>
115
+ <label><input type="checkbox" checked disabled aria-label="deliver locked"><span>deliver</span></label>
116
+ <small>deliver · 已选 · required / protected / locked</small>
117
+ <p>included by base recipe</p>
118
+ </li>
119
+ <li>
120
+ <label><input type="checkbox" checked aria-label="archive"><span>archive</span></label>
121
+ <small>archive · 已选 · optional</small>
122
+ <p>included by base recipe</p>
123
+ <code>devflow flow disable-step archive --slug=snapshot-picker-default --reason=&quot;...&quot;</code>
124
+ </li>
125
+ </ol>
126
+ </section>
127
+ </div>
128
+ <div class="command-row">
129
+ <code>devflow flow apply-selection --slug=snapshot-picker-default --selection=&lt;json&gt; --json</code>
130
+ <code>devflow flow card --slug=snapshot-picker-default --json</code>
131
+ </div>
132
+ </section>
133
+ <section class="surface" data-surface="workflow-picker" aria-label="风险推荐">
134
+ <div class="surface-head"><h2>风险推荐</h2><span>standard / draft</span></div>
135
+ <div class="groups">
136
+ <section class="group" aria-label="核心流程">
137
+ <h3>核心流程</h3>
138
+ <ol>
139
+ <li>
140
+ <label><input type="checkbox" checked aria-label="requirement"><span>requirement</span></label>
141
+ <small>requirement-analysis · 已选</small>
142
+ <p>included by base recipe</p>
143
+ </li>
144
+ <li>
145
+ <label><input type="checkbox" checked aria-label="design"><span>design</span></label>
146
+ <small>tech-spec · 已选</small>
147
+ <p>included by base recipe</p>
148
+ </li>
149
+ <li>
150
+ <label><input type="checkbox" checked aria-label="plan"><span>plan</span></label>
151
+ <small>plan · 已选</small>
152
+ <p>included by base recipe</p>
153
+ </li>
154
+ <li>
155
+ <label><input type="checkbox" checked aria-label="apply"><span>apply</span></label>
156
+ <small>apply · 已选</small>
157
+ <p>included by base recipe</p>
158
+ </li>
159
+ </ol>
160
+ </section>
161
+ <section class="group" aria-label="专项检查">
162
+ <h3>专项检查</h3>
163
+ <ol>
164
+ <li>
165
+ <label><input type="checkbox" aria-label="dependency-upgrade"><span>dependency-upgrade</span></label>
166
+ <small>dependency-upgrade · 可选 · optional</small>
167
+ <code>devflow flow add-step dependency-upgrade --slug=snapshot-picker-risk --before=plan</code>
168
+ </li>
169
+ <li>
170
+ <label><input type="checkbox" aria-label="ci-fix"><span>ci-fix</span></label>
171
+ <small>ci-fix · 可选 · optional</small>
172
+ <code>devflow flow add-step ci-fix --slug=snapshot-picker-risk --before=apply</code>
173
+ </li>
174
+ <li>
175
+ <label><input type="checkbox" aria-label="frontend-quality"><span>frontend-quality</span></label>
176
+ <small>frontend-quality · 推荐 · optional</small>
177
+ <p>open frontend_change risk signal</p>
178
+ <code>devflow flow add-step frontend-quality --slug=snapshot-picker-risk --after=apply</code>
179
+ </li>
180
+ <li>
181
+ <label><input type="checkbox" aria-label="security-hardening"><span>security-hardening</span></label>
182
+ <small>security-hardening · 可选 · optional</small>
183
+ <code>devflow flow add-step security-hardening --slug=snapshot-picker-risk --after=apply</code>
184
+ </li>
185
+ </ol>
186
+ </section>
187
+ <section class="group" aria-label="质量闸与交付">
188
+ <h3>质量闸与交付</h3>
189
+ <ol>
190
+ <li>
191
+ <label><input type="checkbox" checked disabled aria-label="review locked"><span>review</span></label>
192
+ <small>code-review · 已选 · required / protected / locked</small>
193
+ <p>included by base recipe</p>
194
+ </li>
195
+ <li>
196
+ <label><input type="checkbox" checked disabled aria-label="verify locked"><span>verify</span></label>
197
+ <small>verify · 已选 · required / protected / locked</small>
198
+ <p>included by base recipe</p>
199
+ </li>
200
+ <li>
201
+ <label><input type="checkbox" checked disabled aria-label="deliver locked"><span>deliver</span></label>
202
+ <small>deliver · 已选 · required / protected / locked</small>
203
+ <p>included by base recipe</p>
204
+ </li>
205
+ <li>
206
+ <label><input type="checkbox" checked aria-label="archive"><span>archive</span></label>
207
+ <small>archive · 已选 · optional</small>
208
+ <p>included by base recipe</p>
209
+ <code>devflow flow disable-step archive --slug=snapshot-picker-risk --reason=&quot;...&quot;</code>
210
+ </li>
211
+ </ol>
212
+ </section>
213
+ </div>
214
+ <div class="command-row">
215
+ <code>devflow flow apply-selection --slug=snapshot-picker-risk --selection=&lt;json&gt; --json</code>
216
+ <code>devflow flow card --slug=snapshot-picker-risk --json</code>
217
+ </div>
218
+ </section>
219
+ <section class="surface confirm" data-surface="workflow-card" aria-label="Workflow confirmation card">
220
+ <div class="surface-head"><h2>确认卡</h2><span>ok / draft</span></div>
221
+ <ol class="timeline">
222
+ <li>
223
+ <span>1</span>
224
+ <strong>requirement</strong>
225
+ <small>requirement-analysis</small>
226
+ </li>
227
+ <li>
228
+ <span>2</span>
229
+ <strong>design</strong>
230
+ <small>tech-spec</small>
231
+ </li>
232
+ <li>
233
+ <span>3</span>
234
+ <strong>plan</strong>
235
+ <small>plan</small>
236
+ </li>
237
+ <li>
238
+ <span>4</span>
239
+ <strong>apply</strong>
240
+ <small>apply</small>
241
+ </li>
242
+ <li>
243
+ <span>5</span>
244
+ <strong>review</strong>
245
+ <small>code-review · required / protected</small>
246
+ </li>
247
+ <li>
248
+ <span>6</span>
249
+ <strong>verify</strong>
250
+ <small>verify · required / protected</small>
251
+ </li>
252
+ <li>
253
+ <span>7</span>
254
+ <strong>deliver</strong>
255
+ <small>deliver · required / protected</small>
256
+ </li>
257
+ <li>
258
+ <span>8</span>
259
+ <strong>archive</strong>
260
+ <small>archive · optional</small>
261
+ </li>
262
+ </ol>
263
+ <div class="actions">
264
+ <button type="button">confirm</button>
265
+ <code>devflow flow confirm --slug=snapshot-card-safe</code>
266
+ <code>devflow flow picker --slug=snapshot-card-safe --json</code>
267
+ </div>
268
+ </section>
269
+ </main>
270
+ </body>
271
+ </html>
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@chenguangyao/devflow-kit",
3
+ "version": "0.1.43",
4
+ "description": "Independent dev workflow kit fusing arb-workflow-kit, superpowers and OpenSpec ideas. Wiki-first entry, change-folder model, worktree-swarm apply, 3-round review, multi-IDE adapter, pluggable providers.",
5
+ "bin": {
6
+ "devflow": "bin/devflow.js",
7
+ "dfk": "bin/devflow.js"
8
+ },
9
+ "main": "src/cli/index.js",
10
+ "files": [
11
+ "bin/",
12
+ "src/",
13
+ "scripts/",
14
+ "schemas/",
15
+ "skills/",
16
+ "docs/",
17
+ "CHANGELOG.md",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "scripts": {
22
+ "start": "node bin/devflow.js",
23
+ "test": "node --test \"test/**/*.test.js\"",
24
+ "test:watch": "node --test --watch \"test/**/*.test.js\"",
25
+ "pack:dry": "npm pack --dry-run",
26
+ "lint": "echo 'lint not configured yet'",
27
+ "prototype:workflow": "node scripts/render-workflow-ui-prototype.js --write",
28
+ "postinstall": "node scripts/postinstall.js",
29
+ "prepublishOnly": "npm test"
30
+ },
31
+ "engines": {
32
+ "node": ">=20"
33
+ },
34
+ "keywords": [
35
+ "workflow",
36
+ "spec-driven-development",
37
+ "change-folder",
38
+ "worktree",
39
+ "code-review",
40
+ "ai-coding",
41
+ "claude-code",
42
+ "cursor",
43
+ "openspec",
44
+ "arb-workflow-kit"
45
+ ],
46
+ "author": "chenguangyao",
47
+ "license": "MIT",
48
+ "type": "commonjs",
49
+ "dependencies": {
50
+ "@chenguangyao/devflow-kit": "^0.1.42"
51
+ }
52
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://devflow.dev/schemas/config.schema.json",
4
+ "title": "devflow project config",
5
+ "type": "object",
6
+ "required": ["version"],
7
+ "properties": {
8
+ "version": { "type": "integer" },
9
+ "ide": {
10
+ "type": "object",
11
+ "properties": {
12
+ "targets": {
13
+ "type": "array",
14
+ "items": { "enum": ["claude", "cursor", "agents", "codex"] }
15
+ }
16
+ }
17
+ },
18
+ "projectOverview": {
19
+ "type": "object",
20
+ "properties": {
21
+ "mode": { "enum": ["reference", "supplement", "generate"] },
22
+ "candidates": { "type": "array", "items": { "type": "string" } },
23
+ "referencedFile": { "type": ["string", "null"] }
24
+ }
25
+ },
26
+ "knowledge": {
27
+ "type": "object",
28
+ "properties": {
29
+ "layout": { "enum": ["improved-9", "arb-7", "custom"] },
30
+ "domains": { "type": "array", "items": { "type": "string" } }
31
+ }
32
+ },
33
+ "defaults": {
34
+ "type": "object",
35
+ "properties": {
36
+ "level": { "enum": ["L1", "L2", "L3"] },
37
+ "workflow": { "type": "string" },
38
+ "branchPrefix": { "type": "string" }
39
+ }
40
+ },
41
+ "workflows": {
42
+ "type": "object",
43
+ "properties": {
44
+ "recipes": {
45
+ "type": "object",
46
+ "additionalProperties": { "type": "object" }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://devflow.dev/schemas/delta.schema.json",
4
+ "title": "devflow spec delta (markdown shape, validator hints only)",
5
+ "type": "object",
6
+ "description": "Delta files are markdown. This schema documents the parsed shape.",
7
+ "properties": {
8
+ "added": { "type": "array", "items": { "$ref": "#/definitions/req" } },
9
+ "modified": { "type": "array", "items": { "$ref": "#/definitions/req" } },
10
+ "removed": { "type": "array", "items": { "$ref": "#/definitions/req" } }
11
+ },
12
+ "definitions": {
13
+ "req": {
14
+ "type": "object",
15
+ "required": ["heading"],
16
+ "properties": {
17
+ "heading": { "type": "string" },
18
+ "body": { "type": "string" }
19
+ }
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://devflow.dev/schemas/state.schema.json",
4
+ "title": "devflow change state",
5
+ "type": "object",
6
+ "required": ["version", "slug", "level", "currentPhase", "phases"],
7
+ "properties": {
8
+ "$schema": { "type": "string" },
9
+ "version": { "type": "integer", "const": 1 },
10
+ "slug": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
11
+ "title": { "type": "string" },
12
+ "level": { "enum": ["L0", "L1", "L2", "L3"] },
13
+ "source": {
14
+ "oneOf": [
15
+ { "type": "null" },
16
+ {
17
+ "type": "object",
18
+ "properties": {
19
+ "type": { "enum": ["url", "issue", "incident", "manual"] },
20
+ "ref": { "type": "string" }
21
+ }
22
+ }
23
+ ]
24
+ },
25
+ "currentPhase": {
26
+ "enum": ["intake", "requirement", "design", "plan", "apply", "review", "verify", "deliver", "archive"]
27
+ },
28
+ "phases": {
29
+ "type": "object",
30
+ "patternProperties": {
31
+ "^[a-z]+$": {
32
+ "type": "object",
33
+ "properties": {
34
+ "status": { "enum": ["pending", "in_progress", "completed", "skipped"] },
35
+ "ts": { "type": "string", "format": "date-time" }
36
+ }
37
+ }
38
+ }
39
+ },
40
+ "checkpoints": {
41
+ "type": "array",
42
+ "items": {
43
+ "oneOf": [
44
+ {
45
+ "type": "object",
46
+ "required": ["name", "status"],
47
+ "properties": {
48
+ "name": { "type": "string" },
49
+ "status": { "enum": ["passed", "failed"] },
50
+ "ts": { "type": "string", "format": "date-time" }
51
+ }
52
+ },
53
+ {
54
+ "type": "object",
55
+ "required": ["id", "type", "status", "createdAt"],
56
+ "properties": {
57
+ "id": { "type": "string" },
58
+ "type": { "type": "string" },
59
+ "phase": { "type": ["string", "null"] },
60
+ "status": { "enum": ["pending", "resolved", "cancelled"] },
61
+ "summary": { "type": "string" },
62
+ "question": { "type": "string" },
63
+ "options": {
64
+ "type": "array",
65
+ "items": {
66
+ "type": "object",
67
+ "required": ["id", "label"],
68
+ "properties": {
69
+ "id": { "type": "string" },
70
+ "label": { "type": "string" },
71
+ "command": { "type": ["string", "null"] },
72
+ "description": { "type": "string" }
73
+ }
74
+ }
75
+ },
76
+ "defaultOption": { "type": ["string", "null"] },
77
+ "nextAction": { "type": ["string", "null"] },
78
+ "risks": { "type": "array", "items": { "type": "string" } },
79
+ "evidence": { "type": "array", "items": { "type": "string" } },
80
+ "decision": { "type": ["string", "null"] },
81
+ "note": { "type": ["string", "null"] },
82
+ "reason": { "type": ["string", "null"] },
83
+ "createdAt": { "type": "string", "format": "date-time" },
84
+ "resolvedAt": { "type": "string", "format": "date-time" }
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ },
90
+ "iterations": {
91
+ "type": "object",
92
+ "additionalProperties": { "type": "integer" }
93
+ },
94
+ "enabled": {
95
+ "type": "object",
96
+ "additionalProperties": { "type": "boolean" }
97
+ },
98
+ "providers": {
99
+ "type": "object",
100
+ "additionalProperties": { "type": "string" }
101
+ },
102
+ "workflow": {
103
+ "type": "object",
104
+ "properties": {
105
+ "status": { "enum": ["draft", "confirmed"] },
106
+ "baseRecipe": { "type": "object" },
107
+ "overrides": { "type": "array" },
108
+ "baseSteps": { "type": "array" },
109
+ "steps": { "type": "array" },
110
+ "currentStep": { "type": ["string", "null"] },
111
+ "audit": { "type": "array" },
112
+ "draftedAt": { "type": "string", "format": "date-time" },
113
+ "confirmedAt": { "type": "string", "format": "date-time" }
114
+ }
115
+ },
116
+ "auditLog": {
117
+ "type": "array",
118
+ "items": {
119
+ "type": "object",
120
+ "required": ["ts", "event"],
121
+ "properties": {
122
+ "ts": { "type": "string", "format": "date-time" },
123
+ "event": { "type": "string" }
124
+ }
125
+ }
126
+ },
127
+ "createdAt": { "type": "string", "format": "date-time" },
128
+ "updatedAt": { "type": "string", "format": "date-time" }
129
+ }
130
+ }