@pennyfarthing/core 10.1.0 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/README.md +13 -18
  2. package/package.json +3 -1
  3. package/packages/core/dist/cli/commands/doctor-file-layout.test.js.map +1 -1
  4. package/packages/core/dist/cli/commands/doctor-legacy.test.js +24 -0
  5. package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
  6. package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
  7. package/packages/core/dist/cli/commands/doctor.js +101 -15
  8. package/packages/core/dist/cli/commands/doctor.js.map +1 -1
  9. package/packages/core/dist/cli/commands/e2e-fresh-install.test.js +1 -1
  10. package/packages/core/dist/cli/commands/e2e-fresh-install.test.js.map +1 -1
  11. package/packages/core/dist/cli/commands/e2e-upgrade.test.js +1 -1
  12. package/packages/core/dist/cli/commands/e2e-upgrade.test.js.map +1 -1
  13. package/packages/core/dist/cli/commands/hooks-consolidation.test.js +2 -2
  14. package/packages/core/dist/cli/commands/hooks-consolidation.test.js.map +1 -1
  15. package/packages/core/dist/cli/commands/init-consolidation.test.js.map +1 -1
  16. package/packages/core/dist/cli/commands/uninstall.d.ts.map +1 -1
  17. package/packages/core/dist/cli/commands/uninstall.js +24 -13
  18. package/packages/core/dist/cli/commands/uninstall.js.map +1 -1
  19. package/packages/core/dist/cli/commands/update-consolidation.test.js +0 -10
  20. package/packages/core/dist/cli/commands/update-consolidation.test.js.map +1 -1
  21. package/packages/core/dist/cli/commands/update.js.map +1 -1
  22. package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
  23. package/packages/core/dist/cli/theme-maker.test.js +64 -115
  24. package/packages/core/dist/cli/theme-maker.test.js.map +1 -1
  25. package/packages/core/dist/index.d.ts +1 -1
  26. package/packages/core/dist/index.d.ts.map +1 -1
  27. package/packages/core/dist/index.js +2 -2
  28. package/packages/core/dist/index.js.map +1 -1
  29. package/packages/core/dist/plugins/plugin-discovery.d.ts +116 -0
  30. package/packages/core/dist/plugins/plugin-discovery.d.ts.map +1 -0
  31. package/packages/core/dist/plugins/plugin-discovery.js +165 -0
  32. package/packages/core/dist/plugins/plugin-discovery.js.map +1 -0
  33. package/packages/core/dist/plugins/plugin-discovery.test.d.ts +22 -0
  34. package/packages/core/dist/plugins/plugin-discovery.test.d.ts.map +1 -0
  35. package/packages/core/dist/plugins/plugin-discovery.test.js +498 -0
  36. package/packages/core/dist/plugins/plugin-discovery.test.js.map +1 -0
  37. package/packages/core/dist/scripts/generate-spider-report.js.map +1 -1
  38. package/packages/core/dist/workflow/context-watch.d.ts +80 -0
  39. package/packages/core/dist/workflow/context-watch.d.ts.map +1 -0
  40. package/packages/core/dist/workflow/context-watch.js +235 -0
  41. package/packages/core/dist/workflow/context-watch.js.map +1 -0
  42. package/packages/core/dist/workflow/context-watch.test.d.ts +1 -0
  43. package/packages/core/dist/workflow/context-watch.test.d.ts.map +1 -0
  44. package/packages/core/dist/workflow/context-watch.test.js +746 -0
  45. package/packages/core/dist/workflow/context-watch.test.js.map +1 -0
  46. package/packages/core/dist/workflow/file-watch.d.ts +82 -0
  47. package/packages/core/dist/workflow/file-watch.d.ts.map +1 -0
  48. package/packages/core/dist/workflow/file-watch.js +198 -0
  49. package/packages/core/dist/workflow/file-watch.js.map +1 -0
  50. package/packages/core/dist/workflow/file-watch.test.d.ts +21 -0
  51. package/packages/core/dist/workflow/file-watch.test.d.ts.map +1 -0
  52. package/packages/core/dist/workflow/file-watch.test.js +469 -0
  53. package/packages/core/dist/workflow/file-watch.test.js.map +1 -0
  54. package/packages/core/dist/workflow/observation-writer.d.ts +79 -0
  55. package/packages/core/dist/workflow/observation-writer.d.ts.map +1 -0
  56. package/packages/core/dist/workflow/observation-writer.js +97 -0
  57. package/packages/core/dist/workflow/observation-writer.js.map +1 -0
  58. package/packages/core/dist/workflow/observation-writer.test.d.ts +18 -0
  59. package/packages/core/dist/workflow/observation-writer.test.d.ts.map +1 -0
  60. package/packages/core/dist/workflow/observation-writer.test.js +424 -0
  61. package/packages/core/dist/workflow/observation-writer.test.js.map +1 -0
  62. package/packages/core/dist/workflow/story-workflow-routing.test.js +4 -2
  63. package/packages/core/dist/workflow/story-workflow-routing.test.js.map +1 -1
  64. package/packages/core/dist/workflow/tandem-lifecycle.d.ts +117 -0
  65. package/packages/core/dist/workflow/tandem-lifecycle.d.ts.map +1 -0
  66. package/packages/core/dist/workflow/tandem-lifecycle.js +186 -0
  67. package/packages/core/dist/workflow/tandem-lifecycle.js.map +1 -0
  68. package/packages/core/dist/workflow/tandem-lifecycle.test.d.ts +16 -0
  69. package/packages/core/dist/workflow/tandem-lifecycle.test.d.ts.map +1 -0
  70. package/packages/core/dist/workflow/tandem-lifecycle.test.js +531 -0
  71. package/packages/core/dist/workflow/tandem-lifecycle.test.js.map +1 -0
  72. package/packages/core/dist/workflow/tool-watch.d.ts +68 -0
  73. package/packages/core/dist/workflow/tool-watch.d.ts.map +1 -0
  74. package/packages/core/dist/workflow/tool-watch.js +166 -0
  75. package/packages/core/dist/workflow/tool-watch.js.map +1 -0
  76. package/packages/core/dist/workflow/tool-watch.test.d.ts +18 -0
  77. package/packages/core/dist/workflow/tool-watch.test.d.ts.map +1 -0
  78. package/packages/core/dist/workflow/tool-watch.test.js +718 -0
  79. package/packages/core/dist/workflow/tool-watch.test.js.map +1 -0
  80. package/packages/core/dist/workflow/workflow-migration.test.js +8 -4
  81. package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
  82. package/packages/core/dist/workflow/workflow-schema.d.ts +7 -0
  83. package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
  84. package/packages/core/dist/workflow/workflow-schema.js +44 -0
  85. package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
  86. package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +1 -1
  87. package/packages/core/dist/workflow/workflow-schema.test.js +192 -0
  88. package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -1
  89. package/pennyfarthing-dist/agents/handoff.md +18 -3
  90. package/pennyfarthing-dist/agents/sm-finish.md +1 -1
  91. package/pennyfarthing-dist/agents/sm-handoff.md +27 -4
  92. package/pennyfarthing-dist/agents/sm.md +11 -5
  93. package/pennyfarthing-dist/agents/tandem-backseat.md +119 -0
  94. package/pennyfarthing-dist/commands/setup.md +4 -0
  95. package/pennyfarthing-dist/guides/agent-behavior.md +62 -6
  96. package/pennyfarthing-dist/guides/bikelane.md +3 -2
  97. package/pennyfarthing-dist/guides/scale-levels.md +4 -6
  98. package/pennyfarthing-dist/guides/tandem-protocol.md +158 -0
  99. package/pennyfarthing-dist/personas/themes/discworld.yaml +1 -1
  100. package/pennyfarthing-dist/personas/themes/fifth-element.yaml +295 -0
  101. package/pennyfarthing-dist/scripts/README.md +1 -1
  102. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +131 -54
  103. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +20 -10
  104. package/pennyfarthing-dist/scripts/misc/statusline.sh +50 -8
  105. package/pennyfarthing-dist/scripts/workflow/README.md +2 -2
  106. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +10 -189
  107. package/pennyfarthing-dist/skills/skill-registry.schema.json +8 -0
  108. package/pennyfarthing-dist/skills/skill-registry.yaml +1 -1
  109. package/pennyfarthing-dist/skills/sprint/skill.md +25 -2
  110. package/pennyfarthing-dist/skills/workflow/skill.md +24 -1
  111. package/pennyfarthing-dist/workflows/architecture/workflow.yaml +65 -0
  112. package/pennyfarthing-dist/workflows/bdd-tandem.yaml +70 -0
  113. package/pennyfarthing-dist/workflows/tdd-tandem.yaml +61 -0
  114. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  115. package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
  116. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  117. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  118. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  119. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  120. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  121. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  122. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  123. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  124. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  125. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  126. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  127. package/pennyfarthing_scripts/bellmode_hook.py +202 -47
  128. package/pennyfarthing_scripts/brownfield/__init__.py +6 -6
  129. package/pennyfarthing_scripts/brownfield/__main__.py +1 -0
  130. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  131. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  132. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  133. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  134. package/pennyfarthing_scripts/brownfield/cli.py +0 -1
  135. package/pennyfarthing_scripts/brownfield/discover.py +1 -2
  136. package/pennyfarthing_scripts/cli.py +11 -6
  137. package/pennyfarthing_scripts/codemarkers/__init__.py +5 -1
  138. package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
  139. package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
  140. package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
  141. package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
  142. package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
  143. package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
  144. package/pennyfarthing_scripts/codemarkers/analyze.py +177 -2
  145. package/pennyfarthing_scripts/codemarkers/cli.py +50 -0
  146. package/pennyfarthing_scripts/codemarkers/formatters.py +0 -1
  147. package/pennyfarthing_scripts/codemarkers/models.py +15 -0
  148. package/pennyfarthing_scripts/common/__init__.py +8 -9
  149. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  150. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  151. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  152. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  153. package/pennyfarthing_scripts/common/config.py +1 -1
  154. package/pennyfarthing_scripts/complexity/__init__.py +1 -1
  155. package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
  156. package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
  157. package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
  158. package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
  159. package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
  160. package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
  161. package/pennyfarthing_scripts/complexity/analyze.py +1 -1
  162. package/pennyfarthing_scripts/complexity/cli.py +5 -1
  163. package/pennyfarthing_scripts/complexity/formatters.py +1 -1
  164. package/pennyfarthing_scripts/context.py +14 -15
  165. package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
  166. package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
  167. package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
  168. package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
  169. package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
  170. package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
  171. package/pennyfarthing_scripts/deadcode/analyze.py +3 -4
  172. package/pennyfarthing_scripts/deadcode/cli.py +2 -2
  173. package/pennyfarthing_scripts/dependencies/__init__.py +2 -2
  174. package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
  175. package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
  176. package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
  177. package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
  178. package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
  179. package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
  180. package/pennyfarthing_scripts/dependencies/analyze.py +1 -1
  181. package/pennyfarthing_scripts/dependencies/cli.py +8 -4
  182. package/pennyfarthing_scripts/dependencies/formatters.py +1 -1
  183. package/pennyfarthing_scripts/git/__init__.py +5 -5
  184. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  185. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  186. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  187. package/pennyfarthing_scripts/git/create_branches.py +3 -2
  188. package/pennyfarthing_scripts/git/status_all.py +1 -1
  189. package/pennyfarthing_scripts/healthscore/__init__.py +2 -2
  190. package/pennyfarthing_scripts/healthscore/__main__.py +8 -0
  191. package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  192. package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
  193. package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
  194. package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
  195. package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
  196. package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
  197. package/pennyfarthing_scripts/healthscore/analyze.py +451 -21
  198. package/pennyfarthing_scripts/healthscore/cli.py +5 -1
  199. package/pennyfarthing_scripts/healthscore/models.py +0 -1
  200. package/pennyfarthing_scripts/hooks.py +8 -11
  201. package/pennyfarthing_scripts/hotspots/__init__.py +6 -6
  202. package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
  203. package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
  204. package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  205. package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  206. package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
  207. package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
  208. package/pennyfarthing_scripts/hotspots/analyze.py +128 -14
  209. package/pennyfarthing_scripts/hotspots/cli.py +2 -2
  210. package/pennyfarthing_scripts/hotspots/models.py +0 -1
  211. package/pennyfarthing_scripts/jira/__init__.py +15 -17
  212. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  213. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  214. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  215. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  216. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  217. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  218. package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
  219. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  220. package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
  221. package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  222. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  223. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  224. package/pennyfarthing_scripts/jira/bidirectional.py +2 -3
  225. package/pennyfarthing_scripts/jira/claim.py +21 -0
  226. package/pennyfarthing_scripts/jira/cli.py +2 -2
  227. package/pennyfarthing_scripts/jira/client.py +4 -4
  228. package/pennyfarthing_scripts/jira/create.py +45 -1
  229. package/pennyfarthing_scripts/jira/epic.py +3 -2
  230. package/pennyfarthing_scripts/jira/reconcile.py +0 -1
  231. package/pennyfarthing_scripts/jira/story.py +2 -0
  232. package/pennyfarthing_scripts/jira/sync.py +1 -1
  233. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  234. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  235. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  236. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  237. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  238. package/pennyfarthing_scripts/migration/skill.py +0 -1
  239. package/pennyfarthing_scripts/migration/step.py +0 -1
  240. package/pennyfarthing_scripts/migration/validate.py +8 -5
  241. package/pennyfarthing_scripts/patch_mode.py +2 -2
  242. package/pennyfarthing_scripts/preflight/__init__.py +1 -1
  243. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  244. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  245. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  246. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  247. package/pennyfarthing_scripts/preflight/finish.py +0 -1
  248. package/pennyfarthing_scripts/pretooluse_hook.py +6 -7
  249. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  250. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  251. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  252. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  253. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  254. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  255. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  256. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  257. package/pennyfarthing_scripts/prime/cli.py +5 -1
  258. package/pennyfarthing_scripts/prime/loader.py +2 -3
  259. package/pennyfarthing_scripts/prime/persona.py +2 -1
  260. package/pennyfarthing_scripts/prime/tiers.py +4 -4
  261. package/pennyfarthing_scripts/schema_validation_hook.py +2 -3
  262. package/pennyfarthing_scripts/sprint/__init__.py +10 -12
  263. package/pennyfarthing_scripts/sprint/__main__.py +2 -2
  264. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  265. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  266. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  267. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  268. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  269. package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  270. package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
  271. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  272. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  273. package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
  274. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  275. package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
  276. package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  277. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  278. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  279. package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  280. package/pennyfarthing_scripts/sprint/archive.py +0 -1
  281. package/pennyfarthing_scripts/sprint/archive_epic.py +1 -4
  282. package/pennyfarthing_scripts/sprint/cli.py +34 -28
  283. package/pennyfarthing_scripts/sprint/epic_add.py +8 -1
  284. package/pennyfarthing_scripts/sprint/import_epic.py +42 -18
  285. package/pennyfarthing_scripts/sprint/loader.py +6 -0
  286. package/pennyfarthing_scripts/sprint/status.py +1 -2
  287. package/pennyfarthing_scripts/sprint/story_add.py +2 -2
  288. package/pennyfarthing_scripts/sprint/story_finish.py +3 -5
  289. package/pennyfarthing_scripts/sprint/story_update.py +11 -3
  290. package/pennyfarthing_scripts/sprint/validate_cmd.py +0 -1
  291. package/pennyfarthing_scripts/sprint/validator.py +120 -6
  292. package/pennyfarthing_scripts/sprint/work.py +1 -4
  293. package/pennyfarthing_scripts/sprint/yaml_io.py +10 -2
  294. package/pennyfarthing_scripts/story/__init__.py +14 -16
  295. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  296. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  297. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  298. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  299. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  300. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  301. package/pennyfarthing_scripts/story/size.py +0 -1
  302. package/pennyfarthing_scripts/story/template.py +0 -1
  303. package/pennyfarthing_scripts/swebench.py +1 -2
  304. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  305. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  306. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  307. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  308. package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
  309. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  310. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  311. package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
  312. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  313. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  314. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  315. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  316. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  317. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  318. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  319. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  320. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  321. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  322. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  323. package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
  324. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  325. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  326. package/pennyfarthing_scripts/tests/conftest.py +1 -2
  327. package/pennyfarthing_scripts/tests/test_brownfield.py +10 -13
  328. package/pennyfarthing_scripts/tests/test_cli_modules.py +0 -4
  329. package/pennyfarthing_scripts/tests/test_codemarkers.py +13 -8
  330. package/pennyfarthing_scripts/tests/test_common.py +9 -4
  331. package/pennyfarthing_scripts/tests/test_epic_shard_validation.py +699 -0
  332. package/pennyfarthing_scripts/tests/test_git_utils.py +10 -13
  333. package/pennyfarthing_scripts/tests/test_healthscore.py +17 -25
  334. package/pennyfarthing_scripts/tests/test_jira_package.py +0 -3
  335. package/pennyfarthing_scripts/tests/test_package_structure.py +3 -16
  336. package/pennyfarthing_scripts/tests/test_patch_mode.py +7 -11
  337. package/pennyfarthing_scripts/tests/test_prime.py +39 -21
  338. package/pennyfarthing_scripts/tests/test_sprint_package.py +3 -8
  339. package/pennyfarthing_scripts/tests/test_sprint_validator.py +53 -5
  340. package/pennyfarthing_scripts/tests/test_story_add.py +3 -7
  341. package/pennyfarthing_scripts/tests/test_story_package.py +0 -3
  342. package/pennyfarthing_scripts/tests/test_story_update.py +5 -10
  343. package/pennyfarthing_scripts/tests/test_tiers.py +18 -17
  344. package/pennyfarthing_scripts/tests/test_token_counting.py +19 -13
  345. package/pennyfarthing_scripts/tests/test_validate_cmd.py +2 -7
  346. package/pennyfarthing_scripts/tests/test_workflow_check.py +0 -2
  347. package/pennyfarthing_scripts/tests/test_yaml_io.py +0 -3
  348. package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
  349. package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
  350. package/pennyfarthing_scripts/theme/cli.py +3 -2
  351. package/pennyfarthing_scripts/validate/__init__.py +21 -0
  352. package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
  353. package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
  354. package/pennyfarthing_scripts/validate/adapters/__init__.py +0 -0
  355. package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  356. package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
  357. package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
  358. package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
  359. package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
  360. package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
  361. package/pennyfarthing_scripts/validate/adapters/agent.py +239 -0
  362. package/pennyfarthing_scripts/validate/adapters/schema.py +30 -0
  363. package/pennyfarthing_scripts/validate/adapters/skill_command.py +292 -0
  364. package/pennyfarthing_scripts/validate/adapters/sprint.py +69 -0
  365. package/pennyfarthing_scripts/validate/adapters/workflow.py +320 -0
  366. package/pennyfarthing_scripts/validate/cli.py +141 -0
  367. package/pennyfarthing_scripts/welcome_hook.py +2 -3
  368. package/pennyfarthing_scripts/workflow.py +3 -3
  369. package/scripts/README.md +3 -15
  370. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  371. package/pennyfarthing-dist/commands/benchmark.md +0 -485
  372. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  373. package/pennyfarthing-dist/commands/solo.md +0 -447
  374. package/pennyfarthing-dist/guides/benchmarks.md +0 -62
  375. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  376. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +0 -59
  377. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +0 -220
  378. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -374
  379. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -165
  380. package/pennyfarthing-dist/scripts/test/test-setup.sh +0 -337
  381. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -13
  382. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +0 -402
  383. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -97
  384. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -261
  385. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -644
  386. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -187
  387. package/pennyfarthing-dist/workflows/dev-story/checklist.md +0 -80
  388. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +0 -410
  389. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +0 -50
  390. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +0 -201
  391. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +0 -156
  392. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +0 -140
  393. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +0 -203
  394. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +0 -74
  395. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +0 -27
  396. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  397. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  398. package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
  399. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  400. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  401. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  402. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  403. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  404. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  405. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  406. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  407. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
@@ -1,50 +0,0 @@
1
- # BMAD Dev-Story Workflow - Imported for BMAD Compatibility
2
- #
3
- # This is a reference workflow imported from BMAD for compatibility with
4
- # BMAD-based projects. It is NOT a replacement for Pennyfarthing's native
5
- # TDD workflow (tdd.yaml).
6
- #
7
- # Key differences from Pennyfarthing TDD:
8
- # - Single-agent execution (Dev only)
9
- # - XML-based procedural instructions (10 steps)
10
- # - Integrated test writing within implementation flow
11
- # - Updates BMAD sprint-status.yaml format
12
- #
13
- # For Pennyfarthing projects, use tdd.yaml which provides:
14
- # - Multi-agent orchestration (SM, TEA, Dev, Reviewer)
15
- # - Phase-based workflow with handoffs
16
- # - Session file state tracking
17
- #
18
- # Source: BMAD-METHOD/src/modules/bmm/workflows/4-implementation/dev-story/
19
- # Migrated: 2026-01-21
20
-
21
- workflow:
22
- name: dev-story
23
- description: |
24
- BMAD reference workflow: Execute a story by implementing tasks/subtasks,
25
- writing tests, validating, and updating the story file per acceptance criteria.
26
- This is imported for BMAD compatibility - use tdd.yaml for Pennyfarthing projects.
27
- version: "1.0.0"
28
- type: procedural
29
- author: BMad
30
-
31
- # Primary agent for this workflow
32
- agent: dev
33
-
34
- # Instructions and validation files
35
- instructions: ./instructions.xml
36
- checklist: ./checklist.md
37
-
38
- # Variables available in instruction files
39
- variables:
40
- project_root: .
41
- story_dir: ./artifacts/stories
42
- implementation_artifacts: ./artifacts
43
- sprint_status: ./artifacts/sprint-status.yaml
44
- project_context: "**/project-context.md"
45
-
46
- # Triggers - when to suggest this workflow
47
- triggers:
48
- types: [bmad-story, bmad-dev]
49
- tags: [bmad, reference, procedural]
50
- # NOT default - TDD is the default for Pennyfarthing
@@ -1,201 +0,0 @@
1
- ---
2
- name: 'step-01-understand'
3
- description: 'Analyze the requirement delta between current state and what user wants to build'
4
-
5
- workflow_path: '{project_root}/_bmad/bmm/workflows/bmad-quick-flow/create-tech-spec'
6
- nextStepFile: './step-02-investigate.md'
7
- skipToStepFile: './step-03-generate.md'
8
- templateFile: '{workflow_path}/tech-spec-template.md'
9
- wipFile: '{implementation_artifacts}/tech-spec-wip.md'
10
- ---
11
-
12
- <purpose>
13
- Analyze the requirement delta between the current state and what the user wants to build. Establish a verifiable delta between current and target state by eliciting requirements, performing surface-level code scans, and initializing a work-in-progress technical specification document.
14
- </purpose>
15
-
16
- <instructions>
17
- Execute the sequence of instructions in order: Check for existing WIP (with recovery menu), greet user and gather initial request, perform quick orient scan, ask informed questions based on findings, capture core understanding with user confirmation, initialize WIP file with template and metadata, and present checkpoint menu for next steps (Advanced Elicitation, Continue, or Party Mode).
18
- </instructions>
19
-
20
- <output>
21
- WIP file initialized at {wipFile} with captured metadata (title, slug, created date, status, stepsCompleted: [1]), Overview section with Problem Statement/Solution/Scope, and Context for Development section. User selected to continue to next step.
22
- </output>
23
-
24
- # Step 1: Analyze Requirement Delta
25
-
26
- **Progress: Step 1 of 4** - Next: Deep Investigation
27
-
28
- ## RULES:
29
-
30
- - MUST NOT skip steps.
31
- - MUST NOT optimize sequence.
32
- - MUST follow exact instructions.
33
- - MUST NOT look ahead to future steps.
34
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
35
-
36
- ## CONTEXT:
37
-
38
- - Variables from `workflow.md` are available in memory.
39
- - Focus: Define the technical requirement delta and scope.
40
- - Investigation: Perform surface-level code scans ONLY to verify the delta. Reserve deep dives into implementation consequences for Step 2.
41
- - Objective: Establish a verifiable delta between current state and target state.
42
-
43
- ## SEQUENCE OF INSTRUCTIONS
44
-
45
- ### 0. Check for Work in Progress
46
-
47
- a) **Before anything else, check if `{wipFile}` exists:**
48
-
49
- b) **IF WIP FILE EXISTS:**
50
-
51
- 1. Read the frontmatter and extract: `title`, `slug`, `stepsCompleted`
52
- 2. Calculate progress: `lastStep = max(stepsCompleted)`
53
- 3. Present to user:
54
-
55
- ```
56
- Hey {user_name}! Found a tech-spec in progress:
57
-
58
- **{title}** - Step {lastStep} of 4 complete
59
-
60
- Is this what you're here to continue?
61
-
62
- [y] Yes, pick up where I left off
63
- [n] No, archive it and start something new
64
- ```
65
-
66
- 4. **HALT and wait for user selection.**
67
-
68
- a) **Menu Handling:**
69
-
70
- - **[y] Continue existing:**
71
- - Jump directly to the appropriate step based on `stepsCompleted`:
72
- - `[1]` → Load `{nextStepFile}` (Step 2)
73
- - `[1, 2]` → Load `{skipToStepFile}` (Step 3)
74
- - `[1, 2, 3]` → Load `./step-04-review.md` (Step 4)
75
- - **[n] Archive and start fresh:**
76
- - Rename `{wipFile}` to `{implementation_artifacts}/tech-spec-{slug}-archived-{date}.md`
77
-
78
- ### 1. Greet and Ask for Initial Request
79
-
80
- a) **Greet the user briefly:**
81
-
82
- "Hey {user_name}! What are we building today?"
83
-
84
- b) **Get their initial description.** Don't ask detailed questions yet - just understand enough to know where to look.
85
-
86
- ### 2. Quick Orient Scan
87
-
88
- a) **Before asking detailed questions, do a rapid scan to understand the landscape:**
89
-
90
- b) **Check for existing context docs:**
91
-
92
- - Check `{output_folder}` and `{planning_artifacts}`for planning documents (PRD, architecture, epics, research)
93
- - Check for `**/project-context.md` - if it exists, skim for patterns and conventions
94
- - Check for any existing stories or specs related to user's request
95
-
96
- c) **If user mentioned specific code/features, do a quick scan:**
97
-
98
- - Search for relevant files/classes/functions they mentioned
99
- - Skim the structure (don't deep-dive yet - that's Step 2)
100
- - Note: tech stack, obvious patterns, file locations
101
-
102
- d) **Build mental model:**
103
-
104
- - What's the likely landscape for this feature?
105
- - What's the likely scope based on what you found?
106
- - What questions do you NOW have, informed by the code?
107
-
108
- **This scan should take < 30 seconds. Just enough to ask smart questions.**
109
-
110
- ### 3. Ask Informed Questions
111
-
112
- a) **Now ask clarifying questions - but make them INFORMED by what you found:**
113
-
114
- Instead of generic questions like "What's the scope?", ask specific ones like:
115
- - "`AuthService` handles validation in the controller — should the new field follow that pattern or move it to a dedicated validator?"
116
- - "`NavigationSidebar` component uses local state for the 'collapsed' toggle — should we stick with that or move it to the global store?"
117
- - "The epics doc mentions X - is this related?"
118
-
119
- **Adapt to {user_skill_level}.** Technical users want technical questions. Non-technical users need translation.
120
-
121
- b) **If no existing code is found:**
122
-
123
- - Ask about intended architecture, patterns, constraints
124
- - Ask what similar systems they'd like to emulate
125
-
126
- ### 4. Capture Core Understanding
127
-
128
- a) **From the conversation, extract and confirm:**
129
-
130
- - **Title**: A clear, concise name for this work
131
- - **Slug**: URL-safe version of title (lowercase, hyphens, no spaces)
132
- - **Problem Statement**: What problem are we solving?
133
- - **Solution**: High-level approach (1-2 sentences)
134
- - **In Scope**: What's included
135
- - **Out of Scope**: What's explicitly NOT included
136
-
137
- b) **Ask the user to confirm the captured understanding before proceeding.**
138
-
139
- ### 5. Initialize WIP File
140
-
141
- a) **Create the tech-spec WIP file:**
142
-
143
- 1. Copy template from `{templateFile}`
144
- 2. Write to `{wipFile}`
145
- 3. Update frontmatter with captured values:
146
- ```yaml
147
- ---
148
- title: '{title}'
149
- slug: '{slug}'
150
- created: '{date}'
151
- status: 'in-progress'
152
- stepsCompleted: [1]
153
- tech_stack: []
154
- files_to_modify: []
155
- code_patterns: []
156
- test_patterns: []
157
- ---
158
- ```
159
- 4. Fill in Overview section with Problem Statement, Solution, and Scope
160
- 5. Fill in Context for Development section with any technical preferences or constraints gathered during informed discovery.
161
- 6. Write the file
162
-
163
- b) **Report to user:**
164
-
165
- "Created: `{wipFile}`
166
-
167
- **Captured:**
168
-
169
- - Title: {title}
170
- - Problem: {problem_statement_summary}
171
- - Scope: {scope_summary}"
172
-
173
- ### 6. Present Checkpoint Menu
174
-
175
- a) **Display menu:**
176
-
177
- ```
178
- [a] Advanced Elicitation - dig deeper into requirements
179
- [c] Continue - proceed to next step
180
- [p] Party Mode - bring in other experts
181
- ```
182
-
183
- b) **HALT and wait for user selection.**
184
-
185
- #### Menu Handling:
186
-
187
- - **[a]**: Load and execute `{advanced_elicitation}`, then return here and redisplay menu
188
- - **[c]**: Load and execute `{nextStepFile}` (Map Technical Constraints)
189
- - **[p]**: Load and execute `{party_mode_exec}`, then return here and redisplay menu
190
-
191
- ---
192
-
193
- ## REQUIRED OUTPUTS:
194
-
195
- - MUST initialize WIP file with captured metadata.
196
-
197
- ## VERIFICATION CHECKLIST:
198
-
199
- - [ ] WIP check performed FIRST before any greeting.
200
- - [ ] `{wipFile}` created with correct frontmatter, Overview, Context for Development, and `stepsCompleted: [1]`.
201
- - [ ] User selected [c] to continue.
@@ -1,156 +0,0 @@
1
- ---
2
- name: 'step-02-investigate'
3
- description: 'Map technical constraints and anchor points within the codebase'
4
-
5
- workflow_path: '{project_root}/_bmad/bmm/workflows/bmad-quick-flow/create-tech-spec'
6
- nextStepFile: './step-03-generate.md'
7
- wipFile: '{implementation_artifacts}/tech-spec-wip.md'
8
- ---
9
-
10
- <purpose>
11
- Map technical constraints and anchor points within the codebase to provide implementation-ready ground truth. Build on the Quick Scan from Step 1 with deep investigation to identify exact files to modify, code patterns to follow, and technical constraints that will impact implementation.
12
- </purpose>
13
-
14
- <instructions>
15
- Load the WIP file from Step 1, execute universal code investigation by reading and analyzing relevant files/directories, document technical context (tech stack, code patterns, files to modify, test patterns), look for project-context.md if not already loaded, update WIP file frontmatter and Context for Development section, and present checkpoint menu for Advanced Elicitation, Continue, or Party Mode.
16
- </instructions>
17
-
18
- <output>
19
- WIP file updated with documented technical context including tech_stack, files_to_modify, code_patterns, and test_patterns in frontmatter. Context for Development section filled with Codebase Patterns, Files to Reference table, and Technical Decisions. User confirmed with [c] to continue to Step 3.
20
- </output>
21
-
22
- # Step 2: Map Technical Constraints & Anchor Points
23
-
24
- **Progress: Step 2 of 4** - Next: Generate Plan
25
-
26
- ## RULES:
27
-
28
- - MUST NOT skip steps.
29
- - MUST NOT optimize sequence.
30
- - MUST follow exact instructions.
31
- - MUST NOT generate the full spec yet (that's Step 3).
32
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
33
-
34
- ## CONTEXT:
35
-
36
- - Requires `{wipFile}` from Step 1 with the "Problem Statement" defined.
37
- - Focus: Map the problem statement to specific anchor points in the codebase.
38
- - Output: Exact files to touch, classes/patterns to extend, and technical constraints identified.
39
- - Objective: Provide the implementation-ready ground truth for the plan.
40
-
41
- ## SEQUENCE OF INSTRUCTIONS
42
-
43
- ### 1. Load Current State
44
-
45
- **Read `{wipFile}` and extract:**
46
-
47
- - Problem statement and scope from Overview section
48
- - Any context gathered in Step 1
49
-
50
- ### 2. Execute Investigation Path
51
-
52
- **Universal Code Investigation:**
53
-
54
- _Isolate deep exploration in sub-agents/tasks where available. Return distilled summaries only to prevent context snowballing._
55
-
56
- a) **Build on Step 1's Quick Scan**
57
-
58
- Review what was found in Step 1's orient scan. Then ask:
59
-
60
- "Based on my quick look, I see [files/patterns found]. Are there other files or directories I should investigate deeply?"
61
-
62
- b) **Read and Analyze Code**
63
-
64
- For each file/directory provided:
65
-
66
- - Read the complete file(s)
67
- - Identify patterns, conventions, coding style
68
- - Note dependencies and imports
69
- - Find related test files
70
-
71
- **If NO relevant code is found (Clean Slate):**
72
-
73
- - Identify the target directory where the feature should live.
74
- - Scan parent directories for architectural context.
75
- - Identify standard project utilities or boilerplate that SHOULD be used.
76
- - Document this as "Confirmed Clean Slate" - establishing that no legacy constraints exist.
77
-
78
-
79
- c) **Document Technical Context**
80
-
81
- Capture and confirm with user:
82
-
83
- - **Tech Stack**: Languages, frameworks, libraries
84
- - **Code Patterns**: Architecture patterns, naming conventions, file structure
85
- - **Files to Modify/Create**: Specific files that will need changes or new files to be created
86
- - **Test Patterns**: How tests are structured, test frameworks used
87
-
88
- d) **Look for project-context.md**
89
-
90
- If `**/project-context.md` exists and wasn't loaded in Step 1:
91
-
92
- - Load it now
93
- - Extract patterns and conventions
94
- - Note any rules that must be followed
95
-
96
- ### 3. Update WIP File
97
-
98
- **Update `{wipFile}` frontmatter:**
99
-
100
- ```yaml
101
- ---
102
- # ... existing frontmatter ...
103
- stepsCompleted: [1, 2]
104
- tech_stack: ['{captured_tech_stack}']
105
- files_to_modify: ['{captured_files}']
106
- code_patterns: ['{captured_patterns}']
107
- test_patterns: ['{captured_test_patterns}']
108
- ---
109
- ```
110
-
111
- **Update the Context for Development section:**
112
-
113
- Fill in:
114
-
115
- - Codebase Patterns (from investigation)
116
- - Files to Reference table (files reviewed)
117
- - Technical Decisions (any decisions made during investigation)
118
-
119
- **Report to user:**
120
-
121
- "**Context Gathered:**
122
-
123
- - Tech Stack: {tech_stack_summary}
124
- - Files to Modify: {files_count} files identified
125
- - Patterns: {patterns_summary}
126
- - Tests: {test_patterns_summary}"
127
-
128
- ### 4. Present Checkpoint Menu
129
-
130
- **Display menu:**
131
-
132
- ```
133
- [a] Advanced Elicitation - explore more context
134
- [c] Continue - proceed to Generate Spec
135
- [p] Party Mode - bring in other experts
136
- ```
137
-
138
- **HALT and wait for user selection.**
139
-
140
- #### Menu Handling:
141
-
142
- - **[a]**: Load and execute `{advanced_elicitation}`, then return here and redisplay menu
143
- - **[c]**: Verify frontmatter updated with `stepsCompleted: [1, 2]`, then load and execute `{nextStepFile}`
144
- - **[p]**: Load and execute `{party_mode_exec}`, then return here and redisplay menu
145
-
146
- ---
147
-
148
- ## REQUIRED OUTPUTS:
149
-
150
- - MUST document technical context (stack, patterns, files identified).
151
- - MUST update `{wipFile}` with functional context.
152
-
153
- ## VERIFICATION CHECKLIST:
154
-
155
- - [ ] Technical mapping performed and documented.
156
- - [ ] `stepsCompleted: [1, 2]` set in frontmatter.
@@ -1,140 +0,0 @@
1
- ---
2
- name: 'step-03-generate'
3
- description: 'Build the implementation plan based on the technical mapping of constraints'
4
-
5
- workflow_path: '{project_root}/_bmad/bmm/workflows/bmad-quick-flow/create-tech-spec'
6
- nextStepFile: './step-04-review.md'
7
- wipFile: '{implementation_artifacts}/tech-spec-wip.md'
8
- ---
9
-
10
- <purpose>
11
- Generate an implementation-ready plan that addresses the requirement delta using the technical context captured in Steps 1 and 2. Create specific, ordered, actionable implementation tasks and testable acceptance criteria that meet the READY FOR DEVELOPMENT standard.
12
- </purpose>
13
-
14
- <instructions>
15
- Load the WIP file with all captured context, generate discrete implementation tasks with specific files and actions ordered logically, create testable acceptance criteria in Given/When/Then format covering happy path and edge cases, fill in Dependencies/Testing Strategy/Notes sections, update WIP frontmatter with stepsCompleted: [1, 2, 3] and status: 'review', and proceed to Step 4.
16
- </instructions>
17
-
18
- <output>
19
- WIP file updated with implementation plan including specific ordered tasks with file paths, testable acceptance criteria in Given/When/Then format, Dependencies documented, Testing Strategy defined, and Notes section completed. Frontmatter updated with stepsCompleted: [1, 2, 3] and status: 'review'. File ready for Step 4 review.
20
- </output>
21
-
22
- # Step 3: Generate Implementation Plan
23
-
24
- **Progress: Step 3 of 4** - Next: Review & Finalize
25
-
26
- ## RULES:
27
-
28
- - MUST NOT skip steps.
29
- - MUST NOT optimize sequence.
30
- - MUST follow exact instructions.
31
- - MUST NOT implement anything - just document.
32
- - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
33
-
34
- ## CONTEXT:
35
-
36
- - Requires `{wipFile}` with defined "Overview" and "Context for Development" sections.
37
- - Focus: Create the implementation sequence that addresses the requirement delta using the captured technical context.
38
- - Output: Implementation-ready tasks with specific files and instructions.
39
- - Target: Meet the **READY FOR DEVELOPMENT** standard defined in `workflow.md`.
40
-
41
- ## SEQUENCE OF INSTRUCTIONS
42
-
43
- ### 1. Load Current State
44
-
45
- **Read `{wipFile}` completely and extract:**
46
-
47
- - All frontmatter values
48
- - Overview section (Problem, Solution, Scope)
49
- - Context for Development section (Patterns, Files, Decisions)
50
-
51
- ### 2. Generate Implementation Plan
52
-
53
- Generate specific implementation tasks:
54
-
55
- a) **Task Breakdown**
56
-
57
- - Each task should be a discrete, completable unit of work
58
- - Tasks should be ordered logically (dependencies first)
59
- - Include the specific files to modify in each task
60
- - Be explicit about what changes to make
61
-
62
- b) **Task Format**
63
-
64
- ```markdown
65
- - [ ] Task N: Clear action description
66
- - File: `path/to/file.ext`
67
- - Action: Specific change to make
68
- - Notes: Any implementation details
69
- ```
70
-
71
- ### 3. Generate Acceptance Criteria
72
-
73
- **Create testable acceptance criteria:**
74
-
75
- Each AC should follow Given/When/Then format:
76
-
77
- ```markdown
78
- - [ ] AC N: Given [precondition], when [action], then [expected result]
79
- ```
80
-
81
- **Ensure ACs cover:**
82
-
83
- - Happy path functionality
84
- - Error handling
85
- - Edge cases (if relevant)
86
- - Integration points (if relevant)
87
-
88
- ### 4. Complete Additional Context
89
-
90
- **Fill in remaining sections:**
91
-
92
- a) **Dependencies**
93
-
94
- - External libraries or services needed
95
- - Other tasks or features this depends on
96
- - API or data dependencies
97
-
98
- b) **Testing Strategy**
99
-
100
- - Unit tests needed
101
- - Integration tests needed
102
- - Manual testing steps
103
-
104
- c) **Notes**
105
-
106
- - High-risk items from pre-mortem analysis
107
- - Known limitations
108
- - Future considerations (out of scope but worth noting)
109
-
110
- ### 5. Write Complete Spec
111
-
112
- a) **Update `{wipFile}` with all generated content:**
113
-
114
- - Ensure all template sections are filled in
115
- - No placeholder text remaining
116
- - All frontmatter values current
117
- - Update status to 'review' (NOT 'ready-for-dev' - that happens after user review in Step 4)
118
-
119
- b) **Update frontmatter:**
120
-
121
- ```yaml
122
- ---
123
- # ... existing values ...
124
- status: 'review'
125
- stepsCompleted: [1, 2, 3]
126
- ---
127
- ```
128
-
129
- c) **Load and execute `{nextStepFile}` (Step 4)**
130
-
131
- ## REQUIRED OUTPUTS:
132
-
133
- - Tasks MUST be specific, actionable, ordered logically, with files to modify.
134
- - ACs MUST be testable, using Given/When/Then format.
135
- - Status MUST be updated to 'review'.
136
-
137
- ## VERIFICATION CHECKLIST:
138
-
139
- - [ ] `stepsCompleted: [1, 2, 3]` set in frontmatter.
140
- - [ ] Spec meets the **READY FOR DEVELOPMENT** standard.