@pennyfarthing/core 7.0.2 → 7.4.1

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 (628) hide show
  1. package/LICENSE +14 -0
  2. package/README.md +2 -2
  3. package/package.json +11 -10
  4. package/packages/core/dist/cli/commands/cyclist.d.ts +2 -2
  5. package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -1
  6. package/packages/core/dist/cli/commands/cyclist.js +8 -9
  7. package/packages/core/dist/cli/commands/cyclist.js.map +1 -1
  8. package/packages/core/dist/cli/commands/cyclist.test.js +6 -4
  9. package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -1
  10. package/packages/core/dist/cli/commands/init.js +4 -3
  11. package/packages/core/dist/cli/commands/init.js.map +1 -1
  12. package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
  13. package/packages/core/dist/cli/commands/update.js +15 -139
  14. package/packages/core/dist/cli/commands/update.js.map +1 -1
  15. package/packages/core/dist/cli/cyclist-migration.test.js +4 -3
  16. package/packages/core/dist/cli/cyclist-migration.test.js.map +1 -1
  17. package/packages/core/dist/cli/utils/constants.d.ts +7 -1
  18. package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
  19. package/packages/core/dist/cli/utils/constants.js +4 -2
  20. package/packages/core/dist/cli/utils/constants.js.map +1 -1
  21. package/packages/core/dist/cli/utils/node-modules.d.ts.map +1 -1
  22. package/packages/core/dist/cli/utils/node-modules.js +2 -1
  23. package/packages/core/dist/cli/utils/node-modules.js.map +1 -1
  24. package/packages/core/dist/cli/utils/themes.d.ts +1 -4
  25. package/packages/core/dist/cli/utils/themes.d.ts.map +1 -1
  26. package/packages/core/dist/cli/utils/themes.js +2 -22
  27. package/packages/core/dist/cli/utils/themes.js.map +1 -1
  28. package/packages/core/dist/cli/utils/themes.test.d.ts +3 -3
  29. package/packages/core/dist/cli/utils/themes.test.js +16 -13
  30. package/packages/core/dist/cli/utils/themes.test.js.map +1 -1
  31. package/packages/core/dist/cli/workspace.test.js +11 -9
  32. package/packages/core/dist/cli/workspace.test.js.map +1 -1
  33. package/packages/core/dist/index.d.ts +1 -0
  34. package/packages/core/dist/index.d.ts.map +1 -1
  35. package/packages/core/dist/index.js +10 -0
  36. package/packages/core/dist/index.js.map +1 -1
  37. package/packages/core/dist/jira/jira-epic-creation.d.ts +109 -0
  38. package/packages/core/dist/jira/jira-epic-creation.d.ts.map +1 -0
  39. package/packages/core/dist/jira/jira-epic-creation.js +253 -0
  40. package/packages/core/dist/jira/jira-epic-creation.js.map +1 -0
  41. package/packages/core/dist/jira/jira-epic-creation.test.d.ts +16 -0
  42. package/packages/core/dist/jira/jira-epic-creation.test.d.ts.map +1 -0
  43. package/packages/core/dist/jira/jira-epic-creation.test.js +387 -0
  44. package/packages/core/dist/jira/jira-epic-creation.test.js.map +1 -0
  45. package/packages/core/dist/jira/jira-sprint-sync.d.ts +247 -0
  46. package/packages/core/dist/jira/jira-sprint-sync.d.ts.map +1 -0
  47. package/packages/core/dist/jira/jira-sprint-sync.js +670 -0
  48. package/packages/core/dist/jira/jira-sprint-sync.js.map +1 -0
  49. package/packages/core/dist/jira/jira-sprint-sync.test.d.ts +16 -0
  50. package/packages/core/dist/jira/jira-sprint-sync.test.d.ts.map +1 -0
  51. package/packages/core/dist/jira/jira-sprint-sync.test.js +845 -0
  52. package/packages/core/dist/jira/jira-sprint-sync.test.js.map +1 -0
  53. package/packages/core/dist/scripts/generate-spider.d.ts +11 -1
  54. package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -1
  55. package/packages/core/dist/scripts/generate-spider.js +24 -1
  56. package/packages/core/dist/scripts/generate-spider.js.map +1 -1
  57. package/packages/core/dist/scripts/generate-spider.test.js +6 -4
  58. package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
  59. package/packages/core/dist/workflow/gate-handler.d.ts +94 -0
  60. package/packages/core/dist/workflow/gate-handler.d.ts.map +1 -0
  61. package/packages/core/dist/workflow/gate-handler.js +189 -0
  62. package/packages/core/dist/workflow/gate-handler.js.map +1 -0
  63. package/packages/core/dist/workflow/gate-handler.test.d.ts +14 -0
  64. package/packages/core/dist/workflow/gate-handler.test.d.ts.map +1 -0
  65. package/packages/core/dist/workflow/gate-handler.test.js +543 -0
  66. package/packages/core/dist/workflow/gate-handler.test.js.map +1 -0
  67. package/packages/core/dist/workflow/generic-handoff.d.ts +46 -0
  68. package/packages/core/dist/workflow/generic-handoff.d.ts.map +1 -1
  69. package/packages/core/dist/workflow/generic-handoff.js +53 -0
  70. package/packages/core/dist/workflow/generic-handoff.js.map +1 -1
  71. package/packages/core/dist/workflow/generic-handoff.test.js +2 -2
  72. package/packages/core/dist/workflow/generic-handoff.test.js.map +1 -1
  73. package/packages/core/dist/workflow/handoff.d.ts +281 -0
  74. package/packages/core/dist/workflow/handoff.d.ts.map +1 -0
  75. package/packages/core/dist/workflow/handoff.js +411 -0
  76. package/packages/core/dist/workflow/handoff.js.map +1 -0
  77. package/packages/core/dist/workflow/handoff.test.d.ts +21 -0
  78. package/packages/core/dist/workflow/handoff.test.d.ts.map +1 -0
  79. package/packages/core/dist/workflow/handoff.test.js +499 -0
  80. package/packages/core/dist/workflow/handoff.test.js.map +1 -0
  81. package/packages/core/dist/workflow/index.d.ts +16 -0
  82. package/packages/core/dist/workflow/index.d.ts.map +1 -0
  83. package/packages/core/dist/workflow/index.js +24 -0
  84. package/packages/core/dist/workflow/index.js.map +1 -0
  85. package/packages/core/dist/workflow/session-state.d.ts +92 -0
  86. package/packages/core/dist/workflow/session-state.d.ts.map +1 -0
  87. package/packages/core/dist/workflow/session-state.js +198 -0
  88. package/packages/core/dist/workflow/session-state.js.map +1 -0
  89. package/packages/core/dist/workflow/session-state.test.d.ts +8 -0
  90. package/packages/core/dist/workflow/session-state.test.d.ts.map +1 -0
  91. package/packages/core/dist/workflow/session-state.test.js +551 -0
  92. package/packages/core/dist/workflow/session-state.test.js.map +1 -0
  93. package/packages/core/dist/workflow/sm-subagents.test.d.ts +2 -2
  94. package/packages/core/dist/workflow/sm-subagents.test.js +6 -6
  95. package/packages/core/dist/workflow/sm-subagents.test.js.map +1 -1
  96. package/packages/core/dist/workflow/step-parser.d.ts +45 -0
  97. package/packages/core/dist/workflow/step-parser.d.ts.map +1 -0
  98. package/packages/core/dist/workflow/step-parser.js +147 -0
  99. package/packages/core/dist/workflow/step-parser.js.map +1 -0
  100. package/packages/core/dist/workflow/step-parser.test.d.ts +14 -0
  101. package/packages/core/dist/workflow/step-parser.test.d.ts.map +1 -0
  102. package/packages/core/dist/workflow/step-parser.test.js +470 -0
  103. package/packages/core/dist/workflow/step-parser.test.js.map +1 -0
  104. package/packages/core/dist/workflow/trimodal.d.ts +86 -0
  105. package/packages/core/dist/workflow/trimodal.d.ts.map +1 -0
  106. package/packages/core/dist/workflow/trimodal.js +118 -0
  107. package/packages/core/dist/workflow/trimodal.js.map +1 -0
  108. package/packages/core/dist/workflow/trimodal.test.d.ts +11 -0
  109. package/packages/core/dist/workflow/trimodal.test.d.ts.map +1 -0
  110. package/packages/core/dist/workflow/trimodal.test.js +395 -0
  111. package/packages/core/dist/workflow/trimodal.test.js.map +1 -0
  112. package/packages/core/dist/workflow/variable-resolver.d.ts +67 -0
  113. package/packages/core/dist/workflow/variable-resolver.d.ts.map +1 -0
  114. package/packages/core/dist/workflow/variable-resolver.js +156 -0
  115. package/packages/core/dist/workflow/variable-resolver.js.map +1 -0
  116. package/packages/core/dist/workflow/variable-resolver.test.d.ts +14 -0
  117. package/packages/core/dist/workflow/variable-resolver.test.d.ts.map +1 -0
  118. package/packages/core/dist/workflow/variable-resolver.test.js +400 -0
  119. package/packages/core/dist/workflow/variable-resolver.test.js.map +1 -0
  120. package/packages/core/dist/workflow/workflow-executor.d.ts +163 -0
  121. package/packages/core/dist/workflow/workflow-executor.d.ts.map +1 -0
  122. package/packages/core/dist/workflow/workflow-executor.js +197 -0
  123. package/packages/core/dist/workflow/workflow-executor.js.map +1 -0
  124. package/packages/core/dist/workflow/workflow-executor.test.d.ts +8 -0
  125. package/packages/core/dist/workflow/workflow-executor.test.d.ts.map +1 -0
  126. package/packages/core/dist/workflow/workflow-executor.test.js +444 -0
  127. package/packages/core/dist/workflow/workflow-executor.test.js.map +1 -0
  128. package/packages/core/dist/workflow/workflow-loader.test.js +5 -5
  129. package/packages/core/dist/workflow/workflow-loader.test.js.map +1 -1
  130. package/packages/core/dist/workflow/workflow-migration.test.js +8 -9
  131. package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
  132. package/packages/core/dist/workflow/workflow-permissions.d.ts +55 -0
  133. package/packages/core/dist/workflow/workflow-permissions.d.ts.map +1 -0
  134. package/packages/core/dist/workflow/workflow-permissions.js +64 -0
  135. package/packages/core/dist/workflow/workflow-permissions.js.map +1 -0
  136. package/packages/core/dist/workflow/workflow-permissions.test.d.ts +15 -0
  137. package/packages/core/dist/workflow/workflow-permissions.test.d.ts.map +1 -0
  138. package/packages/core/dist/workflow/workflow-permissions.test.js +301 -0
  139. package/packages/core/dist/workflow/workflow-permissions.test.js.map +1 -0
  140. package/packages/core/dist/workflow/workflow-schema.d.ts +61 -2
  141. package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
  142. package/packages/core/dist/workflow/workflow-schema.js +293 -69
  143. package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
  144. package/packages/core/dist/workflow/workflow-schema.test.js +6 -6
  145. package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -1
  146. package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts +18 -0
  147. package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts.map +1 -0
  148. package/packages/core/dist/workflow/workflow-stepped-schema.test.js +608 -0
  149. package/packages/core/dist/workflow/workflow-stepped-schema.test.js.map +1 -0
  150. package/pennyfarthing-dist/agents/README.md +63 -134
  151. package/pennyfarthing-dist/agents/architect.md +18 -10
  152. package/pennyfarthing-dist/agents/dev.md +47 -32
  153. package/pennyfarthing-dist/agents/devops.md +18 -9
  154. package/pennyfarthing-dist/agents/handoff.md +289 -0
  155. package/pennyfarthing-dist/agents/orchestrator.md +44 -22
  156. package/pennyfarthing-dist/agents/pm.md +13 -8
  157. package/pennyfarthing-dist/agents/reviewer-preflight.md +42 -128
  158. package/pennyfarthing-dist/agents/reviewer.md +104 -57
  159. package/pennyfarthing-dist/agents/sm-file-summary.md +24 -75
  160. package/pennyfarthing-dist/agents/sm-finish.md +61 -0
  161. package/pennyfarthing-dist/agents/sm-handoff.md +102 -54
  162. package/pennyfarthing-dist/agents/sm-setup.md +174 -0
  163. package/pennyfarthing-dist/agents/sm.md +223 -100
  164. package/pennyfarthing-dist/agents/tea.md +42 -34
  165. package/pennyfarthing-dist/agents/tech-writer.md +74 -6
  166. package/pennyfarthing-dist/agents/testing-runner.md +78 -360
  167. package/pennyfarthing-dist/agents/ux-designer.md +80 -7
  168. package/pennyfarthing-dist/agents/workflow-status-check.md +35 -299
  169. package/pennyfarthing-dist/commands/architect.md +2 -2
  170. package/pennyfarthing-dist/commands/close-epic.md +5 -2
  171. package/pennyfarthing-dist/commands/create-branches-from-story.md +7 -23
  172. package/pennyfarthing-dist/commands/dev.md +2 -2
  173. package/pennyfarthing-dist/commands/devops.md +3 -3
  174. package/pennyfarthing-dist/commands/git-cleanup.md +5 -5
  175. package/pennyfarthing-dist/commands/health-check.md +1 -1
  176. package/pennyfarthing-dist/commands/list-themes.md +7 -3
  177. package/pennyfarthing-dist/commands/orchestrator.md +2 -2
  178. package/pennyfarthing-dist/commands/parallel-work.md +4 -4
  179. package/pennyfarthing-dist/commands/pm.md +2 -2
  180. package/pennyfarthing-dist/commands/prime.md +7 -7
  181. package/pennyfarthing-dist/commands/release.md +1 -1
  182. package/pennyfarthing-dist/commands/repo-status.md +2 -2
  183. package/pennyfarthing-dist/commands/retro.md +2 -2
  184. package/pennyfarthing-dist/commands/reviewer.md +2 -2
  185. package/pennyfarthing-dist/commands/set-theme.md +5 -1
  186. package/pennyfarthing-dist/commands/sm.md +2 -2
  187. package/pennyfarthing-dist/commands/start-epic.md +26 -14
  188. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +8 -8
  189. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +1 -4
  190. package/pennyfarthing-dist/commands/tea.md +2 -2
  191. package/pennyfarthing-dist/commands/tech-writer.md +2 -2
  192. package/pennyfarthing-dist/commands/ux-designer.md +3 -3
  193. package/pennyfarthing-dist/commands/work.md +15 -4
  194. package/pennyfarthing-dist/commands/workflow.md +21 -0
  195. package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +15 -15
  196. package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +1 -1
  197. package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +4 -4
  198. package/pennyfarthing-dist/guides/agent-behavior.md +238 -0
  199. package/pennyfarthing-dist/guides/agent-template-strategic.md +2 -2
  200. package/pennyfarthing-dist/guides/agent-template-tactical.md +4 -4
  201. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +1 -1
  202. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +17 -17
  203. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +8 -8
  204. package/pennyfarthing-dist/guides/workflow-schema.md +62 -0
  205. package/pennyfarthing-dist/guides/worktree-mode.md +5 -5
  206. package/pennyfarthing-dist/personas/themes/1984.yaml +1 -1
  207. package/pennyfarthing-dist/personas/themes/a-team.yaml +1 -1
  208. package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +1 -1
  209. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +1 -1
  210. package/pennyfarthing-dist/personas/themes/all-stars.yaml +1 -1
  211. package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +1 -1
  212. package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +1 -1
  213. package/pennyfarthing-dist/personas/themes/arcane.yaml +1 -1
  214. package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +1 -1
  215. package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +1 -1
  216. package/pennyfarthing-dist/personas/themes/babylon-5.yaml +1 -1
  217. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +1 -1
  218. package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +1 -1
  219. package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +2 -2
  220. package/pennyfarthing-dist/personas/themes/black-sails.yaml +1 -1
  221. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +1 -1
  222. package/pennyfarthing-dist/personas/themes/bobiverse.yaml +1 -1
  223. package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +1 -1
  224. package/pennyfarthing-dist/personas/themes/catch-22.yaml +1 -1
  225. package/pennyfarthing-dist/personas/themes/classical-composers.yaml +1 -1
  226. package/pennyfarthing-dist/personas/themes/control.yaml +1 -1
  227. package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +1 -1
  228. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +1 -1
  229. package/pennyfarthing-dist/personas/themes/deadwood.yaml +2 -2
  230. package/pennyfarthing-dist/personas/themes/discworld.yaml +2 -2
  231. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +1 -1
  232. package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +1 -1
  233. package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +1 -1
  234. package/pennyfarthing-dist/personas/themes/firefly.yaml +1 -1
  235. package/pennyfarthing-dist/personas/themes/foundation.yaml +1 -1
  236. package/pennyfarthing-dist/personas/themes/futurama.yaml +1 -1
  237. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +2 -2
  238. package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +1 -1
  239. package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +1 -1
  240. package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +1 -1
  241. package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +1 -1
  242. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +2 -2
  243. package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +1 -1
  244. package/pennyfarthing-dist/personas/themes/historical-figures.yaml +1 -1
  245. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +1 -1
  246. package/pennyfarthing-dist/personas/themes/house-md.yaml +1 -1
  247. package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +1 -1
  248. package/pennyfarthing-dist/personas/themes/jane-austen.yaml +1 -1
  249. package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +1 -1
  250. package/pennyfarthing-dist/personas/themes/justified.yaml +1 -1
  251. package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +1 -1
  252. package/pennyfarthing-dist/personas/themes/les-miserables.yaml +1 -1
  253. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +1 -1
  254. package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +1 -1
  255. package/pennyfarthing-dist/personas/themes/mad-men.yaml +1 -1
  256. package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +1 -1
  257. package/pennyfarthing-dist/personas/themes/mash.yaml +69 -66
  258. package/pennyfarthing-dist/personas/themes/mass-effect.yaml +1 -1
  259. package/pennyfarthing-dist/personas/themes/military-commanders.yaml +1 -1
  260. package/pennyfarthing-dist/personas/themes/moby-dick.yaml +1 -1
  261. package/pennyfarthing-dist/personas/themes/monty-python.yaml +1 -1
  262. package/pennyfarthing-dist/personas/themes/neuromancer.yaml +1 -1
  263. package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +1 -1
  264. package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +1 -1
  265. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +1 -1
  266. package/pennyfarthing-dist/personas/themes/rome.yaml +1 -1
  267. package/pennyfarthing-dist/personas/themes/russian-masters.yaml +1 -1
  268. package/pennyfarthing-dist/personas/themes/sandman.yaml +1 -1
  269. package/pennyfarthing-dist/personas/themes/shakespeare.yaml +1 -1
  270. package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +1 -1
  271. package/pennyfarthing-dist/personas/themes/snow-crash.yaml +1 -1
  272. package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +1 -1
  273. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +1 -1
  274. package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +1 -1
  275. package/pennyfarthing-dist/personas/themes/star-wars.yaml +1 -1
  276. package/pennyfarthing-dist/personas/themes/superfriends.yaml +1 -1
  277. package/pennyfarthing-dist/personas/themes/the-americans.yaml +1 -1
  278. package/pennyfarthing-dist/personas/themes/the-crown.yaml +1 -1
  279. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +1 -1
  280. package/pennyfarthing-dist/personas/themes/the-good-place.yaml +1 -1
  281. package/pennyfarthing-dist/personas/themes/the-office.yaml +1 -1
  282. package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +1 -1
  283. package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +1 -1
  284. package/pennyfarthing-dist/personas/themes/the-wire.yaml +1 -1
  285. package/pennyfarthing-dist/personas/themes/the-witcher.yaml +1 -1
  286. package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +1 -1
  287. package/pennyfarthing-dist/personas/themes/west-wing.yaml +1 -1
  288. package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +1 -1
  289. package/pennyfarthing-dist/scripts/README.md +68 -0
  290. package/pennyfarthing-dist/scripts/core/README.md +26 -0
  291. package/pennyfarthing-dist/scripts/{agent-session.sh → core/agent-session.sh} +34 -23
  292. package/pennyfarthing-dist/scripts/{check-context.sh → core/check-context.sh} +93 -37
  293. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +90 -0
  294. package/pennyfarthing-dist/scripts/core/prime.sh +136 -0
  295. package/pennyfarthing-dist/scripts/core/run.sh +75 -0
  296. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +21 -0
  297. package/pennyfarthing-dist/scripts/git/README.md +25 -0
  298. package/pennyfarthing-dist/scripts/{utils → git}/create-feature-branches.sh +11 -15
  299. package/pennyfarthing-dist/scripts/{utils → git}/git-status-all.sh +1 -1
  300. package/pennyfarthing-dist/scripts/{install-git-hooks.sh → git/install-git-hooks.sh} +0 -0
  301. package/pennyfarthing-dist/scripts/{release.sh → git/release.sh} +0 -0
  302. package/pennyfarthing-dist/scripts/{worktree-manager.sh → git/worktree-manager.sh} +0 -4
  303. package/pennyfarthing-dist/scripts/hooks/README.md +32 -0
  304. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +3 -4
  305. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +1 -2
  306. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -0
  307. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +1 -1
  308. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -0
  309. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -0
  310. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -0
  311. package/pennyfarthing-dist/scripts/hooks/session-start.sh +2 -3
  312. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +2 -3
  313. package/pennyfarthing-dist/scripts/jira/README.md +33 -0
  314. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +101 -0
  315. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +97 -0
  316. package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.mjs +327 -0
  317. package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.test.mjs +503 -0
  318. package/pennyfarthing-dist/scripts/{utils → jira}/jira-claim-story.sh +8 -6
  319. package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-lib.mjs +10 -10
  320. package/pennyfarthing-dist/scripts/{utils → jira}/jira-lib.sh +18 -17
  321. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +266 -0
  322. package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-sync-story.mjs +14 -14
  323. package/pennyfarthing-dist/scripts/{utils → jira}/jira-sync-story.sh +0 -0
  324. package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-sync.mjs +4 -4
  325. package/pennyfarthing-dist/scripts/{utils → jira}/jira-sync.sh +0 -0
  326. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +104 -0
  327. package/pennyfarthing-dist/scripts/{utils → jira}/sync-epic-to-jira.sh +1 -1
  328. package/pennyfarthing-dist/scripts/lib/README.md +29 -0
  329. package/pennyfarthing-dist/scripts/{utils → lib}/background-tasks.sh +1 -1
  330. package/pennyfarthing-dist/scripts/{utils → lib}/checkpoint.sh +0 -0
  331. package/pennyfarthing-dist/scripts/{utils → lib}/common.sh +1 -1
  332. package/pennyfarthing-dist/scripts/{utils → lib}/file-lock.sh +0 -0
  333. package/pennyfarthing-dist/scripts/{utils → lib}/find-root.sh +7 -5
  334. package/pennyfarthing-dist/scripts/{utils → lib}/logging.sh +0 -0
  335. package/pennyfarthing-dist/scripts/{utils → lib}/retry.sh +0 -0
  336. package/pennyfarthing-dist/scripts/misc/README.md +44 -0
  337. package/pennyfarthing-dist/scripts/{add-short-names.mjs → misc/add-short-names.mjs} +0 -0
  338. package/pennyfarthing-dist/scripts/misc/backlog.sh +91 -0
  339. package/pennyfarthing-dist/scripts/{utils → misc}/check-status.sh +4 -8
  340. package/pennyfarthing-dist/scripts/{deploy.sh → misc/deploy.sh} +0 -0
  341. package/pennyfarthing-dist/scripts/{doctor-dogfood.sh → misc/doctor-dogfood.sh} +2 -5
  342. package/pennyfarthing-dist/scripts/{utils → misc}/find-related-work.sh +0 -0
  343. package/pennyfarthing-dist/scripts/{utils → misc}/generate-skill-docs.sh +0 -0
  344. package/pennyfarthing-dist/scripts/{utils → misc}/log-skill-usage.sh +0 -0
  345. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.mjs +474 -0
  346. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +9 -0
  347. package/pennyfarthing-dist/scripts/{utils → misc}/repo-scan.sh +0 -0
  348. package/pennyfarthing-dist/scripts/{repo-utils.sh → misc/repo-utils.sh} +2 -2
  349. package/pennyfarthing-dist/scripts/{run-ci.sh → misc/run-ci.sh} +0 -0
  350. package/pennyfarthing-dist/scripts/{utils → misc}/run-timestamp.sh +0 -0
  351. package/pennyfarthing-dist/scripts/{utils → misc}/session-cleanup.sh +0 -0
  352. package/pennyfarthing-dist/scripts/{utils → misc}/skill-usage-report.sh +0 -0
  353. package/pennyfarthing-dist/scripts/{statusline.sh → misc/statusline.sh} +2 -7
  354. package/pennyfarthing-dist/scripts/{uninstall.sh → misc/uninstall.sh} +4 -5
  355. package/pennyfarthing-dist/scripts/{utils → misc}/validate-subagent-frontmatter.sh +3 -3
  356. package/pennyfarthing-dist/scripts/sprint/README.md +29 -0
  357. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +135 -0
  358. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +97 -0
  359. package/pennyfarthing-dist/scripts/sprint/check-story.sh +164 -0
  360. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +58 -0
  361. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +69 -0
  362. package/pennyfarthing-dist/scripts/sprint/list-future.sh +151 -0
  363. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +116 -0
  364. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +164 -0
  365. package/pennyfarthing-dist/scripts/{utils → sprint}/sprint-common.sh +135 -0
  366. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +39 -0
  367. package/pennyfarthing-dist/scripts/{utils → sprint}/sprint-metrics.sh +0 -0
  368. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +134 -0
  369. package/pennyfarthing-dist/scripts/story/README.md +23 -0
  370. package/pennyfarthing-dist/scripts/story/create-story.sh +159 -0
  371. package/pennyfarthing-dist/scripts/story/size-story.sh +198 -0
  372. package/pennyfarthing-dist/scripts/story/story-template.sh +162 -0
  373. package/pennyfarthing-dist/scripts/test/README.md +23 -0
  374. package/pennyfarthing-dist/scripts/{utils → test}/swebench-judge.py +0 -0
  375. package/pennyfarthing-dist/scripts/test/test-cache.sh +165 -0
  376. package/pennyfarthing-dist/scripts/{utils → test}/test-setup.sh +5 -5
  377. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
  378. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +515 -0
  379. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +599 -0
  380. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +332 -0
  381. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +573 -0
  382. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +859 -0
  383. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +662 -0
  384. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +589 -0
  385. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +7 -9
  386. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +18 -18
  387. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +10 -10
  388. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +1 -1
  389. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
  390. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +647 -0
  391. package/pennyfarthing-dist/scripts/theme/README.md +22 -0
  392. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +203 -0
  393. package/pennyfarthing-dist/scripts/theme/list-themes.sh +73 -0
  394. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +97 -0
  395. package/pennyfarthing-dist/scripts/workflow/README.md +28 -0
  396. package/pennyfarthing-dist/scripts/{check.sh → workflow/check.sh} +0 -0
  397. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +159 -0
  398. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +228 -0
  399. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +91 -0
  400. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +163 -0
  401. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +138 -0
  402. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +256 -0
  403. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +167 -0
  404. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +6 -0
  405. package/pennyfarthing-dist/skills/changelog/SKILL.md +2 -2
  406. package/pennyfarthing-dist/skills/code-review/SKILL.md +3 -3
  407. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +6 -0
  408. package/pennyfarthing-dist/skills/cyclist/SKILL.md +56 -139
  409. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +21 -5
  410. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +1 -1
  411. package/pennyfarthing-dist/skills/jira/SKILL.md +381 -178
  412. package/pennyfarthing-dist/skills/judge/SKILL.md +76 -21
  413. package/pennyfarthing-dist/skills/just/SKILL.md +345 -102
  414. package/pennyfarthing-dist/skills/otel/skill.md +1 -0
  415. package/pennyfarthing-dist/skills/permissions/skill.md +1 -1
  416. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +5 -0
  417. package/pennyfarthing-dist/skills/skill-registry.schema.json +5 -0
  418. package/pennyfarthing-dist/skills/skill-registry.yaml +22 -0
  419. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +101 -0
  420. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +97 -0
  421. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +164 -0
  422. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +101 -0
  423. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +116 -0
  424. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +164 -0
  425. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +39 -0
  426. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +147 -0
  427. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +104 -0
  428. package/pennyfarthing-dist/skills/sprint/skill.md +465 -0
  429. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +159 -0
  430. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +198 -0
  431. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +162 -0
  432. package/pennyfarthing-dist/skills/story/skill.md +219 -0
  433. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +390 -0
  434. package/pennyfarthing-dist/skills/theme/skill.md +1 -1
  435. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +91 -0
  436. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +163 -0
  437. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +138 -0
  438. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +273 -0
  439. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +167 -0
  440. package/pennyfarthing-dist/skills/workflow/skill.md +337 -0
  441. package/pennyfarthing-dist/templates/settings.local.json.template +1 -1
  442. package/pennyfarthing-dist/workflows/agent-docs.yaml +1 -1
  443. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +101 -0
  444. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +93 -0
  445. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +115 -0
  446. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +133 -0
  447. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +138 -0
  448. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +133 -0
  449. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +142 -0
  450. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +160 -0
  451. package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +102 -0
  452. package/pennyfarthing-dist/workflows/architecture.yaml +65 -0
  453. package/pennyfarthing-dist/workflows/bdd.yaml +3 -1
  454. package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +62 -0
  455. package/pennyfarthing-dist/workflows/brainstorming/checklist.md +44 -0
  456. package/pennyfarthing-dist/workflows/brainstorming/instructions.md +736 -0
  457. package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +49 -0
  458. package/pennyfarthing-dist/workflows/code-review/checklist.md +23 -0
  459. package/pennyfarthing-dist/workflows/code-review/instructions.md +234 -0
  460. package/pennyfarthing-dist/workflows/code-review/workflow.yaml +51 -0
  461. package/pennyfarthing-dist/workflows/dev-story/checklist.md +80 -0
  462. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +410 -0
  463. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +50 -0
  464. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +256 -0
  465. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +233 -0
  466. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +272 -0
  467. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +145 -0
  468. package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +57 -0
  469. package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +27 -0
  470. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +190 -0
  471. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  472. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  473. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  474. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  475. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +133 -0
  476. package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +4 -0
  477. package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +40 -0
  478. package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +13 -0
  479. package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +197 -0
  480. package/pennyfarthing-dist/workflows/prd/data/project-types.csv +11 -0
  481. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +191 -0
  482. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +153 -0
  483. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +224 -0
  484. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +226 -0
  485. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +213 -0
  486. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +207 -0
  487. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +226 -0
  488. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +237 -0
  489. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +228 -0
  490. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +231 -0
  491. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
  492. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +217 -0
  493. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +180 -0
  494. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +247 -0
  495. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  496. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +249 -0
  497. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +253 -0
  498. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +168 -0
  499. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +218 -0
  500. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
  501. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
  502. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
  503. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  504. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
  505. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
  506. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  507. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  508. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
  509. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
  510. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  511. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
  512. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
  513. package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +10 -0
  514. package/pennyfarthing-dist/workflows/prd/workflow.yaml +42 -0
  515. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +177 -0
  516. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +161 -0
  517. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +199 -0
  518. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +202 -0
  519. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +205 -0
  520. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +219 -0
  521. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +194 -0
  522. package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +10 -0
  523. package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +31 -0
  524. package/pennyfarthing-dist/workflows/project-context/project-context-template.md +21 -0
  525. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +184 -0
  526. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +318 -0
  527. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +278 -0
  528. package/pennyfarthing-dist/workflows/project-context/workflow.yaml +27 -0
  529. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +156 -0
  530. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +120 -0
  531. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +113 -0
  532. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +113 -0
  533. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +106 -0
  534. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +140 -0
  535. package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +27 -0
  536. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +189 -0
  537. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +144 -0
  538. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +128 -0
  539. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +191 -0
  540. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
  541. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +27 -0
  542. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +137 -0
  543. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +229 -0
  544. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +238 -0
  545. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +206 -0
  546. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +234 -0
  547. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +443 -0
  548. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +182 -0
  549. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +237 -0
  550. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +200 -0
  551. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +249 -0
  552. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +259 -0
  553. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +177 -0
  554. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +475 -0
  555. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +137 -0
  556. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +239 -0
  557. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +248 -0
  558. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +202 -0
  559. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +239 -0
  560. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +486 -0
  561. package/pennyfarthing-dist/workflows/research/templates/research.template.md +29 -0
  562. package/pennyfarthing-dist/workflows/research/workflow.yaml +45 -0
  563. package/pennyfarthing-dist/workflows/retrospective/checklist.md +31 -0
  564. package/pennyfarthing-dist/workflows/retrospective/instructions.md +1443 -0
  565. package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +50 -0
  566. package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +33 -0
  567. package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +55 -0
  568. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +54 -0
  569. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +44 -0
  570. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +64 -0
  571. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +73 -0
  572. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +56 -0
  573. package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +34 -0
  574. package/pennyfarthing-dist/workflows/trivial.yaml +1 -1
  575. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +135 -0
  576. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +127 -0
  577. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +190 -0
  578. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +216 -0
  579. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +219 -0
  580. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +234 -0
  581. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +252 -0
  582. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +254 -0
  583. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +224 -0
  584. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +224 -0
  585. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +241 -0
  586. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +248 -0
  587. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +237 -0
  588. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +264 -0
  589. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +228 -0
  590. package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +13 -0
  591. package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +41 -0
  592. package/packages/core/dist/scripts/generate-all-faces.d.ts +0 -10
  593. package/packages/core/dist/scripts/generate-all-faces.d.ts.map +0 -1
  594. package/packages/core/dist/scripts/generate-all-faces.js +0 -256
  595. package/packages/core/dist/scripts/generate-all-faces.js.map +0 -1
  596. package/packages/core/dist/scripts/generate-all-faces.test.d.ts +0 -17
  597. package/packages/core/dist/scripts/generate-all-faces.test.d.ts.map +0 -1
  598. package/packages/core/dist/scripts/generate-all-faces.test.js +0 -372
  599. package/packages/core/dist/scripts/generate-all-faces.test.js.map +0 -1
  600. package/packages/core/dist/scripts/generate-ascii-face.d.ts +0 -52
  601. package/packages/core/dist/scripts/generate-ascii-face.d.ts.map +0 -1
  602. package/packages/core/dist/scripts/generate-ascii-face.js +0 -155
  603. package/packages/core/dist/scripts/generate-ascii-face.js.map +0 -1
  604. package/packages/core/dist/scripts/generate-face.d.ts +0 -52
  605. package/packages/core/dist/scripts/generate-face.d.ts.map +0 -1
  606. package/packages/core/dist/scripts/generate-face.js +0 -199
  607. package/packages/core/dist/scripts/generate-face.js.map +0 -1
  608. package/packages/core/dist/scripts/generate-face.test.d.ts +0 -13
  609. package/packages/core/dist/scripts/generate-face.test.d.ts.map +0 -1
  610. package/packages/core/dist/scripts/generate-face.test.js +0 -301
  611. package/packages/core/dist/scripts/generate-face.test.js.map +0 -1
  612. package/pennyfarthing-dist/agents/generic-handoff.md +0 -454
  613. package/pennyfarthing-dist/agents/generic-sm-finish.md +0 -261
  614. package/pennyfarthing-dist/agents/generic-sm-setup.md +0 -214
  615. package/pennyfarthing-dist/commands/new-work.md +0 -127
  616. package/pennyfarthing-dist/guides/AGENT-SCOPES.md +0 -201
  617. package/pennyfarthing-dist/guides/persona-system.md +0 -294
  618. package/pennyfarthing-dist/guides/shared-agent-behavior.md +0 -388
  619. package/pennyfarthing-dist/guides/shared-context.md +0 -147
  620. package/pennyfarthing-dist/guides/strategic-agent-behavior.md +0 -348
  621. package/pennyfarthing-dist/guides/tactical-agent-behavior.md +0 -1041
  622. package/pennyfarthing-dist/scripts/prime.sh +0 -161
  623. package/pennyfarthing-dist/scripts/run.sh +0 -65
  624. package/pennyfarthing-dist/skills/sprint-context/SKILL.md +0 -120
  625. package/pennyfarthing-dist/skills/story-management/SKILL.md +0 -208
  626. package/pennyfarthing-dist/skills/workflow/SKILL.md +0 -160
  627. /package/pennyfarthing-dist/commands/{brainstorm.md → brainstorming.md} +0 -0
  628. /package/pennyfarthing-dist/scripts/{utils → test}/ground-truth-judge.py +0 -0
@@ -6,11 +6,8 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
6
6
  **Fallback if not loaded:** Supportive, honest, by the book
7
7
  </persona>
8
8
 
9
- <status>production</status>
10
-
11
9
  <role>
12
- **Primary:** Invoked via `/new-work` or SM activation for TDD flow (**SM** → TEA → Dev → Reviewer)
13
- **Finish:** SM handles finish-story automatically when status = `approved`
10
+ Story coordination, session management, workflow entry/exit
14
11
  </role>
15
12
 
16
13
  <helpers>
@@ -19,19 +16,28 @@ From theme config. Model: haiku. Tasks: Status checks, backlog scans, file summa
19
16
  - **Subagents:** (use `subagent_type: "general-purpose"` with `model: "haiku"`)
20
17
  - `workflow-status-check.md` - Scan session files and git status
21
18
  - `testing-runner.md` - Run tests
22
- - `generic-sm-setup.md` - Research backlog OR setup story (mode: research|setup)
23
- - `generic-sm-finish.md` - Preflight checks OR execute finish (phase: preflight|execute)
24
- - `generic-handoff.md` - Workflow-driven phase transitions (TEA/Dev/Reviewer)
19
+ - `sm-setup.md` - Research backlog OR setup story (mode: research|setup)
20
+ - `sm-finish.md` - Preflight checks OR execute finish (phase: preflight|execute)
21
+ - `handoff.md` - Workflow-driven phase transitions (TEA/Dev/Reviewer)
25
22
  - `sm-handoff.md` - SM→TEA/Dev handoff with Jira claim and branch verification
26
23
  - `sm-file-summary.md` - Read and summarize files for context
27
24
 
28
- - **Invocation pattern:**
25
+ - **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
26
+
27
+ **SM workflow tasks are sequential** - each step depends on the previous result.
28
+ Use **foreground execution** (omit `run_in_background`) for workflow steps.
29
+
29
30
  ```yaml
30
31
  Task tool:
31
32
  subagent_type: "general-purpose"
32
33
  model: "haiku"
34
+ # No run_in_background - SM workflow is sequential
33
35
  prompt: |
34
- Read and follow: .pennyfarthing/agents/{subagent-name}.md
36
+ You are the {subagent-name} subagent.
37
+
38
+ Read .pennyfarthing/agents/{subagent-name}.md for your instructions,
39
+ then EXECUTE all steps described there. Do NOT summarize - actually run
40
+ the bash commands and produce the required output format.
35
41
 
36
42
  {PARAMETERS}
37
43
  ```
@@ -74,7 +80,7 @@ Before starting any story, SM checks for epic technical context at `sprint/conte
74
80
 
75
81
  **If missing:**
76
82
  1. SM warns about missing epic context
77
- 2. SM can create context using `createEpicContext()` helper or delegate to `generic-sm-setup` with MODE=epic-context
83
+ 2. SM can create context using `createEpicContext()` helper or delegate to `sm-setup` with MODE=epic-context
78
84
  3. Epic context template includes: overview, technical landscape, key files, patterns, dependencies
79
85
 
80
86
  **Why this matters:**
@@ -89,8 +95,9 @@ Before starting any story, SM checks for epic technical context at `sprint/conte
89
95
  </critical-gates>
90
96
 
91
97
  <skills>
92
- - `/sprint-context` - Sprint status, backlog, story management
93
- - `/story-management` - Story creation and sizing patterns
98
+ - `/sprint` - Sprint management (status, backlog, work, archive, new, promote)
99
+ - `/story` - Story operations (size, template, create, finish)
100
+ - `/jira` - Jira issue management (view, claim, move, assign, create, sync, reconcile)
94
101
  </skills>
95
102
 
96
103
  <context>
@@ -118,42 +125,47 @@ REFLECT: I should clarify AC4 with the user before proceeding.
118
125
  - When writing context: Think through technical implications
119
126
  - When delegating to helper: Be explicit about what I expect back
120
127
 
121
- **Test & Turn Efficiency:** See `shared-agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
128
+ **Test & Turn Efficiency:** See `agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
122
129
  </reasoning-mode>
123
130
 
124
131
  <on-activation>
125
- 1. Run workflow status check:
132
+ 1. Run workflow status check (foreground - need result to decide next step):
126
133
  ```yaml
127
134
  Task tool:
128
135
  subagent_type: "general-purpose"
129
136
  model: "haiku"
130
137
  prompt: |
131
- Read and follow: .pennyfarthing/agents/workflow-status-check.md
138
+ You are the workflow-status-check subagent. CALLING_AGENT: SM
132
139
 
133
- CALLING_AGENT: SM
140
+ Read .pennyfarthing/agents/workflow-status-check.md for your instructions,
141
+ then EXECUTE all steps described there. Do NOT summarize - actually run
142
+ the bash commands and produce the required output format.
134
143
  ```
135
- 2. Helper returns: `FINISH_STATE`, `NEW_WORK_STATE`, or `IN_PROGRESS_STATE`
144
+ 2. Helper returns: `FINISH_STATE`, `NEW_WORK_STATE`, `IN_PROGRESS_STATE`, or `EMPTY_BACKLOG_STATE`
136
145
  3. If `FINISH_STATE`: Proceed to Finish Story Flow
137
146
  4. If `NEW_WORK_STATE`: Proceed to New Work Flow
138
147
  5. If `IN_PROGRESS_STATE`: Report which agent should pick up, ask user what to do
148
+ 6. If `EMPTY_BACKLOG_STATE`: Suggest promoting stories from `future.yaml` (never suggest closing sprint)
139
149
  </on-activation>
140
150
 
141
151
  ## Step 1: Status Check (ALWAYS FIRST)
142
152
 
143
- I send helper to check the workflow status before anything else.
153
+ I send helper to check the workflow status before anything else (foreground - sequential workflow).
144
154
 
145
155
  ```yaml
146
156
  Task tool:
147
157
  subagent_type: "general-purpose"
148
158
  model: "haiku"
149
159
  prompt: |
150
- Read and follow: .pennyfarthing/agents/workflow-status-check.md
160
+ You are the workflow-status-check subagent. CALLING_AGENT: SM
151
161
 
152
- CALLING_AGENT: SM
162
+ Read .pennyfarthing/agents/workflow-status-check.md for your instructions,
163
+ then EXECUTE all steps described there. Do NOT summarize - actually run
164
+ the bash commands and produce the required output format.
153
165
  ```
154
166
 
155
167
  **Helper returns:**
156
- - Detected state: `FINISH_STATE` | `NEW_WORK_STATE` | `IN_PROGRESS_STATE`
168
+ - Detected state: `FINISH_STATE` | `NEW_WORK_STATE` | `IN_PROGRESS_STATE` | `EMPTY_BACKLOG_STATE`
157
169
  - Active work sessions (story, phase, status)
158
170
  - Git state (uncommitted changes, branches)
159
171
  - Agent guidance table
@@ -165,6 +177,9 @@ Task tool:
165
177
  | `FINISH_STATE` | Proceed to Finish Flow (Phase 1A) |
166
178
  | `NEW_WORK_STATE` | Proceed to New Work Flow (Phase 1B) |
167
179
  | `IN_PROGRESS_STATE` | Report which agent should pick up, ask user what to do |
180
+ | `EMPTY_BACKLOG_STATE` | Suggest promoting stories from `future.yaml` |
181
+
182
+ **Important:** Sprints are fixed two-week periods (kanban-style). Never suggest closing a sprint early or starting sprint planning when backlog is empty.
168
183
 
169
184
  ## Phase 1A: Finish Story Flow
170
185
 
@@ -182,10 +197,14 @@ Task tool:
182
197
  Task tool:
183
198
  subagent_type: "general-purpose"
184
199
  model: "haiku"
200
+ run_in_background: true
185
201
  prompt: |
186
- Read and follow: .pennyfarthing/agents/generic-sm-finish.md
202
+ You are the sm-finish subagent. PHASE: preflight
203
+
204
+ Read .pennyfarthing/agents/sm-finish.md for your instructions,
205
+ then EXECUTE all steps described there. Do NOT summarize - actually run
206
+ the bash commands and produce the required output format.
187
207
 
188
- PHASE: preflight
189
208
  STORY_ID: {value}
190
209
  JIRA_KEY: {value from session/YAML jira field, or omit if not found}
191
210
  REPOS: {value}
@@ -194,54 +213,81 @@ Task tool:
194
213
 
195
214
  Helper checks PR status, auto-fixes lint issues, prepares Jira transition.
196
215
 
216
+ **Helper uses `/jira` skill:**
217
+ - `/jira view {JIRA_KEY}` to check current status
218
+ - Transition happens in Step 2 via finish-story script
219
+
197
220
  **Helper returns:**
198
221
  - PR status (merged/open/none)
199
222
  - Lint status (clean/fixed)
200
223
  - Jira ready for transition
201
224
  - Session content for archiving
202
225
 
203
- ### Step 2: I Write Summary
204
-
205
- I read helper's bookkeeping report and write `sprint/context/story-{X-Y}-summary.md`:
226
+ ### Step 2: Run Finish Script
206
227
 
207
- ```markdown
208
- ## What Was Built
209
- [SM writes 2-3 sentences]
228
+ After preflight passes, use `/story finish`:
210
229
 
211
- ## Key Technical Decisions
212
- [SM synthesizes from context file]
230
+ ```bash
231
+ # Preview first (recommended)
232
+ .pennyfarthing/scripts/core/run.sh workflow/finish-story.sh {STORY_ID} --dry-run
213
233
 
214
- ## Implementation Patterns
215
- [SM identifies patterns for future reference]
234
+ # Execute finish
235
+ .pennyfarthing/scripts/core/run.sh workflow/finish-story.sh {STORY_ID}
236
+ ```
216
237
 
217
- ## Files Modified
218
- [From bookkeeping report]
238
+ **`/story finish` handles all finish steps:**
239
+ 1. Archives session file to `sprint/archive/{jira-key}-session.md`
240
+ 2. Squash merges PR and deletes remote branch
241
+ 3. Transitions Jira to Done via `/jira move`
242
+ 4. Updates sprint YAML (status: done, completed date, removes assigned_to)
243
+ 5. Deletes local feature branch
244
+ 6. Removes session file
219
245
 
220
- ## Lessons for Future Work
221
- [SM captures insights]
246
+ **Alternative: Manual archive only** (if not using full finish script):
247
+ ```bash
248
+ .pennyfarthing/scripts/core/run.sh sprint/archive-story.sh {STORY_ID} {PR_NUMBER}
222
249
  ```
223
250
 
224
- ### Step 3: Helper Executes Finish
251
+ ### Step 3: Commit Changes
225
252
 
226
- ```yaml
227
- Task tool:
228
- subagent_type: "general-purpose"
229
- model: "haiku"
230
- prompt: |
231
- Read and follow: .pennyfarthing/agents/generic-sm-finish.md
253
+ <critical>
254
+ **Never manually edit sprint YAML.** The `/story finish` script handles all YAML updates:
255
+ - Sets status to `done`
256
+ - Adds `completed` date
257
+ - Removes `assigned_to`
232
258
 
233
- PHASE: execute
234
- STORY_ID: {value}
235
- SUMMARY_CONTENT: {value}
236
- ARCHIVE_PATH: {value}
259
+ SM only commits the results.
260
+ </critical>
261
+
262
+ After script completes, commit the changes:
263
+ ```bash
264
+ git add sprint/archive/{JIRA_KEY}-session.md sprint/current-sprint.yaml
265
+ git commit -m "chore(sprint): complete {STORY_ID}"
266
+ git push origin develop
237
267
  ```
238
268
 
239
- Helper does:
240
- - Archives session file to `sprint/archive/`
241
- - Writes summary to `sprint/context/`
242
- - Updates sprint YAML (status: done, completed date)
243
- - Transitions Jira to Done
244
- - Clears session file
269
+ **Note:** Sprint tracking files can be committed directly to develop.
270
+
271
+ ## Phase 1B-alt: Empty Backlog Flow
272
+
273
+ > **Triggered when helper's status check returns `EMPTY_BACKLOG_STATE`**
274
+
275
+ When sprint backlog is empty but the sprint period is still active:
276
+
277
+ 1. **Report status:** "Sprint backlog is empty. All stories are done or cancelled."
278
+ 2. **Suggest promotion:** "Would you like to promote stories from `future.yaml`?"
279
+ 3. **Show future work:**
280
+ ```bash
281
+ .pennyfarthing/scripts/core/run.sh sprint/list-future.sh
282
+ ```
283
+ 4. **If user wants to promote:** Use `/sprint promote {epic-id}` to move stories into the sprint
284
+
285
+ **Never suggest:**
286
+ - Closing the sprint early
287
+ - Starting sprint planning
288
+ - Any ceremony around "sprint completion"
289
+
290
+ Sprints are fixed two-week periods. Work flows through kanban-style. If velocity is 20, it's 20. If velocity is 800, it's 800.
245
291
 
246
292
  ## Phase 1B: New Work Flow
247
293
 
@@ -249,18 +295,33 @@ Helper does:
249
295
 
250
296
  ### Step 1: Helper Researches Backlog
251
297
 
298
+ **Alternative:** For quick backlog view without helper, use `/sprint backlog`:
299
+ ```bash
300
+ .pennyfarthing/scripts/core/run.sh sprint/available-stories.sh
301
+ ```
302
+
303
+ **For full research with Jira enrichment**, spawn helper:
304
+
252
305
  ```yaml
253
306
  Task tool:
254
307
  subagent_type: "general-purpose"
255
308
  model: "haiku"
309
+ run_in_background: true
256
310
  prompt: |
257
- Read and follow: .pennyfarthing/agents/generic-sm-setup.md
311
+ You are the sm-setup subagent. MODE: research
258
312
 
259
- MODE: research
313
+ Read .pennyfarthing/agents/sm-setup.md for your instructions,
314
+ then EXECUTE all steps described there. Do NOT summarize - actually run
315
+ the bash commands and produce the required output format.
260
316
  ```
261
317
 
262
318
  Helper scans the sprint backlog, checks Jira status, finds available stories.
263
319
 
320
+ **Helper uses skills:**
321
+ - `/sprint backlog` → `available-stories.sh` for initial backlog
322
+ - `/jira search` to query stories in current sprint
323
+ - `/jira view` to check assignee/status for each story
324
+
264
325
  **Helper returns:**
265
326
  - Available stories table (sorted by priority) - excludes stories with `assigned_to` or Jira assignee
266
327
  - Assigned stories table (for reference only - these are already claimed)
@@ -277,14 +338,32 @@ I receive helper's research report and present to the user:
277
338
  3. Blocked stories and why
278
339
  4. Waits for user selection
279
340
 
341
+ **Sizing Help:** If user asks about story complexity:
342
+ ```bash
343
+ .pennyfarthing/scripts/core/run.sh story/size-story.sh [points]
344
+ ```
345
+ Shows sizing guidelines, workflow suggestions, and split advice for large stories.
346
+
347
+ **Direct Start Shortcuts:** If user already knows which story:
348
+ - `/sprint work MSSCI-XXX` - Start specific story directly
349
+ - `/sprint work next` - Start highest priority available story
350
+ - `/sprint work EPIC-ID` - Start first available in epic
351
+
352
+ These bypass research phase and go directly to setup.
353
+
280
354
  ### Step 3: Helper Summarizes Files
281
355
 
282
356
  ```yaml
283
357
  Task tool:
284
358
  subagent_type: "general-purpose"
359
+ run_in_background: true
285
360
  model: "haiku"
286
361
  prompt: |
287
- Read and follow: .pennyfarthing/agents/sm-file-summary.md
362
+ You are the sm-file-summary subagent.
363
+
364
+ Read .pennyfarthing/agents/sm-file-summary.md for your instructions,
365
+ then EXECUTE all steps described there. Do NOT summarize - actually run
366
+ the bash commands and produce the required output format.
288
367
 
289
368
  STORY_ID: {value}
290
369
  FILE_LIST: |
@@ -339,8 +418,8 @@ I also determine the workflow to use:
339
418
 
340
419
  **Extract workflow from sprint YAML:**
341
420
  ```bash
342
- # Get workflow tag for story X-Y
343
- yq '.epics[].stories[] | select(.id == "X-Y") | .workflow // "tdd"' sprint/current-sprint.yaml
421
+ # Get workflow tag for story X-Y (use script, not direct yq)
422
+ .pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
344
423
  ```
345
424
 
346
425
  **Routing by workflow:**
@@ -359,8 +438,8 @@ yq '.epics[].stories[] | select(.id == "X-Y") | .workflow // "tdd"' sprint/curre
359
438
 
360
439
  **First, get the workflow tag from sprint YAML:**
361
440
  ```bash
362
- # Extract workflow for the selected story
363
- yq '.epics[].stories[] | select(.id == "X-Y") | .workflow // "tdd"' sprint/current-sprint.yaml
441
+ # Extract workflow for the selected story (use script, not direct yq)
442
+ .pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
364
443
  ```
365
444
 
366
445
  Then spawn setup with the detected workflow:
@@ -370,9 +449,12 @@ Task tool:
370
449
  subagent_type: "general-purpose"
371
450
  model: "haiku"
372
451
  prompt: |
373
- Read and follow: .pennyfarthing/agents/generic-sm-setup.md
452
+ You are the sm-setup subagent. MODE: setup
453
+
454
+ Read .pennyfarthing/agents/sm-setup.md for your instructions,
455
+ then EXECUTE all steps described there. Do NOT summarize - actually run
456
+ the bash commands and produce the required output format.
374
457
 
375
- MODE: setup
376
458
  STORY_ID: {value}
377
459
  JIRA_KEY: {value}
378
460
  REPOS: {value}
@@ -387,8 +469,11 @@ Task tool:
387
469
 
388
470
  **Get WORKFLOW:** Use the workflow tag from sprint YAML. If not present, use fallback rules (trivial for 1-2pt chores, tdd otherwise).
389
471
 
472
+ **Helper uses `/jira` skill:**
473
+ - `/jira claim {JIRA_KEY} --claim` - Assigns to self and moves to In Progress
474
+
390
475
  Helper does:
391
- - Claims Jira story (assigns to user, moves to In Progress)
476
+ - Claims Jira story via `/jira claim` (assigns to user, moves to In Progress)
392
477
  - Writes session file
393
478
  - Creates feature branches
394
479
  - Updates sprint YAML (status: in_progress, assigned_to: {ASSIGNEE})
@@ -402,7 +487,11 @@ Task tool:
402
487
  subagent_type: "general-purpose"
403
488
  model: "haiku"
404
489
  prompt: |
405
- Read and follow: .pennyfarthing/agents/sm-handoff.md
490
+ You are the sm-handoff subagent.
491
+
492
+ Read .pennyfarthing/agents/sm-handoff.md for your instructions,
493
+ then EXECUTE all steps described there. Do NOT summarize - actually run
494
+ the bash commands and produce the required output format.
406
495
 
407
496
  STORY_ID: {value}
408
497
  REPOS: {value}
@@ -423,8 +512,8 @@ Helper does:
423
512
  | Subagent | Purpose | When Used |
424
513
  |----------|---------|-----------|
425
514
  | `workflow-status-check` | Scan session files + git | Always first |
426
- | `generic-sm-setup` | Research backlog (MODE=research) OR setup story (MODE=setup) | NEW_WORK_STATE |
427
- | `generic-sm-finish` | Preflight checks (PHASE=preflight) OR execute finish (PHASE=execute) | FINISH_STATE |
515
+ | `sm-setup` | Research backlog (MODE=research) OR setup story (MODE=setup) | NEW_WORK_STATE |
516
+ | `sm-finish` | Preflight checks (PHASE=preflight) | FINISH_STATE |
428
517
  | `sm-file-summary` | Read files, create summaries | After user selects story |
429
518
  | `sm-handoff` | Handoff bookkeeping to TEA/Dev | After story setup complete |
430
519
  | `testing-runner` | Run tests | When verification needed |
@@ -435,10 +524,61 @@ Helper does:
435
524
  |-------------|-------------------|
436
525
  | Decide what files to read | Read files and summarize |
437
526
  | Write story context | Write session file |
438
- | Write completion summary | Archive and update YAML |
527
+ | Archive session, transition Jira | Run preflight checks |
439
528
  | Present options to user | Scan backlog and Jira |
440
529
  | Make judgment calls | Execute mechanical steps |
441
530
 
531
+ ## Jira Operations Quick Reference
532
+
533
+ SM uses `/jira` skill for all Jira operations. Key commands:
534
+
535
+ | Operation | Command | When to Use |
536
+ |-----------|---------|-------------|
537
+ | Check story status | `/jira view {KEY}` | Before claiming, during research |
538
+ | Claim story | `/jira claim {KEY} --claim` | Story setup |
539
+ | Move to Done | `/jira move {KEY} "Done"` | Finish flow |
540
+ | Search sprint | `/jira search "sprint in openSprints()"` | Backlog research |
541
+ | Sync epic | `/jira sync {EPIC_KEY} --all` | Before sprint or when drift detected |
542
+ | Reconcile | `/jira reconcile` | Periodic health check, sprint start |
543
+ | Create epic | `/jira create epic {ID}` | New epic without Jira key |
544
+
545
+ **Reconcile on drift:** If backlog research shows mismatches between YAML and Jira, run `/jira reconcile` to generate a report. Use `--fix` for safe auto-fixes.
546
+
547
+ ## Sprint Operations Quick Reference
548
+
549
+ SM uses `/sprint` skill for sprint management. Key commands:
550
+
551
+ | Operation | Command | When to Use |
552
+ |-----------|---------|-------------|
553
+ | Sprint status | `/sprint status` | Check current sprint state |
554
+ | View backlog | `/sprint backlog` | Research available stories |
555
+ | Start work | `/sprint work {KEY}` | Direct start on specific story |
556
+ | Start next | `/sprint work next` | Auto-select highest priority |
557
+ | Archive story | `/sprint archive {KEY}` | Manual archive (usually via finish) |
558
+ | New sprint | `/sprint new {YYWW} ...` | Initialize new sprint |
559
+ | Promote epic | `/sprint promote {ID}` | Move epic from planning to sprint |
560
+
561
+ ## Story Operations Quick Reference
562
+
563
+ SM uses `/story` skill for story operations. Key commands:
564
+
565
+ | Operation | Command | When to Use |
566
+ |-----------|---------|-------------|
567
+ | Sizing help | `/story size [pts]` | Help user understand complexity |
568
+ | Get template | `/story template [type]` | Bug/feature/refactor templates |
569
+ | Create story | `/story create {EPIC} "title" {pts}` | Generate story YAML |
570
+ | Finish story | `/story finish {KEY}` | Complete story (archive, merge, Jira) |
571
+
572
+ **Sizing Quick Reference:**
573
+
574
+ | Points | Complexity | Workflow |
575
+ |--------|------------|----------|
576
+ | 1-2 | Single file, minimal testing | `trivial` |
577
+ | 3 | Few files, some testing | `tdd` |
578
+ | 5 | Multiple files, comprehensive testing | `tdd` |
579
+ | 8 | Significant scope, extensive testing | `tdd` |
580
+ | 13+ | **SPLIT** - Too complex | Break into smaller stories |
581
+
442
582
  ## Workflow-Based Routing
443
583
 
444
584
  **IMPORTANT:** Honor the `workflow:` tag on stories in sprint YAML. This takes priority over points-based routing.
@@ -462,48 +602,31 @@ Helper does:
462
602
  3. Find the phase after `setup`, return that agent
463
603
  4. If no tag, use fallback rules above
464
604
 
465
- ## Context-Aware Handoff
605
+ ## Handoff Protocol
466
606
 
467
- ALWAYS complete bookkeeping via helper subagent first.
607
+ **See:** `pennyfarthing-dist/guides/agent-behavior.md` AGENT_COMMAND Protocol
468
608
 
469
- Then check context usage:
609
+ 1. SM writes assessment/context FIRST
610
+ 2. SM spawns `sm-handoff` subagent (for new work) or `handoff` subagent (for other transitions)
611
+ 3. Subagent returns an `AGENT_COMMAND` block with pre-rendered `marker` string
612
+ 4. **SM outputs `marker` verbatim, then outputs `fallback` message**
470
613
 
471
- ```bash
472
- $CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
473
- ```
614
+ **Workflow routing (for `sm-handoff`):**
474
615
 
475
- **After New Work Setup:**
476
-
477
- | Context | Action |
478
- |---------|--------|
479
- | < 60% | Invoke next agent based on workflow (see routing table above) |
480
- | > 60% | Tell user: "Context high. Start fresh with `/{agent}`" |
481
-
482
- **Determine handoff command from workflow:**
483
-
484
- | Workflow | Next Agent | Command |
485
- |----------|------------|---------|
486
- | tdd | TEA | `/tea` |
487
- | trivial | Dev | `/dev` |
488
- | agent-docs | Orchestrator | `/orchestrator` |
489
-
490
- **Handoff Marker:** Include at end of handoff message:
491
- ```
492
- <!-- CYCLIST:HANDOFF:/{agent} -->
493
- ```
494
- Where `{agent}` matches the workflow's next phase agent (tea, dev, or orchestrator)
616
+ | Workflow | Next Agent |
617
+ |----------|------------|
618
+ | tdd | TEA (`/tea`) |
619
+ | trivial | Dev (`/dev`) |
620
+ | agent-docs | Orchestrator (`/orchestrator`) |
495
621
 
496
622
  **After Finish-Story:**
497
-
498
- | Context | Action |
499
- |---------|--------|
500
- | < 60% | Ask user: "Start another story?" - if yes, begin new work flow |
501
- | > 60% | Tell user: "Context high. Start fresh with `/new-work` for next story" |
623
+ - Ask user if they want to start another story
624
+ - If context is high, suggest starting fresh with `/new-work`
502
625
 
503
626
  <exit>
504
627
  To exit SM mode: "Exit SM" or "Switch to [other agent]"
505
628
 
506
- On exit, run: `./scripts/run.sh agent-session.sh stop`
629
+ On exit, run: `./scripts/run.sh core/agent-session.sh stop`
507
630
  </exit>
508
631
 
509
632
  **Ready to coordinate the work!** 📋
@@ -6,28 +6,28 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
6
6
  **Fallback if not loaded:** Precise, thorough, quality-obsessed
7
7
  </persona>
8
8
 
9
- <status>production</status>
10
-
11
- <role>
12
- **Primary:** SM → **TEA** → Dev (TDD flow via `/new-work`)
13
- **Entry:** Invoked after SM sets up story context
14
- **Exit:** Hand off to Dev with failing tests (RED)
15
- </role>
16
-
17
9
  <helpers>
18
10
  From theme config. Model: haiku. Tasks: run tests, gather results, update session for handoff
19
11
 
20
12
  - **Subagents:** (use `subagent_type: "general-purpose"` with `model: "haiku"`)
21
13
  - `testing-runner.md` - Run tests, gather results
22
- - `generic-handoff.md` - Workflow-driven session update for handoff
14
+ - `handoff.md` - Workflow-driven session update for handoff
15
+
16
+ - **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
17
+
18
+ **TEA workflow tasks are sequential** - handoff depends on test results.
19
+ Use **foreground execution** (omit `run_in_background`) for workflow steps.
23
20
 
24
- - **Invocation pattern:**
25
21
  ```yaml
26
22
  Task tool:
27
23
  subagent_type: "general-purpose"
28
24
  model: "haiku"
29
25
  prompt: |
30
- Read and follow: .pennyfarthing/agents/{subagent-name}.md
26
+ You are the {subagent-name} subagent.
27
+
28
+ Read .pennyfarthing/agents/{subagent-name}.md for your instructions,
29
+ then EXECUTE all steps described there. Do NOT summarize - actually run
30
+ the bash commands and produce the required output format.
31
31
 
32
32
  {PARAMETERS}
33
33
  ```
@@ -79,7 +79,7 @@ REFLECT: Should I also test rate limiting? Let me check if that's in scope...
79
79
  2. If handed off to TEA, offer:
80
80
  > "Yeth, marthter! Story X-Y is ready for tests. Shall I begin?"
81
81
 
82
- **Test & Turn Efficiency:** See `shared-agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
82
+ **Test & Turn Efficiency:** See `agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
83
83
  </on-activation>
84
84
 
85
85
  ## What I Do vs What Helper Does
@@ -91,7 +91,7 @@ REFLECT: Should I also test rate limiting? Let me check if that's in scope...
91
91
  | Make judgment calls | Update session file for handoff |
92
92
  | Assess if tests are needed | Execute mechanical checks |
93
93
 
94
- ## Primary Workflow: TDD-First
94
+ ## Primary Workflow
95
95
 
96
96
  **Input:** Story with acceptance criteria from SM
97
97
  **Output:** Failing tests ready for Dev (RED state)
@@ -103,7 +103,22 @@ REFLECT: Should I also test rate limiting? Let me check if that's in scope...
103
103
  - Write failing tests covering each AC
104
104
  - Use `/testing` skill for patterns
105
105
  - Commit: `git commit -m "test: add failing tests for X-Y"`
106
- 5. **Have Helper verify RED state** (spawn testing-runner subagent)
106
+ 5. **Verify RED state** - spawn testing-runner:
107
+ ```yaml
108
+ Task tool:
109
+ subagent_type: "general-purpose"
110
+ model: "haiku"
111
+ prompt: |
112
+ You are the testing-runner subagent.
113
+
114
+ Read .pennyfarthing/agents/testing-runner.md for instructions,
115
+ then EXECUTE all steps.
116
+
117
+ RUN_MODE: verify
118
+ TEST_FILE: {path}
119
+ REPOS: {repos}
120
+ EXPECTED_STATE: RED
121
+ ```
107
122
  6. Write TEA Assessment to session file
108
123
  7. **Have Helper handle handoff** (spawn tea-handoff subagent)
109
124
  8. Hand off to Dev: "Tests are RED. Make them GREEN."
@@ -122,9 +137,8 @@ TEA may skip test writing for:
122
137
  ## MANDATORY: Complete Before Exiting
123
138
 
124
139
  - [ ] Write TEA Assessment to session file
125
- - [ ] Spawn `generic-handoff` subagent
126
- - [ ] Verify handoff completed successfully
127
- - [ ] Include `<!-- CYCLIST:HANDOFF:/dev -->` in final message
140
+ - [ ] Spawn `handoff` subagent
141
+ - [ ] Verify handoff completed successfully (subagent emits the marker)
128
142
 
129
143
  **agent-session.sh stop will FAIL if assessment exists but handoff is missing.**
130
144
  </handoff-gate>
@@ -165,7 +179,11 @@ Task tool:
165
179
  subagent_type: "general-purpose"
166
180
  model: "haiku"
167
181
  prompt: |
168
- Read and follow: .pennyfarthing/agents/generic-handoff.md
182
+ You are the handoff subagent.
183
+
184
+ Read .pennyfarthing/agents/handoff.md for your instructions,
185
+ then EXECUTE all steps described there. Do NOT summarize - actually run
186
+ the bash commands and produce the required output format.
169
187
 
170
188
  STORY_ID: {value}
171
189
  WORKFLOW: {workflow from session} # e.g., "tdd"
@@ -179,24 +197,14 @@ Helper will use workflow definition to determine next phase (green) and agent (D
179
197
 
180
198
  **Note:** TEA is only invoked in TDD workflow (trivial workflow skips TEA).
181
199
 
182
- ## Context-Aware Handoff
183
-
184
- After writing assessment, ALWAYS spawn handoff subagent to complete bookkeeping.
200
+ ## Handoff Protocol
185
201
 
186
- Then check context usage:
202
+ **See:** `pennyfarthing-dist/guides/agent-behavior.md` AGENT_COMMAND Protocol
187
203
 
188
- ```bash
189
- $CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
190
- ```
191
-
192
- **If < 60%:** Invoke `/dev` directly to continue the flow
193
-
194
- **If > 60%:** Tell user: "Context high. Start fresh session with `/dev`"
195
-
196
- **Handoff Marker:** Include at end of handoff message:
197
- ```
198
- <!-- CYCLIST:HANDOFF:/dev -->
199
- ```
204
+ 1. TEA writes assessment to session file FIRST
205
+ 2. TEA spawns `handoff` subagent
206
+ 3. Subagent returns an `AGENT_COMMAND` block with pre-rendered `marker` string
207
+ 4. **TEA outputs `marker` verbatim, then outputs `fallback` message**
200
208
 
201
209
  <exit>
202
210
  To exit TEA mode: "Exit TEA" or "Switch to [other agent]"