scrum-skills 0.3.2 → 0.3.3

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 (384) hide show
  1. package/.agents/skills/diagram-design/LICENSE +4 -0
  2. package/.agents/skills/diagram-design/SKILL.md +413 -0
  3. package/.agents/skills/diagram-design/UPSTREAM.json +76 -0
  4. package/.agents/skills/diagram-design/UPSTREAM.md +23 -0
  5. package/.agents/skills/diagram-design/assets/example-architecture-containment.html +205 -0
  6. package/.agents/skills/diagram-design/assets/example-architecture-delta.html +193 -0
  7. package/.agents/skills/diagram-design/assets/example-architecture.html +183 -0
  8. package/.agents/skills/diagram-design/assets/example-axonometric-plan-campus.html +108 -0
  9. package/.agents/skills/diagram-design/assets/example-axonometric-plan-coffee-shop.html +121 -0
  10. package/.agents/skills/diagram-design/assets/example-axonometric-plan-warehouse.html +127 -0
  11. package/.agents/skills/diagram-design/assets/example-axonometric-plan.html +114 -0
  12. package/.agents/skills/diagram-design/assets/example-bar.html +129 -0
  13. package/.agents/skills/diagram-design/assets/example-beeswarm.html +384 -0
  14. package/.agents/skills/diagram-design/assets/example-box-plot.html +127 -0
  15. package/.agents/skills/diagram-design/assets/example-bubble.html +147 -0
  16. package/.agents/skills/diagram-design/assets/example-bump.html +142 -0
  17. package/.agents/skills/diagram-design/assets/example-data-flow.html +143 -0
  18. package/.agents/skills/diagram-design/assets/example-datalake.html +269 -0
  19. package/.agents/skills/diagram-design/assets/example-db-schema.html +302 -0
  20. package/.agents/skills/diagram-design/assets/example-dependency.html +224 -0
  21. package/.agents/skills/diagram-design/assets/example-deployment.html +190 -0
  22. package/.agents/skills/diagram-design/assets/example-dp-integration.html +81 -0
  23. package/.agents/skills/diagram-design/assets/example-dp-security-matrix.html +88 -0
  24. package/.agents/skills/diagram-design/assets/example-er.html +202 -0
  25. package/.agents/skills/diagram-design/assets/example-exploded-ai-stack.html +85 -0
  26. package/.agents/skills/diagram-design/assets/example-exploded-keyboard.html +84 -0
  27. package/.agents/skills/diagram-design/assets/example-exploded-phone.html +83 -0
  28. package/.agents/skills/diagram-design/assets/example-exploded-unboxing.html +84 -0
  29. package/.agents/skills/diagram-design/assets/example-exploded.html +83 -0
  30. package/.agents/skills/diagram-design/assets/example-fishbone.html +152 -0
  31. package/.agents/skills/diagram-design/assets/example-flowchart.html +163 -0
  32. package/.agents/skills/diagram-design/assets/example-gantt.html +137 -0
  33. package/.agents/skills/diagram-design/assets/example-heatmap.html +224 -0
  34. package/.agents/skills/diagram-design/assets/example-high-level-vertical.html +325 -0
  35. package/.agents/skills/diagram-design/assets/example-high-level.html +301 -0
  36. package/.agents/skills/diagram-design/assets/example-import-drawio.html +185 -0
  37. package/.agents/skills/diagram-design/assets/example-import-excalidraw.html +70 -0
  38. package/.agents/skills/diagram-design/assets/example-import-mermaid.html +70 -0
  39. package/.agents/skills/diagram-design/assets/example-it-state.html +128 -0
  40. package/.agents/skills/diagram-design/assets/example-journey.html +148 -0
  41. package/.agents/skills/diagram-design/assets/example-kanban.html +174 -0
  42. package/.agents/skills/diagram-design/assets/example-layers.html +123 -0
  43. package/.agents/skills/diagram-design/assets/example-line.html +111 -0
  44. package/.agents/skills/diagram-design/assets/example-loop.html +100 -0
  45. package/.agents/skills/diagram-design/assets/example-marimekko.html +148 -0
  46. package/.agents/skills/diagram-design/assets/example-medallion.html +159 -0
  47. package/.agents/skills/diagram-design/assets/example-nested.html +136 -0
  48. package/.agents/skills/diagram-design/assets/example-org-chart.html +45 -0
  49. package/.agents/skills/diagram-design/assets/example-polar.html +116 -0
  50. package/.agents/skills/diagram-design/assets/example-process.html +64 -0
  51. package/.agents/skills/diagram-design/assets/example-pyramid.html +119 -0
  52. package/.agents/skills/diagram-design/assets/example-quadrant-consultant.html +166 -0
  53. package/.agents/skills/diagram-design/assets/example-quadrant.html +135 -0
  54. package/.agents/skills/diagram-design/assets/example-radar.html +139 -0
  55. package/.agents/skills/diagram-design/assets/example-ridgeline.html +104 -0
  56. package/.agents/skills/diagram-design/assets/example-sankey.html +150 -0
  57. package/.agents/skills/diagram-design/assets/example-scatter.html +141 -0
  58. package/.agents/skills/diagram-design/assets/example-sequence-oauth.html +227 -0
  59. package/.agents/skills/diagram-design/assets/example-sequence.html +222 -0
  60. package/.agents/skills/diagram-design/assets/example-service-blueprint.html +185 -0
  61. package/.agents/skills/diagram-design/assets/example-slopegraph.html +119 -0
  62. package/.agents/skills/diagram-design/assets/example-state-lifecycle.html +92 -0
  63. package/.agents/skills/diagram-design/assets/example-state.html +147 -0
  64. package/.agents/skills/diagram-design/assets/example-story-map.html +184 -0
  65. package/.agents/skills/diagram-design/assets/example-streamgraph.html +99 -0
  66. package/.agents/skills/diagram-design/assets/example-swimlane.html +172 -0
  67. package/.agents/skills/diagram-design/assets/example-timeline.html +135 -0
  68. package/.agents/skills/diagram-design/assets/example-tree-block-decomposition.html +151 -0
  69. package/.agents/skills/diagram-design/assets/example-tree.html +173 -0
  70. package/.agents/skills/diagram-design/assets/example-treemap.html +107 -0
  71. package/.agents/skills/diagram-design/assets/example-uml-class.html +188 -0
  72. package/.agents/skills/diagram-design/assets/example-venn.html +110 -0
  73. package/.agents/skills/diagram-design/assets/example-wardley.html +153 -0
  74. package/.agents/skills/diagram-design/assets/example-waterfall.html +129 -0
  75. package/.agents/skills/diagram-design/assets/template-dark.html +99 -0
  76. package/.agents/skills/diagram-design/assets/template-full.html +421 -0
  77. package/.agents/skills/diagram-design/assets/template-motion.html +448 -0
  78. package/.agents/skills/diagram-design/assets/template-terminal.html +188 -0
  79. package/.agents/skills/diagram-design/assets/template.html +100 -0
  80. package/.agents/skills/diagram-design/references/animation.md +143 -0
  81. package/.agents/skills/diagram-design/references/export-registry.md +78 -0
  82. package/.agents/skills/diagram-design/references/export.md +376 -0
  83. package/.agents/skills/diagram-design/references/import-drawio.md +181 -0
  84. package/.agents/skills/diagram-design/references/import-excalidraw.md +130 -0
  85. package/.agents/skills/diagram-design/references/import-mermaid.md +137 -0
  86. package/.agents/skills/diagram-design/references/layout-budget.md +97 -0
  87. package/.agents/skills/diagram-design/references/onboarding.md +368 -0
  88. package/.agents/skills/diagram-design/references/output-spec.md +277 -0
  89. package/.agents/skills/diagram-design/references/primitive-annotation.md +36 -0
  90. package/.agents/skills/diagram-design/references/primitive-icons.md +827 -0
  91. package/.agents/skills/diagram-design/references/primitive-sketchy.md +43 -0
  92. package/.agents/skills/diagram-design/references/primitive-terminal.md +76 -0
  93. package/.agents/skills/diagram-design/references/primitives-core.md +146 -0
  94. package/.agents/skills/diagram-design/references/profiles.md +183 -0
  95. package/.agents/skills/diagram-design/references/semantic-patterns.md +154 -0
  96. package/.agents/skills/diagram-design/references/style-guide.md +236 -0
  97. package/.agents/skills/diagram-design/references/style-vivid.md +148 -0
  98. package/.agents/skills/diagram-design/references/type-architecture-delta.md +143 -0
  99. package/.agents/skills/diagram-design/references/type-architecture.md +117 -0
  100. package/.agents/skills/diagram-design/references/type-axonometric-plan.md +83 -0
  101. package/.agents/skills/diagram-design/references/type-bar.md +108 -0
  102. package/.agents/skills/diagram-design/references/type-data-flow.md +371 -0
  103. package/.agents/skills/diagram-design/references/type-db-schema.md +48 -0
  104. package/.agents/skills/diagram-design/references/type-dependency.md +44 -0
  105. package/.agents/skills/diagram-design/references/type-deployment.md +45 -0
  106. package/.agents/skills/diagram-design/references/type-dp-integration.md +407 -0
  107. package/.agents/skills/diagram-design/references/type-dp-security-matrix.md +379 -0
  108. package/.agents/skills/diagram-design/references/type-er.md +25 -0
  109. package/.agents/skills/diagram-design/references/type-exploded.md +115 -0
  110. package/.agents/skills/diagram-design/references/type-fishbone.md +75 -0
  111. package/.agents/skills/diagram-design/references/type-flowchart.md +23 -0
  112. package/.agents/skills/diagram-design/references/type-gantt.md +45 -0
  113. package/.agents/skills/diagram-design/references/type-heatmap.md +80 -0
  114. package/.agents/skills/diagram-design/references/type-high-level.md +470 -0
  115. package/.agents/skills/diagram-design/references/type-it-state.md +468 -0
  116. package/.agents/skills/diagram-design/references/type-journey.md +55 -0
  117. package/.agents/skills/diagram-design/references/type-kanban.md +49 -0
  118. package/.agents/skills/diagram-design/references/type-layers.md +26 -0
  119. package/.agents/skills/diagram-design/references/type-line.md +337 -0
  120. package/.agents/skills/diagram-design/references/type-loop.md +223 -0
  121. package/.agents/skills/diagram-design/references/type-medallion.md +356 -0
  122. package/.agents/skills/diagram-design/references/type-nested.md +22 -0
  123. package/.agents/skills/diagram-design/references/type-org-chart.md +44 -0
  124. package/.agents/skills/diagram-design/references/type-polar.md +136 -0
  125. package/.agents/skills/diagram-design/references/type-process.md +490 -0
  126. package/.agents/skills/diagram-design/references/type-pyramid.md +33 -0
  127. package/.agents/skills/diagram-design/references/type-quadrant.md +81 -0
  128. package/.agents/skills/diagram-design/references/type-radar.md +82 -0
  129. package/.agents/skills/diagram-design/references/type-sankey.md +75 -0
  130. package/.agents/skills/diagram-design/references/type-scatter.md +276 -0
  131. package/.agents/skills/diagram-design/references/type-sequence.md +130 -0
  132. package/.agents/skills/diagram-design/references/type-service-blueprint.md +103 -0
  133. package/.agents/skills/diagram-design/references/type-state.md +30 -0
  134. package/.agents/skills/diagram-design/references/type-story-map.md +46 -0
  135. package/.agents/skills/diagram-design/references/type-swimlane.md +22 -0
  136. package/.agents/skills/diagram-design/references/type-timeline.md +20 -0
  137. package/.agents/skills/diagram-design/references/type-tree.md +24 -0
  138. package/.agents/skills/diagram-design/references/type-treemap.md +137 -0
  139. package/.agents/skills/diagram-design/references/type-uml-class.md +65 -0
  140. package/.agents/skills/diagram-design/references/type-venn.md +26 -0
  141. package/.agents/skills/diagram-design/references/type-wardley.md +39 -0
  142. package/.agents/skills/diagram-design/references/type-waterfall.md +75 -0
  143. package/.agents/skills/scrum-meta/SKILL.md +36 -36
  144. package/.agents/skills/scrum-planning/SKILL.md +61 -61
  145. package/.agents/skills/scrum-planning/references/schema.md +384 -336
  146. package/.agents/skills/scrum-report/SKILL.md +42 -42
  147. package/.agents/skills/scrum-sprint/SKILL.md +49 -49
  148. package/.agents/skills/scrum-tdd/SKILL.md +140 -127
  149. package/README.md +224 -201
  150. package/assets/board/200.html +1 -1
  151. package/assets/board/404.html +1 -1
  152. package/assets/board/_nuxt/1XlYaCp9.js +1 -0
  153. package/assets/board/_nuxt/4gQF_HS3.js +1 -0
  154. package/assets/board/_nuxt/5okfNy5D.js +1 -0
  155. package/assets/board/_nuxt/{Bb3Limos.js → B0C2jsdk.js} +1 -1
  156. package/assets/board/_nuxt/B1j6UC4U.js +1 -0
  157. package/assets/board/_nuxt/B3LKy6o2.js +1 -0
  158. package/assets/board/_nuxt/BAQQngAq.js +13 -0
  159. package/assets/board/_nuxt/BE6t7Q2m.js +1 -0
  160. package/assets/board/_nuxt/BLvbupFS.js +1 -0
  161. package/assets/board/_nuxt/BQgzP7ur.js +1 -0
  162. package/assets/board/_nuxt/BRZIF_wo.js +1 -0
  163. package/assets/board/_nuxt/BW3xJdEx.js +1 -0
  164. package/assets/board/_nuxt/{Cm9lkUvP.js → BY36DFyj.js} +1 -1
  165. package/assets/board/_nuxt/BZlZD94i.js +1 -0
  166. package/assets/board/_nuxt/BZvXNwev.js +3 -0
  167. package/assets/board/_nuxt/BbxmvdIF.js +1 -0
  168. package/assets/board/_nuxt/BiWrMOsL.js +1 -0
  169. package/assets/board/_nuxt/BizDeOK5.js +1 -0
  170. package/assets/board/_nuxt/BkcaOYQ_.js +95 -0
  171. package/assets/board/_nuxt/BkoKCNUY.js +1 -0
  172. package/assets/board/_nuxt/BlKmZhhF.js +1 -0
  173. package/assets/board/_nuxt/BmBpmU73.js +1 -0
  174. package/assets/board/_nuxt/BrWE0up6.js +1 -0
  175. package/assets/board/_nuxt/Bs52qkgk.js +1 -0
  176. package/assets/board/_nuxt/BtzUbHO_.js +1 -0
  177. package/assets/board/_nuxt/BuBzMkFZ.js +1 -0
  178. package/assets/board/_nuxt/Bubk0xn-.js +1 -0
  179. package/assets/board/_nuxt/BxuBMtk_.js +3 -0
  180. package/assets/board/_nuxt/By1KXXLR.js +1 -0
  181. package/assets/board/_nuxt/BygIGL69.js +2 -0
  182. package/assets/board/_nuxt/C1iO5KH3.js +1 -0
  183. package/assets/board/_nuxt/C2YPmTzt.js +1 -0
  184. package/assets/board/_nuxt/C3SpAhCW.js +1 -0
  185. package/assets/board/_nuxt/C3ZRWz5L.js +1 -0
  186. package/assets/board/_nuxt/C4WdPP6K.js +1 -0
  187. package/assets/board/_nuxt/C6o03JHe.js +1 -0
  188. package/assets/board/_nuxt/C8qB5llI.js +1 -0
  189. package/assets/board/_nuxt/C9MgRdhu.js +1 -0
  190. package/assets/board/_nuxt/CCA81-4P.js +1 -0
  191. package/assets/board/_nuxt/{D2O8Q8x9.js → CFCM18fF.js} +1 -1
  192. package/assets/board/_nuxt/CGXljzd_.js +1 -0
  193. package/assets/board/_nuxt/CI0scS-N.js +1 -0
  194. package/assets/board/_nuxt/CJs9B42o.js +1 -0
  195. package/assets/board/_nuxt/COecDWbb.js +1 -0
  196. package/assets/board/_nuxt/COmtTtfB.js +1 -0
  197. package/assets/board/_nuxt/CPYm4J_K.js +1 -0
  198. package/assets/board/_nuxt/CReA4TEB.js +3 -0
  199. package/assets/board/_nuxt/CXG7GZes.js +1 -0
  200. package/assets/board/_nuxt/CYGiZn-X.js +1 -0
  201. package/assets/board/_nuxt/CaE8VlUp.js +1 -0
  202. package/assets/board/_nuxt/CcGiNUgA.js +1 -0
  203. package/assets/board/_nuxt/Ccgv3lDj.js +1 -0
  204. package/assets/board/_nuxt/CdPGFZyy.js +1 -0
  205. package/assets/board/_nuxt/{DfR3IZN_.js → Cdf_T8Xa.js} +1 -1
  206. package/assets/board/_nuxt/CgQ30j_6.js +1 -0
  207. package/assets/board/_nuxt/ChUHb39z.js +1 -0
  208. package/assets/board/_nuxt/Ck0-FqVI.js +1 -0
  209. package/assets/board/_nuxt/CkWKLtjO.js +1 -0
  210. package/assets/board/_nuxt/Cq7hsCKB.js +1 -0
  211. package/assets/board/_nuxt/CtFknnHZ.js +1 -0
  212. package/assets/board/_nuxt/D166WVUG.js +1 -0
  213. package/assets/board/_nuxt/D4Dpzo9e.js +1 -0
  214. package/assets/board/_nuxt/D5i92OZO.js +1 -0
  215. package/assets/board/_nuxt/D6dUp4Nm.js +9 -0
  216. package/assets/board/_nuxt/DFQDFspC.js +1 -0
  217. package/assets/board/_nuxt/DHX2tw9J.js +1 -0
  218. package/assets/board/_nuxt/DJM7u8P3.js +1 -0
  219. package/assets/board/_nuxt/{BPTrRhcw.js → DLr85ebo.js} +1 -1
  220. package/assets/board/_nuxt/DOMM1wfl.js +1 -0
  221. package/assets/board/_nuxt/DU6ArlUN.js +1 -0
  222. package/assets/board/_nuxt/{B_SlFcWp.js → DUgGsde6.js} +1 -1
  223. package/assets/board/_nuxt/DV4ti-Pq.js +1 -0
  224. package/assets/board/_nuxt/DZ--fXuU.js +1 -0
  225. package/assets/board/_nuxt/D_ct-Stz.js +2 -0
  226. package/assets/board/_nuxt/DbWAComO.js +1 -0
  227. package/assets/board/_nuxt/DbwlcHAt.js +1 -0
  228. package/assets/board/_nuxt/DjzLR9Bl.js +1 -0
  229. package/assets/board/_nuxt/Dki9VkAL.js +3 -0
  230. package/assets/board/_nuxt/DlNJhOoc.js +1 -0
  231. package/assets/board/_nuxt/DqG7CtD4.js +1 -0
  232. package/assets/board/_nuxt/DqUSsCJ2.js +1 -0
  233. package/assets/board/_nuxt/Du2F4WXh.js +1 -0
  234. package/assets/board/_nuxt/DuRiEXn4.js +1 -0
  235. package/assets/board/_nuxt/DxBwVNyP.js +2 -0
  236. package/assets/board/_nuxt/DzmVW5-D.js +1 -0
  237. package/assets/board/_nuxt/I-sGtDIB.js +6 -0
  238. package/assets/board/_nuxt/JU9-x68N.js +1 -0
  239. package/assets/board/_nuxt/Lozm7hhE.js +1 -0
  240. package/assets/board/_nuxt/MMsTMkcB.js +1 -0
  241. package/assets/board/_nuxt/MS7CGmCB.js +1 -0
  242. package/assets/board/_nuxt/OKKaKILz.js +1 -0
  243. package/assets/board/_nuxt/{Csqgy925.js → P6qlvBHA.js} +1 -1
  244. package/assets/board/_nuxt/SrNUvNwO.js +1 -0
  245. package/assets/board/_nuxt/{DSaWoFHS.js → SywdkA98.js} +1 -1
  246. package/assets/board/_nuxt/TBIRpVLG.js +1 -0
  247. package/assets/board/_nuxt/TlTrMIMm.js +1 -0
  248. package/assets/board/_nuxt/Zv9-SOQF.js +1 -0
  249. package/assets/board/_nuxt/_id_.ItzoSaBL.css +1 -0
  250. package/assets/board/_nuxt/builds/latest.json +1 -1
  251. package/assets/board/_nuxt/builds/meta/2218461a-f45b-41d6-ae44-b0d2332a9511.json +1 -0
  252. package/assets/board/_nuxt/burndown.CT8fx1Ge.css +1 -0
  253. package/assets/board/_nuxt/diagrams.D1ybqBem.css +1 -0
  254. package/assets/board/_nuxt/{entry.CKHePurH.css → entry.BCuHiFgF.css} +1 -1
  255. package/assets/board/_nuxt/epics.CUeDIEa0.css +1 -0
  256. package/assets/board/_nuxt/error-404.Y9imKiDC.css +1 -0
  257. package/assets/board/_nuxt/error-500.DufSBGVC.css +1 -0
  258. package/assets/board/_nuxt/gantt.CiC2Ts1t.css +1 -0
  259. package/assets/board/_nuxt/jbri6q1p.js +1 -0
  260. package/assets/board/_nuxt/last-change.C05Vc3BF.css +1 -0
  261. package/assets/board/_nuxt/milestones.Civ3sMiQ.css +1 -0
  262. package/assets/board/_nuxt/oSJF4yHw.js +1 -0
  263. package/assets/board/_nuxt/pages.BshWbOyo.css +1 -0
  264. package/assets/board/_nuxt/q_8bxRMt.js +1 -0
  265. package/assets/board/_nuxt/tests.Ci9fBCka.css +1 -0
  266. package/assets/board/burndown/index.html +1 -1
  267. package/assets/board/diagrams/index.html +1 -0
  268. package/assets/board/epics/index.html +1 -1
  269. package/assets/board/favicon.svg +16 -16
  270. package/assets/board/gantt/index.html +1 -1
  271. package/assets/board/index.html +1 -1
  272. package/assets/board/last-change/index.html +1 -1
  273. package/assets/board/milestones/index.html +1 -1
  274. package/assets/board/tests/index.html +1 -1
  275. package/bin/scrum-skills.mjs +204 -191
  276. package/docs/ai-assistant-guide.md +1008 -1008
  277. package/package.json +42 -41
  278. package/templates/AGENTS.md +84 -74
  279. package/tools/agile-tools.mjs +510 -510
  280. package/tools/ai.mjs +464 -464
  281. package/tools/diagram-import.mjs +238 -0
  282. package/tools/diagram-lint.mjs +518 -0
  283. package/tools/diagram.mjs +299 -0
  284. package/tools/git-commit.mjs +216 -216
  285. package/tools/last-change.mjs +326 -326
  286. package/tools/projects.mjs +240 -215
  287. package/tools/serve.mjs +180 -154
  288. package/tools/validate.mjs +781 -664
  289. package/assets/board/_nuxt/1eqboJxR.js +0 -1
  290. package/assets/board/_nuxt/2K7ag6ES.js +0 -1
  291. package/assets/board/_nuxt/51OWHj8c.js +0 -2
  292. package/assets/board/_nuxt/6gFtTBwm.js +0 -1
  293. package/assets/board/_nuxt/B3jkABw9.js +0 -1
  294. package/assets/board/_nuxt/B5n2_jZN.js +0 -1
  295. package/assets/board/_nuxt/BDK2Hj7B.js +0 -1
  296. package/assets/board/_nuxt/BDcnzXHq.js +0 -1
  297. package/assets/board/_nuxt/BaG8y0Wt.js +0 -1
  298. package/assets/board/_nuxt/BbwJq5pb.js +0 -1
  299. package/assets/board/_nuxt/BgLeKwx0.js +0 -1
  300. package/assets/board/_nuxt/Bi9Axj3V.js +0 -1
  301. package/assets/board/_nuxt/BmxvtaMq.js +0 -1
  302. package/assets/board/_nuxt/BodFvto3.js +0 -1
  303. package/assets/board/_nuxt/BpWeHLuN.js +0 -1
  304. package/assets/board/_nuxt/BuOKDFiJ.js +0 -1
  305. package/assets/board/_nuxt/C40iTe-x.js +0 -1
  306. package/assets/board/_nuxt/C7K0R7F-.js +0 -2
  307. package/assets/board/_nuxt/C8vL692X.js +0 -1
  308. package/assets/board/_nuxt/C9StZL3D.js +0 -3
  309. package/assets/board/_nuxt/CGI_ZV79.js +0 -1
  310. package/assets/board/_nuxt/CJ2mz0WY.js +0 -1
  311. package/assets/board/_nuxt/CJMBJQuf.js +0 -1
  312. package/assets/board/_nuxt/CK-lOYG9.js +0 -1
  313. package/assets/board/_nuxt/CK9_veoz.js +0 -1
  314. package/assets/board/_nuxt/CLBcBrYf.js +0 -1
  315. package/assets/board/_nuxt/CMUi2-Lj.js +0 -1
  316. package/assets/board/_nuxt/COf6E6h4.js +0 -1
  317. package/assets/board/_nuxt/CPCUMJnF.js +0 -1
  318. package/assets/board/_nuxt/CPcKlmSm.js +0 -1
  319. package/assets/board/_nuxt/CQTvWh4i.js +0 -1
  320. package/assets/board/_nuxt/CSEEUF8S.js +0 -1
  321. package/assets/board/_nuxt/CSSb154I.js +0 -13
  322. package/assets/board/_nuxt/CgDTd7jS.js +0 -1
  323. package/assets/board/_nuxt/ChG76uh9.js +0 -1
  324. package/assets/board/_nuxt/Ci0qbkgh.js +0 -1
  325. package/assets/board/_nuxt/CqoQ__I_.js +0 -1
  326. package/assets/board/_nuxt/CuJUHLl8.js +0 -1
  327. package/assets/board/_nuxt/CvLiA4_O.js +0 -1
  328. package/assets/board/_nuxt/Cvs12oA0.js +0 -3
  329. package/assets/board/_nuxt/CyEXFe3V.js +0 -1
  330. package/assets/board/_nuxt/Cz6rZcLK.js +0 -1
  331. package/assets/board/_nuxt/D2FhHl1o.js +0 -1
  332. package/assets/board/_nuxt/D3YCAmfu.js +0 -1
  333. package/assets/board/_nuxt/D5CE81jK.js +0 -1
  334. package/assets/board/_nuxt/D75vbfSb.js +0 -1
  335. package/assets/board/_nuxt/D99LbGfb.js +0 -9
  336. package/assets/board/_nuxt/DEfLc7p3.js +0 -6
  337. package/assets/board/_nuxt/DF-nsa1Z.js +0 -1
  338. package/assets/board/_nuxt/DIc8yx98.js +0 -1
  339. package/assets/board/_nuxt/DLkAKotw.js +0 -1
  340. package/assets/board/_nuxt/DRPlYvb3.js +0 -1
  341. package/assets/board/_nuxt/DRlQgul3.js +0 -1
  342. package/assets/board/_nuxt/DSLbmoWa.js +0 -1
  343. package/assets/board/_nuxt/DWO9c9yp.js +0 -1
  344. package/assets/board/_nuxt/DZo3dYLJ.js +0 -3
  345. package/assets/board/_nuxt/D_S6N7_b.js +0 -1
  346. package/assets/board/_nuxt/DajA-Tkt.js +0 -1
  347. package/assets/board/_nuxt/DbHiyab-.js +0 -1
  348. package/assets/board/_nuxt/Dc7Ql6eE.js +0 -1
  349. package/assets/board/_nuxt/Dd9ZukPU.js +0 -1
  350. package/assets/board/_nuxt/Dg2LiqmN.js +0 -1
  351. package/assets/board/_nuxt/DhuleNnm.js +0 -1
  352. package/assets/board/_nuxt/DkI1Qxpp.js +0 -95
  353. package/assets/board/_nuxt/DnDHGSYI.js +0 -1
  354. package/assets/board/_nuxt/DpXJ_tCU.js +0 -1
  355. package/assets/board/_nuxt/DqZgF3hU.js +0 -1
  356. package/assets/board/_nuxt/DqcxvfbD.js +0 -1
  357. package/assets/board/_nuxt/DsA2lVci.js +0 -1
  358. package/assets/board/_nuxt/Dtsa-1NS.js +0 -1
  359. package/assets/board/_nuxt/Du91iq0p.js +0 -1
  360. package/assets/board/_nuxt/Dx1wcYFo.js +0 -1
  361. package/assets/board/_nuxt/EYTShbt4.js +0 -1
  362. package/assets/board/_nuxt/MaXJprwN.js +0 -1
  363. package/assets/board/_nuxt/P9x67aq2.js +0 -1
  364. package/assets/board/_nuxt/S08nFESZ.js +0 -3
  365. package/assets/board/_nuxt/V0uynWE2.js +0 -1
  366. package/assets/board/_nuxt/Vo4wMbnS.js +0 -1
  367. package/assets/board/_nuxt/ZVTqot-_.js +0 -1
  368. package/assets/board/_nuxt/ZngEd3HB.js +0 -1
  369. package/assets/board/_nuxt/_id_.B2NDKSlX.css +0 -1
  370. package/assets/board/_nuxt/assMu_Wn.js +0 -1
  371. package/assets/board/_nuxt/builds/meta/8e23aec9-5b67-4569-b8bf-d4f07e50ffdf.json +0 -1
  372. package/assets/board/_nuxt/burndown.Do6IbM6o.css +0 -1
  373. package/assets/board/_nuxt/epics.Dmessplu.css +0 -1
  374. package/assets/board/_nuxt/error-404.BFmXOnCT.css +0 -1
  375. package/assets/board/_nuxt/error-500.BZ-DdjQ6.css +0 -1
  376. package/assets/board/_nuxt/gantt.Dmp00GUo.css +0 -1
  377. package/assets/board/_nuxt/last-change.1Su4GrCN.css +0 -1
  378. package/assets/board/_nuxt/milestones.U0xKCsEo.css +0 -1
  379. package/assets/board/_nuxt/pages.Dbj2IVk8.css +0 -1
  380. package/assets/board/_nuxt/rlePnzpc.js +0 -1
  381. package/assets/board/_nuxt/tests.dXlUX16A.css +0 -1
  382. package/assets/board/_nuxt/uKzCKCTq.js +0 -1
  383. package/assets/board/_nuxt/vwxaNGfc.js +0 -1
  384. package/assets/board/_nuxt/yh6sf_D5.js +0 -1
@@ -0,0 +1,75 @@
1
+ # Waterfall Chart
2
+
3
+ **Best for:** showing how a start total becomes an end total through signed contributions — a budget bridge (FY25 baseline → FY26 plan), headcount deltas (starting roster ± hires ± attrition), conversion leak/gain, P&L walk. Use when the running total is the story: every bar either anchors the total or bridges one running level to the next, and the reader traces the path from start to end.
4
+
5
+ **Not this type:**
6
+
7
+ - Two endpoints where only the *gap* matters → **dumbbell** (a Bar variant, `type-bar.md`). A dumbbell states two values and their distance; a waterfall states a path of signed steps that must reconcile. The types look adjacent but make opposite claims: the dumbbell hides what happened in between, the waterfall *is* what happened in between.
8
+ - Independent category comparisons → **bar** (`type-bar.md`).
9
+ - One quantity splitting and merging across stages → **Sankey** (`type-sankey.md`). A waterfall is strictly sequential and one-dimensional; the bars never branch.
10
+ - Ordered drop-off through stages of one funnel → **pyramid / funnel** (`type-pyramid.md`).
11
+
12
+ ## Layout conventions
13
+
14
+ - **Orientation:** vertical columns only, left → right in narrative order: start total, then each signed bridge, optional subtotal, end total. A horizontal waterfall reads as a Gantt.
15
+ - **Plot area:** left 80px (y-axis labels), bottom 60px (category labels), top 40px, right 40px — inside a `0 0 1000 500` viewBox, same frame as the bar chart. Plot band x 80→960, y 40→420.
16
+ - **Bar count:** 3–8 bars total, including both totals and at most one subtotal. More contributions than that → merge the tail into one named "Other" bridge (disclose what it contains) or split the walk into two charts.
17
+ - **Bar width / pitch:** equal-width bars on an even pitch, bar ≥ 50% of the pitch. Six bars fit as width=96 on a 144px pitch starting at x=112.
18
+ - **Totals anchor, bridges float.** The start total, any subtotal, and the end total are drawn from the domain floor (the x-axis baseline) up to their value. Bridge bars span exactly the running total before and after their contribution — an increase rises from the previous level, a decrease falls from it.
19
+ - **Carry rules (the bridge grammar).** A horizontal connector line carries the running total across each gap between adjacent bars, drawn at the shared level: from the right edge of one bar to the left edge of the next, `ink @ 0.55` at 1px on light paper (`ink @ 0.40` on dark) — the dumbbell's connector weight, because the carry is load-bearing and must clear 3:1, not the 0.25 axis hairline. Each carry declares the running total it transports in `data-carry`.
20
+ - **Machine-readable data contract.** Every bar rect declares `data-role` (`total`, `delta`, or `subtotal`), `data-value` (totals unsigned, deltas explicitly signed `+`/`-`), and `data-name`. `scripts/verify-waterfall.py` reads these and fails the build when the drawing and the declaration disagree — see the honesty rules below.
21
+ - **Sign is encoded by fill weight, not hue.** Increases take the bar family's default tint (`muted @ 0.15` fill, `muted` stroke). Decreases are hollow — paper fill, same `muted` stroke — so the two directions survive greyscale and colour-vision deficiency without leaning on the accent. The geometry (which end of the bar meets the carry) and the signed printed value are the second and third encodings of the same fact.
22
+ - **Totals are the heaviest marks:** `ink @ 0.08` fill with a 1px `ink` stroke. The reader's eye should land on the two anchors first, then walk the bridges.
23
+ - **Focal bridge (≤1, optional):** the one contribution the chart exists to show gets the bar family's focal treatment — `accent @ 0.12` fill, `accent` stroke, accent value label. It replaces that bar's sign fill; the signed label and geometry still carry the direction.
24
+ - **Value labels:** `arrow-label` role 8px. Totals and increases print above the bar top (baseline `top − 8`); decreases print below the bar bottom (baseline `bottom + 12`), because the space above a decrease is where its carry arrives. Deltas print with an explicit sign (`+64`, `−38`); totals print unsigned.
25
+ - **Gridlines / axes:** identical to the bar chart — 4–6 faint horizontal gridlines `ink @ 0.08` 0.8px, y-axis line and x-axis baseline `ink @ 0.25` 1px, tick labels `arrow-label` role 8px `muted` right-aligned at x=72, rotated y-axis title `eyebrow` role 7px tracked.
26
+ - **Category labels:** centered under each bar at y=440, `node-name` role 11px 600 `ink`; the focal bar's label may take accent.
27
+ - **Legend:** horizontal bottom strip after a hairline rule, one key per treatment used: total, increase, decrease, focal.
28
+
29
+ ### Waterfall element pattern
30
+
31
+ ```svg
32
+ <!-- Start total: anchored at the baseline (y=420), value 240 on a 0–400 domain, k=0.95 px/unit -->
33
+ <rect x="112" y="192" width="96" height="228" fill="{paper}"/>
34
+ <rect x="112" y="192" width="96" height="228" fill="{ink @ 0.08}" stroke="{ink}" stroke-width="1"
35
+ data-role="total" data-value="240" data-name="FY25 base"/>
36
+ <text x="160" y="184" fill="{muted}" font-size="8" font-family="{arrow-label}" text-anchor="middle">240</text>
37
+
38
+ <!-- Carry: the running total (240) crosses the gap at its own level -->
39
+ <line x1="208" y1="192" x2="256" y2="192" stroke="{ink @ 0.55}" stroke-width="1" data-carry="240"/>
40
+
41
+ <!-- Increase bridge: +64 rises from 240 to 304 -->
42
+ <rect x="256" y="131" width="96" height="61" fill="{paper}"/>
43
+ <rect x="256" y="131" width="96" height="61" fill="{muted @ 0.15}" stroke="{muted}" stroke-width="1"
44
+ data-role="delta" data-value="+64" data-name="Headcount"/>
45
+ <text x="304" y="123" fill="{muted}" font-size="8" font-family="{arrow-label}" text-anchor="middle">+64</text>
46
+ ```
47
+
48
+ Endpoint positions round to the nearest integer pixel and never snap to the 4px grid — data coordinates are exempt, exactly as in the dumbbell. Bar x-positions and widths are layout, so they stay on the grid.
49
+
50
+ ## Anti-patterns
51
+
52
+ - **A floating bar with no carry.** The connector is the claim that the total is conserved across the gap; without it the chart is bars at odd heights.
53
+ - **Sign by hue alone** (green up / red down, or accent on every decrease). Hue is the one channel that does not survive greyscale or CVD; fill weight and geometry carry the sign here, and the accent stays editorial.
54
+ - **A truncated value axis.** The domain follows the data's range, never its observed extremes — the same rule, cases, and all-zero fallback as the dumbbell (`type-bar.md` § Dumbbell honesty rules). A waterfall on a clipped domain inflates every bridge.
55
+ - **More than one subtotal.** A walk that needs several resting points is two walks; split it.
56
+ - **Mixing units mid-walk.** Every bar is in the start total's unit or the reconciliation is fiction.
57
+ - **3-D, shadows, rounded bridge bars** — same editorial rules as every chart here.
58
+
59
+ ## Waterfall honesty rules
60
+
61
+ - **Decimal declarations conserve exactly.** Fractional budgets use exact decimal arithmetic for totals, carries, and printed-value identity; geometry retains its pixel-rounding allowance. A binary floating point accumulation error must not reject a reconciled dollar-and-cent walk, and an actual decimal discrepancy is still a failure.
62
+ - **The running total must conserve.** Start + every signed bridge = each subtotal and the end total, exactly — the declared `data-value`s must reconcile before geometry is even considered. A waterfall that doesn't add up is not approximately right, it is wrong.
63
+ - **Bridges span exactly their two running levels.** Each bar's drawn top and bottom must sit where the shared scale puts the running totals before and after it (±0.75px for integer rounding). Stretching one bridge "for legibility" moves money that doesn't exist.
64
+ - **Every carry sits at the level it transports,** spanning its full gap, and declares that value. A carry drawn at the wrong height reconnects the walk to a different total.
65
+ - **Every bar prints its value, deltas with an explicit sign.** An unsigned bridge asks the reader to infer direction from geometry alone; print `+`/`−`.
66
+ - **Zero bridges are dropped, never drawn.** A zero-height bar is invisible ink that still occupies a column; state it in prose or the source line instead.
67
+ - **A degenerate start (zero or negative total) is a named failure,** not a silently rescaled chart — the scale is derived from the start anchor.
68
+
69
+ These rules are executable: `scripts/verify-waterfall.py` reads each bar's declaration, recomputes the running totals, refits the shared scale from the start anchor, and fails on any conservation, geometry, carry, label, or sign-treatment drift. `scripts/test-verify-waterfall.py` proves both polarities — the shipped examples pass, and each mutation class above fails with a named finding.
70
+
71
+ ## Examples
72
+
73
+ - `assets/example-waterfall.html` — minimal light
74
+ - `assets/example-waterfall-dark.html` — minimal dark
75
+ - `assets/example-waterfall-full.html` — full editorial
@@ -1,36 +1,36 @@
1
- ---
2
- name: scrum-meta
3
- description: 维护与演进 .agents/skills/ 下的敏捷 skill 体系本身。当用户要求修改 skill 规则、引入外部 skill(如 superpowers)、调整工作流纪律时使用。
4
- ---
5
-
6
- # scrum-meta:skill 体系自身的演进
7
-
8
- ## 何时使用
9
-
10
- 用户要求:改某个 skill 的规则/工作流、从外部 skill 合集(superpowers、openspec 等)吸收能力、新增或删除 skill 时。
11
-
12
- ## 核心纪律(对 skill 文件本身也用敏捷的规矩)
13
-
14
- 1. **先说清动机再动手**:改 skill 前用 1~2 轮对话确认要解决的问题是什么(brainstorming 同款:一次问一个问题)。没有真实痛点不动 skill,禁止为改而改。
15
- 2. **修改必须最小且可追溯**:每个改动能回答「这解决什么问题」;改动后向用户复述改了哪些文件哪些节。
16
- 3. **引入外部 skill 前先做映射判断**:
17
- - 现有 skill(planning/sprint/tdd/report/meta)已覆盖的能力 → 不引入,说明理由即可
18
- - 有增量价值且与「数据落库、状态机、TDD」纪律兼容 → 融入对应 skill 的相应小节(不新建文件),标注出处
19
- - 需要独立工作流的才新建 skill 文件
20
- 4. **skill 不膨胀**:每个 SKILL.md 控制在可一屏读完;超了就往 references/ 拆细节。
21
- 5. **同步索引**:改动影响能力边界时,同步更新 `AGENTS.md` 的 skill 索引行和该 skill 的 frontmatter description。
22
-
23
- ## 工作流
24
-
25
- 1. 读当前各 skill + `AGENTS.md`,确认现状
26
- 2. 与用户确认动机与落点(哪个 skill 哪一节 / 新建)
27
- 3. 实施修改(局部编辑,禁止整文件重写)
28
- 4. 若修改了敏捷数据规范(schema/状态机),运行 `node tools/validate.mjs` 确认未破坏
29
- 5. 复述:改动清单 + 每项对应的动机 + 落索引情况
30
-
31
- ## 反模式(禁止)
32
-
33
- - 不经确认大改 skill 工作流
34
- - 照抄外部 skill 全文(只吸收方法,用本项目语言重写,标注出处)
35
- - 新增 skill 却不更新 AGENTS.md 索引
36
- - 把 skill 改成与本体系冲突的纪律(如允许对话结论不落库)
1
+ ---
2
+ name: scrum-meta
3
+ description: 维护与演进 .agents/skills/ 下的敏捷 skill 体系本身。当用户要求修改 skill 规则、引入外部 skill(如 superpowers)、调整工作流纪律时使用。
4
+ ---
5
+
6
+ # scrum-meta:skill 体系自身的演进
7
+
8
+ ## 何时使用
9
+
10
+ 用户要求:改某个 skill 的规则/工作流、从外部 skill 合集(superpowers、openspec 等)吸收能力、新增或删除 skill 时。
11
+
12
+ ## 核心纪律(对 skill 文件本身也用敏捷的规矩)
13
+
14
+ 1. **先说清动机再动手**:改 skill 前用 1~2 轮对话确认要解决的问题是什么(brainstorming 同款:一次问一个问题)。没有真实痛点不动 skill,禁止为改而改。
15
+ 2. **修改必须最小且可追溯**:每个改动能回答「这解决什么问题」;改动后向用户复述改了哪些文件哪些节。
16
+ 3. **引入外部 skill 前先做映射判断**:
17
+ - 现有 skill(planning/sprint/tdd/report/meta)已覆盖的能力 → 不引入,说明理由即可
18
+ - 有增量价值且与「数据落库、状态机、TDD」纪律兼容 → 融入对应 skill 的相应小节(不新建文件),标注出处
19
+ - 需要独立工作流的才新建 skill 文件
20
+ 4. **skill 不膨胀**:每个 SKILL.md 控制在可一屏读完;超了就往 references/ 拆细节。
21
+ 5. **同步索引**:改动影响能力边界时,同步更新 `AGENTS.md` 的 skill 索引行和该 skill 的 frontmatter description。
22
+
23
+ ## 工作流
24
+
25
+ 1. 读当前各 skill + `AGENTS.md`,确认现状
26
+ 2. 与用户确认动机与落点(哪个 skill 哪一节 / 新建)
27
+ 3. 实施修改(局部编辑,禁止整文件重写)
28
+ 4. 若修改了敏捷数据规范(schema/状态机),运行 `node tools/validate.mjs` 确认未破坏
29
+ 5. 复述:改动清单 + 每项对应的动机 + 落索引情况
30
+
31
+ ## 反模式(禁止)
32
+
33
+ - 不经确认大改 skill 工作流
34
+ - 照抄外部 skill 全文(只吸收方法,用本项目语言重写,标注出处)
35
+ - 新增 skill 却不更新 AGENTS.md 索引
36
+ - 把 skill 改成与本体系冲突的纪律(如允许对话结论不落库)
@@ -1,61 +1,61 @@
1
- ---
2
- name: scrum-planning
3
- description: 将用户与 AI 的需求对话约束为结构化敏捷数据(Epic/Story/Task),落库到 agile/ 目录。适用于需求澄清、故事编写、验收标准定义、任务拆解等规划场景。
4
- ---
5
-
6
- # scrum-planning:需求对话 → 结构化敏捷数据
7
-
8
- ## 何时使用
9
-
10
- 用户提出新需求、新功能、新改进,或要求澄清/拆解/评审已有需求时使用本 skill。
11
-
12
- ## 核心纪律
13
-
14
- 1. **禁止只聊天**。凡是确认要做的事,必须落成 `agile/backlog.json`(迭代/里程碑落 `agile/sprints.json`,日志落 `agile/journal.json`;schema 见 `references/schema.md`)。对话中的口头结论不算数,文件才算数。
15
- 2. **禁止凭空拆解**。写 story 前先走「澄清」流程(见下节),澄清结果写进
16
- `narrative` 和 `acceptance`,不许留在对话记录里。
17
- 3. **数据是唯一事实来源**。后续实施只读文件不读对话记忆。AI 每次接手必须先读 `agile/` 下相关 JSON,再决定下一步。
18
-
19
- ## 需求澄清(brainstorming,源自 superpowers)
20
-
21
- 在写任何 story 之前执行,把模糊想法聊成清晰需求:
22
-
23
- 1. **一次只问一个问题**,一次抛一堆问题等于没问。优先问影响验收的:这东西做完了怎么算成功?谁在用?边界在哪?
24
- 2. **不替用户做主**:澄清中给出选项和各自的代价,让用户拍板;用户的原话是最高优先级输入。
25
- 3. **至少考虑两条路**:写 story 前在内心比对过至少两种实现/拆解方案,被放弃的那条如果用户可能关心,用一句话带过取舍理由(可写进 narrative 或讨论中)。
26
- 4. **适时收敛**:问题问清了就停,不许无限澄清;宁可拆成两个 story 也不做一个大而全的。
27
- 5. **结论即时落库**:每澄清出一个结论,当场更新到对应 story JSON(`narrative`/`acceptance`/`points`),禁止聊完再统一补。
28
-
29
- ## 工作流
30
-
31
- 1. **定位层级**:判断这是 Epic(多迭代的大目标)还是 Story(一个迭代内可交付的用户价值)。拿不准就先建 Epic,Story 留空壳。
32
- 2. **写 Story**:
33
- - `narrative` 必须是「作为 X,我想要 Y,以便 Z」三段式
34
- - `type`:`feature` / `bug` / `debt` / `spike`;`bug` 必须同时写 `bug` 三件套(severity / environment / steps),说不出复现步骤的就还不是 bug
35
- - `priority`(P0~P3)+ `value`:`value / points` 就是 WSJF,用来回答「下一个迭代先做谁」
36
- - `acceptance` 至少 1 条,用 given/when/then 格式,必须可验证;每条都要写 `verifyBy` 指向覆盖它的 task(否则验收只是口号)
37
- - `points` 按斐波那契估(1/2/3/5/8),不确定就标 8 并在下次规划重估
38
- - 有前置故事就写 `dependsOn`(不许成环);当下被卡住就写 `blocked: { reason, since }`,不要只在对话里提
39
- 3. **拆 Task**:每个 story 拆成 test/impl/refactor/chore 型任务:
40
- - **test 型任务先行**:每条可自动验证的 acceptance 至少对应一个 test 型 task
41
- - test 与 impl 分开拆,不许一个 task 既写测试又写实现
42
- - 每个 task 在 `agile/journal.json` 的 `journals` 里占一条 `entries: []` 的空壳记录
43
- - 故事若要在甘特图上显示计划排期,补 `schedule: { start, end }`(可选,不填就落「未排期」)
44
- 4. **编号**:取当前最大编号 +1,`E-001` / `S-001` / `M-001` 格式,不复用已删除编号;迭代 id 另见 `references/schema.md` 的「迭代编号规则」。
45
- 5. **落库后**:向用户复述 story id 与验收标准清单,运行 `node tools/validate.mjs` 确认通过。
46
-
47
- ## 输出模板(对话中的回复结构)
48
-
49
- 1. 一句话结论(做了什么、为什么)
50
- 2. 新建/修改的文件清单
51
- 3. 验收标准逐条列出请用户确认
52
- 4. 校验结果
53
-
54
- ## 反模式(禁止)
55
-
56
- - 只在对话里描述需求,不落文件
57
- - acceptance 写「功能正常」「体验良好」这类不可验证的空话
58
- - 把 test 和 impl 塞进同一个 task
59
- - 修改 story 时不更新 acceptance 却改了行为(验收标准必须与实现同步演进)
60
- - 只写 `priority` 不写 `value`(或反过来)—— 没有 WSJF 就没法回答「先做谁」
61
- - 用 narrative 描述依赖/阻塞,而不写 `dependsOn` / `blocked`(看板和甘特图读不到,等于没记)
1
+ ---
2
+ name: scrum-planning
3
+ description: 将用户与 AI 的需求对话约束为结构化敏捷数据(Epic/Story/Task),落库到 agile/ 目录。适用于需求澄清、故事编写、验收标准定义、任务拆解等规划场景。
4
+ ---
5
+
6
+ # scrum-planning:需求对话 → 结构化敏捷数据
7
+
8
+ ## 何时使用
9
+
10
+ 用户提出新需求、新功能、新改进,或要求澄清/拆解/评审已有需求时使用本 skill。
11
+
12
+ ## 核心纪律
13
+
14
+ 1. **禁止只聊天**。凡是确认要做的事,必须落成 `agile/backlog.json`(迭代/里程碑落 `agile/sprints.json`,日志落 `agile/journal.json`;schema 见 `references/schema.md`)。对话中的口头结论不算数,文件才算数。
15
+ 2. **禁止凭空拆解**。写 story 前先走「澄清」流程(见下节),澄清结果写进
16
+ `narrative` 和 `acceptance`,不许留在对话记录里。
17
+ 3. **数据是唯一事实来源**。后续实施只读文件不读对话记忆。AI 每次接手必须先读 `agile/` 下相关 JSON,再决定下一步。
18
+
19
+ ## 需求澄清(brainstorming,源自 superpowers)
20
+
21
+ 在写任何 story 之前执行,把模糊想法聊成清晰需求:
22
+
23
+ 1. **一次只问一个问题**,一次抛一堆问题等于没问。优先问影响验收的:这东西做完了怎么算成功?谁在用?边界在哪?
24
+ 2. **不替用户做主**:澄清中给出选项和各自的代价,让用户拍板;用户的原话是最高优先级输入。
25
+ 3. **至少考虑两条路**:写 story 前在内心比对过至少两种实现/拆解方案,被放弃的那条如果用户可能关心,用一句话带过取舍理由(可写进 narrative 或讨论中)。
26
+ 4. **适时收敛**:问题问清了就停,不许无限澄清;宁可拆成两个 story 也不做一个大而全的。
27
+ 5. **结论即时落库**:每澄清出一个结论,当场更新到对应 story JSON(`narrative`/`acceptance`/`points`),禁止聊完再统一补。
28
+
29
+ ## 工作流
30
+
31
+ 1. **定位层级**:判断这是 Epic(多迭代的大目标)还是 Story(一个迭代内可交付的用户价值)。拿不准就先建 Epic,Story 留空壳。
32
+ 2. **写 Story**:
33
+ - `narrative` 必须是「作为 X,我想要 Y,以便 Z」三段式
34
+ - `type`:`feature` / `bug` / `debt` / `spike`;`bug` 必须同时写 `bug` 三件套(severity / environment / steps),说不出复现步骤的就还不是 bug
35
+ - `priority`(P0~P3)+ `value`:`value / points` 就是 WSJF,用来回答「下一个迭代先做谁」
36
+ - `acceptance` 至少 1 条,用 given/when/then 格式,必须可验证;每条都要写 `verifyBy` 指向覆盖它的 task(否则验收只是口号)
37
+ - `points` 按斐波那契估(1/2/3/5/8),不确定就标 8 并在下次规划重估
38
+ - 有前置故事就写 `dependsOn`(不许成环);当下被卡住就写 `blocked: { reason, since }`,不要只在对话里提
39
+ 3. **拆 Task**:每个 story 拆成 test/impl/refactor/chore 型任务:
40
+ - **test 型任务先行**:每条可自动验证的 acceptance 至少对应一个 test 型 task
41
+ - test 与 impl 分开拆,不许一个 task 既写测试又写实现
42
+ - 每个 task 在 `agile/journal.json` 的 `journals` 里占一条 `entries: []` 的空壳记录
43
+ - 故事若要在甘特图上显示计划排期,补 `schedule: { start, end }`(可选,不填就落「未排期」)
44
+ 4. **编号**:取当前最大编号 +1,`E-001` / `S-001` / `M-001` 格式,不复用已删除编号;迭代 id 另见 `references/schema.md` 的「迭代编号规则」。
45
+ 5. **落库后**:向用户复述 story id 与验收标准清单,运行 `node tools/validate.mjs` 确认通过。
46
+
47
+ ## 输出模板(对话中的回复结构)
48
+
49
+ 1. 一句话结论(做了什么、为什么)
50
+ 2. 新建/修改的文件清单
51
+ 3. 验收标准逐条列出请用户确认
52
+ 4. 校验结果
53
+
54
+ ## 反模式(禁止)
55
+
56
+ - 只在对话里描述需求,不落文件
57
+ - acceptance 写「功能正常」「体验良好」这类不可验证的空话
58
+ - 把 test 和 impl 塞进同一个 task
59
+ - 修改 story 时不更新 acceptance 却改了行为(验收标准必须与实现同步演进)
60
+ - 只写 `priority` 不写 `value`(或反过来)—— 没有 WSJF 就没法回答「先做谁」
61
+ - 用 narrative 描述依赖/阻塞,而不写 `dependsOn` / `blocked`(看板和甘特图读不到,等于没记)