@pennyfarthing/core 7.0.2 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (692) hide show
  1. package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts +2 -2
  2. package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts.map +1 -1
  3. package/{packages/core/dist → dist}/cli/commands/cyclist.js +8 -9
  4. package/dist/cli/commands/cyclist.js.map +1 -0
  5. package/{packages/core/dist → dist}/cli/commands/cyclist.test.js +6 -4
  6. package/dist/cli/commands/cyclist.test.js.map +1 -0
  7. package/{packages/core/dist → dist}/cli/commands/update.d.ts.map +1 -1
  8. package/{packages/core/dist → dist}/cli/commands/update.js +9 -136
  9. package/dist/cli/commands/update.js.map +1 -0
  10. package/{packages/core/dist → dist}/cli/cyclist-migration.test.js +4 -3
  11. package/{packages/core/dist → dist}/cli/cyclist-migration.test.js.map +1 -1
  12. package/{packages/core/dist → dist}/cli/utils/constants.d.ts +7 -1
  13. package/dist/cli/utils/constants.d.ts.map +1 -0
  14. package/{packages/core/dist → dist}/cli/utils/constants.js +4 -2
  15. package/{packages/core/dist → dist}/cli/utils/constants.js.map +1 -1
  16. package/{packages/core/dist → dist}/cli/utils/themes.d.ts +1 -4
  17. package/{packages/core/dist → dist}/cli/utils/themes.d.ts.map +1 -1
  18. package/{packages/core/dist → dist}/cli/utils/themes.js +2 -22
  19. package/dist/cli/utils/themes.js.map +1 -0
  20. package/dist/cli/utils/themes.test.d.ts +12 -0
  21. package/{packages/core/dist → dist}/cli/utils/themes.test.js +16 -13
  22. package/dist/cli/utils/themes.test.js.map +1 -0
  23. package/{packages/core/dist → dist}/cli/workspace.test.js +5 -8
  24. package/{packages/core/dist → dist}/cli/workspace.test.js.map +1 -1
  25. package/{packages/core/dist → dist}/index.d.ts +1 -0
  26. package/{packages/core/dist → dist}/index.d.ts.map +1 -1
  27. package/{packages/core/dist → dist}/index.js +10 -0
  28. package/{packages/core/dist → dist}/index.js.map +1 -1
  29. package/dist/jira/jira-epic-creation.d.ts +109 -0
  30. package/dist/jira/jira-epic-creation.d.ts.map +1 -0
  31. package/dist/jira/jira-epic-creation.js +253 -0
  32. package/dist/jira/jira-epic-creation.js.map +1 -0
  33. package/dist/jira/jira-epic-creation.test.d.ts +16 -0
  34. package/dist/jira/jira-epic-creation.test.d.ts.map +1 -0
  35. package/dist/jira/jira-epic-creation.test.js +387 -0
  36. package/dist/jira/jira-epic-creation.test.js.map +1 -0
  37. package/dist/jira/jira-sprint-sync.d.ts +247 -0
  38. package/dist/jira/jira-sprint-sync.d.ts.map +1 -0
  39. package/dist/jira/jira-sprint-sync.js +670 -0
  40. package/dist/jira/jira-sprint-sync.js.map +1 -0
  41. package/dist/jira/jira-sprint-sync.test.d.ts +16 -0
  42. package/dist/jira/jira-sprint-sync.test.d.ts.map +1 -0
  43. package/dist/jira/jira-sprint-sync.test.js +845 -0
  44. package/dist/jira/jira-sprint-sync.test.js.map +1 -0
  45. package/{packages/core/dist → dist}/scripts/generate-spider.d.ts +11 -1
  46. package/{packages/core/dist → dist}/scripts/generate-spider.d.ts.map +1 -1
  47. package/{packages/core/dist → dist}/scripts/generate-spider.js +24 -1
  48. package/dist/scripts/generate-spider.js.map +1 -0
  49. package/{packages/core/dist → dist}/scripts/generate-spider.test.js +6 -4
  50. package/dist/scripts/generate-spider.test.js.map +1 -0
  51. package/dist/workflow/gate-handler.d.ts +94 -0
  52. package/dist/workflow/gate-handler.d.ts.map +1 -0
  53. package/dist/workflow/gate-handler.js +189 -0
  54. package/dist/workflow/gate-handler.js.map +1 -0
  55. package/dist/workflow/gate-handler.test.d.ts +14 -0
  56. package/dist/workflow/gate-handler.test.d.ts.map +1 -0
  57. package/dist/workflow/gate-handler.test.js +543 -0
  58. package/dist/workflow/gate-handler.test.js.map +1 -0
  59. package/{packages/core/dist → dist}/workflow/generic-handoff.d.ts +46 -0
  60. package/{packages/core/dist → dist}/workflow/generic-handoff.d.ts.map +1 -1
  61. package/{packages/core/dist → dist}/workflow/generic-handoff.js +53 -0
  62. package/{packages/core/dist → dist}/workflow/generic-handoff.js.map +1 -1
  63. package/{packages/core/dist → dist}/workflow/generic-handoff.test.js +2 -2
  64. package/{packages/core/dist → dist}/workflow/generic-handoff.test.js.map +1 -1
  65. package/dist/workflow/index.d.ts +16 -0
  66. package/dist/workflow/index.d.ts.map +1 -0
  67. package/dist/workflow/index.js +24 -0
  68. package/dist/workflow/index.js.map +1 -0
  69. package/dist/workflow/session-state.d.ts +92 -0
  70. package/dist/workflow/session-state.d.ts.map +1 -0
  71. package/dist/workflow/session-state.js +198 -0
  72. package/dist/workflow/session-state.js.map +1 -0
  73. package/dist/workflow/session-state.test.d.ts +8 -0
  74. package/dist/workflow/session-state.test.d.ts.map +1 -0
  75. package/dist/workflow/session-state.test.js +551 -0
  76. package/dist/workflow/session-state.test.js.map +1 -0
  77. package/dist/workflow/step-parser.d.ts +45 -0
  78. package/dist/workflow/step-parser.d.ts.map +1 -0
  79. package/dist/workflow/step-parser.js +147 -0
  80. package/dist/workflow/step-parser.js.map +1 -0
  81. package/dist/workflow/step-parser.test.d.ts +14 -0
  82. package/dist/workflow/step-parser.test.d.ts.map +1 -0
  83. package/dist/workflow/step-parser.test.js +470 -0
  84. package/dist/workflow/step-parser.test.js.map +1 -0
  85. package/dist/workflow/trimodal.d.ts +86 -0
  86. package/dist/workflow/trimodal.d.ts.map +1 -0
  87. package/dist/workflow/trimodal.js +118 -0
  88. package/dist/workflow/trimodal.js.map +1 -0
  89. package/dist/workflow/trimodal.test.d.ts +11 -0
  90. package/dist/workflow/trimodal.test.d.ts.map +1 -0
  91. package/dist/workflow/trimodal.test.js +395 -0
  92. package/dist/workflow/trimodal.test.js.map +1 -0
  93. package/dist/workflow/variable-resolver.d.ts +67 -0
  94. package/dist/workflow/variable-resolver.d.ts.map +1 -0
  95. package/dist/workflow/variable-resolver.js +156 -0
  96. package/dist/workflow/variable-resolver.js.map +1 -0
  97. package/dist/workflow/variable-resolver.test.d.ts +14 -0
  98. package/dist/workflow/variable-resolver.test.d.ts.map +1 -0
  99. package/dist/workflow/variable-resolver.test.js +400 -0
  100. package/dist/workflow/variable-resolver.test.js.map +1 -0
  101. package/dist/workflow/workflow-executor.d.ts +163 -0
  102. package/dist/workflow/workflow-executor.d.ts.map +1 -0
  103. package/dist/workflow/workflow-executor.js +197 -0
  104. package/dist/workflow/workflow-executor.js.map +1 -0
  105. package/dist/workflow/workflow-executor.test.d.ts +8 -0
  106. package/dist/workflow/workflow-executor.test.d.ts.map +1 -0
  107. package/dist/workflow/workflow-executor.test.js +444 -0
  108. package/dist/workflow/workflow-executor.test.js.map +1 -0
  109. package/{packages/core/dist → dist}/workflow/workflow-loader.test.js +5 -5
  110. package/dist/workflow/workflow-loader.test.js.map +1 -0
  111. package/{packages/core/dist → dist}/workflow/workflow-migration.test.js +8 -9
  112. package/{packages/core/dist → dist}/workflow/workflow-migration.test.js.map +1 -1
  113. package/dist/workflow/workflow-permissions.d.ts +55 -0
  114. package/dist/workflow/workflow-permissions.d.ts.map +1 -0
  115. package/dist/workflow/workflow-permissions.js +64 -0
  116. package/dist/workflow/workflow-permissions.js.map +1 -0
  117. package/dist/workflow/workflow-permissions.test.d.ts +15 -0
  118. package/dist/workflow/workflow-permissions.test.d.ts.map +1 -0
  119. package/dist/workflow/workflow-permissions.test.js +301 -0
  120. package/dist/workflow/workflow-permissions.test.js.map +1 -0
  121. package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts +61 -2
  122. package/dist/workflow/workflow-schema.d.ts.map +1 -0
  123. package/dist/workflow/workflow-schema.js +454 -0
  124. package/dist/workflow/workflow-schema.js.map +1 -0
  125. package/{packages/core/dist → dist}/workflow/workflow-schema.test.js +6 -6
  126. package/{packages/core/dist → dist}/workflow/workflow-schema.test.js.map +1 -1
  127. package/dist/workflow/workflow-stepped-schema.test.d.ts +18 -0
  128. package/dist/workflow/workflow-stepped-schema.test.d.ts.map +1 -0
  129. package/dist/workflow/workflow-stepped-schema.test.js +608 -0
  130. package/dist/workflow/workflow-stepped-schema.test.js.map +1 -0
  131. package/package.json +38 -32
  132. package/README.md +0 -301
  133. package/packages/core/dist/cli/commands/cyclist.js.map +0 -1
  134. package/packages/core/dist/cli/commands/cyclist.test.js.map +0 -1
  135. package/packages/core/dist/cli/commands/update.js.map +0 -1
  136. package/packages/core/dist/cli/utils/constants.d.ts.map +0 -1
  137. package/packages/core/dist/cli/utils/themes.js.map +0 -1
  138. package/packages/core/dist/cli/utils/themes.test.d.ts +0 -12
  139. package/packages/core/dist/cli/utils/themes.test.js.map +0 -1
  140. package/packages/core/dist/scripts/generate-all-faces.d.ts +0 -10
  141. package/packages/core/dist/scripts/generate-all-faces.d.ts.map +0 -1
  142. package/packages/core/dist/scripts/generate-all-faces.js +0 -256
  143. package/packages/core/dist/scripts/generate-all-faces.js.map +0 -1
  144. package/packages/core/dist/scripts/generate-all-faces.test.d.ts +0 -17
  145. package/packages/core/dist/scripts/generate-all-faces.test.d.ts.map +0 -1
  146. package/packages/core/dist/scripts/generate-all-faces.test.js +0 -372
  147. package/packages/core/dist/scripts/generate-all-faces.test.js.map +0 -1
  148. package/packages/core/dist/scripts/generate-ascii-face.d.ts +0 -52
  149. package/packages/core/dist/scripts/generate-ascii-face.d.ts.map +0 -1
  150. package/packages/core/dist/scripts/generate-ascii-face.js +0 -155
  151. package/packages/core/dist/scripts/generate-ascii-face.js.map +0 -1
  152. package/packages/core/dist/scripts/generate-face.d.ts +0 -52
  153. package/packages/core/dist/scripts/generate-face.d.ts.map +0 -1
  154. package/packages/core/dist/scripts/generate-face.js +0 -199
  155. package/packages/core/dist/scripts/generate-face.js.map +0 -1
  156. package/packages/core/dist/scripts/generate-face.test.d.ts +0 -13
  157. package/packages/core/dist/scripts/generate-face.test.d.ts.map +0 -1
  158. package/packages/core/dist/scripts/generate-face.test.js +0 -301
  159. package/packages/core/dist/scripts/generate-face.test.js.map +0 -1
  160. package/packages/core/dist/scripts/generate-spider.js.map +0 -1
  161. package/packages/core/dist/scripts/generate-spider.test.js.map +0 -1
  162. package/packages/core/dist/workflow/workflow-loader.test.js.map +0 -1
  163. package/packages/core/dist/workflow/workflow-schema.d.ts.map +0 -1
  164. package/packages/core/dist/workflow/workflow-schema.js +0 -230
  165. package/packages/core/dist/workflow/workflow-schema.js.map +0 -1
  166. package/pennyfarthing-dist/agents/README.md +0 -411
  167. package/pennyfarthing-dist/agents/architect.md +0 -185
  168. package/pennyfarthing-dist/agents/dev.md +0 -239
  169. package/pennyfarthing-dist/agents/devops.md +0 -197
  170. package/pennyfarthing-dist/agents/generic-handoff.md +0 -454
  171. package/pennyfarthing-dist/agents/generic-sm-finish.md +0 -261
  172. package/pennyfarthing-dist/agents/generic-sm-setup.md +0 -214
  173. package/pennyfarthing-dist/agents/orchestrator.md +0 -333
  174. package/pennyfarthing-dist/agents/pm.md +0 -164
  175. package/pennyfarthing-dist/agents/reviewer-preflight.md +0 -182
  176. package/pennyfarthing-dist/agents/reviewer.md +0 -335
  177. package/pennyfarthing-dist/agents/sm-file-summary.md +0 -109
  178. package/pennyfarthing-dist/agents/sm-handoff.md +0 -97
  179. package/pennyfarthing-dist/agents/sm.md +0 -509
  180. package/pennyfarthing-dist/agents/tea.md +0 -205
  181. package/pennyfarthing-dist/agents/tech-writer.md +0 -148
  182. package/pennyfarthing-dist/agents/testing-runner.md +0 -423
  183. package/pennyfarthing-dist/agents/ux-designer.md +0 -158
  184. package/pennyfarthing-dist/agents/workflow-status-check.md +0 -332
  185. package/pennyfarthing-dist/commands/architect.md +0 -62
  186. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  187. package/pennyfarthing-dist/commands/benchmark.md +0 -467
  188. package/pennyfarthing-dist/commands/brainstorm.md +0 -91
  189. package/pennyfarthing-dist/commands/check.md +0 -156
  190. package/pennyfarthing-dist/commands/chore.md +0 -178
  191. package/pennyfarthing-dist/commands/close-epic.md +0 -136
  192. package/pennyfarthing-dist/commands/continue-session.md +0 -184
  193. package/pennyfarthing-dist/commands/create-branches-from-story.md +0 -374
  194. package/pennyfarthing-dist/commands/create-theme.md +0 -29
  195. package/pennyfarthing-dist/commands/dev.md +0 -60
  196. package/pennyfarthing-dist/commands/devops.md +0 -59
  197. package/pennyfarthing-dist/commands/git-cleanup.md +0 -340
  198. package/pennyfarthing-dist/commands/health-check.md +0 -108
  199. package/pennyfarthing-dist/commands/help.md +0 -264
  200. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  201. package/pennyfarthing-dist/commands/list-themes.md +0 -17
  202. package/pennyfarthing-dist/commands/new-work.md +0 -127
  203. package/pennyfarthing-dist/commands/orchestrator.md +0 -56
  204. package/pennyfarthing-dist/commands/parallel-work.md +0 -71
  205. package/pennyfarthing-dist/commands/party-mode.md +0 -67
  206. package/pennyfarthing-dist/commands/permissions.md +0 -193
  207. package/pennyfarthing-dist/commands/pm.md +0 -60
  208. package/pennyfarthing-dist/commands/prime.md +0 -140
  209. package/pennyfarthing-dist/commands/release.md +0 -58
  210. package/pennyfarthing-dist/commands/repo-status.md +0 -49
  211. package/pennyfarthing-dist/commands/retro.md +0 -200
  212. package/pennyfarthing-dist/commands/reviewer.md +0 -64
  213. package/pennyfarthing-dist/commands/run-ci.md +0 -116
  214. package/pennyfarthing-dist/commands/set-theme.md +0 -52
  215. package/pennyfarthing-dist/commands/show-theme.md +0 -21
  216. package/pennyfarthing-dist/commands/sm.md +0 -70
  217. package/pennyfarthing-dist/commands/solo.md +0 -411
  218. package/pennyfarthing-dist/commands/sprint-planning.md +0 -109
  219. package/pennyfarthing-dist/commands/start-epic.md +0 -156
  220. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +0 -184
  221. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +0 -376
  222. package/pennyfarthing-dist/commands/tea.md +0 -63
  223. package/pennyfarthing-dist/commands/tech-writer.md +0 -53
  224. package/pennyfarthing-dist/commands/theme-maker.md +0 -671
  225. package/pennyfarthing-dist/commands/update-domain-docs.md +0 -83
  226. package/pennyfarthing-dist/commands/ux-designer.md +0 -62
  227. package/pennyfarthing-dist/commands/work.md +0 -111
  228. package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +0 -480
  229. package/pennyfarthing-dist/guides/AGENT-SCOPES.md +0 -201
  230. package/pennyfarthing-dist/guides/HOOKS.md +0 -230
  231. package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +0 -338
  232. package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +0 -193
  233. package/pennyfarthing-dist/guides/agent-template-strategic.md +0 -148
  234. package/pennyfarthing-dist/guides/agent-template-tactical.md +0 -162
  235. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +0 -746
  236. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +0 -574
  237. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +0 -488
  238. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +0 -402
  239. package/pennyfarthing-dist/guides/permission-protocol.md +0 -188
  240. package/pennyfarthing-dist/guides/persona-loading.md +0 -46
  241. package/pennyfarthing-dist/guides/persona-system.md +0 -294
  242. package/pennyfarthing-dist/guides/shared-agent-behavior.md +0 -388
  243. package/pennyfarthing-dist/guides/shared-context.md +0 -147
  244. package/pennyfarthing-dist/guides/strategic-agent-behavior.md +0 -348
  245. package/pennyfarthing-dist/guides/tactical-agent-behavior.md +0 -1041
  246. package/pennyfarthing-dist/guides/workflow-schema.md +0 -195
  247. package/pennyfarthing-dist/guides/worktree-mode.md +0 -113
  248. package/pennyfarthing-dist/output-styles/teaching.md +0 -33
  249. package/pennyfarthing-dist/output-styles/terse.md +0 -20
  250. package/pennyfarthing-dist/output-styles/verbose.md +0 -28
  251. package/pennyfarthing-dist/personas/themes/1984.yaml +0 -312
  252. package/pennyfarthing-dist/personas/themes/a-team.yaml +0 -207
  253. package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +0 -300
  254. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +0 -330
  255. package/pennyfarthing-dist/personas/themes/all-stars.yaml +0 -332
  256. package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +0 -320
  257. package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +0 -306
  258. package/pennyfarthing-dist/personas/themes/arcane.yaml +0 -288
  259. package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +0 -331
  260. package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +0 -288
  261. package/pennyfarthing-dist/personas/themes/babylon-5.yaml +0 -288
  262. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +0 -288
  263. package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +0 -288
  264. package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +0 -300
  265. package/pennyfarthing-dist/personas/themes/black-sails.yaml +0 -300
  266. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +0 -295
  267. package/pennyfarthing-dist/personas/themes/bobiverse.yaml +0 -288
  268. package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +0 -327
  269. package/pennyfarthing-dist/personas/themes/catch-22.yaml +0 -316
  270. package/pennyfarthing-dist/personas/themes/classical-composers.yaml +0 -310
  271. package/pennyfarthing-dist/personas/themes/control.yaml +0 -197
  272. package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +0 -320
  273. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +0 -323
  274. package/pennyfarthing-dist/personas/themes/deadwood.yaml +0 -300
  275. package/pennyfarthing-dist/personas/themes/dickens.yaml +0 -320
  276. package/pennyfarthing-dist/personas/themes/discworld.yaml +0 -332
  277. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +0 -290
  278. package/pennyfarthing-dist/personas/themes/don-quixote.yaml +0 -320
  279. package/pennyfarthing-dist/personas/themes/dune.yaml +0 -307
  280. package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +0 -320
  281. package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +0 -288
  282. package/pennyfarthing-dist/personas/themes/fargo.yaml +0 -330
  283. package/pennyfarthing-dist/personas/themes/film-auteurs.yaml +0 -312
  284. package/pennyfarthing-dist/personas/themes/firefly.yaml +0 -328
  285. package/pennyfarthing-dist/personas/themes/foundation.yaml +0 -290
  286. package/pennyfarthing-dist/personas/themes/futurama.yaml +0 -321
  287. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +0 -290
  288. package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +0 -243
  289. package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +0 -308
  290. package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +0 -308
  291. package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +0 -330
  292. package/pennyfarthing-dist/personas/themes/hannibal.yaml +0 -300
  293. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +0 -324
  294. package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +0 -291
  295. package/pennyfarthing-dist/personas/themes/historical-figures.yaml +0 -288
  296. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +0 -331
  297. package/pennyfarthing-dist/personas/themes/house-md.yaml +0 -321
  298. package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +0 -289
  299. package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +0 -300
  300. package/pennyfarthing-dist/personas/themes/jane-austen.yaml +0 -287
  301. package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +0 -320
  302. package/pennyfarthing-dist/personas/themes/justified.yaml +0 -300
  303. package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +0 -219
  304. package/pennyfarthing-dist/personas/themes/les-miserables.yaml +0 -299
  305. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +0 -334
  306. package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +0 -334
  307. package/pennyfarthing-dist/personas/themes/mad-max.yaml +0 -355
  308. package/pennyfarthing-dist/personas/themes/mad-men.yaml +0 -289
  309. package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +0 -300
  310. package/pennyfarthing-dist/personas/themes/mash.yaml +0 -334
  311. package/pennyfarthing-dist/personas/themes/mass-effect.yaml +0 -289
  312. package/pennyfarthing-dist/personas/themes/military-commanders.yaml +0 -306
  313. package/pennyfarthing-dist/personas/themes/moby-dick.yaml +0 -320
  314. package/pennyfarthing-dist/personas/themes/monty-python.yaml +0 -303
  315. package/pennyfarthing-dist/personas/themes/neuromancer.yaml +0 -300
  316. package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +0 -329
  317. package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +0 -242
  318. package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +0 -298
  319. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +0 -220
  320. package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +0 -320
  321. package/pennyfarthing-dist/personas/themes/rome.yaml +0 -300
  322. package/pennyfarthing-dist/personas/themes/russian-masters.yaml +0 -318
  323. package/pennyfarthing-dist/personas/themes/sandman.yaml +0 -288
  324. package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +0 -320
  325. package/pennyfarthing-dist/personas/themes/shakespeare.yaml +0 -301
  326. package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +0 -289
  327. package/pennyfarthing-dist/personas/themes/snow-crash.yaml +0 -288
  328. package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +0 -300
  329. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -230
  330. package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +0 -210
  331. package/pennyfarthing-dist/personas/themes/star-wars.yaml +0 -303
  332. package/pennyfarthing-dist/personas/themes/succession.yaml +0 -300
  333. package/pennyfarthing-dist/personas/themes/superfriends.yaml +0 -208
  334. package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +0 -236
  335. package/pennyfarthing-dist/personas/themes/the-americans.yaml +0 -300
  336. package/pennyfarthing-dist/personas/themes/the-crown.yaml +0 -300
  337. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +0 -213
  338. package/pennyfarthing-dist/personas/themes/the-good-place.yaml +0 -322
  339. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +0 -353
  340. package/pennyfarthing-dist/personas/themes/the-odyssey.yaml +0 -300
  341. package/pennyfarthing-dist/personas/themes/the-office.yaml +0 -330
  342. package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +0 -308
  343. package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +0 -300
  344. package/pennyfarthing-dist/personas/themes/the-wire.yaml +0 -311
  345. package/pennyfarthing-dist/personas/themes/the-witcher.yaml +0 -300
  346. package/pennyfarthing-dist/personas/themes/twin-peaks.yaml +0 -302
  347. package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +0 -300
  348. package/pennyfarthing-dist/personas/themes/watchmen.yaml +0 -291
  349. package/pennyfarthing-dist/personas/themes/west-wing.yaml +0 -291
  350. package/pennyfarthing-dist/personas/themes/world-explorers.yaml +0 -320
  351. package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +0 -307
  352. package/pennyfarthing-dist/personas/themes/x-files.yaml +0 -302
  353. package/pennyfarthing-dist/scripts/add-short-names.mjs +0 -264
  354. package/pennyfarthing-dist/scripts/agent-session.sh +0 -367
  355. package/pennyfarthing-dist/scripts/check-context.sh +0 -187
  356. package/pennyfarthing-dist/scripts/check.sh +0 -497
  357. package/pennyfarthing-dist/scripts/deploy.sh +0 -284
  358. package/pennyfarthing-dist/scripts/doctor-dogfood.sh +0 -395
  359. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -61
  360. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -66
  361. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -35
  362. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -166
  363. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -50
  364. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -71
  365. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -54
  366. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -98
  367. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -59
  368. package/pennyfarthing-dist/scripts/install-git-hooks.sh +0 -91
  369. package/pennyfarthing-dist/scripts/prime.sh +0 -161
  370. package/pennyfarthing-dist/scripts/release.sh +0 -198
  371. package/pennyfarthing-dist/scripts/repo-utils.sh +0 -778
  372. package/pennyfarthing-dist/scripts/run-ci.sh +0 -219
  373. package/pennyfarthing-dist/scripts/run.sh +0 -65
  374. package/pennyfarthing-dist/scripts/statusline.sh +0 -264
  375. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -582
  376. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -107
  377. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -597
  378. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -514
  379. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -517
  380. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -331
  381. package/pennyfarthing-dist/scripts/uninstall.sh +0 -271
  382. package/pennyfarthing-dist/scripts/utils/background-tasks.sh +0 -177
  383. package/pennyfarthing-dist/scripts/utils/check-status.sh +0 -251
  384. package/pennyfarthing-dist/scripts/utils/checkpoint.sh +0 -136
  385. package/pennyfarthing-dist/scripts/utils/common.sh +0 -157
  386. package/pennyfarthing-dist/scripts/utils/create-feature-branches.sh +0 -230
  387. package/pennyfarthing-dist/scripts/utils/file-lock.sh +0 -269
  388. package/pennyfarthing-dist/scripts/utils/find-related-work.sh +0 -231
  389. package/pennyfarthing-dist/scripts/utils/find-root.sh +0 -33
  390. package/pennyfarthing-dist/scripts/utils/generate-skill-docs.sh +0 -110
  391. package/pennyfarthing-dist/scripts/utils/git-status-all.sh +0 -127
  392. package/pennyfarthing-dist/scripts/utils/ground-truth-judge.py +0 -289
  393. package/pennyfarthing-dist/scripts/utils/jira/jira-lib.mjs +0 -443
  394. package/pennyfarthing-dist/scripts/utils/jira/jira-sync-story.mjs +0 -208
  395. package/pennyfarthing-dist/scripts/utils/jira/jira-sync.mjs +0 -198
  396. package/pennyfarthing-dist/scripts/utils/jira-claim-story.sh +0 -162
  397. package/pennyfarthing-dist/scripts/utils/jira-lib.sh +0 -463
  398. package/pennyfarthing-dist/scripts/utils/jira-sync-story.sh +0 -8
  399. package/pennyfarthing-dist/scripts/utils/jira-sync.sh +0 -8
  400. package/pennyfarthing-dist/scripts/utils/log-skill-usage.sh +0 -74
  401. package/pennyfarthing-dist/scripts/utils/logging.sh +0 -186
  402. package/pennyfarthing-dist/scripts/utils/repo-scan.sh +0 -141
  403. package/pennyfarthing-dist/scripts/utils/retry.sh +0 -76
  404. package/pennyfarthing-dist/scripts/utils/run-timestamp.sh +0 -7
  405. package/pennyfarthing-dist/scripts/utils/session-cleanup.sh +0 -319
  406. package/pennyfarthing-dist/scripts/utils/skill-usage-report.sh +0 -193
  407. package/pennyfarthing-dist/scripts/utils/sprint-common.sh +0 -286
  408. package/pennyfarthing-dist/scripts/utils/sprint-metrics.sh +0 -241
  409. package/pennyfarthing-dist/scripts/utils/swebench-judge.py +0 -400
  410. package/pennyfarthing-dist/scripts/utils/sync-epic-to-jira.sh +0 -16
  411. package/pennyfarthing-dist/scripts/utils/test-setup.sh +0 -337
  412. package/pennyfarthing-dist/scripts/utils/validate-subagent-frontmatter.sh +0 -160
  413. package/pennyfarthing-dist/scripts/worktree-manager.sh +0 -498
  414. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +0 -236
  415. package/pennyfarthing-dist/skills/changelog/SKILL.md +0 -367
  416. package/pennyfarthing-dist/skills/code-review/SKILL.md +0 -168
  417. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +0 -268
  418. package/pennyfarthing-dist/skills/cyclist/SKILL.md +0 -171
  419. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -421
  420. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -258
  421. package/pennyfarthing-dist/skills/jira/SKILL.md +0 -281
  422. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -524
  423. package/pennyfarthing-dist/skills/just/SKILL.md +0 -160
  424. package/pennyfarthing-dist/skills/mermaid/SKILL.md +0 -240
  425. package/pennyfarthing-dist/skills/otel/skill.md +0 -222
  426. package/pennyfarthing-dist/skills/permissions/skill.md +0 -172
  427. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -173
  428. package/pennyfarthing-dist/skills/skill-registry.schema.json +0 -102
  429. package/pennyfarthing-dist/skills/skill-registry.yaml +0 -335
  430. package/pennyfarthing-dist/skills/sprint-context/SKILL.md +0 -120
  431. package/pennyfarthing-dist/skills/story-management/SKILL.md +0 -208
  432. package/pennyfarthing-dist/skills/testing/SKILL.md +0 -99
  433. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +0 -124
  434. package/pennyfarthing-dist/skills/theme/skill.md +0 -129
  435. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +0 -169
  436. package/pennyfarthing-dist/skills/workflow/SKILL.md +0 -160
  437. package/pennyfarthing-dist/skills/yq/SKILL.md +0 -264
  438. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +0 -187
  439. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +0 -59
  440. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -276
  441. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +0 -61
  442. package/pennyfarthing-dist/templates/persona-config.yaml.template +0 -22
  443. package/pennyfarthing-dist/templates/preferences.yaml.template +0 -15
  444. package/pennyfarthing-dist/templates/settings.local.json.template +0 -90
  445. package/pennyfarthing-dist/templates/setup-env.sh.template +0 -18
  446. package/pennyfarthing-dist/templates/shared-context.md.template +0 -70
  447. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +0 -40
  448. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +0 -37
  449. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +0 -34
  450. package/pennyfarthing-dist/workflows/agent-docs.yaml +0 -70
  451. package/pennyfarthing-dist/workflows/bdd.yaml +0 -58
  452. package/pennyfarthing-dist/workflows/tdd.yaml +0 -50
  453. package/pennyfarthing-dist/workflows/trivial.yaml +0 -40
  454. /package/{packages/core/bin → bin}/pennyfarthing.js +0 -0
  455. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts +0 -0
  456. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts.map +0 -0
  457. /package/{packages/core/dist → dist}/bmad/context-reader.js +0 -0
  458. /package/{packages/core/dist → dist}/bmad/context-reader.js.map +0 -0
  459. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts +0 -0
  460. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts.map +0 -0
  461. /package/{packages/core/dist → dist}/bmad/context-reader.test.js +0 -0
  462. /package/{packages/core/dist → dist}/bmad/context-reader.test.js.map +0 -0
  463. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts +0 -0
  464. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts.map +0 -0
  465. /package/{packages/core/dist → dist}/bmad/epics-parser.js +0 -0
  466. /package/{packages/core/dist → dist}/bmad/epics-parser.js.map +0 -0
  467. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts +0 -0
  468. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts.map +0 -0
  469. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js +0 -0
  470. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js.map +0 -0
  471. /package/{packages/core/dist → dist}/bmad/index.d.ts +0 -0
  472. /package/{packages/core/dist → dist}/bmad/index.d.ts.map +0 -0
  473. /package/{packages/core/dist → dist}/bmad/index.js +0 -0
  474. /package/{packages/core/dist → dist}/bmad/index.js.map +0 -0
  475. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts +0 -0
  476. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts.map +0 -0
  477. /package/{packages/core/dist → dist}/bmad/status-sync.js +0 -0
  478. /package/{packages/core/dist → dist}/bmad/status-sync.js.map +0 -0
  479. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts +0 -0
  480. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts.map +0 -0
  481. /package/{packages/core/dist → dist}/bmad/status-sync.test.js +0 -0
  482. /package/{packages/core/dist → dist}/bmad/status-sync.test.js.map +0 -0
  483. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts +0 -0
  484. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts.map +0 -0
  485. /package/{packages/core/dist → dist}/bmad/story-exporter.js +0 -0
  486. /package/{packages/core/dist → dist}/bmad/story-exporter.js.map +0 -0
  487. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts +0 -0
  488. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts.map +0 -0
  489. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js +0 -0
  490. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js.map +0 -0
  491. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts +0 -0
  492. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts.map +0 -0
  493. /package/{packages/core/dist → dist}/bmad/story-parser.js +0 -0
  494. /package/{packages/core/dist → dist}/bmad/story-parser.js.map +0 -0
  495. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts +0 -0
  496. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts.map +0 -0
  497. /package/{packages/core/dist → dist}/bmad/story-parser.test.js +0 -0
  498. /package/{packages/core/dist → dist}/bmad/story-parser.test.js.map +0 -0
  499. /package/{packages/core/dist → dist}/cli/commands/command.d.ts +0 -0
  500. /package/{packages/core/dist → dist}/cli/commands/command.d.ts.map +0 -0
  501. /package/{packages/core/dist → dist}/cli/commands/command.js +0 -0
  502. /package/{packages/core/dist → dist}/cli/commands/command.js.map +0 -0
  503. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts +0 -0
  504. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts.map +0 -0
  505. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts +0 -0
  506. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts.map +0 -0
  507. /package/{packages/core/dist → dist}/cli/commands/doctor.js +0 -0
  508. /package/{packages/core/dist → dist}/cli/commands/doctor.js.map +0 -0
  509. /package/{packages/core/dist → dist}/cli/commands/init.d.ts +0 -0
  510. /package/{packages/core/dist → dist}/cli/commands/init.d.ts.map +0 -0
  511. /package/{packages/core/dist → dist}/cli/commands/init.js +0 -0
  512. /package/{packages/core/dist → dist}/cli/commands/init.js.map +0 -0
  513. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts +0 -0
  514. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts.map +0 -0
  515. /package/{packages/core/dist → dist}/cli/commands/skill.js +0 -0
  516. /package/{packages/core/dist → dist}/cli/commands/skill.js.map +0 -0
  517. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts +0 -0
  518. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts.map +0 -0
  519. /package/{packages/core/dist → dist}/cli/commands/theme.js +0 -0
  520. /package/{packages/core/dist → dist}/cli/commands/theme.js.map +0 -0
  521. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts +0 -0
  522. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts.map +0 -0
  523. /package/{packages/core/dist → dist}/cli/commands/uninstall.js +0 -0
  524. /package/{packages/core/dist → dist}/cli/commands/uninstall.js.map +0 -0
  525. /package/{packages/core/dist → dist}/cli/commands/update.d.ts +0 -0
  526. /package/{packages/core/dist → dist}/cli/commands/version.d.ts +0 -0
  527. /package/{packages/core/dist → dist}/cli/commands/version.d.ts.map +0 -0
  528. /package/{packages/core/dist → dist}/cli/commands/version.js +0 -0
  529. /package/{packages/core/dist → dist}/cli/commands/version.js.map +0 -0
  530. /package/{packages/core/dist → dist}/cli/customization.test.d.ts +0 -0
  531. /package/{packages/core/dist → dist}/cli/customization.test.d.ts.map +0 -0
  532. /package/{packages/core/dist → dist}/cli/customization.test.js +0 -0
  533. /package/{packages/core/dist → dist}/cli/customization.test.js.map +0 -0
  534. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts +0 -0
  535. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts.map +0 -0
  536. /package/{packages/core/dist → dist}/cli/index.d.ts +0 -0
  537. /package/{packages/core/dist → dist}/cli/index.d.ts.map +0 -0
  538. /package/{packages/core/dist → dist}/cli/index.js +0 -0
  539. /package/{packages/core/dist → dist}/cli/index.js.map +0 -0
  540. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts +0 -0
  541. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts.map +0 -0
  542. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js +0 -0
  543. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js.map +0 -0
  544. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts +0 -0
  545. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts.map +0 -0
  546. /package/{packages/core/dist → dist}/cli/theme-maker.test.js +0 -0
  547. /package/{packages/core/dist → dist}/cli/theme-maker.test.js.map +0 -0
  548. /package/{packages/core/dist → dist}/cli/utils/files.d.ts +0 -0
  549. /package/{packages/core/dist → dist}/cli/utils/files.d.ts.map +0 -0
  550. /package/{packages/core/dist → dist}/cli/utils/files.js +0 -0
  551. /package/{packages/core/dist → dist}/cli/utils/files.js.map +0 -0
  552. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts +0 -0
  553. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts.map +0 -0
  554. /package/{packages/core/dist → dist}/cli/utils/logger.js +0 -0
  555. /package/{packages/core/dist → dist}/cli/utils/logger.js.map +0 -0
  556. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts +0 -0
  557. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts.map +0 -0
  558. /package/{packages/core/dist → dist}/cli/utils/manifest.js +0 -0
  559. /package/{packages/core/dist → dist}/cli/utils/manifest.js.map +0 -0
  560. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts +0 -0
  561. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts.map +0 -0
  562. /package/{packages/core/dist → dist}/cli/utils/node-modules.js +0 -0
  563. /package/{packages/core/dist → dist}/cli/utils/node-modules.js.map +0 -0
  564. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts +0 -0
  565. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts.map +0 -0
  566. /package/{packages/core/dist → dist}/cli/utils/prompts.js +0 -0
  567. /package/{packages/core/dist → dist}/cli/utils/prompts.js.map +0 -0
  568. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts +0 -0
  569. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts.map +0 -0
  570. /package/{packages/core/dist → dist}/cli/utils/symlinks.js +0 -0
  571. /package/{packages/core/dist → dist}/cli/utils/symlinks.js.map +0 -0
  572. /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts.map +0 -0
  573. /package/{packages/core/dist → dist}/cli/utils/version.d.ts +0 -0
  574. /package/{packages/core/dist → dist}/cli/utils/version.d.ts.map +0 -0
  575. /package/{packages/core/dist → dist}/cli/utils/version.js +0 -0
  576. /package/{packages/core/dist → dist}/cli/utils/version.js.map +0 -0
  577. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts +0 -0
  578. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts.map +0 -0
  579. /package/{packages/core/dist → dist}/permissions/index.d.ts +0 -0
  580. /package/{packages/core/dist → dist}/permissions/index.d.ts.map +0 -0
  581. /package/{packages/core/dist → dist}/permissions/index.js +0 -0
  582. /package/{packages/core/dist → dist}/permissions/index.js.map +0 -0
  583. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts +0 -0
  584. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts.map +0 -0
  585. /package/{packages/core/dist → dist}/permissions/permission-schema.js +0 -0
  586. /package/{packages/core/dist → dist}/permissions/permission-schema.js.map +0 -0
  587. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts +0 -0
  588. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts.map +0 -0
  589. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js +0 -0
  590. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js.map +0 -0
  591. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts +0 -0
  592. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
  593. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js +0 -0
  594. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js.map +0 -0
  595. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts +0 -0
  596. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts.map +0 -0
  597. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js +0 -0
  598. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js.map +0 -0
  599. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts +0 -0
  600. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
  601. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js +0 -0
  602. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js.map +0 -0
  603. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts +0 -0
  604. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
  605. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js +0 -0
  606. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js.map +0 -0
  607. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts +0 -0
  608. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts.map +0 -0
  609. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js +0 -0
  610. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js.map +0 -0
  611. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts +0 -0
  612. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts.map +0 -0
  613. /package/{packages/core/dist → dist}/scripts/generate-report.js +0 -0
  614. /package/{packages/core/dist → dist}/scripts/generate-report.js.map +0 -0
  615. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts +0 -0
  616. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts.map +0 -0
  617. /package/{packages/core/dist → dist}/scripts/generate-report.test.js +0 -0
  618. /package/{packages/core/dist → dist}/scripts/generate-report.test.js.map +0 -0
  619. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts +0 -0
  620. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts.map +0 -0
  621. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js +0 -0
  622. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js.map +0 -0
  623. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts +0 -0
  624. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
  625. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js +0 -0
  626. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js.map +0 -0
  627. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts +0 -0
  628. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts.map +0 -0
  629. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts +0 -0
  630. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
  631. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js +0 -0
  632. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js.map +0 -0
  633. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
  634. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
  635. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js +0 -0
  636. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js.map +0 -0
  637. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts +0 -0
  638. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts.map +0 -0
  639. /package/{packages/core/dist → dist}/scripts/run-ci.test.js +0 -0
  640. /package/{packages/core/dist → dist}/scripts/run-ci.test.js.map +0 -0
  641. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts +0 -0
  642. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts.map +0 -0
  643. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js +0 -0
  644. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js.map +0 -0
  645. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts +0 -0
  646. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
  647. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js +0 -0
  648. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js.map +0 -0
  649. /package/{packages/core/dist → dist}/workflow/generic-handoff.test.d.ts +0 -0
  650. /package/{packages/core/dist → dist}/workflow/generic-handoff.test.d.ts.map +0 -0
  651. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts +0 -0
  652. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts.map +0 -0
  653. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js +0 -0
  654. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js.map +0 -0
  655. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts +0 -0
  656. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts.map +0 -0
  657. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js +0 -0
  658. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js.map +0 -0
  659. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts +0 -0
  660. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts.map +0 -0
  661. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js +0 -0
  662. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js.map +0 -0
  663. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts +0 -0
  664. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
  665. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js +0 -0
  666. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js.map +0 -0
  667. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts +0 -0
  668. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts.map +0 -0
  669. /package/{packages/core/dist → dist}/workflow/test-cache.js +0 -0
  670. /package/{packages/core/dist → dist}/workflow/test-cache.js.map +0 -0
  671. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts +0 -0
  672. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts.map +0 -0
  673. /package/{packages/core/dist → dist}/workflow/test-cache.test.js +0 -0
  674. /package/{packages/core/dist → dist}/workflow/test-cache.test.js.map +0 -0
  675. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts +0 -0
  676. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts.map +0 -0
  677. /package/{packages/core/dist → dist}/workflow/workflow-loader.js +0 -0
  678. /package/{packages/core/dist → dist}/workflow/workflow-loader.js.map +0 -0
  679. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts +0 -0
  680. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts.map +0 -0
  681. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts +0 -0
  682. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts.map +0 -0
  683. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts +0 -0
  684. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts.map +0 -0
  685. /package/{packages/core/dist → dist}/workflow/workflow-router.js +0 -0
  686. /package/{packages/core/dist → dist}/workflow/workflow-router.js.map +0 -0
  687. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts +0 -0
  688. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts.map +0 -0
  689. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js +0 -0
  690. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js.map +0 -0
  691. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts +0 -0
  692. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts.map +0 -0
@@ -1,480 +0,0 @@
1
- # Pennyfarthing Agent Coordination Architecture
2
-
3
- ## Overview
4
-
5
- This document describes how Pennyfarthing agents are coordinated. The framework supports both single-repo and multi-repo projects.
6
-
7
- **Key Principle:** Single entry point (`/new-work` or `/work`), state detection via session files, handoffs via Haiku subagents.
8
-
9
- ## The TDD Flow
10
-
11
- ```
12
- /new-work → SM → TEA → Dev → Reviewer → SM (finish)
13
- │ │ │ │
14
- setup tests impl review
15
- │ │ │ │
16
- └─────┴─────┴────────┘
17
- subagent handoffs
18
- ```
19
-
20
- **Entry points:** `/new-work` (new story) or `/work` (smart resume/start)
21
- **State detection:** Agents read session file on activation
22
- **Handoffs:** Agents spawn Haiku subagents to update session file
23
- **Finish:** SM handles when status = `approved`
24
-
25
- ## Architecture Principles
26
-
27
- ### 1. Single Source of Truth
28
- - **Agent definitions:** `.pennyfarthing/agents/`
29
- - **Subagent prompts:** `.pennyfarthing/agents/`
30
- - **Scope configuration:** `.pennyfarthing/guides/agent-scopes.yaml`
31
- - **Sprint tracking:** `sprint/current-sprint.yaml`
32
- - **Session state:** `.session/{STORY_ID}-session.md`
33
-
34
- ### 2. Hierarchical Agent Structure
35
- ```
36
- Strategic Agents (Full Scope)
37
- ├── orchestrator → Orchestrates everything
38
- ├── pm → Plans across all repos
39
- ├── architect → Designs across all repos
40
- └── devops → Infrastructure and deployment
41
-
42
- Tactical Agents (Story-Scoped) - THE TDD FLOW
43
- ├── sm → Story setup and finish
44
- ├── tea → Write failing tests (RED)
45
- ├── dev → Implement to GREEN, create PR
46
- └── reviewer → Adversarial code review
47
-
48
- Support Agents
49
- ├── tech-writer → Documentation
50
- └── ux-designer → UI design
51
- ```
52
-
53
- ### 3. Context Loading Strategy
54
- - **Strategic agents** load full project context (both repos)
55
- - **Tactical agents** load only target repo context based on active story
56
- - **Context budget** kept under 500-800 lines per agent
57
- - **Lazy loading** - load docs only when specific task requires them
58
-
59
- ## Directory Structure
60
-
61
- ```
62
- /$CLAUDE_PROJECT_DIR/
63
- ├── .claude/ # Pennyfarthing coordination directory
64
- │ ├── agents/ # Agent definitions (symlinks to pennyfarthing-dist)
65
- │ │ ├── orchestrator.md # Master orchestrator
66
- │ │ ├── pm.md # Product Manager
67
- │ │ ├── sm.md # Scrum Master (+ sm-*.md subagents)
68
- │ │ ├── architect.md # System Architect
69
- │ │ ├── dev.md # Developer (+ dev-handoff.md)
70
- │ │ ├── tea.md # Test Engineer (+ tea-handoff.md)
71
- │ │ ├── reviewer.md # Code Reviewer (+ reviewer-*.md subagents)
72
- │ │ ├── tech-writer.md # Technical Writer
73
- │ │ ├── ux-designer.md # UX Designer
74
- │ │ └── devops.md # DevOps Engineer
75
- │ │
76
- │ ├── commands/ # 42 slash commands (symlinks)
77
- │ ├── guides/ # Behavior guides (symlinks)
78
- │ ├── skills/ # 18+ knowledge domain skills (symlinks)
79
- │ ├── scripts/ # Utility scripts (symlinks)
80
- │ │
81
- │ ├── project/ # Project-specific overrides
82
- │ │ ├── agents/ # Agent sidecars (patterns, gotchas, decisions)
83
- │ │ └── commands/ # Custom project commands
84
- │ │
85
- │ ├── persona-config.local.yaml # Theme selection (deprecated, use .pennyfarthing/)
86
- │ └── CLAUDE.md # Project instructions
87
-
88
- ├── .session/ # Active work sessions
89
- │ └── {story-id}-session.md # Session files (one per story)
90
-
91
- ├── sprint/ # Sprint tracking
92
- │ ├── current-sprint.yaml # Active sprint and stories
93
- │ ├── context/ # Epic technical context
94
- │ ├── archive/ # Completed sprints
95
- │ └── sidecars/ # Agent learning files
96
-
97
- └── pennyfarthing-dist/ # Source of truth (if Pennyfarthing project itself)
98
- ├── agents/ # 10 main agents + 14 subagents
99
- ├── commands/ # 42 slash commands
100
- ├── guides/ # Behavior guides and patterns
101
- ├── skills/ # Knowledge domain skills
102
- ├── personas/themes/ # 102 themed personas
103
- └── scripts/ # Utility scripts
104
- ```
105
-
106
- ## Agent Types
107
-
108
- ### Strategic Agents (Full Scope)
109
-
110
- **Characteristics:**
111
- - See entire project (both repos)
112
- - Load all context on activation
113
- - Make cross-repo decisions
114
- - Coordinate work across repos
115
-
116
- **Agents:**
117
- - **Pennyfarthing Master:** Orchestrates all agents and workflows
118
- - **PM:** Plans sprints, prioritizes epics, manages backlog
119
- - **SM:** Creates stories, adds technical context, validates readiness
120
- - **Architect:** Makes design decisions, defines patterns, ensures consistency
121
-
122
- **Context Loading:**
123
- ```yaml
124
- On Activation:
125
- 1. sprint/sprint-status.yaml # Full sprint status
126
- 2. API/.claude/context.md # API context
127
- 3. UI/.claude/context.md # UI context
128
- 4. API/docs/epics.md # Epic definitions (PM only)
129
- 5. .session/{STORY_ID}-session.md # Active work
130
- ```
131
-
132
- ### Tactical Agents (Story-Scoped)
133
-
134
- **Characteristics:**
135
- - Focus on specific repo(s)
136
- - Load context based on active story
137
- - Implement/test/document specific features
138
- - Narrow, deep expertise
139
-
140
- **Agents:**
141
- - **Dev:** Implements features in target repo
142
- - **TEA:** Tests features in target repo
143
- - **Tech Writer:** Documents features in target repo
144
- - **UX Designer:** Designs UI interfaces (UI only)
145
-
146
- **Context Loading:**
147
- ```yaml
148
- On Activation:
149
- 1. sprint/sprint-status.yaml # Current sprint (story section)
150
- 2. .session/{STORY_ID}-session.md # Active story
151
- 3. Determine target repo from story "Repos:" field
152
- 4. Load target repo context:
153
- - If API: API/.claude/context.md
154
- - If UI: UI/.claude/context.md
155
- - If Both: Load both contexts
156
- ```
157
-
158
- ## Context Files
159
-
160
- ### Base Directory Context
161
-
162
- #### `sprint/sprint-status.yaml`
163
- **Purpose:** Unified sprint tracking for all stories
164
- **Size:** ~100-200 lines
165
- **Loaded By:** All agents
166
- **Content:**
167
- - Sprint goals
168
- - All stories (API, UI, Both)
169
- - Story status (backlog, in-progress, review, done)
170
- - Story metadata (repos, priority, points, files)
171
-
172
- #### `.session/{STORY_ID}-session.md`
173
- **Purpose:** Current work session context
174
- **Size:** ~50-100 lines
175
- **Loaded By:** All agents
176
- **Content:**
177
- - Active story ID
178
- - Target repo(s)
179
- - Story context
180
- - Progress notes
181
- - Done checklist
182
-
183
- ### Repository Context
184
-
185
- #### `API/.claude/context.md`
186
- **Purpose:** API-specific patterns and structure
187
- **Size:** ~30-50 lines
188
- **Loaded By:** Strategic agents + Dev/TEA when working on API
189
- **Content:**
190
- - Tech stack (Go, PostgreSQL, MongoDB, Redis)
191
- - Key patterns (Repository, DI, REST, Middleware)
192
- - Project structure
193
- - Quick links to key directories
194
-
195
- #### `UI/.claude/context.md`
196
- **Purpose:** UI-specific patterns and structure
197
- **Size:** ~30-50 lines
198
- **Loaded By:** Strategic agents + Dev/TEA/UX when working on UI
199
- **Content:**
200
- - Tech stack (React, TypeScript, TailwindCSS)
201
- - Key patterns (Components, Hooks, Context API)
202
- - Project structure
203
- - Quick links to key directories
204
-
205
- ### Documentation
206
-
207
- #### `API/docs/epics.md`
208
- **Purpose:** All epic definitions for API
209
- **Size:** ~800+ lines (load summary only)
210
- **Loaded By:** PM, Architect
211
- **Content:**
212
- - Epic descriptions
213
- - Story breakdowns
214
- - Technical context
215
- - Dependencies
216
-
217
- ## Agent Activation Protocol
218
-
219
- ### Step 1: Load Agent Definition
220
- ```
221
- Read: .pennyfarthing/agents/[agent].md
222
- Identify: Strategic or Tactical agent type
223
- ```
224
-
225
- ### Step 2: Load Base Context
226
- ```
227
- Load files from agent-scopes.yaml:
228
- - Sprint status
229
- - Active work (if exists)
230
- - Repo contexts (based on agent type)
231
- ```
232
-
233
- ### Step 3: Determine Scope (Tactical Agents Only)
234
- ```
235
- Read: .session/{STORY_ID}-session.md
236
- Extract: "Repos:" field (API|UI|Both)
237
- Load: Appropriate repo context
238
- ```
239
-
240
- ### Step 4: Present Ready State
241
- ```
242
- Display: Agent persona and menu
243
- Show: Loaded context summary
244
- Ready: For user input
245
- ```
246
-
247
- ## Agent Workflows
248
-
249
- ### Strategic Agent Workflow (PM Example)
250
-
251
- ```
252
- User: @/pm
253
-
254
- 1. Load PM agent definition (.pennyfarthing/agents/pm.md)
255
- 2. Load all strategic context:
256
- - Sprint status (full)
257
- - API context
258
- - UI context
259
- - Epic definitions
260
- - Active work
261
- 3. Present PM menu with options
262
- 4. Execute PM tasks (sprint planning, backlog grooming, etc.)
263
- 5. Update sprint status
264
- 6. Hand off to SM or other agents as needed
265
- ```
266
-
267
- ### Tactical Agent Workflow (Dev Example)
268
-
269
- ```
270
- User: @/dev
271
-
272
- 1. Load Dev agent definition (.pennyfarthing/agents/dev.md)
273
- 2. Load base context:
274
- - Sprint status (story section)
275
- - Active work
276
- 3. Determine target repo from active work "Repos:" field
277
- 4. Load target repo context:
278
- - If API: API/.claude/context.md
279
- - If UI: UI/.claude/context.md
280
- - If Both: Load both
281
- 5. Present Dev ready state
282
- 6. Implement story in target repo(s)
283
- 7. Update sprint status to 'review'
284
- 8. Hand off to TEA or SM
285
- ```
286
-
287
- ## Agent Handoffs (TDD Flow)
288
-
289
- Handoffs are automated via Haiku subagents in `.pennyfarthing/agents/`.
290
-
291
- ### The Flow
292
-
293
- ```
294
- SM → TEA → Dev → Reviewer → SM
295
- │ │ │ │ │
296
- │ │ │ │ └── generic-sm-finish PHASE=execute
297
- │ │ │ └── generic-handoff VERDICT=approved/rejected
298
- │ │ └── generic-handoff CURRENT_PHASE=green
299
- │ └── generic-handoff CURRENT_PHASE=red
300
- └── generic-sm-setup MODE=setup + sm-handoff
301
- ```
302
-
303
- ### Complete Subagent Inventory
304
-
305
- | Subagent File | Purpose | Model |
306
- |--------------|---------|-------|
307
- | **SM Subagents** | | |
308
- | `generic-sm-setup.md` | Research backlog (MODE=research) or setup story (MODE=setup) | haiku |
309
- | `generic-sm-finish.md` | Preflight checks (PHASE=preflight) or execute finish (PHASE=execute) | haiku |
310
- | `sm-handoff.md` | SM → TEA/Dev handoff with Jira/branch verification | haiku |
311
- | `sm-file-summary.md` | Summarize file changes for commits | haiku |
312
- | **Shared Subagents** | | |
313
- | `generic-handoff.md` | Workflow-driven phase transitions (TEA, Dev, Reviewer) | haiku |
314
- | `testing-runner.md` | Run tests and report results | haiku |
315
- | **Reviewer Subagents** | | |
316
- | `reviewer-preflight.md` | Pre-flight checks before review | haiku |
317
- | **Utility Subagents** | | |
318
- | `workflow-status-check.md` | Check workflow status across repos | haiku |
319
-
320
- ### SM → TEA (Story Setup)
321
- **Trigger:** User selects story via `/new-work`
322
- **Subagent:** `generic-sm-setup MODE=setup` then `sm-handoff`
323
- **Action:** Claim Jira, write session file, create branches
324
- **Handoff phrase:** "TEA, Story X-Y needs tests. Write failing tests for these ACs."
325
-
326
- ### TEA → Dev (Tests Written)
327
- **Trigger:** TEA completes failing tests
328
- **Subagent:** `generic-handoff CURRENT_PHASE=red`
329
- **Action:** Update session file, transition to green phase
330
- **Handoff phrase:** "Dev, tests are RED and ready. Make them GREEN."
331
-
332
- ### Dev → Reviewer (Implementation Complete)
333
- **Trigger:** Dev creates PR with passing tests
334
- **Subagent:** `generic-handoff CURRENT_PHASE=green`
335
- **Action:** Update session file, transition to review phase
336
- **Handoff phrase:** "Reviewer, PR #N is ready. All tests GREEN."
337
-
338
- ### Reviewer → SM (Approved)
339
- **Trigger:** Reviewer approves PR
340
- **Subagent:** `generic-handoff VERDICT=approved`
341
- **Action:** Update status to `approved`, transition to finish phase
342
- **Handoff phrase:** "SM, Story X-Y approved. Run finish-story."
343
-
344
- ### Reviewer → Dev (Rejected)
345
- **Trigger:** Reviewer finds issues
346
- **Subagent:** `generic-handoff VERDICT=rejected`
347
- **Action:** Update session with issues, route back to implement phase
348
- **Handoff phrase:** "Dev, {N} issues found. See assessment for details."
349
-
350
- ### SM → Done (Finish)
351
- **Trigger:** Status = `approved`
352
- **Subagent:** `generic-sm-finish PHASE=execute`
353
- **Action:** Archive session, create summary, update sprint YAML, sync Jira
354
-
355
- ## Support Agent Handoffs
356
-
357
- ### Any → Architect
358
- **Trigger:** Need design decisions or architectural guidance
359
- **Context:** Technical problem or design question
360
- **Action:** Architect provides design and implementation guidance
361
-
362
- ### Any → Tech Writer
363
- **Trigger:** Feature needs documentation
364
- **Context:** Implemented feature
365
- **Action:** Tech Writer creates documentation
366
-
367
- ### Any → UX Designer
368
- **Trigger:** Feature needs UI design
369
- **Context:** User story and requirements
370
- **Action:** UX Designer creates UI design and specs
371
-
372
- ## Context Budget Management
373
-
374
- ### Target Budgets
375
- - **Agent file:** 200-400 lines
376
- - **Sprint status:** 100-200 lines (full) or 50 lines (story section)
377
- - **Repo contexts:** 30-50 lines each
378
- - **Active work:** 50-100 lines
379
- - **Total per agent:** 500-800 lines
380
-
381
- ### Strategic Agent Budget
382
- ```
383
- PM Agent Example:
384
- - pm.md: 200 lines
385
- - sprint-status.yaml: 150 lines
386
- - API/context: 30 lines
387
- - UI/context: 30 lines
388
- - epics.md (summary): 100 lines
389
- - active work: 50 lines
390
- Total: 560 lines ✓
391
- ```
392
-
393
- ### Tactical Agent Budget
394
- ```
395
- Dev Agent Example (API story):
396
- - dev.md: 300 lines
397
- - sprint-status (story): 50 lines
398
- - API/context: 30 lines
399
- - active work: 50 lines
400
- Total: 430 lines ✓
401
- ```
402
-
403
- ## Benefits
404
-
405
- ### ✅ Single Source of Truth
406
- - All agents defined in one place
407
- - No duplicate or conflicting agent files
408
- - Easy to update and maintain
409
-
410
- ### ✅ Coordinated Planning
411
- - Strategic agents see full project scope
412
- - Unified sprint tracking
413
- - Clear cross-repo dependencies
414
-
415
- ### ✅ Focused Implementation
416
- - Tactical agents load only what they need
417
- - Reduced context overhead
418
- - Faster agent activation
419
-
420
- ### ✅ Clear Hierarchy
421
- - Strategic agents coordinate
422
- - Tactical agents execute
423
- - Clean handoffs between agents
424
-
425
- ### ✅ Scalable
426
- - Easy to add new agents
427
- - Context budgets stay manageable
428
- - Works for solo dev or team
429
-
430
- ## Architecture History
431
-
432
- ### Previous Architecture (Pre-December 2025)
433
- - Separate commands: `/new-work`, `/pickup-work`, `/handoff-work`, `/finish-work`
434
- - Manual handoff documentation
435
- - No subagent extraction
436
-
437
- ### Current Architecture (January 2026)
438
- - Smart entry point: `/work` (resumes or starts new)
439
- - Alternative: `/new-work` (explicitly start new story)
440
- - State detection via session file in `.session/`
441
- - Handoffs via Haiku subagents in `.pennyfarthing/agents/`
442
- - SM handles finish-story when status = `approved`
443
- - 102 themed personas for agent personality
444
-
445
- ### Directory Structure
446
- ```
447
- .pennyfarthing/agents/ # Agent definitions (symlinked)
448
- .claude/commands/ # 42 slash commands
449
- .claude/skills/ # 18+ knowledge domain skills
450
- .session/ # Session files
451
- sprint/ # Sprint tracking
452
- ```
453
-
454
- ### Commands Reference
455
- ```bash
456
- # Entry points
457
- /work # Smart entry - resume or start new
458
- /new-work # Explicitly start new story
459
-
460
- # TDD Flow agents
461
- /sm # Scrum Master (setup + finish)
462
- /tea # Test Engineer (RED phase)
463
- /dev # Developer (GREEN phase)
464
- /reviewer # Code Reviewer
465
-
466
- # Support agents
467
- /architect # Architecture design
468
- /tech-writer # Documentation
469
- /ux-designer # UI/UX design
470
- /devops # Infrastructure
471
-
472
- # Utility
473
- /check # Run quality gates before handoff
474
- /chore # Quick commit for small changes
475
- /release # Merge develop to main
476
- ```
477
-
478
- ---
479
-
480
- **Smart entry. State detection. Subagent handoffs. Themed personas.**
@@ -1,201 +0,0 @@
1
- # Agent Permission Scopes Guide
2
-
3
- Pennyfarthing uses a three-tier permission model to control what each agent can access and modify.
4
-
5
- ## Three-Tier Model
6
-
7
- | Tier | Agents | Scope | Model |
8
- |------|--------|-------|-------|
9
- | **Strategic** | Orchestrator, PM, SM, Architect, DevOps | Full project | Opus |
10
- | **Tactical** | Dev, TEA, Reviewer, Tech-Writer, UX | Story-focused | Opus |
11
- | **Helper** | Subagents (testing-runner, handoffs, etc.) | Single task | Haiku |
12
-
13
- ## Strategic Agents
14
-
15
- Strategic agents have broad project visibility and coordination responsibilities.
16
-
17
- ### Capabilities
18
- - See entire project scope (sprint, all sessions, architecture)
19
- - Coordinate between agents and stories
20
- - Make cross-cutting decisions
21
- - Modify sprint and session files
22
-
23
- ### Example: Scrum Master (SM)
24
- ```yaml
25
- sm:
26
- scope: full
27
- permissions:
28
- - Read
29
- - Grep
30
- - Glob
31
- - Bash
32
- - Edit(sprint/**)
33
- - Edit(.session/**)
34
- - Write(sprint/**)
35
- - Write(.session/**)
36
- - Skill(tea)
37
- - Skill(dev)
38
- - Skill(reviewer)
39
- ```
40
-
41
- ## Tactical Agents
42
-
43
- Tactical agents focus on the current story and have permissions scoped to their role.
44
-
45
- ### Capabilities
46
- - See current session and shared context
47
- - Modify files relevant to their specialty
48
- - Spawn helper subagents for mechanical tasks
49
- - Hand off to next agent in workflow
50
-
51
- ### Example: Developer (Dev)
52
- ```yaml
53
- dev:
54
- scope: story
55
- permissions:
56
- - Read
57
- - Grep
58
- - Glob
59
- - Bash
60
- - Edit(src/**)
61
- - Edit(tests/**)
62
- - Edit(.session/**)
63
- - Write(src/**)
64
- - Write(tests/**)
65
- - Task(testing-runner)
66
- - Task(dev-handoff)
67
- ```
68
-
69
- ### Example: Test Engineer (TEA)
70
- ```yaml
71
- tea:
72
- scope: story
73
- permissions:
74
- - Read
75
- - Grep
76
- - Glob
77
- - Bash
78
- - Edit(tests/**)
79
- - Edit(.session/**)
80
- - Write(tests/**)
81
- - Task(testing-runner)
82
- - Task(tea-handoff)
83
- ```
84
-
85
- ### Example: Reviewer
86
- ```yaml
87
- reviewer:
88
- scope: story
89
- permissions:
90
- - Read
91
- - Grep
92
- - Glob
93
- - Bash # For git diff
94
- - Edit(.session/**) # Assessment only
95
- - Task(reviewer-preflight)
96
- - Task(reviewer-handoff-*)
97
- ```
98
-
99
- Note: Reviewer has no Edit permissions for source code - they can only read and assess.
100
-
101
- ## Helper Subagents
102
-
103
- Helpers are Haiku-powered agents with minimal permissions for specific tasks.
104
-
105
- ### Capabilities
106
- - Execute single mechanical task
107
- - Limited to essential permissions
108
- - Report results back to parent agent
109
- - No cross-agent invocation
110
-
111
- ### Example: Testing Runner
112
- ```yaml
113
- testing-runner:
114
- scope: task
115
- model: haiku
116
- permissions:
117
- - Read
118
- - Bash
119
- - Grep
120
- ```
121
-
122
- ### Example: Dev Handoff
123
- ```yaml
124
- dev-handoff:
125
- scope: task
126
- model: haiku
127
- permissions:
128
- - Read
129
- - Bash
130
- - Edit(.session/**)
131
- - Grep
132
- ```
133
-
134
- ## Permission Pattern Reference
135
-
136
- ### Tool Permissions
137
-
138
- | Permission | Description |
139
- |------------|-------------|
140
- | `Read` | Read any file |
141
- | `Grep` | Search file contents |
142
- | `Glob` | Find files by pattern |
143
- | `Bash` | Execute shell commands |
144
- | `Edit(pattern)` | Edit files matching pattern |
145
- | `Write(pattern)` | Create files matching pattern |
146
- | `Skill(name)` | Invoke named agent |
147
- | `Task(type)` | Spawn subagent |
148
-
149
- ### Path Patterns
150
-
151
- | Pattern | Matches |
152
- |---------|---------|
153
- | `src/**` | All files under src/ |
154
- | `**/*.md` | All markdown files |
155
- | `.session/**` | All session files |
156
- | `sprint/**` | All sprint files |
157
-
158
- ### Wildcards
159
-
160
- | Pattern | Meaning |
161
- |---------|---------|
162
- | `Skill(*)` | Any skill |
163
- | `Task(sm-*)` | Any SM subagent |
164
- | `Edit(**/*)` | Edit any file |
165
-
166
- ## Scope Inheritance
167
-
168
- Agents inherit base permissions from their tier:
169
-
170
- ```
171
- Strategic: Full read access + tier-specific writes
172
- Tactical: Story read access + role-specific writes
173
- Helper: Task-specific access only
174
- ```
175
-
176
- ## Customizing Scopes
177
-
178
- Edit `.claude/project/docs/agent-scopes.yaml` to customize:
179
-
180
- 1. **Add permissions** for project-specific needs
181
- 2. **Restrict paths** for sensitive directories
182
- 3. **Add subagents** for new automation tasks
183
-
184
- Example: Allow Dev to edit database migrations:
185
- ```yaml
186
- dev:
187
- permissions:
188
- - Edit(db/migrations/**)
189
- ```
190
-
191
- ## Security Considerations
192
-
193
- - **Helpers cannot invoke other agents** - prevents privilege escalation
194
- - **Tactical agents can only invoke their helpers** - maintains workflow
195
- - **Only SM can invoke Dev/TEA/Reviewer** - enforces TDD flow
196
- - **Edit permissions are path-scoped** - prevents accidental damage
197
-
198
- ## File Location
199
-
200
- Configuration: `.claude/project/docs/agent-scopes.yaml`
201
- Template: `pennyfarthing-dist/templates/agent-scopes.yaml.template`