@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
@@ -0,0 +1,238 @@
1
+ # Agent Behavior Guide
2
+
3
+ **For all Pennyfarthing agents.**
4
+
5
+ ---
6
+
7
+ ## Critical Protocols
8
+
9
+ <critical>
10
+ **Reflector markers:** Subagent output is NOT visible to Cyclist. After handoff subagent returns `AGENT_COMMAND`, output the `marker` string verbatim. See `<agent-command-protocol>` below.
11
+ </critical>
12
+
13
+ <critical>
14
+ **Absolute paths:** `cd $CLAUDE_PROJECT_DIR && just test` - never relative `cd`.
15
+ Multi-repo: `cd $CLAUDE_PROJECT_DIR/$(get_repo_path "$repo")` after sourcing `scripts/repo-utils.sh`.
16
+ </critical>
17
+
18
+ <critical>
19
+ **Session file:** `.session/{story-id}-session.md` - extract `**Phase:**` (whose turn), `**Workflow:**`, `**Repos:**`, `**Feature Branch:**`.
20
+ </critical>
21
+
22
+ <critical>
23
+ **Handoff Action:** When `handoff` returns `AGENT_COMMAND`, output `marker` verbatim then `fallback`. Don't ask permission.
24
+ </critical>
25
+
26
+ <critical>
27
+ **Test delegation:** Never run tests directly. Always use `testing-runner` subagent.
28
+ </critical>
29
+
30
+ <critical>
31
+ **Sidecar memory:** Capture learnings BEFORE spawning handoff subagent. Don't wait until exit.
32
+ </critical>
33
+
34
+ ---
35
+
36
+ ## Reference
37
+
38
+ <info>
39
+ **Workflow:** SM → TEA → Dev → Reviewer → SM (finish). Trivial (1-2 pts) skips TEA.
40
+
41
+ **Confidence:** HIGH=proceed, MEDIUM=ask before risky, LOW=always ask.
42
+
43
+ **Skills:** `/sprint-context`, `/testing`, `/dev-patterns`, `/jira`, `/just`
44
+
45
+ **Reflector:** HTML comments parsed by Cyclist UI (see below).
46
+
47
+ **Turn efficiency:** Parallelize reads, batch bash with `&&`, spawn independent subagents together.
48
+
49
+ **Background tasks:** Don't block unless result needed. Cyclist notifies on completion.
50
+
51
+ **Sidecar location:** `.pennyfarthing/sidecars/{agent}/` with `patterns.md`, `gotchas.md`, `decisions.md`.
52
+
53
+ **Subagent skills:** Include skill paths in prompts - subagents don't auto-load skills.
54
+
55
+ **Worktree:** Get path from session: `WORKTREE_PATH=$(grep "^path:" "$SESSION_FILE" | cut -d' ' -f2)`
56
+
57
+ **Dogfooding:** Write to `pennyfarthing-dist/` not `.claude/` (symlink permission issue).
58
+ </info>
59
+
60
+ ---
61
+
62
+ ## Project Context
63
+
64
+ <info>
65
+ **Project:** Pennyfarthing - Claude Code agent orchestration (pnpm monorepo, TypeScript)
66
+
67
+ **Key paths:**
68
+ - `pennyfarthing-dist/` - agents, commands, skills, guides, personas
69
+ - `sprint/current-sprint.yaml` - active sprint
70
+ - `.session/` - active work sessions
71
+
72
+ **Git:** Branch from `develop`, PR to `develop`, release merges to `main`.
73
+
74
+ **Commit:** `<type>(<scope>): <subject>` + `Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>`
75
+
76
+ **Build:** `npm run build`, `npm test`, `npm run lint`
77
+ </info>
78
+
79
+ ---
80
+
81
+ ## Sprint YAML and Jira Interaction Rules
82
+
83
+ <critical>
84
+ **Never directly edit sprint YAML.** All sprint YAML modifications MUST go through dedicated scripts.
85
+ </critical>
86
+
87
+ <info>
88
+ **Rule 1:** Use `/sprint` skill for sprint operations
89
+ - `/sprint status` - View sprint
90
+ - `/sprint backlog` - View available stories
91
+ - `/sprint work` - Start a story
92
+ - `/sprint archive` - Archive completed story
93
+
94
+ **Rule 2:** Use `/story` skill for story operations
95
+ - `/story finish` - Complete story (handles YAML, Jira, merge, archive)
96
+ - `/story create` - Add new story to sprint
97
+
98
+ **Rule 3:** Use `/jira` skill for all Jira operations
99
+ - `/jira claim` - Assign and move to In Progress
100
+ - `/jira move` - Transition status
101
+ - `/jira view` - Check status
102
+ - `/jira sync` - Sync YAML ↔ Jira
103
+
104
+ **Rule 4:** All sprint YAML access goes through scripts
105
+ ```bash
106
+ # GOOD: Use scripts for ALL operations
107
+ .pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
108
+ .pennyfarthing/scripts/core/run.sh sprint/get-epic-field.sh 35 jira
109
+ .pennyfarthing/scripts/core/run.sh sprint/check-story.sh X-Y
110
+
111
+ # BAD: Direct yq queries (even read-only)
112
+ yq '.epics[].stories[] | ...' sprint/current-sprint.yaml
113
+ ```
114
+
115
+ **Script Responsibilities:**
116
+ | Operation | Script | Skill |
117
+ |-----------|--------|-------|
118
+ | Get story field | `get-story-field.sh` | - |
119
+ | Get epic field | `get-epic-field.sh` | - |
120
+ | Check story/epic | `check-story.sh` | `/sprint work` |
121
+ | Start story | `jira-claim-story.sh` | `/jira claim` |
122
+ | Finish story | `finish-story.sh` | `/story finish` |
123
+ | Archive story | `archive-story.sh --apply` | `/sprint archive` |
124
+ | Sync to Jira | `sync-epic-jira.sh` | `/jira sync` |
125
+ | Create epic | `create-jira-epic.sh` | `/jira create epic` |
126
+ </info>
127
+
128
+ ---
129
+
130
+
131
+ ## Persona System
132
+
133
+ <info>
134
+ **Config:** `.pennyfarthing/config.local.yaml` with `theme:` field.
135
+
136
+ **many themes available:** `/list-themes` to browse, `/show-theme <name>` for details, `/set-theme <name>` to change.
137
+
138
+ **Categories:** TV Series, Film, Literature, Anime, Games, History/Mythology.
139
+
140
+ **Attributes:** `verbosity` (low/medium/high), `formality` (formal/casual/playful), `humor` (enabled/disabled/subtle).
141
+
142
+ **Per-agent override:**
143
+ ```yaml
144
+ overrides:
145
+ reviewer:
146
+ theme: discworld # Keep Granny even in Star Trek mode
147
+ ```
148
+ </info>
149
+
150
+ ---
151
+
152
+ ## Reflector
153
+
154
+ <info>
155
+ HTML comments that agents emit to signal Cyclist UI. Format: `<!-- CYCLIST:TYPE:value -->`
156
+
157
+ | Type | Value | Cyclist Action |
158
+ |------|-------|----------------|
159
+ | `HANDOFF` | `/agent` | Shows "Continue with /agent" button |
160
+ | `CONTEXT_CLEAR` | `/agent` | Clears session, reloads with agent |
161
+ | `QUESTION` | `yesno` | Shows yes/no dialog |
162
+ | `CHOICES` | `1,2,3` | Shows choice buttons |
163
+
164
+ **Examples:**
165
+ ```
166
+ <!-- CYCLIST:HANDOFF:/tea -->
167
+ <!-- CYCLIST:CONTEXT_CLEAR:/dev -->
168
+ <!-- CYCLIST:QUESTION:yesno -->
169
+ <!-- CYCLIST:CHOICES:option1,option2,option3 -->
170
+ ```
171
+
172
+ **When to use:**
173
+ - `HANDOFF` - End of phase (TEA→Dev, Dev→Reviewer)
174
+ - `CONTEXT_CLEAR` - Context >80% at handoff
175
+ - `QUESTION`/`CHOICES` - User input needed mid-work
176
+ </info>
177
+
178
+ ---
179
+
180
+ <agent-command-protocol>
181
+ ## AGENT_COMMAND Protocol
182
+
183
+ <critical>
184
+ **Subagent output is NOT visible to Cyclist.** Tool results are not parsed for markers.
185
+ Handoff subagents return an `AGENT_COMMAND` block with a pre-rendered `marker` string.
186
+ The **calling agent** outputs the `marker` verbatim - no parsing or mapping required.
187
+ </critical>
188
+
189
+ ### How It Works
190
+
191
+ 1. Agent writes assessment to session file FIRST
192
+ 2. Agent spawns `handoff` subagent
193
+ 3. Subagent runs `handoff-marker.sh {next-agent}` to generate `AGENT_COMMAND` block
194
+ 4. Subagent returns the block with pre-rendered `marker` string
195
+ 5. **Agent outputs `marker` verbatim, then outputs `fallback` message**
196
+
197
+ **Single Source of Truth:** The `handoff-marker.sh` script is the authoritative source for marker format. It handles environment detection (IS_CYCLIST, USE_TIREPUMP) automatically.
198
+
199
+ ### AGENT_COMMAND Format
200
+
201
+ ```
202
+ ---
203
+ AGENT_COMMAND:
204
+ marker: "{PRE_RENDERED_MARKER_STRING}"
205
+ fallback: "Run `/{agent}` to continue"
206
+ ---
207
+ ```
208
+
209
+ The `marker` field contains the exact string to output (or empty string if no marker needed).
210
+ The `fallback` field contains human-readable instructions.
211
+
212
+ ### Agent Action
213
+
214
+ **Simple rule: Output `marker` then `fallback`. That's it.**
215
+
216
+ 1. If `error: true` → Report the `fallback` message as an error
217
+ 2. Otherwise → Output `marker` verbatim (if non-empty), then output `fallback`
218
+
219
+ ### Example
220
+
221
+ Subagent returns:
222
+ ```
223
+ ---
224
+ AGENT_COMMAND:
225
+ marker: "<!-- CYCLIST:HANDOFF:/dev -->"
226
+ fallback: "Run `/dev` to continue"
227
+ ---
228
+ ```
229
+
230
+ Agent outputs in their direct text (not a tool call):
231
+ ```
232
+ <!-- CYCLIST:HANDOFF:/dev -->
233
+
234
+ Run `/dev` to continue
235
+ ```
236
+
237
+ **CRITICAL:** The marker MUST appear in the agent's direct text output, not in a tool result.
238
+ </agent-command-protocol>
@@ -67,7 +67,7 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
67
67
  </constraints>
68
68
 
69
69
  <context>
70
- **See:** `.pennyfarthing/guides/shared-context.md` for project info and git strategy.
70
+ **See:** `.pennyfarthing/guides/agent-behavior.md` for project info and git strategy.
71
71
  **Work Directory:** {Where this agent's artifacts live}
72
72
  </context>
73
73
 
@@ -105,7 +105,7 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
105
105
  <exit>
106
106
  To exit: "Exit {Agent}" or "Switch to [other agent]"
107
107
 
108
- On exit, run: `./scripts/run.sh agent-session.sh stop`
108
+ On exit, run: `./scripts/run.sh core/agent-session.sh stop`
109
109
  </exit>
110
110
  ```
111
111
 
@@ -62,8 +62,8 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
62
62
  </skills>
63
63
 
64
64
  <context>
65
- **See:** `.pennyfarthing/guides/tactical-agent-behavior.md` for shared tactical agent behavior.
66
- **See:** `.pennyfarthing/guides/shared-context.md` for project info and git strategy.
65
+ **See:** `.pennyfarthing/guides/agent-behavior.md` for shared tactical agent behavior.
66
+ **See:** `.pennyfarthing/guides/agent-behavior.md` for project info and git strategy.
67
67
  </context>
68
68
 
69
69
  <reasoning-mode>
@@ -122,14 +122,14 @@ After completing work:
122
122
 
123
123
  1. Write assessment to session file
124
124
  2. Spawn handoff helper (`.pennyfarthing/agents/{agent}-handoff.md`)
125
- 3. Check context: `eval $(./scripts/run.sh check-context.sh)`
125
+ 3. Check context: `eval $(./scripts/run.sh core/check-context.sh)`
126
126
  4. If `HANDOFF_MODE=auto`: Use Skill tool to invoke next agent
127
127
  5. If `HANDOFF_MODE=ask`: Tell user to start fresh session
128
128
 
129
129
  <exit>
130
130
  To exit: "Exit {Agent}" or "Switch to [other agent]"
131
131
 
132
- On exit, run: `./scripts/run.sh agent-session.sh stop`
132
+ On exit, run: `./scripts/run.sh core/agent-session.sh stop`
133
133
  </exit>
134
134
  ```
135
135
 
@@ -388,7 +388,7 @@ After gate passage, check context usage before invoking next agent:
388
388
 
389
389
  ```bash
390
390
  # Check context usage
391
- $CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
391
+ $CLAUDE_PROJECT_DIR/scripts/core/check-context.sh --human
392
392
 
393
393
  # Routing decision:
394
394
  # If < 60%: Invoke next agent directly in this session
@@ -31,10 +31,10 @@ Opus Agent (strategic)
31
31
  └── Delegates mechanical work via Task tool
32
32
 
33
33
  ├── workflow-status-check (state detection)
34
- ├── generic-sm-setup (research backlog or setup story)
35
- ├── generic-sm-finish (preflight checks or execute finish)
34
+ ├── sm-setup (research backlog or setup story)
35
+ ├── sm-finish (preflight checks or execute finish)
36
36
  ├── sm-handoff (SM→TEA/Dev with Jira/branch verification)
37
- ├── generic-handoff (TEA/Dev/Reviewer phase transitions)
37
+ ├── handoff (TEA/Dev/Reviewer phase transitions)
38
38
  ├── reviewer-preflight (test/lint data gathering)
39
39
  └── testing-runner (test execution)
40
40
  ```
@@ -89,15 +89,15 @@ The key insight: **Make critical behaviors AUTOMATIC via subagent delegation** r
89
89
  ├───────────────────┼────────────────────────┼────────────────────────────┤
90
90
  │ State Detection │ workflow-status-check │ Scan files, report state │
91
91
  ├───────────────────┼────────────────────────┼────────────────────────────┤
92
- │ Setup/Init │ generic-sm-setup │ Research or setup (MODE) │
92
+ │ Setup/Init │ sm-setup │ Research or setup (MODE) │
93
93
  │ │ sm-handoff │ SM→TEA/Dev with Jira/branch│
94
94
  ├───────────────────┼────────────────────────┼────────────────────────────┤
95
- │ Phase Handoff │ generic-handoff │ TEA/Dev/Reviewer transitions│
95
+ │ Phase Handoff │ handoff │ TEA/Dev/Reviewer transitions│
96
96
  ├───────────────────┼────────────────────────┼────────────────────────────┤
97
97
  │ Verification │ reviewer-preflight │ Gather facts before review │
98
98
  │ │ testing-runner │ Execute tests, report │
99
99
  ├───────────────────┼────────────────────────┼────────────────────────────┤
100
- │ Finish/Cleanup │ generic-sm-finish │ Preflight or execute (PHASE)│
100
+ │ Finish/Cleanup │ sm-finish │ Preflight or execute (PHASE)│
101
101
  └─────────────────────────────────────────────────────────────────────────┘
102
102
  ```
103
103
 
@@ -282,11 +282,11 @@ The Opus agent reads this report and decides next steps—it doesn't re-execute
282
282
  | Scenario | Subagent | Why |
283
283
  |----------|----------|-----|
284
284
  | Determining workflow state | `workflow-status-check` | Scanning files is mechanical |
285
- | Creating branches/sessions | `generic-sm-setup MODE=setup` | Git operations are deterministic |
285
+ | Creating branches/sessions | `sm-setup MODE=setup` | Git operations are deterministic |
286
286
  | Verifying test state | `testing-runner` | Test execution is mechanical |
287
- | Updating session files | `generic-handoff` | State updates must be reliable |
287
+ | Updating session files | `handoff` | State updates must be reliable |
288
288
  | Gathering review data | `reviewer-preflight` | Fact-finding, not judgment |
289
- | Sprint file updates | `generic-sm-finish` | Archiving is mechanical |
289
+ | Sprint file updates | `sm-finish` | Archiving is mechanical |
290
290
 
291
291
  ### Don't Delegate When:
292
292
 
@@ -318,7 +318,7 @@ Is the task...
318
318
 
319
319
  ### Subagent Retry Pattern
320
320
 
321
- From `agents/generic-sm-setup.md` (Error Recovery section):
321
+ From `agents/sm-setup.md` (Error Recovery section):
322
322
 
323
323
  ```
324
324
  1. Log the failure: Note which step failed and why
@@ -345,9 +345,9 @@ Recommended fix: [what calling agent should do]
345
345
 
346
346
  | Failure | Subagent | Fix |
347
347
  |---------|----------|-----|
348
- | Jira claim failed | generic-sm-setup | Choose different story |
349
- | Tests all GREEN | generic-handoff | TEA must verify tests are correct |
350
- | PR not found | generic-handoff | Verify PR was created |
348
+ | Jira claim failed | sm-setup | Choose different story |
349
+ | Tests all GREEN | handoff | TEA must verify tests are correct |
350
+ | PR not found | handoff | Verify PR was created |
351
351
  | Session file missing | any handoff | Check path, may need recreation |
352
352
  | Git command failed | any | Check for uncommitted changes |
353
353
 
@@ -373,7 +373,7 @@ Burns context, may skip steps, prone to errors.
373
373
  **Correct:**
374
374
  ```yaml
375
375
  Task tool:
376
- subagent_type: "generic-sm-setup"
376
+ subagent_type: "sm-setup"
377
377
  prompt: |
378
378
  MODE: setup
379
379
  STORY_ID: 5-2
@@ -464,10 +464,10 @@ If edit fails:
464
464
 
465
465
  ### Subagent Definitions
466
466
  - State Detection: `agents/workflow-status-check.md`
467
- - SM Setup/Research: `agents/generic-sm-setup.md`
468
- - SM Finish: `agents/generic-sm-finish.md`
467
+ - SM Setup/Research: `agents/sm-setup.md`
468
+ - SM Finish: `agents/sm-finish.md`
469
469
  - SM Handoff: `agents/sm-handoff.md`
470
- - Phase Transitions: `agents/generic-handoff.md`
470
+ - Phase Transitions: `agents/handoff.md`
471
471
  - Reviewer Preflight: `agents/reviewer-preflight.md`
472
472
  - Testing Runner: `agents/testing-runner.md`
473
473
 
@@ -142,13 +142,13 @@ The session file (`.session/{story-id}-session.md`) tracks state:
142
142
 
143
143
  | From | To | Trigger | Subagent |
144
144
  |------|-----|---------|----------|
145
- | setup | red | Story setup complete | `generic-sm-setup MODE=setup` + `sm-handoff` |
146
- | setup | implement | 1-2 pt story (skip TEA) | `generic-sm-setup MODE=setup` + `sm-handoff` |
147
- | red | green | Tests written, failing | `generic-handoff CURRENT_PHASE=red` |
148
- | green | review | PR created, tests pass | `generic-handoff CURRENT_PHASE=green` |
149
- | review | implement | Issues found | `generic-handoff VERDICT=rejected` |
150
- | review | approved | No blocking issues | `generic-handoff VERDICT=approved` |
151
- | approved | done | Story archived | `generic-sm-finish PHASE=execute` |
145
+ | setup | red | Story setup complete | `sm-setup MODE=setup` + `sm-handoff` |
146
+ | setup | implement | 1-2 pt story (skip TEA) | `sm-setup MODE=setup` + `sm-handoff` |
147
+ | red | green | Tests written, failing | `handoff CURRENT_PHASE=red` |
148
+ | green | review | PR created, tests pass | `handoff CURRENT_PHASE=green` |
149
+ | review | implement | Issues found | `handoff VERDICT=rejected` |
150
+ | review | approved | No blocking issues | `handoff VERDICT=approved` |
151
+ | approved | done | Story archived | `sm-finish PHASE=execute` |
152
152
 
153
153
  ### Agent Responsibilities
154
154
 
@@ -301,7 +301,7 @@ User runs /new-work → workflow-status-check detects no epic context
301
301
  Each agent checks context usage after completing work:
302
302
 
303
303
  ```bash
304
- $CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
304
+ $CLAUDE_PROJECT_DIR/scripts/core/check-context.sh --human
305
305
  ```
306
306
 
307
307
  | Context | Action |
@@ -34,6 +34,11 @@ workflow:
34
34
  min: number # Optional: minimum points
35
35
  max: number # Optional: maximum points
36
36
  default: boolean # Optional: use as fallback workflow
37
+
38
+ permissions: # Optional: required permissions for this workflow
39
+ - tool: string # Required: tool name (Bash, Read, WebFetch, etc.)
40
+ scope: string # Required: scope pattern (e.g., "npm test", "*.github.com")
41
+ reason: string # Required: human-readable reason for the permission
37
42
  ```
38
43
 
39
44
  ## Required Fields
@@ -55,6 +60,7 @@ workflow:
55
60
  | `phases[].output` | Array of outputs for next phases |
56
61
  | `phases[].gate` | Conditions to proceed to next phase |
57
62
  | `workflow.triggers` | Rules for automatic workflow selection |
63
+ | `workflow.permissions` | Array of permission presets required by the workflow |
58
64
 
59
65
  ## Gate Types
60
66
 
@@ -65,6 +71,61 @@ workflow:
65
71
  | `approval` | Requires reviewer approval |
66
72
  | `manual` | Manual confirmation required |
67
73
 
74
+ ## Permission Presets
75
+
76
+ Workflows can declare required permissions that are checked at workflow start. If any permissions are missing, the user is prompted to grant them before proceeding.
77
+
78
+ ### Permission Fields
79
+
80
+ | Field | Required | Description |
81
+ |-------|----------|-------------|
82
+ | `tool` | Yes | Tool name: `Bash`, `Read`, `Write`, `Edit`, `WebFetch`, `WebSearch`, `Glob`, `Grep`, `Task` |
83
+ | `scope` | Yes | Scope pattern for the permission (e.g., `"npm test"`, `"*.github.com"`, `"src/**/*"`) |
84
+ | `reason` | Yes | Human-readable explanation shown when prompting user |
85
+
86
+ ### Permission Checking
87
+
88
+ On workflow start:
89
+ 1. System reads workflow's `permissions` array
90
+ 2. Compares against cached grants in `.claude/settings.local.json`
91
+ 3. For each missing permission, prompts user with the `reason`
92
+ 4. Granted permissions are cached for the session
93
+
94
+ ### Example: TDD Workflow with Permissions
95
+
96
+ ```yaml
97
+ workflow:
98
+ name: tdd-with-permissions
99
+ description: TDD workflow with pre-declared permissions
100
+ version: "1.0.0"
101
+
102
+ permissions:
103
+ - tool: Bash
104
+ scope: "npm test|npm run build"
105
+ reason: "TDD workflow requires running tests and builds"
106
+ - tool: Read
107
+ scope: "src/**/*"
108
+ reason: "Need to read source files for implementation"
109
+
110
+ phases:
111
+ - name: setup
112
+ agent: sm
113
+ - name: red
114
+ agent: tea
115
+ gate:
116
+ type: tests_fail
117
+ - name: green
118
+ agent: dev
119
+ gate:
120
+ type: tests_pass
121
+ - name: review
122
+ agent: reviewer
123
+ gate:
124
+ type: approval
125
+ - name: finish
126
+ agent: sm
127
+ ```
128
+
68
129
  ## Examples
69
130
 
70
131
  ### TDD Workflow
@@ -193,3 +254,4 @@ Error: workflow.triggers.points min (10) cannot be greater than max (5)
193
254
  - Story 31-2: Workflow loader and validator
194
255
  - Story 31-3: Story-to-workflow routing engine
195
256
  - Story 31-5: /workflow skill for listing and switching
257
+ - Story MSSCI-11710: Permission presets by workflow
@@ -34,8 +34,8 @@ Worktree info is stored INSIDE the session file, not in the filename.
34
34
  ```
35
35
  worktrees/
36
36
  └── wt-5-3a/
37
- ├── conductor-api/ # API repo worktree
38
- └── conductor-ui/ # UI repo worktree
37
+ ├── Pennyfarthing-api/ # API repo worktree
38
+ └── Pennyfarthing-ui/ # UI repo worktree
39
39
  ```
40
40
 
41
41
  ### Session File Format
@@ -86,8 +86,8 @@ Ports are stored in the session file and passed to agents.
86
86
  | Command | Purpose |
87
87
  |---------|---------|
88
88
  | `/parallel-work` | Start a new parallel work session |
89
- | `./scripts/run.sh worktree-manager.sh list` | Show active worktrees |
90
- | `./scripts/run.sh worktree-manager.sh remove <name>` | Clean up a worktree |
89
+ | `./scripts/run.sh git/worktree-manager.sh list` | Show active worktrees |
90
+ | `./scripts/run.sh git/worktree-manager.sh remove <name>` | Clean up a worktree |
91
91
 
92
92
  ## TDD Flow in Worktrees
93
93
 
@@ -104,7 +104,7 @@ Agents use worktree paths from session file for all operations.
104
104
  When story is complete, SM archives the session and the worktree can be removed:
105
105
 
106
106
  ```bash
107
- ./scripts/run.sh worktree-manager.sh remove wt-5-3a
107
+ ./scripts/run.sh git/worktree-manager.sh remove wt-5-3a
108
108
  ```
109
109
 
110
110
  This removes:
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: Comrade
16
16
  portrait_style: ", Soviet propaganda poster, stark red and black, brutalist geometric shapes"
17
- tier: U
17
+ tier: B
18
18
  dimensions:
19
19
  tone: dramatic
20
20
  era: futuristic
@@ -13,7 +13,7 @@ theme:
13
13
  default_humor: enabled
14
14
  user_title: Client
15
15
  portrait_style: ", 1980s action TV, bold primary colors, explosion orange background, vintage VHS aesthetic"
16
- tier: U
16
+ tier: B
17
17
  agents:
18
18
  orchestrator:
19
19
  character: Colonel John "Hannibal" Smith
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: Dear Reader
16
16
  portrait_style: ", 1920s Art Deco, muted sepia tones, gaslight atmosphere, mystery novel cover"
17
- tier: A
17
+ tier: B
18
18
 
19
19
  agents:
20
20
  orchestrator:
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: my Dear
16
16
  portrait_style: ", John Tenniel engraving, fine crosshatching, 1865 original edition style"
17
- tier: U
17
+ tier: A
18
18
  agents:
19
19
  orchestrator:
20
20
  character: The Cheshire Cat
@@ -13,7 +13,7 @@ theme:
13
13
  character_immersion: high
14
14
  user_title: Champion
15
15
  portrait_style: ", epic crossover art style, golden championship lighting, legendary heroes assembled"
16
- tier: S
16
+ tier: U
17
17
 
18
18
  agents:
19
19
  orchestrator:
@@ -13,7 +13,7 @@ theme:
13
13
  character_immersion: high
14
14
  user_title: Student
15
15
  portrait_style: ", classical Greek marble bust, warm Mediterranean light, terracotta tones, laurel wreath"
16
- tier: B
16
+ tier: A
17
17
 
18
18
  agents:
19
19
  orchestrator:
@@ -13,7 +13,7 @@ theme:
13
13
  character_immersion: high
14
14
  user_title: Student
15
15
  portrait_style: ", ancient military commander, bronze and crimson palette, battle map background, classical armor"
16
- tier: U
16
+ tier: A
17
17
  agents:
18
18
  orchestrator:
19
19
  character: Sun Tzu
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: Citizen
16
16
  portrait_style: ", painted oil texture, hextech blues and undercity greens, modern painterly animation"
17
- tier: U
17
+ tier: A
18
18
  agents:
19
19
  orchestrator:
20
20
  character: Silco
@@ -13,7 +13,7 @@ theme:
13
13
  character_immersion: high
14
14
  user_title: Good Knight
15
15
  portrait_style: ", illuminated manuscript, gold leaf accents, jewel tones on aged vellum, Celtic knotwork"
16
- tier: U
16
+ tier: A
17
17
 
18
18
  agents:
19
19
  orchestrator:
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: Young Bender
16
16
  portrait_style: ", Avatar animated series, clean cel-shaded style, elemental color coding, chi energy glow"
17
- tier: U
17
+ tier: A
18
18
  agents:
19
19
  orchestrator:
20
20
  character: Uncle Iroh
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: Ambassador
16
16
  portrait_style: ", 1990s space opera, deep space blue and station amber, alien prosthetics, starfield backdrop"
17
- tier: U
17
+ tier: A
18
18
  agents:
19
19
  orchestrator:
20
20
  character: Kosh Naranek
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: Soldier
16
16
  portrait_style: ", gritty military sci-fi, desaturated steel blue, handheld camera feel, command console glow"
17
- tier: U
17
+ tier: A
18
18
  agents:
19
19
  orchestrator:
20
20
  character: The Hybrid
@@ -14,7 +14,7 @@ theme:
14
14
  character_immersion: high
15
15
  user_title: Client
16
16
  portrait_style: ", 60's popart silkscreen, warm desert tones, golden hour cinematography, cinematic aesthetic"
17
- tier: U
17
+ tier: A
18
18
  agents:
19
19
  orchestrator:
20
20
  character: Howard Hamlin