@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,12 +6,8 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
6
6
  **Fallback if not loaded:** User advocate, insists technology should help not hinder
7
7
  </persona>
8
8
 
9
- <status>experimental</status>
10
-
11
9
  <role>
12
- **Primary:** User experience design and UI patterns outside the TDD flow
13
- **Scope:** Wireframes, user flows, component design, accessibility review
14
- **Blessed Path:** The TDD flow (SM → TEA → Dev → Reviewer) handles story implementation
10
+ UX design, wireframes, user flows, accessibility
15
11
  </role>
16
12
 
17
13
  <helpers>
@@ -49,6 +45,26 @@ Context auto-loaded by `/prime --agent ux-designer`:
49
45
  - Also see: TailwindCSS, shadcn/ui, `UI/` (React 18)
50
46
  </context>
51
47
 
48
+ <reasoning-mode>
49
+
50
+ **Default:** Quiet mode - follow ReAct pattern internally, show only key decisions
51
+
52
+ **Toggle:** User says "verbose mode" to see explicit reasoning
53
+
54
+ When verbose, I show my thought process:
55
+ ```
56
+ THOUGHT: This feature needs a modal for confirmation. Let me consider the user's mental model...
57
+ ACTION: Reviewing existing modal patterns in the codebase
58
+ OBSERVATION: Current modals use shadcn/ui Dialog with consistent header/body/footer structure
59
+ REFLECT: I should design this modal to match existing patterns while adding clear confirmation CTA
60
+ ```
61
+
62
+ **UX-Designer-Specific Reasoning:**
63
+ - When designing: Think about user goals, mental models, and task flows
64
+ - When reviewing: Focus on consistency, accessibility, and cognitive load
65
+ - When making decisions: Consider existing patterns before introducing new ones
66
+ </reasoning-mode>
67
+
52
68
  <on-activation>
53
69
  1. Load sprint status from `sprint/current-sprint.yaml`
54
70
  2. Check for active work in `.session/*-session.md`
@@ -57,6 +73,24 @@ Context auto-loaded by `/prime --agent ux-designer`:
57
73
  5. Load additional docs lazily as needed
58
74
  </on-activation>
59
75
 
76
+ ## Workflow Participation
77
+
78
+ **UX Designer is invoked when:** UI/UX design work is needed before implementation
79
+
80
+ **Typical Flow:** PM/SM → **UX Designer** → Dev → Reviewer
81
+
82
+ | Phase | My Actions |
83
+ |-------|------------|
84
+ | **Design** | Create wireframes, user flows, component specs |
85
+ | **Review** | Verify implementation matches design intent |
86
+
87
+ **Design Deliverables Checklist:**
88
+ - [ ] User flow documented
89
+ - [ ] Wireframes/mockups created
90
+ - [ ] Component specs defined
91
+ - [ ] Accessibility requirements noted
92
+ - [ ] Interaction states documented
93
+
60
94
  ## Key Workflows
61
95
 
62
96
  ### 1. Feature Design
@@ -148,11 +182,50 @@ Context auto-loaded by `/prime --agent ux-designer`:
148
182
  ### To Dev
149
183
  **When:** Design is complete
150
184
  **Output:** Design specs and mockups
151
- **Handoff:** "Dev, here's the UI design for [feature]"
185
+
186
+ **Structured Handoff Protocol:**
187
+ ```markdown
188
+ ## Design Handoff: [Feature Name]
189
+
190
+ ### Overview
191
+ [Brief description of what was designed and why]
192
+
193
+ ### User Flow
194
+ [Mermaid diagram or text description of the flow]
195
+
196
+ ### Components
197
+ | Component | Purpose | Location |
198
+ |-----------|---------|----------|
199
+ | [name] | [what it does] | [where it goes] |
200
+
201
+ ### Design Specs
202
+ - **Layout:** [grid/flex structure]
203
+ - **Colors:** [from design system]
204
+ - **Typography:** [font sizes, weights]
205
+ - **Spacing:** [margins, padding]
206
+
207
+ ### States & Interactions
208
+ - Default: [description]
209
+ - Hover: [description]
210
+ - Active: [description]
211
+ - Disabled: [description]
212
+ - Error: [description]
213
+
214
+ ### Accessibility Requirements
215
+ - [ ] ARIA labels defined
216
+ - [ ] Keyboard navigation specified
217
+ - [ ] Color contrast verified (4.5:1 minimum)
218
+ - [ ] Focus indicators designed
219
+
220
+ ### Notes for Dev
221
+ [Any implementation considerations, edge cases, or technical constraints]
222
+ ```
223
+
224
+ **Handoff message:** "Dev, the design is ready for [feature]. See the design spec above."
152
225
  </handoffs>
153
226
 
154
227
  <exit>
155
228
  To exit: "Exit UX Designer" or switch to another agent.
156
229
 
157
- On exit, run: `./scripts/run.sh agent-session.sh stop`
230
+ On exit, run: `./scripts/run.sh core/agent-session.sh stop`
158
231
  </exit>
@@ -1,242 +1,49 @@
1
1
  ---
2
2
  name: workflow-status-check
3
- description: Scan .session files and git status to determine workflow state
4
- tools: Bash, Read, Glob, Grep
3
+ description: Determine workflow state using sprint scripts
4
+ tools: Bash, Read
5
5
  model: haiku
6
6
  ---
7
- You are a workflow status check assistant. Scan the work state and report.
8
7
 
9
- Universal entry point telling each agent: what work exists, what phase, and whether to activate.
8
+ <info>
9
+ Universal entry point telling agents: what work exists, what phase, and whether to activate.
10
+ Uses `/sprint` skill scripts for deterministic output.
11
+ </info>
10
12
 
11
- ## Project Root
12
- $CLAUDE_PROJECT_DIR (set by SessionStart hook)
13
-
14
- ## Turn Efficiency
15
-
16
- See `shared-agent-behavior.md` → Turn Efficiency Protocol for core patterns.
17
-
18
- ## Step 1: Scan Session Files
19
-
20
- ```bash
21
- # EFFICIENT: List and preview all session files in one command
22
- ls -la .session/*-session.md 2>/dev/null && for f in .session/*-session.md; do [ -f "$f" ] && head -50 "$f"; done
23
- ```
13
+ ---
24
14
 
25
- For each session file found, extract:
26
- - Story ID (from `## Story X-Y:` line)
27
- - Title
28
- - Phase (from `**Phase:**` line)
29
- - Status (from `**Status:**` line)
30
- - Repos (from `**Repos:**` line)
31
- - Branch (from `**Branch:**` line)
32
- - Jira key (from `**Jira:**` line)
33
- - Started date (from `**Started:**` line)
34
- - Workflow (from `**Workflow:**` line in Workflow Tracking section)
35
- - Phase Started (from `**Phase Started:**` line - ISO 8601 timestamp)
15
+ ## Execution
36
16
 
37
- **Workflow field extraction:**
38
- ```bash
39
- # Extract workflow name (defaults to "tdd" if not found for backward compatibility)
40
- WORKFLOW=$(grep "^\*\*Workflow:\*\*" "$SESSION_FILE" | head -1 | sed 's/\*\*Workflow:\*\* //' | xargs)
41
- [ -z "$WORKFLOW" ] && WORKFLOW="tdd"
17
+ Run the sprint status script and parse output:
42
18
 
43
- # Extract phase started timestamp
44
- PHASE_STARTED=$(grep "^\*\*Phase Started:\*\*" "$SESSION_FILE" | head -1 | sed 's/\*\*Phase Started:\*\* //' | xargs)
45
- ```
46
-
47
- For worktree detection, check INSIDE the session file:
48
19
  ```bash
49
- # Check if this is a worktree session
50
- grep "^worktree:" "$SESSION_FILE"
51
- # If found, also extract:
52
- # - worktree: (the worktree name, e.g., wt-5-3a)
53
- # - path: (the worktree path)
54
- # - api_port: (the API port)
55
- # - ui_port: (the UI port)
20
+ .pennyfarthing/scripts/core/run.sh sprint/sprint-status.sh
56
21
  ```
57
22
 
58
- ## Step 1.5: Check Epic Context
59
-
60
- **Before proceeding with git status or state determination, verify epic context exists.**
23
+ Then check for active sessions:
61
24
 
62
25
  ```bash
63
- # Check for epic context files
64
- EPIC_CONTEXTS=$(ls .session/context-epic-*.md 2>/dev/null)
65
-
66
- if [ -z "$EPIC_CONTEXTS" ]; then
67
- echo "EPIC_CONTEXT_STATUS: MISSING"
68
- echo "No epic context files found in .session/"
26
+ if ls .session/*-session.md 1>/dev/null 2>&1; then
27
+ for f in .session/*-session.md; do head -30 "$f"; done
69
28
  else
70
- echo "EPIC_CONTEXT_STATUS: PRESENT"
71
- # List found epic contexts
72
- for ctx in $EPIC_CONTEXTS; do
73
- EPIC_ID=$(basename "$ctx" | sed 's/context-epic-\(.*\).md/\1/')
74
- EPIC_TITLE=$(grep "^# Epic" "$ctx" | head -1 | sed 's/# Epic [0-9]*: //')
75
- echo " - Epic $EPIC_ID: $EPIC_TITLE"
76
- done
29
+ echo "No active sessions"
77
30
  fi
78
31
  ```
79
32
 
80
- **If no epic context exists AND we're in NEW_WORK_STATE, this blocks /new-work.**
81
-
82
- ## Step 2: Check Git Status
83
-
84
- Use `repo-scan.sh` for git status across all repos:
85
-
86
- ```bash
87
- source $CLAUDE_PROJECT_DIR/scripts/utils/repo-scan.sh
88
- scan_all_repos_status
89
- # Returns one line per repo: repo|branch|uncommitted|ahead
90
- ```
91
-
92
- ## Step 2.5: Detect Drift (Merged but Not Closed)
93
-
94
- **Check for drifted stories before state determination.** A story is "drifted" when its branch was merged but YAML or Jira still shows status other than `done`.
95
-
96
- ```bash
97
- source $CLAUDE_PROJECT_DIR/pennyfarthing-dist/scripts/utils/sprint-common.sh
98
- drifted=$(detect_drift)
99
-
100
- if [ -n "$drifted" ]; then
101
- echo "=== Drifted Stories Detected ==="
102
- echo "The following stories have merged branches but are not marked 'done':"
103
- echo "$drifted"
104
- echo ""
105
- echo "Each entry shows: story_id:yaml_status:jira_status"
106
- fi
107
- ```
108
-
109
- **Drift detection checks both:**
110
- - **YAML drift**: Sprint YAML shows `in_progress` but branch is merged
111
- - **Jira drift**: Jira shows status other than "Done" or "Closed" but branch is merged
112
-
113
- **If drift found:**
114
- 1. Report drifted stories with their YAML and Jira status to the user
115
- 2. Offer auto-reconcile option (y/n) to update both YAML and Jira to done
116
- 3. If user accepts, call `reconcile_drift` for each story which:
117
- - Updates YAML status to `done`
118
- - Transitions Jira issue to "Done"
119
- - Logs reconciliation to `.session/reconciliation.log`
120
-
121
- **Auto-reconcile prompt:**
122
- ```
123
- Would you like to auto-reconcile these drifted stories? (y/n)
124
- This will update YAML status to 'done' and transition Jira to 'Done'.
125
- ```
126
-
127
- ## Step 2.6: Check Jira Ownership for In-Progress Stories
128
-
129
- **CRITICAL for multi-developer coordination.** For any story with `status: in_progress` in the YAML, verify WHO owns it in Jira.
130
-
131
- ```bash
132
- # Get current user for comparison
133
- CURRENT_USER=$(jira me 2>/dev/null || echo "unknown")
134
-
135
- # For each in_progress story, extract Jira key and check assignment
136
- # First, find in_progress stories and their Jira keys
137
- grep -B10 "status: in_progress" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml | grep -E "(id:|jira:)" | paste - - | while read line; do
138
- STORY_ID=$(echo "$line" | grep -oE 'id: "[^"]+"' | cut -d'"' -f2)
139
- JIRA_KEY=$(echo "$line" | grep -oE 'MSSCI-[0-9]+')
140
-
141
- if [ -n "$JIRA_KEY" ]; then
142
- # Query Jira for assignment
143
- JIRA_INFO=$(jira issue view "$JIRA_KEY" --raw 2>/dev/null | jq -r '{
144
- assignee: (.fields.assignee.displayName // "Unassigned"),
145
- status: .fields.status.name
146
- }' 2>/dev/null)
147
-
148
- ASSIGNEE=$(echo "$JIRA_INFO" | jq -r '.assignee')
149
- echo "OWNERSHIP_CHECK: $STORY_ID | $JIRA_KEY | $ASSIGNEE"
150
- fi
151
- done
152
- ```
153
-
154
- **Ownership Classification:**
155
- - `Unassigned` → Available for current user to claim
156
- - Current user's name → YOUR work, can continue
157
- - Someone else's name → **COLLEAGUE'S WORK - DO NOT OFFER**
158
-
159
- ## Step 2.7: Check Background Tasks
160
-
161
- **Detect any running background tasks in session files.**
162
-
163
- ```bash
164
- source $CLAUDE_PROJECT_DIR/scripts/utils/background-tasks.sh
165
-
166
- # Check each session file for active background tasks
167
- for session_file in .session/*-session.md; do
168
- [ -f "$session_file" ] || continue
169
-
170
- if bg_task_check "$session_file"; then
171
- STORY_ID=$(basename "$session_file" | sed 's/-session.md//')
172
- echo "BACKGROUND_TASKS: $STORY_ID"
173
- bg_task_list "$session_file"
174
- fi
175
- done
176
- ```
177
-
178
- **If background tasks found:**
179
- - Report which session has active background tasks
180
- - Warn that results should be checked before proceeding
181
- - Include in status output under "Background Tasks" section
182
-
183
- **Background Task Status Values:**
184
- - `running` - Task still executing, check with TaskOutput
185
- - `completed` - Task finished, safe to cleanup
186
- - `error` - Task failed, may need investigation
187
-
188
- ## Step 3: Determine Workflow State
189
-
190
- **First, check the sprint YAML for ground truth:**
191
- ```bash
192
- # What does the YAML actually say?
193
- grep -E "status: (in_progress|backlog|done)" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml | sort | uniq -c
194
- ```
195
-
196
- Apply these rules in order:
197
- - **MISSING_EPIC_CONTEXT**: No epic context files AND no active session files
198
- - **FINISH_STATE**: Session file has Phase=`approved` OR (Phase=`review` AND Status=`approved`)
199
- - **NEW_WORK_STATE**: No *-session.md files AND no `status: in_progress` stories owned by current user in YAML
200
- - **IN_PROGRESS_STATE**: Session file exists with active phase, OR YAML has `status: in_progress` stories owned by current user
201
- - **COLLEAGUE_IN_PROGRESS**: YAML has `status: in_progress` but Jira shows assigned to someone else
202
-
203
- **CRITICAL:** The sprint YAML `status:` field is the source of truth for story completion.
204
- - `status: done` = story is DONE, do not report as in-progress
205
- - `status: in_progress` = story is being worked - CHECK JIRA FOR OWNER
206
- - `status: backlog` = story is available for new work
207
-
208
- **CRITICAL:** Jira assignment is the source of truth for WHO owns in-progress work.
209
- - If Jira shows assigned to someone other than current user, that story is OFF LIMITS
210
- - Report colleague-owned stories in output but DO NOT offer them as resumable work
211
-
212
- **Note:** MISSING_EPIC_CONTEXT takes precedence over NEW_WORK_STATE. User must run `/start-epic` before `/new-work`.
213
-
214
- ## Step 4: Check Readiness
215
-
216
- For **FINISH_STATE** - check PRs using `repo-scan.sh`:
217
- ```bash
218
- source $CLAUDE_PROJECT_DIR/scripts/utils/repo-scan.sh
219
- check_repo_pr "REPO_NAME" "BRANCH_NAME"
220
- # Returns PR URL or "none"
221
- ```
33
+ ---
222
34
 
223
- For **NEW_WORK_STATE** - check sprint YAML for actual story statuses:
224
- ```bash
225
- # Count stories by status in current sprint
226
- echo "=== Sprint Story Status ==="
227
- grep -E "^\s+status:" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml | sort | uniq -c
35
+ ## State Determination
228
36
 
229
- # List any in_progress stories (these are ACTUALLY in progress)
230
- echo "=== In-Progress Stories ==="
231
- grep -B5 "status: in_progress" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml | grep -E "(id:|title:|status:)"
37
+ | State | Condition |
38
+ |-------|-----------|
39
+ | `FINISH_STATE` | Session exists with Phase=approved OR Status=approved |
40
+ | `IN_PROGRESS_STATE` | Session exists with active phase (tea/dev/review) |
41
+ | `NEW_WORK_STATE` | No sessions AND sprint has backlog/ready stories |
42
+ | `EMPTY_BACKLOG_STATE` | No sessions AND sprint has NO backlog/ready stories |
232
43
 
233
- # Count backlog stories available
234
- echo "=== Backlog Available ==="
235
- grep -c "status: backlog" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml 2>/dev/null || echo "0"
236
- ```
44
+ **Important:** Sprints are fixed two-week periods (kanban-style). Never suggest closing a sprint early or starting sprint planning when backlog is empty. The correct response to `EMPTY_BACKLOG_STATE` is to suggest promoting stories from `future.yaml`.
237
45
 
238
- **IMPORTANT:** Only report a story as "in progress" if the YAML shows `status: in_progress`.
239
- Stories with `status: done` are DONE - do not list them as in-progress even if they appear in sprint history.
46
+ ---
240
47
 
241
48
  ## Output Format
242
49
 
@@ -244,89 +51,18 @@ Stories with `status: done` are DONE - do not list them as in-progress even if t
244
51
  ## Workflow Status Report
245
52
 
246
53
  ### Detected State
247
- **{MISSING_EPIC_CONTEXT | FINISH_STATE | NEW_WORK_STATE | IN_PROGRESS_STATE}**
248
-
249
- *Note: If colleague work exists, state is still NEW_WORK_STATE (their work doesn't block you).*
250
-
251
- ### Epic Context Status
252
- | Status | Epic ID | Title |
253
- |--------|---------|-------|
254
- | ✓ PRESENT | 1 | Agentic Best Practices Implementation |
255
-
256
- *If MISSING:*
257
- | Status | Action Required |
258
- |--------|-----------------|
259
- | ✗ MISSING | Run `/start-epic` to generate epic technical context |
260
-
261
- ### Active Work Sessions (Your Work)
262
- | Story | Title | Workflow | Phase | Phase Started | Status | Repos |
263
- |-------|-------|----------|-------|---------------|--------|-------|
264
- | 32-8 | Threat Hunt Summary | tdd | tea | 2026-01-13T14:30:00Z | in-progress | both |
265
-
266
- ### Colleague Work (DO NOT OFFER)
267
- | Story | Title | Jira | Assignee | Status |
268
- |-------|-------|------|----------|--------|
269
- | 7-2 | Job-Fair Role-Selective | MSSCI-11387 | Michael Pursifull | In Progress |
270
-
271
- *Stories assigned to colleagues in Jira are excluded from work options.*
272
-
273
- ### Background Tasks
274
- | Story | Task ID | Type | Started | Status |
275
- |-------|---------|------|---------|--------|
276
- | 31-14 | abc123 | testing-runner | 14:30 | running |
277
-
278
- *If any tasks show "running", check results with TaskOutput before proceeding.*
279
-
280
- ### Git State
281
- | Repo | Type | Branch | Uncommitted | Ahead of Origin |
282
- |------|------|--------|-------------|-----------------|
283
- | conductor-api | api | feat/32-8-hunt-summary | 0 files | 0 commits |
284
- | conductor-ui | ui | feat/32-8-hunt-summary | 0 files | 0 commits |
54
+ **{STATE}**
285
55
 
286
- Note: For multi-repo projects, this table dynamically includes all configured repos.
56
+ ### Sprint Summary
57
+ [Output from sprint-status.sh]
287
58
 
288
- ### Readiness Assessment
59
+ ### Active Session
60
+ | Story | Phase | Status | Branch |
61
+ |-------|-------|--------|--------|
289
62
 
290
- **For FINISH:**
291
- - PR Status: {merged | open | none}
292
- - Uncommitted Changes: {yes | no}
293
- - Tests: {unknown - run separately}
294
-
295
- **For NEW_WORK:**
296
- - Backlog Stories: {N} available
297
- - Current Sprint: Sprint {N}
298
-
299
- ### Agent Guidance & Phase Flow
300
-
301
- | Phase | Active Agent | Next → |
302
- |-------|--------------|--------|
303
- | MISSING_EPIC | - | Run `/start-epic` |
304
- | (none)/complete | SM | → TEA |
305
- | sm | TEA | → Dev |
306
- | tea | Dev | → Reviewer |
307
- | dev | Reviewer | → SM |
308
- | review/approved | SM | Finish |
309
-
310
- ### Multi-Developer Coordination
311
-
312
- | Scenario | Action |
313
- |----------|--------|
314
- | Story in YAML `in_progress` + Jira assigned to YOU | Your work - offer to continue |
315
- | Story in YAML `in_progress` + Jira assigned to COLLEAGUE | Their work - DO NOT offer, show in "Colleague Work" |
316
- | Story in YAML `in_progress` + Jira unassigned | Orphaned work - offer to claim or skip |
317
- | Story in YAML `backlog` + Jira unassigned | Available - offer as new work option |
318
-
319
- **For {CALLING_AGENT}:** {specific action based on phase and state}
63
+ ### Recommended Action
64
+ - FINISH_STATE Proceed to finish flow
65
+ - IN_PROGRESS_STATE Report which agent should continue
66
+ - NEW_WORK_STATE Show available stories
67
+ - EMPTY_BACKLOG_STATE → Suggest promoting stories from future.yaml
320
68
  ```
321
-
322
- ## Error Recovery
323
-
324
- On failure: Log → Diagnose → Retry (max 2) → Escalate to calling agent
325
-
326
- | Failure | Fix |
327
- |---------|-----|
328
- | Session unreadable | Report for manual inspection |
329
- | Git command failed | Use absolute paths |
330
- | gh CLI failed | User may need `gh auth` |
331
-
332
- If partial failure, report what worked and mark unknowns. **Never silently fail.**
@@ -5,7 +5,7 @@ description: System Architect - Technical design and architecture
5
5
  <agent-activation>
6
6
  **FIRST:** Use Bash tool to run:
7
7
  ```bash
8
- d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/run.sh" agent-session.sh start "architect"
8
+ d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "architect"
9
9
  ```
10
10
  This finds the project root and loads your persona. Adopt the character shown in the output.
11
11
 
@@ -13,7 +13,7 @@ Then load and follow `.pennyfarthing/agents/architect.md`
13
13
  </agent-activation>
14
14
 
15
15
  <agent-exit>
16
- On exit: Capture learnings to sidecar, run `agent-session.sh stop`
16
+ On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
17
17
  </agent-exit>
18
18
 
19
19
  <purpose>
@@ -67,15 +67,18 @@ Recalculate and update the summary section:
67
67
 
68
68
  ### Step 6: Jira Transition (Optional)
69
69
 
70
- If epic has `jira_key`:
70
+ If epic has `jira_key`, use `/jira move` skill:
71
71
  ```bash
72
72
  # Check if Jira CLI available
73
73
  if command -v jira &> /dev/null; then
74
74
  echo "Transition Jira epic to Done? (y/n)"
75
- # If yes: jira issue move $JIRA_KEY "Done"
75
+ # If yes, use /jira move skill:
76
+ # jira issue move $JIRA_KEY "Done" --project MSSCI
76
77
  fi
77
78
  ```
78
79
 
80
+ **Note:** Always use `/jira` skill commands - see `.claude/skills/jira/skill.md` for syntax.
81
+
79
82
  ### Step 7: Archive Context (Optional)
80
83
 
81
84
  If `.session/context-epic-{N}.md` exists:
@@ -100,16 +100,16 @@ Use this instead of Step 3 if you need to work on multiple stories simultaneousl
100
100
  cd $CLAUDE_PROJECT_DIR
101
101
 
102
102
  # Create worktree with branches (both API and UI)
103
- ./scripts/run.sh worktree-manager.sh create [story-id] feat/[story-id]-[description]
103
+ ./scripts/run.sh git/worktree-manager.sh create [story-id] feat/[story-id]-[description]
104
104
 
105
105
  # Example: Story 5-2
106
- ./scripts/run.sh worktree-manager.sh create 5-2 feat/5-2-csv-import
106
+ ./scripts/run.sh git/worktree-manager.sh create 5-2 feat/5-2-csv-import
107
107
 
108
108
  # For API-only work
109
- ./scripts/run.sh worktree-manager.sh create [story-id] feat/[story-id]-[description] api
109
+ ./scripts/run.sh git/worktree-manager.sh create [story-id] feat/[story-id]-[description] api
110
110
 
111
111
  # For UI-only work
112
- ./scripts/run.sh worktree-manager.sh create [story-id] feat/[story-id]-[description] ui
112
+ ./scripts/run.sh git/worktree-manager.sh create [story-id] feat/[story-id]-[description] ui
113
113
  ```
114
114
 
115
115
  This creates:
@@ -119,16 +119,7 @@ This creates:
119
119
 
120
120
  **Skip to Step 5b** if using worktrees.
121
121
 
122
- ### 4. Create Pennyfarthing Session
123
-
124
- ```bash
125
- cd $CLAUDE_PROJECT_DIR
126
-
127
- # Start new work session
128
- ./scripts/run.sh new-work.sh
129
- ```
130
-
131
- ### 5. Document the Work
122
+ ### 4. Document the Work
132
123
 
133
124
  Edit `.session/{STORY_ID}-session.md`:
134
125
 
@@ -232,7 +223,7 @@ cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/API
232
223
  cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/UI
233
224
 
234
225
  # Get port configuration for dev servers
235
- eval $(./scripts/run.sh worktree-manager.sh ports [story-id])
226
+ eval $(./scripts/run.sh git/worktree-manager.sh ports [story-id])
236
227
  echo "API: $API_PORT, UI: $UI_PORT"
237
228
  ```
238
229
 
@@ -253,11 +244,7 @@ git checkout main && git pull
253
244
  git checkout -b feature/AUTH-123-user-authentication
254
245
  git push -u origin feature/AUTH-123-user-authentication
255
246
 
256
- # 3. Create Pennyfarthing session
257
- cd ..
258
- ./scripts/run.sh new-work.sh
259
-
260
- # 4. Edit session file
247
+ # 3. Edit session file
261
248
  # Update .session/{STORY_ID}-session.md with story details
262
249
 
263
250
  # 5. Start working
@@ -359,9 +346,6 @@ cd ../UI && git checkout main && git pull && \
359
346
  git checkout -b feature/STORY-ID-description && \
360
347
  git push -u origin feature/STORY-ID-description
361
348
 
362
- # Create session
363
- cd .. && ./scripts/run.sh new-work.sh
364
-
365
349
  # Edit session
366
350
  # Update .session/{STORY_ID}-session.md
367
351
 
@@ -5,7 +5,7 @@ description: Developer - Feature implementation and coding
5
5
  <agent-activation>
6
6
  **FIRST:** Use Bash tool to run:
7
7
  ```bash
8
- d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/run.sh" agent-session.sh start "dev"
8
+ d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "dev"
9
9
  ```
10
10
  This finds the project root and loads your persona. Adopt the character shown in the output.
11
11
 
@@ -13,7 +13,7 @@ Then load and follow `.pennyfarthing/agents/dev.md`
13
13
  </agent-activation>
14
14
 
15
15
  <agent-exit>
16
- On exit: Capture learnings to sidecar, run `agent-session.sh stop`
16
+ On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
17
17
  </agent-exit>
18
18
 
19
19
  <purpose>
@@ -5,7 +5,7 @@ description: DevOps Engineer - Infrastructure and deployment automation
5
5
  <agent-activation>
6
6
  **FIRST:** Use Bash tool to run:
7
7
  ```bash
8
- d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/run.sh" agent-session.sh start "devops"
8
+ d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "devops"
9
9
  ```
10
10
  This finds the project root and loads your persona. Adopt the character shown in the output.
11
11
 
@@ -13,7 +13,7 @@ Then load and follow `.pennyfarthing/agents/devops.md`
13
13
  </agent-activation>
14
14
 
15
15
  <agent-exit>
16
- On exit: Capture learnings to sidecar, run `agent-session.sh stop`
16
+ On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
17
17
  </agent-exit>
18
18
 
19
19
  <purpose>
@@ -55,5 +55,5 @@ Infrastructure and deployment automation specialist who maintains CI/CD pipeline
55
55
  - **Agent:** `.pennyfarthing/agents/devops.md`
56
56
  - **Sidecar:** `.claude/project/agents/devops-sidecar/`
57
57
  - **Skills:** `/just`
58
- - **Context:** `.pennyfarthing/guides/shared-context.md`, architecture documentation
58
+ - **Context:** `.pennyfarthing/guides/agent-behavior.md`, architecture documentation
59
59
  </reference>
@@ -21,7 +21,7 @@ All changes MUST follow this workflow:
21
21
  ### 1. Gather Current State and Check for Unpushed Commits
22
22
 
23
23
  ```bash
24
- ./scripts/run.sh git-status-all.sh
24
+ ./scripts/run.sh git/git-status-all.sh
25
25
  ```
26
26
 
27
27
  This shows branch, changes, and unpushed commits for all repos.
@@ -51,7 +51,7 @@ fi
51
51
 
52
52
  ```bash
53
53
  echo "=== Worktree Status ==="
54
- ./scripts/run.sh worktree-manager.sh status
54
+ ./scripts/run.sh git/worktree-manager.sh status
55
55
  ```
56
56
 
57
57
  This shows all active worktrees with their branches and uncommitted changes.
@@ -240,7 +240,7 @@ When running this command, Claude should:
240
240
 
241
241
  ```bash
242
242
  # View what needs cleanup (all repos)
243
- ./scripts/run.sh git-status-all.sh
243
+ ./scripts/run.sh git/git-status-all.sh
244
244
 
245
245
  # Create cleanup branch
246
246
  git checkout develop && git pull
@@ -278,7 +278,7 @@ Stale feature branches can accumulate over time. Include branch cleanup as part
278
278
  ```bash
279
279
  echo "=== Branch Status ==="
280
280
 
281
- ./scripts/run.sh check-status.sh
281
+ ./scripts/run.sh misc/check-status.sh
282
282
  ```
283
283
 
284
284
  ### Remove Merged Branches
@@ -322,7 +322,7 @@ done
322
322
 
323
323
  ```bash
324
324
  echo "=== Final State ==="
325
- ./scripts/run.sh git-status-all.sh
325
+ ./scripts/run.sh git/git-status-all.sh
326
326
  echo ""
327
327
  echo "=== Branches ==="
328
328