@tea-agent/loop-agent 0.13.0 → 0.15.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 (272) hide show
  1. package/AGENTS.md +157 -157
  2. package/CHANGELOG.md +116 -305
  3. package/README.md +357 -334
  4. package/bin/agent-worker.js +22 -22
  5. package/bin/loop-agent.js +21 -21
  6. package/dist/commands/cursor-prompt.js +6 -6
  7. package/dist/commands/init.js +505 -505
  8. package/dist/commands/loop-benchmark.js +11 -11
  9. package/dist/commands/pi-reuse-benchmark.js +16 -16
  10. package/dist/executors/pi-event-serializer.js +33 -11
  11. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  12. package/dist/task/runtime.js +27 -27
  13. package/dist/worker/observe/spec-evidence.js +19 -10
  14. package/dist/worker/observe/static/api.js +46 -46
  15. package/dist/worker/observe/static/app.js +151 -150
  16. package/dist/worker/observe/static/constants.js +156 -148
  17. package/dist/worker/observe/static/copy.js +67 -67
  18. package/dist/worker/observe/static/dag-helpers.js +201 -172
  19. package/dist/worker/observe/static/dag-layout.d.ts +31 -31
  20. package/dist/worker/observe/static/dag-layout.js +83 -83
  21. package/dist/worker/observe/static/dag-model.js +72 -72
  22. package/dist/worker/observe/static/dom.js +122 -122
  23. package/dist/worker/observe/static/format-pool.d.ts +71 -0
  24. package/dist/worker/observe/static/format-pool.js +134 -67
  25. package/dist/worker/observe/static/format.js +317 -292
  26. package/dist/worker/observe/static/index.html +350 -308
  27. package/dist/worker/observe/static/kpi.js +100 -94
  28. package/dist/worker/observe/static/markdown-render.js +124 -0
  29. package/dist/worker/observe/static/relations.js +133 -133
  30. package/dist/worker/observe/static/router.js +93 -93
  31. package/dist/worker/observe/static/run-processing.js +148 -148
  32. package/dist/worker/observe/static/shell-chrome.js +74 -68
  33. package/dist/worker/observe/static/state.js +273 -267
  34. package/dist/worker/observe/static/styles.css +2504 -1902
  35. package/dist/worker/observe/static/views/batch.js +227 -227
  36. package/dist/worker/observe/static/views/dag-graph.js +172 -172
  37. package/dist/worker/observe/static/views/dag-inspector.js +530 -627
  38. package/dist/worker/observe/static/views/dag.js +371 -371
  39. package/dist/worker/observe/static/views/dashboard.js +86 -100
  40. package/dist/worker/observe/static/views/failures.js +143 -143
  41. package/dist/worker/observe/static/views/feature.js +492 -492
  42. package/dist/worker/observe/static/views/pool.js +708 -350
  43. package/dist/worker/observe/static/views/run.js +453 -453
  44. package/dist/worker/observe/static/views/session-timeline.js +771 -219
  45. package/dist/worker/observe/static/views/shell.js +7 -7
  46. package/dist/worker/observe/static/views/task.js +314 -314
  47. package/dist/worker/observe/static/views/timeline.js +163 -163
  48. package/dist/workflows/dag/canvas-observer.js +275 -275
  49. package/dist/workflows/dag/init-hybrid.js +27 -11
  50. package/docs/README.md +106 -104
  51. package/docs/architecture/README.md +26 -26
  52. package/docs/architecture/dag-execution.md +140 -140
  53. package/docs/architecture/evolution.md +54 -54
  54. package/docs/architecture/facts-and-state.md +71 -71
  55. package/docs/architecture/runtime-boundaries.md +191 -191
  56. package/docs/architecture/system-overview.md +93 -93
  57. package/docs/architecture/worker-and-feature.md +85 -85
  58. package/docs/harness-methodology-debugging.md +153 -153
  59. package/docs/harness-methodology-tdd.md +130 -130
  60. package/docs/harness-methodology-verification.md +27 -27
  61. package/docs/init-surface.manifest.json +304 -307
  62. package/docs/skills/README.md +7 -7
  63. package/docs/skills/vetted-skill-registry.md +29 -29
  64. package/docs/templates/adr.md +60 -60
  65. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  66. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  67. package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
  68. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  69. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  70. package/docs/templates/agent-dag-report.schema.json +473 -473
  71. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  72. package/docs/templates/agent-dag.base.json +190 -190
  73. package/docs/templates/agent-dag.final-verification.json +185 -185
  74. package/docs/templates/agent-dag.schema.json +411 -411
  75. package/docs/templates/agent-dag.supervised-implementation.json +620 -620
  76. package/docs/templates/backend-test-analysis.schema.json +44 -44
  77. package/docs/templates/backend-test-case-manifest.schema.json +190 -190
  78. package/docs/templates/backend-test-dag.classify.prompt.md +75 -75
  79. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +204 -204
  80. package/docs/templates/backend-test-dag.json +559 -559
  81. package/docs/templates/backend-test-dag.retrospect.prompt.md +139 -139
  82. package/docs/templates/backend-test-dag.review-cases.prompt.md +83 -83
  83. package/docs/templates/backend-test-execution.schema.json +133 -133
  84. package/docs/templates/backend-test-result.schema.json +99 -99
  85. package/docs/templates/branch-merge-report.md +0 -1
  86. package/docs/templates/exec-plan.md +64 -64
  87. package/docs/templates/feature-spec.md +53 -53
  88. package/docs/templates/frontend-design-contract.md +42 -42
  89. package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
  90. package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
  91. package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
  92. package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
  93. package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
  94. package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
  95. package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
  96. package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
  97. package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
  98. package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
  99. package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
  100. package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
  101. package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
  102. package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
  103. package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
  104. package/docs/templates/frontend-eval/metrics.md +138 -138
  105. package/docs/templates/frontend-eval/smoke-targets.md +53 -53
  106. package/docs/templates/frontend-implementation-contract.schema.json +27 -27
  107. package/docs/templates/frontend-task-constraints.md +35 -35
  108. package/docs/templates/frontend-task-requirement.md +70 -70
  109. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +5 -5
  110. package/docs/templates/frontend-test-dag.json +23 -23
  111. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +3 -3
  112. package/docs/templates/frontend-test-dag.retrospect.prompt.md +3 -3
  113. package/docs/templates/frontend-test-dag.review-cases.prompt.md +3 -3
  114. package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -3
  115. package/docs/templates/harness.schema.json +221 -221
  116. package/docs/templates/hybrid-dag.json +188 -188
  117. package/docs/templates/init-evolution-review.md +35 -35
  118. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  119. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
  120. package/docs/templates/knowledge-sync-dag.json +178 -178
  121. package/docs/templates/knowledge-sync-draft.schema.json +71 -71
  122. package/docs/templates/product-line/AGENTS.md +8 -8
  123. package/docs/templates/product-line/README.md +9 -9
  124. package/docs/templates/product-line/acceptance.yaml +14 -14
  125. package/docs/templates/product-line/closeout.yaml +9 -9
  126. package/docs/templates/product-line/design.md +13 -13
  127. package/docs/templates/product-line/links.md +10 -10
  128. package/docs/templates/product-line/requirement.md +17 -17
  129. package/docs/templates/product-line/task-graph.yaml +15 -15
  130. package/docs/templates/product-line/task.yaml +64 -64
  131. package/docs/templates/product-line/test-plan.md +7 -7
  132. package/docs/templates/production-readiness-checklist.md +57 -57
  133. package/docs/templates/progress-log.md +17 -17
  134. package/docs/templates/project-start-checklist.md +9 -9
  135. package/docs/templates/qa-report.md +48 -48
  136. package/docs/templates/sprint-contract.md +29 -29
  137. package/docs/templates/worker-dogfood-evidence.md +80 -80
  138. package/docs/templates/worker-dogfood-setup.md +68 -68
  139. package/examples/decision-gate-agent-dag.json +173 -173
  140. package/examples/example-dag.json +46 -46
  141. package/examples/hybrid-loop-agent-dag.json +188 -188
  142. package/harness.json +66 -66
  143. package/package.json +78 -52
  144. package/scripts/kb-bootstrap-init-skeleton.sh +240 -240
  145. package/scripts/kb-graph-incremental-prepare.mjs +386 -386
  146. package/scripts/kb-graph-materialize.mjs +105 -105
  147. package/scripts/kb-graph-promote.mjs +164 -164
  148. package/scripts/kb-query.mjs +554 -554
  149. package/skills/agent-worker/SKILL.md +39 -39
  150. package/skills/agent-worker/references/agent-worker-operator.md +60 -60
  151. package/skills/ai-engineering-context/SKILL.md +48 -48
  152. package/skills/analyze-product-dependencies/SKILL.md +67 -67
  153. package/skills/analyze-product-dependencies/agents/openai.yaml +4 -4
  154. package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -30
  155. package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -28
  156. package/skills/analyze-product-dependencies/references/example.md +76 -76
  157. package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -35
  158. package/skills/analyze-product-dependencies/references/input-contract.md +11 -11
  159. package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -61
  160. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -267
  161. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -101
  162. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -142
  163. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -76
  164. package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -146
  165. package/skills/analyze-product-requirements/SKILL.md +90 -90
  166. package/skills/analyze-product-requirements/agents/openai.yaml +4 -4
  167. package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -91
  168. package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -56
  169. package/skills/analyze-product-requirements/references/example.md +86 -86
  170. package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -66
  171. package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -32
  172. package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -33
  173. package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -35
  174. package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -193
  175. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -69
  176. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -97
  177. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -98
  178. package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -156
  179. package/skills/browser-tools/SKILL.md +196 -196
  180. package/skills/browser-tools/browser-content.js +103 -103
  181. package/skills/browser-tools/browser-cookies.js +35 -35
  182. package/skills/browser-tools/browser-eval.js +53 -53
  183. package/skills/browser-tools/browser-hn-scraper.js +108 -108
  184. package/skills/browser-tools/browser-nav.js +44 -44
  185. package/skills/browser-tools/browser-pick.js +162 -162
  186. package/skills/browser-tools/browser-screenshot.js +34 -34
  187. package/skills/browser-tools/browser-start.js +86 -86
  188. package/skills/browser-tools/package-lock.json +2556 -2556
  189. package/skills/browser-tools/package.json +19 -19
  190. package/skills/code-review-core/SKILL.md +20 -20
  191. package/skills/codebase-scout/SKILL.md +19 -19
  192. package/skills/frontend-design-review/SKILL.md +66 -66
  193. package/skills/frontend-design-review/references/review-checklist.md +40 -58
  194. package/skills/frontend-implementation/SKILL.md +49 -49
  195. package/skills/frontend-implementation/references/code-standards.md +32 -32
  196. package/skills/frontend-implementation/references/design-spec.md +46 -46
  197. package/skills/frontend-implementation/references/node-contracts.md +27 -27
  198. package/skills/frontend-review/SKILL.md +61 -59
  199. package/skills/frontend-review/references/review-findings.md +48 -47
  200. package/skills/frontend-verification/SKILL.md +55 -53
  201. package/skills/frontend-verification/references/verification-checklist.md +59 -68
  202. package/skills/grill-me/SKILL.md +10 -10
  203. package/skills/grill-with-docs/SKILL.md +88 -88
  204. package/skills/grill-with-docs/adr-format.md +47 -47
  205. package/skills/grill-with-docs/context-format.md +60 -60
  206. package/skills/init-capability-evolution/SKILL.md +70 -70
  207. package/skills/loop-agent/SKILL.md +151 -151
  208. package/skills/loop-agent/references/README.md +67 -67
  209. package/skills/loop-agent/references/command-reference.md +527 -527
  210. package/skills/loop-agent/references/docs-converge.md +126 -126
  211. package/skills/loop-agent/references/harness-policy.md +263 -263
  212. package/skills/loop-agent/references/hybrid-dag.md +243 -243
  213. package/skills/loop-agent/references/learned/README.md +21 -21
  214. package/skills/loop-agent/references/long-running-loop.md +57 -57
  215. package/skills/loop-agent/references/model-routing.md +36 -36
  216. package/skills/loop-agent/references/multi-worktree.md +54 -54
  217. package/skills/loop-agent/references/one-shot-runs.md +85 -85
  218. package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
  219. package/skills/loop-agent/references/pi-prompt.md +23 -23
  220. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  221. package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
  222. package/skills/loop-agent/references/task-workflow.md +89 -89
  223. package/skills/loop-agent/references/verification-and-failure-handling.md +141 -141
  224. package/skills/playwright-cli/SKILL.md +420 -420
  225. package/skills/playwright-cli/references/element-attributes.md +23 -23
  226. package/skills/playwright-cli/references/playwright-tests.md +39 -39
  227. package/skills/playwright-cli/references/request-mocking.md +87 -87
  228. package/skills/playwright-cli/references/running-code.md +241 -241
  229. package/skills/playwright-cli/references/session-management.md +225 -225
  230. package/skills/playwright-cli/references/storage-state.md +275 -275
  231. package/skills/playwright-cli/references/test-generation.md +433 -433
  232. package/skills/playwright-cli/references/tracing.md +139 -139
  233. package/skills/playwright-cli/references/video-recording.md +143 -143
  234. package/skills/playwright-cli-case-generator/SKILL.md +74 -74
  235. package/skills/requesting-code-review/SKILL.md +101 -101
  236. package/skills/requesting-code-review/code-reviewer.md +168 -168
  237. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  238. package/skills/systematic-debugging/SKILL.md +296 -296
  239. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  240. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  241. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  242. package/skills/systematic-debugging/find-polluter.sh +63 -63
  243. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  244. package/skills/systematic-debugging/test-academic.md +14 -14
  245. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  246. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  247. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  248. package/skills/test-driven-development/SKILL.md +20 -20
  249. package/skills/using-git-worktrees/SKILL.md +215 -215
  250. package/skills/verification-before-completion/SKILL.md +154 -154
  251. package/skills/webapp-testing/SKILL.md +19 -19
  252. package/docs/agent-dag-recovery-playbook.md +0 -195
  253. package/docs/agent-dag-runner.md +0 -67
  254. package/docs/cursor-prompt-sidecar.md +0 -36
  255. package/docs/decisions/README.md +0 -18
  256. package/docs/design/README.md +0 -167
  257. package/docs/development-principles.md +0 -73
  258. package/docs/exec-plans/README.md +0 -6
  259. package/docs/exec-plans/active/README.md +0 -12
  260. package/docs/exec-plans/completed/README.md +0 -107
  261. package/docs/feature-workflow.md +0 -414
  262. package/docs/loop-agent-harness.md +0 -142
  263. package/docs/production-readiness.md +0 -96
  264. package/docs/progress/README.md +0 -80
  265. package/docs/reports/README.md +0 -159
  266. package/docs/verification-matrix.md +0 -70
  267. package/scripts/check-product-line-docs.sh +0 -29
  268. package/scripts/check-task-pool-root.sh +0 -32
  269. package/scripts/kb-graph-incremental-prepare.sh +0 -5
  270. package/scripts/kb-graph-materialize.sh +0 -4
  271. package/scripts/kb-graph-promote.sh +0 -4
  272. package/scripts/kb-query.sh +0 -5
@@ -1,39 +1,39 @@
1
- ---
2
- name: agent-worker
3
- description: Use when work involves agent-worker, Feature Packet, TaskSpec, Task Pool, Feature or batch orchestration, controller pinning, versioned self-hosting (自举) release trains, candidate takeover canaries (候选接棒验证), or worker failure recovery; use loop-agent instead for a single DAG implementation or DAG runtime/kernel repair.
4
- references:
5
- - path: references/agent-worker-operator.md
6
- required: true
7
- ---
8
-
9
- # Agent Worker Operator
10
-
11
- 当工作起点是 Feature Packet、TaskSpec、Task Pool、Worker batch 或 versioned self-hosting release train 时使用本 skill。它负责在单次 loop-agent DAG run 之外选择并监督工作。
12
-
13
- ## Route the Work
14
-
15
- - 用 `agent-worker` 做 Feature validation 与 lifecycle 决策、Ready-task 选择、batch 推进、controller identity freeze、candidate takeover canary,以及失败 Worker run 的恢复。
16
- - 对单个有界 DAG task、DAG diagnostics、node implementation,或 DAG runtime/kernel 修复,直接用 `loop-agent`。
17
- - 不要让 DAG leaf node 递归启动 `agent-worker`;Worker 是 outer loop,不是另一个 node executor。
18
-
19
- ## Boundaries
20
-
21
- - `agent-worker` 读取 Feature Packet 与 Task Pool facts,选择任务,冻结 controller identity,启动 Feature/batch lifecycle 命令,并收集 evidence。
22
- - `loop-agent` 仍是 DAG executor,负责 Pi-only implementation nodes、write-set governance、skill snapshots 与 run facts。
23
- - Controller identity 冻结驱动 batch 的 published package;loop-agent skill snapshot 则单独冻结注入单次 DAG run 的 instructions。
24
- - 本 skill 不复制 command catalog。精确 flags 见 CLI help 与同级 `../loop-agent/references/command-reference.md`。
25
- - 不要把本 skill 加入默认 DAG role skills;仅对 outer-loop operator 工作显式路由。
26
-
27
- ## Operator Flow
28
-
29
- 1. 校验 Feature Packet 与 TaskSpecs,再从 Task Pool facts 选择 Ready 工作,而不是从 chat state。Task Pool 身份是 `{ featureId, taskId }`,不是裸 taskId。
30
- 2. 在写入前解析并冻结目标 published controller;在 batch、task 与 run evidence 中保留 controller identity。
31
- 3. 将仓库写入委托给受治理的 loop-agent DAG nodes,并审查其 task boundaries 与 write sets。
32
- 4. 自举时保持 published version N 固定,由它维护 candidate N+1,再通过 deterministic isolated canary 证明 candidate takeover。
33
- 5. 失败时先保留原始 run record、evidence 与 failure handoff,再重试或创建后续工作。
34
- 6. Failed task 重试使用 `agent-worker task retry <task-id> --feature-id <feature-id> --repo <repo> --reason <reason>`;跨 Feature 同名时禁止省略 `--feature-id`。
35
- 7. 升级或发现 legacy state 时先 `pool doctor`,再用 `pool migrate-state`(默认 dry-run;apply 需 `--owner` + `--reason`)。Observe 保持只读。
36
-
37
- ## References
38
-
39
- - `references/agent-worker-operator.md`
1
+ ---
2
+ name: agent-worker
3
+ description: Use when work involves agent-worker, Feature Packet, TaskSpec, Task Pool, Feature or batch orchestration, controller pinning, versioned self-hosting (自举) release trains, candidate takeover canaries (候选接棒验证), or worker failure recovery; use loop-agent instead for a single DAG implementation or DAG runtime/kernel repair.
4
+ references:
5
+ - path: references/agent-worker-operator.md
6
+ required: true
7
+ ---
8
+
9
+ # Agent Worker Operator
10
+
11
+ 当工作起点是 Feature Packet、TaskSpec、Task Pool、Worker batch 或 versioned self-hosting release train 时使用本 skill。它负责在单次 loop-agent DAG run 之外选择并监督工作。
12
+
13
+ ## Route the Work
14
+
15
+ - 用 `agent-worker` 做 Feature validation 与 lifecycle 决策、Ready-task 选择、batch 推进、controller identity freeze、candidate takeover canary,以及失败 Worker run 的恢复。
16
+ - 对单个有界 DAG task、DAG diagnostics、node implementation,或 DAG runtime/kernel 修复,直接用 `loop-agent`。
17
+ - 不要让 DAG leaf node 递归启动 `agent-worker`;Worker 是 outer loop,不是另一个 node executor。
18
+
19
+ ## Boundaries
20
+
21
+ - `agent-worker` 读取 Feature Packet 与 Task Pool facts,选择任务,冻结 controller identity,启动 Feature/batch lifecycle 命令,并收集 evidence。
22
+ - `loop-agent` 仍是 DAG executor,负责 Pi-only implementation nodes、write-set governance、skill snapshots 与 run facts。
23
+ - Controller identity 冻结驱动 batch 的 published package;loop-agent skill snapshot 则单独冻结注入单次 DAG run 的 instructions。
24
+ - 本 skill 不复制 command catalog。精确 flags 见 CLI help 与同级 `../loop-agent/references/command-reference.md`。
25
+ - 不要把本 skill 加入默认 DAG role skills;仅对 outer-loop operator 工作显式路由。
26
+
27
+ ## Operator Flow
28
+
29
+ 1. 校验 Feature Packet 与 TaskSpecs,再从 Task Pool facts 选择 Ready 工作,而不是从 chat state。Task Pool 身份是 `{ featureId, taskId }`,不是裸 taskId。
30
+ 2. 在写入前解析并冻结目标 published controller;在 batch、task 与 run evidence 中保留 controller identity。
31
+ 3. 将仓库写入委托给受治理的 loop-agent DAG nodes,并审查其 task boundaries 与 write sets。
32
+ 4. 自举时保持 published version N 固定,由它维护 candidate N+1,再通过 deterministic isolated canary 证明 candidate takeover。
33
+ 5. 失败时先保留原始 run record、evidence 与 failure handoff,再重试或创建后续工作。
34
+ 6. Failed task 重试使用 `agent-worker task retry <task-id> --feature-id <feature-id> --repo <repo> --reason <reason>`;跨 Feature 同名时禁止省略 `--feature-id`。
35
+ 7. 升级或发现 legacy state 时先 `pool doctor`,再用 `pool migrate-state`(默认 dry-run;apply 需 `--owner` + `--reason`)。Observe 保持只读。
36
+
37
+ ## References
38
+
39
+ - `references/agent-worker-operator.md`
@@ -1,60 +1,60 @@
1
- # Agent Worker Operator Reference
2
-
3
- `agent-worker` 是 Feature Packet、TaskSpec、Task Pool 与 self-hosting release-train 操作的 outer-loop adapter。它不是 DAG executor。
4
-
5
- ## Routing Boundary
6
-
7
- 当工作单元是 Feature lifecycle、一组 TaskSpecs、Ready queue、Worker batch 或 candidate takeover 时,选 `agent-worker`。当工作单元是单次受治理 DAG run、node implementation、DAG diagnosis 或 DAG runtime repair 时,选 `loop-agent`。
8
-
9
- Leaf DAG nodes 不得递归启动 `agent-worker`。Worker 负责 DAG 之外的 selection 与 lifecycle state;loop-agent 负责 DAG 内的 execution facts。
10
-
11
- ## Responsibilities
12
-
13
- - 在选工前校验 Feature Packet 与 TaskSpec 关系。
14
- - 从 Task Pool facts 选择 Ready 工作,定义 batch scope,并选择 recovery actions。
15
- - 在可写执行前解析并冻结 controller launch identity。
16
- - 用 pinned controller identity 启动 loop-agent 命令。
17
- - 收集 canonical run records、reports、closeout drafts 与 failure handoff evidence。
18
-
19
- ## Feature and Task Pool Flow
20
-
21
- 1. 阅读 Feature Packet,校验其 TaskSpecs 与 dependency graph。
22
- 2. 从持久化的 Task Pool state 推导下一步动作;不要从 chat history 重建 lifecycle state。canonical state 键是 `{ featureId, taskId }`(路径 `.harness/task-pool/states/<featureId>/<taskId>.json`)。
23
- 3. 对可写 batch 只冻结一次 controller,并将其 identity 传播到下游 evidence。
24
- 4. 将每个选中的 TaskSpec 委托给 loop-agent,使用其结构化的 allowed / forbidden paths。
25
- 5. 根据 canonical run facts 刷新 Feature review、reports 与 Task Pool state。
26
- 6. 重试 Failed task:
27
-
28
- ```text
29
- agent-worker task retry <task-id> --feature-id <feature-id> --repo <repo> --reason <reason>
30
- ```
31
-
32
- 跨 Feature 同名 Task 时省略 `--feature-id` 必须 fail-closed。
33
- 7. 诊断 / 迁移 legacy 扁平 state:
34
-
35
- ```text
36
- agent-worker pool doctor --repo <repo> --json
37
- agent-worker pool migrate-state --repo <repo> # dry-run
38
- agent-worker pool migrate-state --repo <repo> --apply --owner <owner> --reason <reason>
39
- ```
40
-
41
- doctor 只读;migrate 默认零写入,apply 失败全回滚且不改 JSONL。
42
- 8. Observe(`observe serve|snapshot`)只读;canonical Task 路由为 `/api/features/:featureId/tasks/:taskId` 与 `#/feature/:featureId/task/:taskId`。
43
-
44
- ## Versioned Self-Hosting
45
-
46
- - Published version N 是整个 maintenance batch 的 controller;不要在任务中途切换。
47
- - Candidate N+1 在 takeover verification 前先构建并安装到 isolated slot。
48
- - Candidate 命令使用绝对 package entry identities,绝不使用新解析的 global PATH 命令。
49
- - Controller identity 与 DAG skill snapshot 应对不同漂移风险:前者钉住 runtime/package content,后者钉住单次 run 的 resolved instructions。
50
- - 失败的 canary 或 Worker run 仍是不可变 evidence。将 retries 与后续工作链接到它,而不是覆盖失败记录。
51
-
52
- ## Non Responsibilities
53
-
54
- - 不要在此实现 node scheduling、write-set enforcement 或 model prompts。
55
- - 不要在本 skill 中维护一份独立的精确 CLI flags 列表;以 CLI help 与 `../../loop-agent/references/command-reference.md` 为准。
56
- - 不要把本 skill 路由为 DAG nodes 的默认 role skill。
57
-
58
- ## Candidate Canary Boundary
59
-
60
- Deterministic candidate canary 将 candidate package 安装到 isolated temporary slot,通过该 slot 内的绝对 Node script paths 调用 package bins,避免 model calls,并输出 machine-readable evidence,覆盖 package-root containment、entry hashes、checks 与 verdict。
1
+ # Agent Worker Operator Reference
2
+
3
+ `agent-worker` 是 Feature Packet、TaskSpec、Task Pool 与 self-hosting release-train 操作的 outer-loop adapter。它不是 DAG executor。
4
+
5
+ ## Routing Boundary
6
+
7
+ 当工作单元是 Feature lifecycle、一组 TaskSpecs、Ready queue、Worker batch 或 candidate takeover 时,选 `agent-worker`。当工作单元是单次受治理 DAG run、node implementation、DAG diagnosis 或 DAG runtime repair 时,选 `loop-agent`。
8
+
9
+ Leaf DAG nodes 不得递归启动 `agent-worker`。Worker 负责 DAG 之外的 selection 与 lifecycle state;loop-agent 负责 DAG 内的 execution facts。
10
+
11
+ ## Responsibilities
12
+
13
+ - 在选工前校验 Feature Packet 与 TaskSpec 关系。
14
+ - 从 Task Pool facts 选择 Ready 工作,定义 batch scope,并选择 recovery actions。
15
+ - 在可写执行前解析并冻结 controller launch identity。
16
+ - 用 pinned controller identity 启动 loop-agent 命令。
17
+ - 收集 canonical run records、reports、closeout drafts 与 failure handoff evidence。
18
+
19
+ ## Feature and Task Pool Flow
20
+
21
+ 1. 阅读 Feature Packet,校验其 TaskSpecs 与 dependency graph。
22
+ 2. 从持久化的 Task Pool state 推导下一步动作;不要从 chat history 重建 lifecycle state。canonical state 键是 `{ featureId, taskId }`(路径 `.harness/task-pool/states/<featureId>/<taskId>.json`)。
23
+ 3. 对可写 batch 只冻结一次 controller,并将其 identity 传播到下游 evidence。
24
+ 4. 将每个选中的 TaskSpec 委托给 loop-agent,使用其结构化的 allowed / forbidden paths。
25
+ 5. 根据 canonical run facts 刷新 Feature review、reports 与 Task Pool state。
26
+ 6. 重试 Failed task:
27
+
28
+ ```text
29
+ agent-worker task retry <task-id> --feature-id <feature-id> --repo <repo> --reason <reason>
30
+ ```
31
+
32
+ 跨 Feature 同名 Task 时省略 `--feature-id` 必须 fail-closed。
33
+ 7. 诊断 / 迁移 legacy 扁平 state:
34
+
35
+ ```text
36
+ agent-worker pool doctor --repo <repo> --json
37
+ agent-worker pool migrate-state --repo <repo> # dry-run
38
+ agent-worker pool migrate-state --repo <repo> --apply --owner <owner> --reason <reason>
39
+ ```
40
+
41
+ doctor 只读;migrate 默认零写入,apply 失败全回滚且不改 JSONL。
42
+ 8. Observe(`observe serve|snapshot`)只读;canonical Task 路由为 `/api/features/:featureId/tasks/:taskId` 与 `#/feature/:featureId/task/:taskId`。
43
+
44
+ ## Versioned Self-Hosting
45
+
46
+ - Published version N 是整个 maintenance batch 的 controller;不要在任务中途切换。
47
+ - Candidate N+1 在 takeover verification 前先构建并安装到 isolated slot。
48
+ - Candidate 命令使用绝对 package entry identities,绝不使用新解析的 global PATH 命令。
49
+ - Controller identity 与 DAG skill snapshot 应对不同漂移风险:前者钉住 runtime/package content,后者钉住单次 run 的 resolved instructions。
50
+ - 失败的 canary 或 Worker run 仍是不可变 evidence。将 retries 与后续工作链接到它,而不是覆盖失败记录。
51
+
52
+ ## Non Responsibilities
53
+
54
+ - 不要在此实现 node scheduling、write-set enforcement 或 model prompts。
55
+ - 不要在本 skill 中维护一份独立的精确 CLI flags 列表;以 CLI help 与 `../../loop-agent/references/command-reference.md` 为准。
56
+ - 不要把本 skill 路由为 DAG nodes 的默认 role skill。
57
+
58
+ ## Candidate Canary Boundary
59
+
60
+ Deterministic candidate canary 将 candidate package 安装到 isolated temporary slot,通过该 slot 内的绝对 Node script paths 调用 package bins,避免 model calls,并输出 machine-readable evidence,覆盖 package-root containment、entry hashes、checks 与 verdict。
@@ -1,48 +1,48 @@
1
- ---
2
- name: ai-engineering-context
3
- description: 当 AI coding agent 启动 loop-agent 工作、准备 DAG 或 Loop context、委派 role-specific 节点,或决定 requirements、facts、evidence、handoff notes 应落何处时使用。
4
- ---
5
-
6
- # AI Engineering Context
7
-
8
- Context 是工程 artifact,不是 chat 残留。须显式保留 requirements、role 边界、write authority、evidence 与 handoff facts。
9
-
10
- ## When to Use
11
-
12
- 在启动 task、DAG、workflow 或 Loop round;准备 role prompt;委派给 Cursor/Pi/shell/static executor;或处理 stale plan、冲突 requirements、缺失 evidence 时使用。
13
-
14
- 不要用于 private platform paths、personal memory、Google Drive 规则,或替代 task skills。
15
-
16
- ## Context Priority
17
-
18
- 按以下顺序优先采信 facts:最新 user instruction;task source/contract;DAG/Loop artifacts;ai_workspace/loop-agent/plans/ADRs;code/tests;chat history 仅作 hint。
19
-
20
- 若 sources 冲突,停止并点明冲突。
21
-
22
- ## Role Boundaries
23
-
24
- - Planner:contract、DAG shape、write boundary、verification plan;不做 implementation edits。
25
- - Scout:code/test/doc/artifact facts;不写 repo。
26
- - Implementer:在 writeSet 内做 bounded changes;不扩大 scope 或宣称完成。
27
- - Reviewer:bugs、regressions、missing tests、risk;除非被指派,否则不重写。
28
- - Verifier:command evidence、reproduction、failure category;model judgment 不是 proof。
29
- - Supervisor:gates、escalation、repair scope;不绕过 write-guard 或 human-gate。
30
- - Closeout:evidence、risks、next steps;不隐藏 failures。
31
-
32
- ## Prompt Contract
33
-
34
- 每个 delegated node prompt 应包含:objective、task id、role、executor、allowed paths、forbidden paths、writeSet、upstream artifact refs、concise excerpts、output contract、expected evidence、non-goals、stop conditions。
35
-
36
- read-only node 只能在 node output 返回 findings。不得在 repo 中创建 scratch files。
37
-
38
- ## Persistence Rules
39
-
40
- Requirements 与 constraints 写入 task `source/`。Execution state 与 node artifacts 写入 `.harness/`。Durable plans、reports、decisions 写入 `ai_workspace/loop-agent/`。可复用 process guidance 写入 `.agents/skills/`。Chat 仅 transient。
41
-
42
- ## Failure Handling
43
-
44
- - Missing context:运行 scout 或读取 durable source。
45
- - Ambiguous requirement:implementation 前更新 contract。
46
- - Verification failure:改 code 前先 diagnose cause。
47
- - Missing skill instructions:视为 context defect;不要假设 hidden behavior。
48
- - Missing fresh verification:不要 close out。
1
+ ---
2
+ name: ai-engineering-context
3
+ description: 当 AI coding agent 启动 loop-agent 工作、准备 DAG 或 Loop context、委派 role-specific 节点,或决定 requirements、facts、evidence、handoff notes 应落何处时使用。
4
+ ---
5
+
6
+ # AI Engineering Context
7
+
8
+ Context 是工程 artifact,不是 chat 残留。须显式保留 requirements、role 边界、write authority、evidence 与 handoff facts。
9
+
10
+ ## When to Use
11
+
12
+ 在启动 task、DAG、workflow 或 Loop round;准备 role prompt;委派给 Cursor/Pi/shell/static executor;或处理 stale plan、冲突 requirements、缺失 evidence 时使用。
13
+
14
+ 不要用于 private platform paths、personal memory、Google Drive 规则,或替代 task skills。
15
+
16
+ ## Context Priority
17
+
18
+ 按以下顺序优先采信 facts:最新 user instruction;task source/contract;DAG/Loop artifacts;ai_workspace/loop-agent/plans/ADRs;code/tests;chat history 仅作 hint。
19
+
20
+ 若 sources 冲突,停止并点明冲突。
21
+
22
+ ## Role Boundaries
23
+
24
+ - Planner:contract、DAG shape、write boundary、verification plan;不做 implementation edits。
25
+ - Scout:code/test/doc/artifact facts;不写 repo。
26
+ - Implementer:在 writeSet 内做 bounded changes;不扩大 scope 或宣称完成。
27
+ - Reviewer:bugs、regressions、missing tests、risk;除非被指派,否则不重写。
28
+ - Verifier:command evidence、reproduction、failure category;model judgment 不是 proof。
29
+ - Supervisor:gates、escalation、repair scope;不绕过 write-guard 或 human-gate。
30
+ - Closeout:evidence、risks、next steps;不隐藏 failures。
31
+
32
+ ## Prompt Contract
33
+
34
+ 每个 delegated node prompt 应包含:objective、task id、role、executor、allowed paths、forbidden paths、writeSet、upstream artifact refs、concise excerpts、output contract、expected evidence、non-goals、stop conditions。
35
+
36
+ read-only node 只能在 node output 返回 findings。不得在 repo 中创建 scratch files。
37
+
38
+ ## Persistence Rules
39
+
40
+ Requirements 与 constraints 写入 task `source/`。Execution state 与 node artifacts 写入 `.harness/`。Durable plans、reports、decisions 写入 `ai_workspace/loop-agent/`。可复用 process guidance 写入 `.agents/skills/`。Chat 仅 transient。
41
+
42
+ ## Failure Handling
43
+
44
+ - Missing context:运行 scout 或读取 durable source。
45
+ - Ambiguous requirement:implementation 前更新 contract。
46
+ - Verification failure:改 code 前先 diagnose cause。
47
+ - Missing skill instructions:视为 context defect;不要假设 hidden behavior。
48
+ - Missing fresh verification:不要 close out。
@@ -1,67 +1,67 @@
1
- ---
2
- name: analyze-product-dependencies
3
- description: 基于 complete Product Requirement 探索代码库,按 frontend、backend 或 both 范围将故事、输出规范和验收标准映射到真实文件、组件、服务、数据、权限与证据,并仅为 API 型后端故事生成精简 Swagger 风格 Markdown API 文档。用于代码影响分析、依赖分析、API 文档或需求到代码映射。
4
- ---
5
-
6
- # Analyze Product Dependencies
7
-
8
- IRON LAW:`product-requirement.md` 是唯一需求事实源。不得从原始需求、Product Analysis、Clarification 或聊天重新解释需求,不得修改代码或上游产物。
9
-
10
- ## 输入与产物
11
-
12
- - 必填:complete `product-requirement.md` 的实际路径和可读取代码仓库路径;Product Requirement 必须位于项目根的需求目录。
13
- - 可选:`target=frontend|backend|both` 或 `--target frontend|backend|both`;两种写法等价,默认继承上游 scope。
14
- - 输出写回 Product Requirement 所在目录;始终生成 `dependency-analysis.md`,选中 API 型后端故事时额外生成 `api-documentation.md`。
15
-
16
- ## Workflow
17
-
18
- - [ ] Step 0:输入门禁 ⛔ BLOCKING
19
- - [ ] 读取 `references/input-contract.md` 并运行 Product Requirement 输入校验器。
20
- - [ ] 将 `target=<value>` 和 `--target <value>` 归一化为唯一 target;缺省时继承上游 scope,非法值或冲突的多个值必须停止。
21
- - [ ] 从 Product Requirement 继承 `requirement_id`、`project_root` 和输出目录;显式 target 必须是上游 scope 的子集,只校验和分析选中故事。
22
- - [ ] 在代码侦察前明确回显“分析范围:frontend | backend | both”;新增产物的 `analysis_scope` 必须等于该归一化 target,后续不得自动扩大范围。
23
- - [ ] 门禁失败时只生成 blocked Dependency Analysis,不伪造 API 或代码落点。
24
- - [ ] Step 1:完整代码侦察 ⚠️ REQUIRED
25
- - [ ] 读取 `references/scouting-rules.md`。
26
- - [ ] 逐个读取选中故事及其同 ID 输出规范和 AC,再定位入口、调用链、状态、类型、数据、权限、错误、日志和测试;`frontend` 不分析 `BE-US-*`,`backend` 不分析 `FE-US-*`。
27
- - [ ] 区分 confirmed、inferred、unknown,并为每项结论提供证据。
28
- - [ ] Step 2:判断 API 适用性 ⚠️ REQUIRED
29
- - [ ] 只要一个选中的 `BE-US-*` 触发方式为 API,就必须生成 API 文档。
30
- - [ ] target 为 `frontend` 时不读取或分析后端故事,不生成 API 文档或 API 实现映射。
31
- - [ ] 定时任务、事件、消息、数据迁移或纯内部调用且不形成 HTTP 契约时,不生成空 API 文档。
32
- - [ ] 无 API 时 Dependency Analysis 使用 `source_api_documentation: none`,API 实现映射明确写不适用。
33
- - [ ] Step 3:建立 Canonical API Model ⚠️ REQUIRED
34
- - [ ] API 场景读取 `references/api-documentation-schema.md`。
35
- - [ ] 结合 Product Requirement 的业务契约与仓库现有 API 规范,确定方法、路径、参数、响应、错误、Schema、分页、示例和代码落点。API 文档不输出认证方式或权限要求。
36
- - [ ] 定义接口字段前,先搜索共享 DTO/Schema、OpenAPI components、统一响应和分页模型;命中时直接复用,不重复定义,不在 API 文档中输出搜索过程或“复用检查”。
37
- - [ ] 定义返回 code 前,先搜索全局错误枚举、code 映射和错误响应外壳;命中时直接复用,仅未命中时才定义局部 code,不在 API 文档中输出搜索过程或“复用检查”。
38
- - [ ] 分页接口将每页条数参数定义为可选,可选值必须完整包含 `10`、`20`、`50`、`100`;默认值仅在 Product Requirement 或仓库通用分页定义明确时写入。
39
- - [ ] 产品需求优先于现状;业务语义缺失时阻断,不由本 skill 发明产品决策。
40
- - [ ] API 文档只保留 HTTP 契约、字段、响应、错误与分页参数;完全移除认证方式、权限要求、业务规则、处理流程、分支逻辑、数据读写逻辑和实现算法及其相关内容。
41
- - [ ] API 文档与依赖分析必须从同一模型渲染。
42
- - [ ] Step 4:生成产物 ⚠️ REQUIRED
43
- - [ ] 读取 `references/dependency-analysis-schema.md`。
44
- - [ ] API 场景先写 Swagger 风格 Markdown `api-documentation.md`,再写 `dependency-analysis.md`。
45
- - [ ] `frontend` 产物只包含前端故事覆盖和前端依赖详情;`backend` 只包含后端故事覆盖、后端依赖详情和适用的 API 映射;`both` 才包含两端。
46
- - [ ] `影响文件` 是每个故事的完整权威文件清单,使用 `F1`、`F2` 编号和 add/modify/reuse;其他落点字段引用这些编号,不重复完整路径。
47
- - [ ] Dependency 的 API 实现映射只保留 API ID、Operation ID、方法路径和代码入口,不复制故事、AC 或完整接口文档。
48
- - [ ] 所有新增产物与 Product Requirement 使用相同 `requirement_id`,同目录引用使用 `./文件名`。
49
- - [ ] Step 5:验证并交付 ⛔ BLOCKING
50
- - [ ] Product Requirement 输入校验必须通过。
51
- - [ ] 向 Product Requirement、Dependency 和适用的 API 校验器传入归一化 target;API 场景运行 API 和 Dependency 两个校验器,非 API 场景只运行 Dependency 校验器。
52
- - [ ] 覆盖矩阵承担全局追溯,不生成重复的文末追溯汇总。
53
- - [ ] 运行 validator matrix,修复全部错误后再声明完成。
54
-
55
- 完整示例按需读取 `references/example.md`;维护或 forward-test 时读取 `references/forward-test-cases.md`。
56
-
57
- ## Validation
58
-
59
- ```bash
60
- node <skill-root>/scripts/validate-product-requirement-input.mjs <product-requirement.md> --target <frontend|backend|both>
61
- node <skill-root>/scripts/validate-api-documentation.mjs <product-requirement.md> <api-documentation.md> --target <backend|both>
62
- node <skill-root>/scripts/validate-dependency-analysis.mjs <product-requirement.md> <dependency-analysis.md> [api-documentation.md] --target <frontend|backend|both>
63
- node <skill-root>/scripts/test-validators.mjs
64
- ```
65
-
66
- 非 API 场景省略 API 校验器和 Dependency 校验命令的第三个参数。
67
- 缺少 Product Requirement 的 blocked 场景使用 `none` 作为 Dependency 校验命令的第一个参数。
1
+ ---
2
+ name: analyze-product-dependencies
3
+ description: 基于 complete Product Requirement 探索代码库,按 frontend、backend 或 both 范围将故事、输出规范和验收标准映射到真实文件、组件、服务、数据、权限与证据,并仅为 API 型后端故事生成精简 Swagger 风格 Markdown API 文档。用于代码影响分析、依赖分析、API 文档或需求到代码映射。
4
+ ---
5
+
6
+ # Analyze Product Dependencies
7
+
8
+ IRON LAW:`product-requirement.md` 是唯一需求事实源。不得从原始需求、Product Analysis、Clarification 或聊天重新解释需求,不得修改代码或上游产物。
9
+
10
+ ## 输入与产物
11
+
12
+ - 必填:complete `product-requirement.md` 的实际路径和可读取代码仓库路径;Product Requirement 必须位于项目根的需求目录。
13
+ - 可选:`target=frontend|backend|both` 或 `--target frontend|backend|both`;两种写法等价,默认继承上游 scope。
14
+ - 输出写回 Product Requirement 所在目录;始终生成 `dependency-analysis.md`,选中 API 型后端故事时额外生成 `api-documentation.md`。
15
+
16
+ ## Workflow
17
+
18
+ - [ ] Step 0:输入门禁 ⛔ BLOCKING
19
+ - [ ] 读取 `references/input-contract.md` 并运行 Product Requirement 输入校验器。
20
+ - [ ] 将 `target=<value>` 和 `--target <value>` 归一化为唯一 target;缺省时继承上游 scope,非法值或冲突的多个值必须停止。
21
+ - [ ] 从 Product Requirement 继承 `requirement_id`、`project_root` 和输出目录;显式 target 必须是上游 scope 的子集,只校验和分析选中故事。
22
+ - [ ] 在代码侦察前明确回显“分析范围:frontend | backend | both”;新增产物的 `analysis_scope` 必须等于该归一化 target,后续不得自动扩大范围。
23
+ - [ ] 门禁失败时只生成 blocked Dependency Analysis,不伪造 API 或代码落点。
24
+ - [ ] Step 1:完整代码侦察 ⚠️ REQUIRED
25
+ - [ ] 读取 `references/scouting-rules.md`。
26
+ - [ ] 逐个读取选中故事及其同 ID 输出规范和 AC,再定位入口、调用链、状态、类型、数据、权限、错误、日志和测试;`frontend` 不分析 `BE-US-*`,`backend` 不分析 `FE-US-*`。
27
+ - [ ] 区分 confirmed、inferred、unknown,并为每项结论提供证据。
28
+ - [ ] Step 2:判断 API 适用性 ⚠️ REQUIRED
29
+ - [ ] 只要一个选中的 `BE-US-*` 触发方式为 API,就必须生成 API 文档。
30
+ - [ ] target 为 `frontend` 时不读取或分析后端故事,不生成 API 文档或 API 实现映射。
31
+ - [ ] 定时任务、事件、消息、数据迁移或纯内部调用且不形成 HTTP 契约时,不生成空 API 文档。
32
+ - [ ] 无 API 时 Dependency Analysis 使用 `source_api_documentation: none`,API 实现映射明确写不适用。
33
+ - [ ] Step 3:建立 Canonical API Model ⚠️ REQUIRED
34
+ - [ ] API 场景读取 `references/api-documentation-schema.md`。
35
+ - [ ] 结合 Product Requirement 的业务契约与仓库现有 API 规范,确定方法、路径、参数、响应、错误、Schema、分页、示例和代码落点。API 文档不输出认证方式或权限要求。
36
+ - [ ] 定义接口字段前,先搜索共享 DTO/Schema、OpenAPI components、统一响应和分页模型;命中时直接复用,不重复定义,不在 API 文档中输出搜索过程或“复用检查”。
37
+ - [ ] 定义返回 code 前,先搜索全局错误枚举、code 映射和错误响应外壳;命中时直接复用,仅未命中时才定义局部 code,不在 API 文档中输出搜索过程或“复用检查”。
38
+ - [ ] 分页接口将每页条数参数定义为可选,可选值必须完整包含 `10`、`20`、`50`、`100`;默认值仅在 Product Requirement 或仓库通用分页定义明确时写入。
39
+ - [ ] 产品需求优先于现状;业务语义缺失时阻断,不由本 skill 发明产品决策。
40
+ - [ ] API 文档只保留 HTTP 契约、字段、响应、错误与分页参数;完全移除认证方式、权限要求、业务规则、处理流程、分支逻辑、数据读写逻辑和实现算法及其相关内容。
41
+ - [ ] API 文档与依赖分析必须从同一模型渲染。
42
+ - [ ] Step 4:生成产物 ⚠️ REQUIRED
43
+ - [ ] 读取 `references/dependency-analysis-schema.md`。
44
+ - [ ] API 场景先写 Swagger 风格 Markdown `api-documentation.md`,再写 `dependency-analysis.md`。
45
+ - [ ] `frontend` 产物只包含前端故事覆盖和前端依赖详情;`backend` 只包含后端故事覆盖、后端依赖详情和适用的 API 映射;`both` 才包含两端。
46
+ - [ ] `影响文件` 是每个故事的完整权威文件清单,使用 `F1`、`F2` 编号和 add/modify/reuse;其他落点字段引用这些编号,不重复完整路径。
47
+ - [ ] Dependency 的 API 实现映射只保留 API ID、Operation ID、方法路径和代码入口,不复制故事、AC 或完整接口文档。
48
+ - [ ] 所有新增产物与 Product Requirement 使用相同 `requirement_id`,同目录引用使用 `./文件名`。
49
+ - [ ] Step 5:验证并交付 ⛔ BLOCKING
50
+ - [ ] Product Requirement 输入校验必须通过。
51
+ - [ ] 向 Product Requirement、Dependency 和适用的 API 校验器传入归一化 target;API 场景运行 API 和 Dependency 两个校验器,非 API 场景只运行 Dependency 校验器。
52
+ - [ ] 覆盖矩阵承担全局追溯,不生成重复的文末追溯汇总。
53
+ - [ ] 运行 validator matrix,修复全部错误后再声明完成。
54
+
55
+ 完整示例按需读取 `references/example.md`;维护或 forward-test 时读取 `references/forward-test-cases.md`。
56
+
57
+ ## Validation
58
+
59
+ ```bash
60
+ node <skill-root>/scripts/validate-product-requirement-input.mjs <product-requirement.md> --target <frontend|backend|both>
61
+ node <skill-root>/scripts/validate-api-documentation.mjs <product-requirement.md> <api-documentation.md> --target <backend|both>
62
+ node <skill-root>/scripts/validate-dependency-analysis.mjs <product-requirement.md> <dependency-analysis.md> [api-documentation.md] --target <frontend|backend|both>
63
+ node <skill-root>/scripts/test-validators.mjs
64
+ ```
65
+
66
+ 非 API 场景省略 API 校验器和 Dependency 校验命令的第三个参数。
67
+ 缺少 Product Requirement 的 blocked 场景使用 `none` 作为 Dependency 校验命令的第一个参数。
@@ -1,4 +1,4 @@
1
- interface:
2
- display_name: "产品依赖分析"
3
- short_description: "把故事、输出规范和验收标准映射到真实代码与 API 文档"
4
- default_prompt: "使用 $analyze-product-dependencies 将 Product Requirement 映射到代码,并按需生成 API 文档。"
1
+ interface:
2
+ display_name: "产品依赖分析"
3
+ short_description: "把故事、输出规范和验收标准映射到真实代码与 API 文档"
4
+ default_prompt: "使用 $analyze-product-dependencies 将 Product Requirement 映射到代码,并按需生成 API 文档。"
@@ -1,30 +1,30 @@
1
- # Swagger 风格 Markdown API 文档 V3 契约
2
-
3
- 文件名固定为 `api-documentation.md`。它采用 Swagger 的信息组织方式,但不是 OpenAPI YAML。
4
-
5
- ```yaml
6
- ---
7
- artifact_version: "3.0"
8
- artifact_type: api-documentation
9
- requirement_id: <与 Product Requirement 一致>
10
- project_root: ../../..
11
- api_status: complete
12
- analysis_scope: backend | both
13
- source_product_requirement: ./product-requirement.md
14
- repository_root: ../../..
15
- ---
16
- ```
17
-
18
- 固定章节:通用约定、API 索引、API 详情、数据模型、错误码。API 索引同时承担目录和故事/AC 追溯,不生成重复汇总。API 文档中完全移除认证方式、权限要求、业务规则、业务逻辑、处理逻辑和实现逻辑及其相关内容。
19
-
20
- 通用约定包含 Base URL、统一响应结构、错误响应结构、分页约定、时间和标识符规范。不输出公共定义的搜索过程、命中证据或“复用检查”章节。
21
-
22
- 每个接口标题使用 `### API-001 名称`,随后写 Swagger 风格方法路径。固定子章节:基本信息、成功响应、错误响应。非认证请求头、Path 参数、Query 参数、Request Body 按适用性生成;URL 有模板参数时必须生成 Path 参数。字段层面只写名称、类型、必填/可空、格式、枚举、契约约束和语义,不写计算、转换、查询或分支逻辑。
23
-
24
- 基本信息只包含 Operation ID、变更类型和幂等性,不重复 API ID。API 索引包含 API ID、Method + Path、Operation ID、用户故事、AC、变更类型。
25
-
26
- 成功响应包含至少一个 2xx 和合法 JSON 示例;错误响应包含至少一个 4xx/5xx 和合法 JSON 示例。变更类型使用新增、修改、复用。
27
-
28
- 分页接口在 Query 参数中定义每页条数参数:必填性为“否”,允许值完整列为 `10 | 20 | 50 | 100`。参数名优先复用仓库现有约定,例如 `pageSize`、`page_size` 或 `limit`。只有 Product Requirement 或仓库通用分页定义明确时才写默认值,不再生成 `<100`、`=100`、`>100` 分页场景。
29
-
30
- “数据模型”只定义实际使用的 Schema 和字段;“错误码”只说明 HTTP 状态、code 和可观测的触发条件。两个章节均不新增“复用检查”,不输出公共定义搜索过程,不展开业务判定或实现逻辑。
1
+ # Swagger 风格 Markdown API 文档 V3 契约
2
+
3
+ 文件名固定为 `api-documentation.md`。它采用 Swagger 的信息组织方式,但不是 OpenAPI YAML。
4
+
5
+ ```yaml
6
+ ---
7
+ artifact_version: "3.0"
8
+ artifact_type: api-documentation
9
+ requirement_id: <与 Product Requirement 一致>
10
+ project_root: ../../..
11
+ api_status: complete
12
+ analysis_scope: backend | both
13
+ source_product_requirement: ./product-requirement.md
14
+ repository_root: ../../..
15
+ ---
16
+ ```
17
+
18
+ 固定章节:通用约定、API 索引、API 详情、数据模型、错误码。API 索引同时承担目录和故事/AC 追溯,不生成重复汇总。API 文档中完全移除认证方式、权限要求、业务规则、业务逻辑、处理逻辑和实现逻辑及其相关内容。
19
+
20
+ 通用约定包含 Base URL、统一响应结构、错误响应结构、分页约定、时间和标识符规范。不输出公共定义的搜索过程、命中证据或“复用检查”章节。
21
+
22
+ 每个接口标题使用 `### API-001 名称`,随后写 Swagger 风格方法路径。固定子章节:基本信息、成功响应、错误响应。非认证请求头、Path 参数、Query 参数、Request Body 按适用性生成;URL 有模板参数时必须生成 Path 参数。字段层面只写名称、类型、必填/可空、格式、枚举、契约约束和语义,不写计算、转换、查询或分支逻辑。
23
+
24
+ 基本信息只包含 Operation ID、变更类型和幂等性,不重复 API ID。API 索引包含 API ID、Method + Path、Operation ID、用户故事、AC、变更类型。
25
+
26
+ 成功响应包含至少一个 2xx 和合法 JSON 示例;错误响应包含至少一个 4xx/5xx 和合法 JSON 示例。变更类型使用新增、修改、复用。
27
+
28
+ 分页接口在 Query 参数中定义每页条数参数:必填性为“否”,允许值完整列为 `10 | 20 | 50 | 100`。参数名优先复用仓库现有约定,例如 `pageSize`、`page_size` 或 `limit`。只有 Product Requirement 或仓库通用分页定义明确时才写默认值,不再生成 `<100`、`=100`、`>100` 分页场景。
29
+
30
+ “数据模型”只定义实际使用的 Schema 和字段;“错误码”只说明 HTTP 状态、code 和可观测的触发条件。两个章节均不新增“复用检查”,不输出公共定义搜索过程,不展开业务判定或实现逻辑。
@@ -1,28 +1,28 @@
1
- # Dependency Analysis V3 输出契约
2
-
3
- ```yaml
4
- ---
5
- artifact_version: "3.0"
6
- artifact_type: dependency-analysis
7
- requirement_id: <与 Product Requirement 一致>
8
- project_root: ../../..
9
- analysis_scope: frontend | backend | both
10
- source_product_requirement: ./product-requirement.md | none
11
- source_api_documentation: ./api-documentation.md | none
12
- repository_root: ../../.. | none
13
- analysis_status: complete | blocked
14
- blocked_on: none | <原因列表>
15
- ---
16
- ```
17
-
18
- Complete 固定章节:输入与代码基线、用户故事覆盖矩阵、按 scope 的依赖详情、后端场景的 API 实现映射、跨故事共享依赖、风险与未定位项。覆盖矩阵承担全局追溯,不生成独立分析范围或追溯汇总。
19
-
20
- 前端详情字段:验收标准、影响文件、页面/路由、组件、状态、API client/类型、状态与边界落点、定位证据、风险、置信度。
21
-
22
- 后端详情字段:验收标准、API 文档引用、影响文件、路由/入口、Controller/Handler、Service/领域逻辑、DTO/Schema、数据依赖、权限依赖、错误/日志/审计、测试落点、定位证据、风险、置信度。
23
-
24
- `影响文件` 是完整权威清单,每项使用唯一 `F<number>`、add/modify/reuse、真实路径和用途;其他代码落点字段引用这些编号,不重复完整路径。
25
-
26
- API 实现映射只登记 API ID、Operation ID、方法路径和代码入口。无 API 时写:`不适用。本次需求不涉及 HTTP API。`
27
-
28
- Blocked 产物只含分析范围、输入与代码基线、阻断原因、恢复条件,不得包含确定性代码位置或 API 契约。
1
+ # Dependency Analysis V3 输出契约
2
+
3
+ ```yaml
4
+ ---
5
+ artifact_version: "3.0"
6
+ artifact_type: dependency-analysis
7
+ requirement_id: <与 Product Requirement 一致>
8
+ project_root: ../../..
9
+ analysis_scope: frontend | backend | both
10
+ source_product_requirement: ./product-requirement.md | none
11
+ source_api_documentation: ./api-documentation.md | none
12
+ repository_root: ../../.. | none
13
+ analysis_status: complete | blocked
14
+ blocked_on: none | <原因列表>
15
+ ---
16
+ ```
17
+
18
+ Complete 固定章节:输入与代码基线、用户故事覆盖矩阵、按 scope 的依赖详情、后端场景的 API 实现映射、跨故事共享依赖、风险与未定位项。覆盖矩阵承担全局追溯,不生成独立分析范围或追溯汇总。
19
+
20
+ 前端详情字段:验收标准、影响文件、页面/路由、组件、状态、API client/类型、状态与边界落点、定位证据、风险、置信度。
21
+
22
+ 后端详情字段:验收标准、API 文档引用、影响文件、路由/入口、Controller/Handler、Service/领域逻辑、DTO/Schema、数据依赖、权限依赖、错误/日志/审计、测试落点、定位证据、风险、置信度。
23
+
24
+ `影响文件` 是完整权威清单,每项使用唯一 `F<number>`、add/modify/reuse、真实路径和用途;其他代码落点字段引用这些编号,不重复完整路径。
25
+
26
+ API 实现映射只登记 API ID、Operation ID、方法路径和代码入口。无 API 时写:`不适用。本次需求不涉及 HTTP API。`
27
+
28
+ Blocked 产物只含分析范围、输入与代码基线、阻断原因、恢复条件,不得包含确定性代码位置或 API 契约。