@pennyfarthing/core 6.6.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 (599) hide show
  1. package/README.md +293 -0
  2. package/package.json +58 -0
  3. package/packages/core/bin/pennyfarthing.js +14 -0
  4. package/packages/core/dist/bmad/context-reader.d.ts +71 -0
  5. package/packages/core/dist/bmad/context-reader.d.ts.map +1 -0
  6. package/packages/core/dist/bmad/context-reader.js +369 -0
  7. package/packages/core/dist/bmad/context-reader.js.map +1 -0
  8. package/packages/core/dist/bmad/context-reader.test.d.ts +71 -0
  9. package/packages/core/dist/bmad/context-reader.test.d.ts.map +1 -0
  10. package/packages/core/dist/bmad/context-reader.test.js +878 -0
  11. package/packages/core/dist/bmad/context-reader.test.js.map +1 -0
  12. package/packages/core/dist/bmad/epics-parser.d.ts +61 -0
  13. package/packages/core/dist/bmad/epics-parser.d.ts.map +1 -0
  14. package/packages/core/dist/bmad/epics-parser.js +331 -0
  15. package/packages/core/dist/bmad/epics-parser.js.map +1 -0
  16. package/packages/core/dist/bmad/epics-parser.test.d.ts +7 -0
  17. package/packages/core/dist/bmad/epics-parser.test.d.ts.map +1 -0
  18. package/packages/core/dist/bmad/epics-parser.test.js +449 -0
  19. package/packages/core/dist/bmad/epics-parser.test.js.map +1 -0
  20. package/packages/core/dist/bmad/index.d.ts +11 -0
  21. package/packages/core/dist/bmad/index.d.ts.map +1 -0
  22. package/packages/core/dist/bmad/index.js +24 -0
  23. package/packages/core/dist/bmad/index.js.map +1 -0
  24. package/packages/core/dist/bmad/status-sync.d.ts +173 -0
  25. package/packages/core/dist/bmad/status-sync.d.ts.map +1 -0
  26. package/packages/core/dist/bmad/status-sync.js +463 -0
  27. package/packages/core/dist/bmad/status-sync.js.map +1 -0
  28. package/packages/core/dist/bmad/status-sync.test.d.ts +7 -0
  29. package/packages/core/dist/bmad/status-sync.test.d.ts.map +1 -0
  30. package/packages/core/dist/bmad/status-sync.test.js +702 -0
  31. package/packages/core/dist/bmad/status-sync.test.js.map +1 -0
  32. package/packages/core/dist/bmad/story-exporter.d.ts +55 -0
  33. package/packages/core/dist/bmad/story-exporter.d.ts.map +1 -0
  34. package/packages/core/dist/bmad/story-exporter.js +170 -0
  35. package/packages/core/dist/bmad/story-exporter.js.map +1 -0
  36. package/packages/core/dist/bmad/story-exporter.test.d.ts +51 -0
  37. package/packages/core/dist/bmad/story-exporter.test.d.ts.map +1 -0
  38. package/packages/core/dist/bmad/story-exporter.test.js +603 -0
  39. package/packages/core/dist/bmad/story-exporter.test.js.map +1 -0
  40. package/packages/core/dist/bmad/story-parser.d.ts +44 -0
  41. package/packages/core/dist/bmad/story-parser.d.ts.map +1 -0
  42. package/packages/core/dist/bmad/story-parser.js +307 -0
  43. package/packages/core/dist/bmad/story-parser.js.map +1 -0
  44. package/packages/core/dist/bmad/story-parser.test.d.ts +44 -0
  45. package/packages/core/dist/bmad/story-parser.test.d.ts.map +1 -0
  46. package/packages/core/dist/bmad/story-parser.test.js +693 -0
  47. package/packages/core/dist/bmad/story-parser.test.js.map +1 -0
  48. package/packages/core/dist/cli/commands/command.d.ts +28 -0
  49. package/packages/core/dist/cli/commands/command.d.ts.map +1 -0
  50. package/packages/core/dist/cli/commands/command.js +399 -0
  51. package/packages/core/dist/cli/commands/command.js.map +1 -0
  52. package/packages/core/dist/cli/commands/cyclist.d.ts +46 -0
  53. package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -0
  54. package/packages/core/dist/cli/commands/cyclist.js +191 -0
  55. package/packages/core/dist/cli/commands/cyclist.js.map +1 -0
  56. package/packages/core/dist/cli/commands/cyclist.test.d.ts +13 -0
  57. package/packages/core/dist/cli/commands/cyclist.test.d.ts.map +1 -0
  58. package/packages/core/dist/cli/commands/cyclist.test.js +243 -0
  59. package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -0
  60. package/packages/core/dist/cli/commands/doctor.d.ts +9 -0
  61. package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -0
  62. package/packages/core/dist/cli/commands/doctor.js +652 -0
  63. package/packages/core/dist/cli/commands/doctor.js.map +1 -0
  64. package/packages/core/dist/cli/commands/init.d.ts +8 -0
  65. package/packages/core/dist/cli/commands/init.d.ts.map +1 -0
  66. package/packages/core/dist/cli/commands/init.js +524 -0
  67. package/packages/core/dist/cli/commands/init.js.map +1 -0
  68. package/packages/core/dist/cli/commands/skill.d.ts +28 -0
  69. package/packages/core/dist/cli/commands/skill.d.ts.map +1 -0
  70. package/packages/core/dist/cli/commands/skill.js +416 -0
  71. package/packages/core/dist/cli/commands/skill.js.map +1 -0
  72. package/packages/core/dist/cli/commands/theme.d.ts +21 -0
  73. package/packages/core/dist/cli/commands/theme.d.ts.map +1 -0
  74. package/packages/core/dist/cli/commands/theme.js +201 -0
  75. package/packages/core/dist/cli/commands/theme.js.map +1 -0
  76. package/packages/core/dist/cli/commands/uninstall.d.ts +8 -0
  77. package/packages/core/dist/cli/commands/uninstall.d.ts.map +1 -0
  78. package/packages/core/dist/cli/commands/uninstall.js +237 -0
  79. package/packages/core/dist/cli/commands/uninstall.js.map +1 -0
  80. package/packages/core/dist/cli/commands/update.d.ts +9 -0
  81. package/packages/core/dist/cli/commands/update.d.ts.map +1 -0
  82. package/packages/core/dist/cli/commands/update.js +545 -0
  83. package/packages/core/dist/cli/commands/update.js.map +1 -0
  84. package/packages/core/dist/cli/commands/version.d.ts +2 -0
  85. package/packages/core/dist/cli/commands/version.d.ts.map +1 -0
  86. package/packages/core/dist/cli/commands/version.js +28 -0
  87. package/packages/core/dist/cli/commands/version.js.map +1 -0
  88. package/packages/core/dist/cli/customization.test.d.ts +12 -0
  89. package/packages/core/dist/cli/customization.test.d.ts.map +1 -0
  90. package/packages/core/dist/cli/customization.test.js +84 -0
  91. package/packages/core/dist/cli/customization.test.js.map +1 -0
  92. package/packages/core/dist/cli/cyclist-migration.test.d.ts +16 -0
  93. package/packages/core/dist/cli/cyclist-migration.test.d.ts.map +1 -0
  94. package/packages/core/dist/cli/cyclist-migration.test.js +224 -0
  95. package/packages/core/dist/cli/cyclist-migration.test.js.map +1 -0
  96. package/packages/core/dist/cli/index.d.ts +3 -0
  97. package/packages/core/dist/cli/index.d.ts.map +1 -0
  98. package/packages/core/dist/cli/index.js +174 -0
  99. package/packages/core/dist/cli/index.js.map +1 -0
  100. package/packages/core/dist/cli/ocean-profiles.test.d.ts +13 -0
  101. package/packages/core/dist/cli/ocean-profiles.test.d.ts.map +1 -0
  102. package/packages/core/dist/cli/ocean-profiles.test.js +134 -0
  103. package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -0
  104. package/packages/core/dist/cli/theme-maker.test.d.ts +11 -0
  105. package/packages/core/dist/cli/theme-maker.test.d.ts.map +1 -0
  106. package/packages/core/dist/cli/theme-maker.test.js +356 -0
  107. package/packages/core/dist/cli/theme-maker.test.js.map +1 -0
  108. package/packages/core/dist/cli/utils/constants.d.ts +60 -0
  109. package/packages/core/dist/cli/utils/constants.d.ts.map +1 -0
  110. package/packages/core/dist/cli/utils/constants.js +52 -0
  111. package/packages/core/dist/cli/utils/constants.js.map +1 -0
  112. package/packages/core/dist/cli/utils/files.d.ts +71 -0
  113. package/packages/core/dist/cli/utils/files.d.ts.map +1 -0
  114. package/packages/core/dist/cli/utils/files.js +162 -0
  115. package/packages/core/dist/cli/utils/files.js.map +1 -0
  116. package/packages/core/dist/cli/utils/logger.d.ts +26 -0
  117. package/packages/core/dist/cli/utils/logger.d.ts.map +1 -0
  118. package/packages/core/dist/cli/utils/logger.js +88 -0
  119. package/packages/core/dist/cli/utils/logger.js.map +1 -0
  120. package/packages/core/dist/cli/utils/manifest.d.ts +47 -0
  121. package/packages/core/dist/cli/utils/manifest.d.ts.map +1 -0
  122. package/packages/core/dist/cli/utils/manifest.js +90 -0
  123. package/packages/core/dist/cli/utils/manifest.js.map +1 -0
  124. package/packages/core/dist/cli/utils/node-modules.d.ts +6 -0
  125. package/packages/core/dist/cli/utils/node-modules.d.ts.map +1 -0
  126. package/packages/core/dist/cli/utils/node-modules.js +22 -0
  127. package/packages/core/dist/cli/utils/node-modules.js.map +1 -0
  128. package/packages/core/dist/cli/utils/prompts.d.ts +34 -0
  129. package/packages/core/dist/cli/utils/prompts.d.ts.map +1 -0
  130. package/packages/core/dist/cli/utils/prompts.js +93 -0
  131. package/packages/core/dist/cli/utils/prompts.js.map +1 -0
  132. package/packages/core/dist/cli/utils/symlinks.d.ts +29 -0
  133. package/packages/core/dist/cli/utils/symlinks.d.ts.map +1 -0
  134. package/packages/core/dist/cli/utils/symlinks.js +181 -0
  135. package/packages/core/dist/cli/utils/symlinks.js.map +1 -0
  136. package/packages/core/dist/cli/utils/themes.d.ts +104 -0
  137. package/packages/core/dist/cli/utils/themes.d.ts.map +1 -0
  138. package/packages/core/dist/cli/utils/themes.js +393 -0
  139. package/packages/core/dist/cli/utils/themes.js.map +1 -0
  140. package/packages/core/dist/cli/utils/themes.test.d.ts +12 -0
  141. package/packages/core/dist/cli/utils/themes.test.d.ts.map +1 -0
  142. package/packages/core/dist/cli/utils/themes.test.js +144 -0
  143. package/packages/core/dist/cli/utils/themes.test.js.map +1 -0
  144. package/packages/core/dist/cli/utils/version.d.ts +10 -0
  145. package/packages/core/dist/cli/utils/version.d.ts.map +1 -0
  146. package/packages/core/dist/cli/utils/version.js +63 -0
  147. package/packages/core/dist/cli/utils/version.js.map +1 -0
  148. package/packages/core/dist/cli/workspace.test.d.ts +8 -0
  149. package/packages/core/dist/cli/workspace.test.d.ts.map +1 -0
  150. package/packages/core/dist/cli/workspace.test.js +154 -0
  151. package/packages/core/dist/cli/workspace.test.js.map +1 -0
  152. package/packages/core/dist/index.d.ts +6 -0
  153. package/packages/core/dist/index.d.ts.map +1 -0
  154. package/packages/core/dist/index.js +10 -0
  155. package/packages/core/dist/index.js.map +1 -0
  156. package/packages/core/dist/permissions/index.d.ts +9 -0
  157. package/packages/core/dist/permissions/index.d.ts.map +1 -0
  158. package/packages/core/dist/permissions/index.js +13 -0
  159. package/packages/core/dist/permissions/index.js.map +1 -0
  160. package/packages/core/dist/permissions/permission-schema.d.ts +89 -0
  161. package/packages/core/dist/permissions/permission-schema.d.ts.map +1 -0
  162. package/packages/core/dist/permissions/permission-schema.js +120 -0
  163. package/packages/core/dist/permissions/permission-schema.js.map +1 -0
  164. package/packages/core/dist/permissions/permission-schema.test.d.ts +40 -0
  165. package/packages/core/dist/permissions/permission-schema.test.d.ts.map +1 -0
  166. package/packages/core/dist/permissions/permission-schema.test.js +367 -0
  167. package/packages/core/dist/permissions/permission-schema.test.js.map +1 -0
  168. package/packages/core/dist/scripts/add-ocean-profiles.d.ts +9 -0
  169. package/packages/core/dist/scripts/add-ocean-profiles.d.ts.map +1 -0
  170. package/packages/core/dist/scripts/add-ocean-profiles.js +695 -0
  171. package/packages/core/dist/scripts/add-ocean-profiles.js.map +1 -0
  172. package/packages/core/dist/scripts/benchmark-integration.d.ts +182 -0
  173. package/packages/core/dist/scripts/benchmark-integration.d.ts.map +1 -0
  174. package/packages/core/dist/scripts/benchmark-integration.js +691 -0
  175. package/packages/core/dist/scripts/benchmark-integration.js.map +1 -0
  176. package/packages/core/dist/scripts/benchmark-integration.test.d.ts +13 -0
  177. package/packages/core/dist/scripts/benchmark-integration.test.d.ts.map +1 -0
  178. package/packages/core/dist/scripts/benchmark-integration.test.js +680 -0
  179. package/packages/core/dist/scripts/benchmark-integration.test.js.map +1 -0
  180. package/packages/core/dist/scripts/debugging-scenarios.test.d.ts +18 -0
  181. package/packages/core/dist/scripts/debugging-scenarios.test.d.ts.map +1 -0
  182. package/packages/core/dist/scripts/debugging-scenarios.test.js +317 -0
  183. package/packages/core/dist/scripts/debugging-scenarios.test.js.map +1 -0
  184. package/packages/core/dist/scripts/generate-all-faces.d.ts +10 -0
  185. package/packages/core/dist/scripts/generate-all-faces.d.ts.map +1 -0
  186. package/packages/core/dist/scripts/generate-all-faces.js +256 -0
  187. package/packages/core/dist/scripts/generate-all-faces.js.map +1 -0
  188. package/packages/core/dist/scripts/generate-all-faces.test.d.ts +17 -0
  189. package/packages/core/dist/scripts/generate-all-faces.test.d.ts.map +1 -0
  190. package/packages/core/dist/scripts/generate-all-faces.test.js +372 -0
  191. package/packages/core/dist/scripts/generate-all-faces.test.js.map +1 -0
  192. package/packages/core/dist/scripts/generate-all-spiders.d.ts +10 -0
  193. package/packages/core/dist/scripts/generate-all-spiders.d.ts.map +1 -0
  194. package/packages/core/dist/scripts/generate-all-spiders.js +306 -0
  195. package/packages/core/dist/scripts/generate-all-spiders.js.map +1 -0
  196. package/packages/core/dist/scripts/generate-ascii-face.d.ts +52 -0
  197. package/packages/core/dist/scripts/generate-ascii-face.d.ts.map +1 -0
  198. package/packages/core/dist/scripts/generate-ascii-face.js +155 -0
  199. package/packages/core/dist/scripts/generate-ascii-face.js.map +1 -0
  200. package/packages/core/dist/scripts/generate-face.d.ts +52 -0
  201. package/packages/core/dist/scripts/generate-face.d.ts.map +1 -0
  202. package/packages/core/dist/scripts/generate-face.js +199 -0
  203. package/packages/core/dist/scripts/generate-face.js.map +1 -0
  204. package/packages/core/dist/scripts/generate-face.test.d.ts +13 -0
  205. package/packages/core/dist/scripts/generate-face.test.d.ts.map +1 -0
  206. package/packages/core/dist/scripts/generate-face.test.js +301 -0
  207. package/packages/core/dist/scripts/generate-face.test.js.map +1 -0
  208. package/packages/core/dist/scripts/generate-report.d.ts +65 -0
  209. package/packages/core/dist/scripts/generate-report.d.ts.map +1 -0
  210. package/packages/core/dist/scripts/generate-report.js +378 -0
  211. package/packages/core/dist/scripts/generate-report.js.map +1 -0
  212. package/packages/core/dist/scripts/generate-report.test.d.ts +13 -0
  213. package/packages/core/dist/scripts/generate-report.test.d.ts.map +1 -0
  214. package/packages/core/dist/scripts/generate-report.test.js +363 -0
  215. package/packages/core/dist/scripts/generate-report.test.js.map +1 -0
  216. package/packages/core/dist/scripts/generate-spider-report.d.ts +65 -0
  217. package/packages/core/dist/scripts/generate-spider-report.d.ts.map +1 -0
  218. package/packages/core/dist/scripts/generate-spider-report.js +366 -0
  219. package/packages/core/dist/scripts/generate-spider-report.js.map +1 -0
  220. package/packages/core/dist/scripts/generate-spider-report.test.d.ts +13 -0
  221. package/packages/core/dist/scripts/generate-spider-report.test.d.ts.map +1 -0
  222. package/packages/core/dist/scripts/generate-spider-report.test.js +367 -0
  223. package/packages/core/dist/scripts/generate-spider-report.test.js.map +1 -0
  224. package/packages/core/dist/scripts/generate-spider.d.ts +37 -0
  225. package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -0
  226. package/packages/core/dist/scripts/generate-spider.js +315 -0
  227. package/packages/core/dist/scripts/generate-spider.js.map +1 -0
  228. package/packages/core/dist/scripts/generate-spider.test.d.ts +14 -0
  229. package/packages/core/dist/scripts/generate-spider.test.d.ts.map +1 -0
  230. package/packages/core/dist/scripts/generate-spider.test.js +269 -0
  231. package/packages/core/dist/scripts/generate-spider.test.js.map +1 -0
  232. package/packages/core/dist/scripts/job-fair-aggregator.d.ts +150 -0
  233. package/packages/core/dist/scripts/job-fair-aggregator.d.ts.map +1 -0
  234. package/packages/core/dist/scripts/job-fair-aggregator.js +547 -0
  235. package/packages/core/dist/scripts/job-fair-aggregator.js.map +1 -0
  236. package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts +14 -0
  237. package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts.map +1 -0
  238. package/packages/core/dist/scripts/job-fair-aggregator.test.js +616 -0
  239. package/packages/core/dist/scripts/job-fair-aggregator.test.js.map +1 -0
  240. package/packages/core/dist/scripts/run-ci.test.d.ts +20 -0
  241. package/packages/core/dist/scripts/run-ci.test.d.ts.map +1 -0
  242. package/packages/core/dist/scripts/run-ci.test.js +127 -0
  243. package/packages/core/dist/scripts/run-ci.test.js.map +1 -0
  244. package/packages/core/dist/scripts/theme-detail.test.d.ts +10 -0
  245. package/packages/core/dist/scripts/theme-detail.test.d.ts.map +1 -0
  246. package/packages/core/dist/scripts/theme-detail.test.js +199 -0
  247. package/packages/core/dist/scripts/theme-detail.test.js.map +1 -0
  248. package/packages/core/dist/scripts/validate-ocean-profiles.d.ts +9 -0
  249. package/packages/core/dist/scripts/validate-ocean-profiles.d.ts.map +1 -0
  250. package/packages/core/dist/scripts/validate-ocean-profiles.js +130 -0
  251. package/packages/core/dist/scripts/validate-ocean-profiles.js.map +1 -0
  252. package/packages/core/dist/workflow/generic-handoff.d.ts +235 -0
  253. package/packages/core/dist/workflow/generic-handoff.d.ts.map +1 -0
  254. package/packages/core/dist/workflow/generic-handoff.js +358 -0
  255. package/packages/core/dist/workflow/generic-handoff.js.map +1 -0
  256. package/packages/core/dist/workflow/generic-handoff.test.d.ts +21 -0
  257. package/packages/core/dist/workflow/generic-handoff.test.d.ts.map +1 -0
  258. package/packages/core/dist/workflow/generic-handoff.test.js +499 -0
  259. package/packages/core/dist/workflow/generic-handoff.test.js.map +1 -0
  260. package/packages/core/dist/workflow/generic-sm-finish.d.ts +89 -0
  261. package/packages/core/dist/workflow/generic-sm-finish.d.ts.map +1 -0
  262. package/packages/core/dist/workflow/generic-sm-finish.js +157 -0
  263. package/packages/core/dist/workflow/generic-sm-finish.js.map +1 -0
  264. package/packages/core/dist/workflow/generic-sm-setup.d.ts +138 -0
  265. package/packages/core/dist/workflow/generic-sm-setup.d.ts.map +1 -0
  266. package/packages/core/dist/workflow/generic-sm-setup.js +382 -0
  267. package/packages/core/dist/workflow/generic-sm-setup.js.map +1 -0
  268. package/packages/core/dist/workflow/sm-subagents.test.d.ts +23 -0
  269. package/packages/core/dist/workflow/sm-subagents.test.d.ts.map +1 -0
  270. package/packages/core/dist/workflow/sm-subagents.test.js +727 -0
  271. package/packages/core/dist/workflow/sm-subagents.test.js.map +1 -0
  272. package/packages/core/dist/workflow/story-workflow-routing.test.d.ts +17 -0
  273. package/packages/core/dist/workflow/story-workflow-routing.test.d.ts.map +1 -0
  274. package/packages/core/dist/workflow/story-workflow-routing.test.js +559 -0
  275. package/packages/core/dist/workflow/story-workflow-routing.test.js.map +1 -0
  276. package/packages/core/dist/workflow/test-cache.d.ts +131 -0
  277. package/packages/core/dist/workflow/test-cache.d.ts.map +1 -0
  278. package/packages/core/dist/workflow/test-cache.js +226 -0
  279. package/packages/core/dist/workflow/test-cache.js.map +1 -0
  280. package/packages/core/dist/workflow/test-cache.test.d.ts +17 -0
  281. package/packages/core/dist/workflow/test-cache.test.d.ts.map +1 -0
  282. package/packages/core/dist/workflow/test-cache.test.js +438 -0
  283. package/packages/core/dist/workflow/test-cache.test.js.map +1 -0
  284. package/packages/core/dist/workflow/workflow-loader.d.ts +76 -0
  285. package/packages/core/dist/workflow/workflow-loader.d.ts.map +1 -0
  286. package/packages/core/dist/workflow/workflow-loader.js +133 -0
  287. package/packages/core/dist/workflow/workflow-loader.js.map +1 -0
  288. package/packages/core/dist/workflow/workflow-loader.test.d.ts +15 -0
  289. package/packages/core/dist/workflow/workflow-loader.test.d.ts.map +1 -0
  290. package/packages/core/dist/workflow/workflow-loader.test.js +354 -0
  291. package/packages/core/dist/workflow/workflow-loader.test.js.map +1 -0
  292. package/packages/core/dist/workflow/workflow-migration.test.d.ts +17 -0
  293. package/packages/core/dist/workflow/workflow-migration.test.d.ts.map +1 -0
  294. package/packages/core/dist/workflow/workflow-migration.test.js +372 -0
  295. package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -0
  296. package/packages/core/dist/workflow/workflow-router.d.ts +55 -0
  297. package/packages/core/dist/workflow/workflow-router.d.ts.map +1 -0
  298. package/packages/core/dist/workflow/workflow-router.js +245 -0
  299. package/packages/core/dist/workflow/workflow-router.js.map +1 -0
  300. package/packages/core/dist/workflow/workflow-router.test.d.ts +20 -0
  301. package/packages/core/dist/workflow/workflow-router.test.d.ts.map +1 -0
  302. package/packages/core/dist/workflow/workflow-router.test.js +607 -0
  303. package/packages/core/dist/workflow/workflow-router.test.js.map +1 -0
  304. package/packages/core/dist/workflow/workflow-schema.d.ts +98 -0
  305. package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -0
  306. package/packages/core/dist/workflow/workflow-schema.js +230 -0
  307. package/packages/core/dist/workflow/workflow-schema.js.map +1 -0
  308. package/packages/core/dist/workflow/workflow-schema.test.d.ts +45 -0
  309. package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +1 -0
  310. package/packages/core/dist/workflow/workflow-schema.test.js +512 -0
  311. package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -0
  312. package/pennyfarthing-dist/agents/README.md +397 -0
  313. package/pennyfarthing-dist/agents/architect.md +171 -0
  314. package/pennyfarthing-dist/agents/dev.md +225 -0
  315. package/pennyfarthing-dist/agents/devops.md +183 -0
  316. package/pennyfarthing-dist/agents/generic-handoff.md +451 -0
  317. package/pennyfarthing-dist/agents/generic-sm-finish.md +261 -0
  318. package/pennyfarthing-dist/agents/generic-sm-setup.md +214 -0
  319. package/pennyfarthing-dist/agents/orchestrator.md +316 -0
  320. package/pennyfarthing-dist/agents/pm.md +153 -0
  321. package/pennyfarthing-dist/agents/reviewer-preflight.md +224 -0
  322. package/pennyfarthing-dist/agents/reviewer.md +315 -0
  323. package/pennyfarthing-dist/agents/sm-file-summary.md +109 -0
  324. package/pennyfarthing-dist/agents/sm-handoff.md +97 -0
  325. package/pennyfarthing-dist/agents/sm.md +480 -0
  326. package/pennyfarthing-dist/agents/tea.md +191 -0
  327. package/pennyfarthing-dist/agents/tech-writer.md +148 -0
  328. package/pennyfarthing-dist/agents/testing-runner.md +420 -0
  329. package/pennyfarthing-dist/agents/ux-designer.md +158 -0
  330. package/pennyfarthing-dist/agents/workflow-status-check.md +332 -0
  331. package/pennyfarthing-dist/commands/architect.md +62 -0
  332. package/pennyfarthing-dist/commands/benchmark-control.md +69 -0
  333. package/pennyfarthing-dist/commands/benchmark.md +467 -0
  334. package/pennyfarthing-dist/commands/brainstorm.md +91 -0
  335. package/pennyfarthing-dist/commands/check.md +156 -0
  336. package/pennyfarthing-dist/commands/chore.md +178 -0
  337. package/pennyfarthing-dist/commands/close-epic.md +136 -0
  338. package/pennyfarthing-dist/commands/continue-session.md +184 -0
  339. package/pennyfarthing-dist/commands/create-branches-from-story.md +374 -0
  340. package/pennyfarthing-dist/commands/create-theme.md +29 -0
  341. package/pennyfarthing-dist/commands/dev.md +60 -0
  342. package/pennyfarthing-dist/commands/devops.md +59 -0
  343. package/pennyfarthing-dist/commands/git-cleanup.md +340 -0
  344. package/pennyfarthing-dist/commands/health-check.md +108 -0
  345. package/pennyfarthing-dist/commands/help.md +264 -0
  346. package/pennyfarthing-dist/commands/job-fair.md +102 -0
  347. package/pennyfarthing-dist/commands/list-themes.md +17 -0
  348. package/pennyfarthing-dist/commands/new-work.md +127 -0
  349. package/pennyfarthing-dist/commands/orchestrator.md +56 -0
  350. package/pennyfarthing-dist/commands/parallel-work.md +71 -0
  351. package/pennyfarthing-dist/commands/party-mode.md +67 -0
  352. package/pennyfarthing-dist/commands/permissions.md +193 -0
  353. package/pennyfarthing-dist/commands/pm.md +60 -0
  354. package/pennyfarthing-dist/commands/prime.md +140 -0
  355. package/pennyfarthing-dist/commands/release.md +58 -0
  356. package/pennyfarthing-dist/commands/repo-status.md +49 -0
  357. package/pennyfarthing-dist/commands/retro.md +200 -0
  358. package/pennyfarthing-dist/commands/reviewer.md +64 -0
  359. package/pennyfarthing-dist/commands/run-ci.md +116 -0
  360. package/pennyfarthing-dist/commands/set-theme.md +52 -0
  361. package/pennyfarthing-dist/commands/show-theme.md +21 -0
  362. package/pennyfarthing-dist/commands/sm.md +70 -0
  363. package/pennyfarthing-dist/commands/solo.md +411 -0
  364. package/pennyfarthing-dist/commands/sprint-planning.md +109 -0
  365. package/pennyfarthing-dist/commands/start-epic.md +156 -0
  366. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +184 -0
  367. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +376 -0
  368. package/pennyfarthing-dist/commands/tea.md +63 -0
  369. package/pennyfarthing-dist/commands/tech-writer.md +53 -0
  370. package/pennyfarthing-dist/commands/theme-maker.md +671 -0
  371. package/pennyfarthing-dist/commands/update-domain-docs.md +83 -0
  372. package/pennyfarthing-dist/commands/ux-designer.md +62 -0
  373. package/pennyfarthing-dist/commands/work.md +111 -0
  374. package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +480 -0
  375. package/pennyfarthing-dist/guides/AGENT-SCOPES.md +201 -0
  376. package/pennyfarthing-dist/guides/HOOKS.md +230 -0
  377. package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +338 -0
  378. package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +193 -0
  379. package/pennyfarthing-dist/guides/agent-template-strategic.md +148 -0
  380. package/pennyfarthing-dist/guides/agent-template-tactical.md +162 -0
  381. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +746 -0
  382. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +574 -0
  383. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +488 -0
  384. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +402 -0
  385. package/pennyfarthing-dist/guides/permission-protocol.md +188 -0
  386. package/pennyfarthing-dist/guides/persona-loading.md +46 -0
  387. package/pennyfarthing-dist/guides/persona-system.md +294 -0
  388. package/pennyfarthing-dist/guides/shared-agent-behavior.md +388 -0
  389. package/pennyfarthing-dist/guides/shared-context.md +147 -0
  390. package/pennyfarthing-dist/guides/strategic-agent-behavior.md +348 -0
  391. package/pennyfarthing-dist/guides/tactical-agent-behavior.md +1041 -0
  392. package/pennyfarthing-dist/guides/workflow-schema.md +195 -0
  393. package/pennyfarthing-dist/guides/worktree-mode.md +113 -0
  394. package/pennyfarthing-dist/output-styles/teaching.md +33 -0
  395. package/pennyfarthing-dist/output-styles/terse.md +20 -0
  396. package/pennyfarthing-dist/output-styles/verbose.md +28 -0
  397. package/pennyfarthing-dist/personas/themes/1984.yaml +312 -0
  398. package/pennyfarthing-dist/personas/themes/a-team.yaml +207 -0
  399. package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +300 -0
  400. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +330 -0
  401. package/pennyfarthing-dist/personas/themes/all-stars.yaml +332 -0
  402. package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +320 -0
  403. package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +306 -0
  404. package/pennyfarthing-dist/personas/themes/arcane.yaml +288 -0
  405. package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +331 -0
  406. package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +288 -0
  407. package/pennyfarthing-dist/personas/themes/babylon-5.yaml +288 -0
  408. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +288 -0
  409. package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +288 -0
  410. package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +300 -0
  411. package/pennyfarthing-dist/personas/themes/black-sails.yaml +300 -0
  412. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +295 -0
  413. package/pennyfarthing-dist/personas/themes/bobiverse.yaml +288 -0
  414. package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +327 -0
  415. package/pennyfarthing-dist/personas/themes/catch-22.yaml +316 -0
  416. package/pennyfarthing-dist/personas/themes/classical-composers.yaml +310 -0
  417. package/pennyfarthing-dist/personas/themes/control.yaml +197 -0
  418. package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +320 -0
  419. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +323 -0
  420. package/pennyfarthing-dist/personas/themes/deadwood.yaml +300 -0
  421. package/pennyfarthing-dist/personas/themes/dickens.yaml +320 -0
  422. package/pennyfarthing-dist/personas/themes/discworld.yaml +332 -0
  423. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +290 -0
  424. package/pennyfarthing-dist/personas/themes/don-quixote.yaml +320 -0
  425. package/pennyfarthing-dist/personas/themes/dune.yaml +307 -0
  426. package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +320 -0
  427. package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +288 -0
  428. package/pennyfarthing-dist/personas/themes/fargo.yaml +330 -0
  429. package/pennyfarthing-dist/personas/themes/film-auteurs.yaml +312 -0
  430. package/pennyfarthing-dist/personas/themes/firefly.yaml +328 -0
  431. package/pennyfarthing-dist/personas/themes/foundation.yaml +290 -0
  432. package/pennyfarthing-dist/personas/themes/futurama.yaml +321 -0
  433. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +290 -0
  434. package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +243 -0
  435. package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +308 -0
  436. package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +308 -0
  437. package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +330 -0
  438. package/pennyfarthing-dist/personas/themes/hannibal.yaml +300 -0
  439. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +324 -0
  440. package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +291 -0
  441. package/pennyfarthing-dist/personas/themes/historical-figures.yaml +288 -0
  442. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +331 -0
  443. package/pennyfarthing-dist/personas/themes/house-md.yaml +321 -0
  444. package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +289 -0
  445. package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +300 -0
  446. package/pennyfarthing-dist/personas/themes/jane-austen.yaml +287 -0
  447. package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +320 -0
  448. package/pennyfarthing-dist/personas/themes/justified.yaml +300 -0
  449. package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +219 -0
  450. package/pennyfarthing-dist/personas/themes/les-miserables.yaml +299 -0
  451. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +334 -0
  452. package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +334 -0
  453. package/pennyfarthing-dist/personas/themes/mad-max.yaml +355 -0
  454. package/pennyfarthing-dist/personas/themes/mad-men.yaml +289 -0
  455. package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +300 -0
  456. package/pennyfarthing-dist/personas/themes/mash.yaml +334 -0
  457. package/pennyfarthing-dist/personas/themes/mass-effect.yaml +289 -0
  458. package/pennyfarthing-dist/personas/themes/military-commanders.yaml +306 -0
  459. package/pennyfarthing-dist/personas/themes/moby-dick.yaml +320 -0
  460. package/pennyfarthing-dist/personas/themes/monty-python.yaml +303 -0
  461. package/pennyfarthing-dist/personas/themes/neuromancer.yaml +300 -0
  462. package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +329 -0
  463. package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +242 -0
  464. package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +298 -0
  465. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +220 -0
  466. package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +320 -0
  467. package/pennyfarthing-dist/personas/themes/rome.yaml +300 -0
  468. package/pennyfarthing-dist/personas/themes/russian-masters.yaml +318 -0
  469. package/pennyfarthing-dist/personas/themes/sandman.yaml +288 -0
  470. package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +320 -0
  471. package/pennyfarthing-dist/personas/themes/shakespeare.yaml +301 -0
  472. package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +289 -0
  473. package/pennyfarthing-dist/personas/themes/snow-crash.yaml +288 -0
  474. package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +300 -0
  475. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +230 -0
  476. package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +210 -0
  477. package/pennyfarthing-dist/personas/themes/star-wars.yaml +303 -0
  478. package/pennyfarthing-dist/personas/themes/succession.yaml +300 -0
  479. package/pennyfarthing-dist/personas/themes/superfriends.yaml +208 -0
  480. package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +236 -0
  481. package/pennyfarthing-dist/personas/themes/the-americans.yaml +300 -0
  482. package/pennyfarthing-dist/personas/themes/the-crown.yaml +300 -0
  483. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +213 -0
  484. package/pennyfarthing-dist/personas/themes/the-good-place.yaml +322 -0
  485. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +353 -0
  486. package/pennyfarthing-dist/personas/themes/the-odyssey.yaml +300 -0
  487. package/pennyfarthing-dist/personas/themes/the-office.yaml +330 -0
  488. package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +308 -0
  489. package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +300 -0
  490. package/pennyfarthing-dist/personas/themes/the-wire.yaml +311 -0
  491. package/pennyfarthing-dist/personas/themes/the-witcher.yaml +300 -0
  492. package/pennyfarthing-dist/personas/themes/twin-peaks.yaml +302 -0
  493. package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +300 -0
  494. package/pennyfarthing-dist/personas/themes/watchmen.yaml +291 -0
  495. package/pennyfarthing-dist/personas/themes/west-wing.yaml +291 -0
  496. package/pennyfarthing-dist/personas/themes/world-explorers.yaml +320 -0
  497. package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +307 -0
  498. package/pennyfarthing-dist/personas/themes/x-files.yaml +302 -0
  499. package/pennyfarthing-dist/scripts/add-short-names.mjs +264 -0
  500. package/pennyfarthing-dist/scripts/agent-session.sh +367 -0
  501. package/pennyfarthing-dist/scripts/check-context.sh +187 -0
  502. package/pennyfarthing-dist/scripts/check.sh +497 -0
  503. package/pennyfarthing-dist/scripts/deploy.sh +284 -0
  504. package/pennyfarthing-dist/scripts/doctor-dogfood.sh +360 -0
  505. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +61 -0
  506. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +66 -0
  507. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +35 -0
  508. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +166 -0
  509. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +50 -0
  510. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +71 -0
  511. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +54 -0
  512. package/pennyfarthing-dist/scripts/hooks/session-start.sh +98 -0
  513. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +59 -0
  514. package/pennyfarthing-dist/scripts/install-git-hooks.sh +91 -0
  515. package/pennyfarthing-dist/scripts/prime.sh +161 -0
  516. package/pennyfarthing-dist/scripts/release.sh +198 -0
  517. package/pennyfarthing-dist/scripts/repo-utils.sh +778 -0
  518. package/pennyfarthing-dist/scripts/run-ci.sh +219 -0
  519. package/pennyfarthing-dist/scripts/run.sh +65 -0
  520. package/pennyfarthing-dist/scripts/statusline.sh +264 -0
  521. package/pennyfarthing-dist/scripts/tests/check.test.sh +582 -0
  522. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +107 -0
  523. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +597 -0
  524. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +514 -0
  525. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +517 -0
  526. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +331 -0
  527. package/pennyfarthing-dist/scripts/uninstall.sh +271 -0
  528. package/pennyfarthing-dist/scripts/utils/background-tasks.sh +177 -0
  529. package/pennyfarthing-dist/scripts/utils/check-status.sh +251 -0
  530. package/pennyfarthing-dist/scripts/utils/checkpoint.sh +136 -0
  531. package/pennyfarthing-dist/scripts/utils/common.sh +157 -0
  532. package/pennyfarthing-dist/scripts/utils/create-feature-branches.sh +230 -0
  533. package/pennyfarthing-dist/scripts/utils/file-lock.sh +269 -0
  534. package/pennyfarthing-dist/scripts/utils/find-related-work.sh +231 -0
  535. package/pennyfarthing-dist/scripts/utils/find-root.sh +33 -0
  536. package/pennyfarthing-dist/scripts/utils/generate-skill-docs.sh +110 -0
  537. package/pennyfarthing-dist/scripts/utils/git-status-all.sh +127 -0
  538. package/pennyfarthing-dist/scripts/utils/ground-truth-judge.py +289 -0
  539. package/pennyfarthing-dist/scripts/utils/jira/jira-lib.mjs +443 -0
  540. package/pennyfarthing-dist/scripts/utils/jira/jira-sync-story.mjs +208 -0
  541. package/pennyfarthing-dist/scripts/utils/jira/jira-sync.mjs +198 -0
  542. package/pennyfarthing-dist/scripts/utils/jira-claim-story.sh +162 -0
  543. package/pennyfarthing-dist/scripts/utils/jira-lib.sh +463 -0
  544. package/pennyfarthing-dist/scripts/utils/jira-sync-story.sh +8 -0
  545. package/pennyfarthing-dist/scripts/utils/jira-sync.sh +8 -0
  546. package/pennyfarthing-dist/scripts/utils/log-skill-usage.sh +74 -0
  547. package/pennyfarthing-dist/scripts/utils/logging.sh +186 -0
  548. package/pennyfarthing-dist/scripts/utils/repo-scan.sh +141 -0
  549. package/pennyfarthing-dist/scripts/utils/retry.sh +76 -0
  550. package/pennyfarthing-dist/scripts/utils/run-timestamp.sh +7 -0
  551. package/pennyfarthing-dist/scripts/utils/session-cleanup.sh +319 -0
  552. package/pennyfarthing-dist/scripts/utils/skill-usage-report.sh +193 -0
  553. package/pennyfarthing-dist/scripts/utils/sprint-common.sh +286 -0
  554. package/pennyfarthing-dist/scripts/utils/sprint-metrics.sh +241 -0
  555. package/pennyfarthing-dist/scripts/utils/swebench-judge.py +400 -0
  556. package/pennyfarthing-dist/scripts/utils/sync-epic-to-jira.sh +16 -0
  557. package/pennyfarthing-dist/scripts/utils/test-setup.sh +337 -0
  558. package/pennyfarthing-dist/scripts/utils/validate-subagent-frontmatter.sh +160 -0
  559. package/pennyfarthing-dist/scripts/worktree-manager.sh +498 -0
  560. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +236 -0
  561. package/pennyfarthing-dist/skills/changelog/SKILL.md +367 -0
  562. package/pennyfarthing-dist/skills/code-review/SKILL.md +168 -0
  563. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +268 -0
  564. package/pennyfarthing-dist/skills/cyclist/SKILL.md +117 -0
  565. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +421 -0
  566. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +258 -0
  567. package/pennyfarthing-dist/skills/jira/SKILL.md +281 -0
  568. package/pennyfarthing-dist/skills/judge/SKILL.md +524 -0
  569. package/pennyfarthing-dist/skills/just/SKILL.md +160 -0
  570. package/pennyfarthing-dist/skills/mermaid/SKILL.md +240 -0
  571. package/pennyfarthing-dist/skills/otel/skill.md +222 -0
  572. package/pennyfarthing-dist/skills/permissions/skill.md +172 -0
  573. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +173 -0
  574. package/pennyfarthing-dist/skills/skill-registry.schema.json +102 -0
  575. package/pennyfarthing-dist/skills/skill-registry.yaml +335 -0
  576. package/pennyfarthing-dist/skills/sprint-context/SKILL.md +120 -0
  577. package/pennyfarthing-dist/skills/story-management/SKILL.md +208 -0
  578. package/pennyfarthing-dist/skills/testing/SKILL.md +99 -0
  579. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +124 -0
  580. package/pennyfarthing-dist/skills/theme/skill.md +129 -0
  581. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +169 -0
  582. package/pennyfarthing-dist/skills/workflow/SKILL.md +160 -0
  583. package/pennyfarthing-dist/skills/yq/SKILL.md +264 -0
  584. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +187 -0
  585. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +59 -0
  586. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +276 -0
  587. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +61 -0
  588. package/pennyfarthing-dist/templates/persona-config.yaml.template +22 -0
  589. package/pennyfarthing-dist/templates/preferences.yaml.template +15 -0
  590. package/pennyfarthing-dist/templates/settings.local.json.template +90 -0
  591. package/pennyfarthing-dist/templates/setup-env.sh.template +18 -0
  592. package/pennyfarthing-dist/templates/shared-context.md.template +70 -0
  593. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +40 -0
  594. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +37 -0
  595. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +34 -0
  596. package/pennyfarthing-dist/workflows/agent-docs.yaml +70 -0
  597. package/pennyfarthing-dist/workflows/bdd.yaml +58 -0
  598. package/pennyfarthing-dist/workflows/tdd.yaml +50 -0
  599. package/pennyfarthing-dist/workflows/trivial.yaml +40 -0
@@ -0,0 +1,397 @@
1
+ # Pennyfarthing Core Agents
2
+
3
+ ## Overview
4
+
5
+ This directory contains the **single source of truth** for all Pennyfarthing agent definitions. Agents are coordinated across both `API` and `UI` repositories.
6
+
7
+ **See:** `../ AGENT-COORDINATION.md` for complete architecture documentation.
8
+
9
+ ## Agent Maturity
10
+
11
+ Agents are marked with `<status>` tags indicating their maturity level:
12
+
13
+ ### Production Agents
14
+ These agents follow the TDD workflow and are battle-tested:
15
+ - **SM** - Scrum Master (story coordination, session management)
16
+ - **TEA** - Test Engineer/Architect (test writing, TDD guidance)
17
+ - **Dev** - Developer (implementation, making tests pass)
18
+ - **Reviewer** - Code Reviewer (adversarial review, quality gates)
19
+
20
+ ### Experimental Agents
21
+ These agents are available but not yet modernized to the same standard:
22
+ - **Orchestrator** - Meta operations, process improvement
23
+ - **PM** - Product Manager (planning, prioritization)
24
+ - **Architect** - System Architect (design decisions)
25
+ - **DevOps** - DevOps Engineer (infrastructure, deployment)
26
+ - **Tech Writer** - Technical Writer (documentation)
27
+ - **UX Designer** - UX Designer (UI design, accessibility)
28
+
29
+ > **Tip:** Start with production agents for core development work. Experimental agents may have less consistent behavior or missing features.
30
+
31
+ ## Agent Hierarchy
32
+
33
+ ### Strategic Agents (Full Scope)
34
+ Oversee both repos, make cross-repo decisions, coordinate work.
35
+
36
+ - **`orchestrator.md`** - Master orchestrator
37
+ - **`pm.md`** - Product Manager (planning, prioritization)
38
+ - **`sm.md`** - Scrum Master (story creation, technical specs)
39
+ - **`architect.md`** - System Architect (design decisions, patterns)
40
+ - **`devops.md`** - DevOps Engineer (infrastructure, deployment)
41
+
42
+ ### Tactical Agents (Story-Scoped)
43
+ Focus on specific repo(s), implement/test/document features.
44
+
45
+ - **`dev.md`** - Developer (feature implementation)
46
+ - **`tea.md`** - Test Engineer/Architect (testing, quality)
47
+ - **`reviewer.md`** - Code Reviewer (adversarial review, quality gates)
48
+ - **`tech-writer.md`** - Technical Writer (documentation)
49
+ - **`ux-designer.md`** - UX Designer (UI design, UX)
50
+
51
+ ### Official Subagents (Haiku-based)
52
+ Lightweight subagents for mechanical tasks. Invoked via `Task tool` with `subagent_type`.
53
+
54
+ - **`workflow-status-check.md`** - Detect workflow state
55
+ - **`generic-sm-setup.md`** - Research OR setup mode (Story 31-11)
56
+ - **`generic-sm-finish.md`** - Preflight OR execute phase (Story 31-11)
57
+ - **`generic-handoff.md`** - Workflow-driven handoff (Stories 31-7, 31-10)
58
+ - **`sm-handoff.md`** - SM→TEA/Dev handoff with Jira/branch verification
59
+ - **`sm-file-summary.md`** - Summarize file changes
60
+ - **`reviewer-preflight.md`** - Gather review data
61
+ - **`testing-runner.md`** - Execute tests, report results
62
+
63
+ ### Removed Files (Stories 31-11, 31-12)
64
+ These files have been deleted and replaced by consolidated versions:
65
+
66
+ **SM Subagents (Story 31-12):**
67
+ - `sm-work-research.md` → use `generic-sm-setup` with MODE=research
68
+ - `sm-story-setup.md` → use `generic-sm-setup` with MODE=setup
69
+ - `sm-finish-bookkeeping.md` → use `generic-sm-finish` with PHASE=preflight
70
+ - `sm-finish-execution.md` → use `generic-sm-finish` with PHASE=execute
71
+
72
+ **Handoff Subagents (Story 31-11):**
73
+ - `tea-handoff.md` → use `generic-handoff` with CURRENT_PHASE=red
74
+ - `dev-handoff.md` → use `generic-handoff` with CURRENT_PHASE=green
75
+ - `reviewer-handoff-approve.md` → use `generic-handoff` with VERDICT=approved
76
+ - `reviewer-handoff-reject.md` → use `generic-handoff` with VERDICT=rejected
77
+
78
+ ## Context Loading
79
+
80
+ Agents load context based on their type:
81
+
82
+ ### Strategic Agents Load:
83
+ - Full sprint status
84
+ - Both API and UI contexts
85
+ - Epic definitions
86
+ - Active work
87
+
88
+ ### Tactical Agents Load:
89
+ - Story section of sprint status
90
+ - Active work
91
+ - Target repo context only (based on story)
92
+
93
+ **Configuration:** `.claude/project/docs/agent-scopes.yaml`
94
+
95
+ ## Usage
96
+
97
+ ### Activate an Agent
98
+
99
+ ```bash
100
+ # Via workflow
101
+ @/pm
102
+ @/dev
103
+ @/tea
104
+
105
+ # Or mention in chat
106
+ "Let's activate the PM agent"
107
+ "Activate Dev to implement this story"
108
+ ```
109
+
110
+ ### Agent Files
111
+
112
+ Each agent file contains:
113
+ - **Persona:** Character and expertise
114
+ - **Responsibilities:** What they handle
115
+ - **Context:** Project information
116
+ - **Context Loading:** What files to load on activation
117
+ - **Activation:** How they operate
118
+ - **Workflows:** Common tasks and patterns
119
+ - **Handoffs:** How they coordinate with other agents
120
+
121
+ ## File Structure
122
+
123
+ ```
124
+ .pennyfarthing/agents/
125
+ ├── README.md # This file
126
+
127
+ │ # Main Agents (10)
128
+ ├── orchestrator.md # Master orchestrator
129
+ ├── pm.md # Product Manager
130
+ ├── sm.md # Scrum Master
131
+ ├── architect.md # System Architect
132
+ ├── devops.md # DevOps Engineer
133
+ ├── dev.md # Developer
134
+ ├── tea.md # Test Engineer
135
+ ├── reviewer.md # Code Reviewer
136
+ ├── tech-writer.md # Technical Writer
137
+ ├── ux-designer.md # UX Designer
138
+
139
+ │ # Official Subagents (8 active)
140
+ ├── workflow-status-check.md # Detect workflow state
141
+ ├── generic-sm-setup.md # Research or setup mode (Story 31-11)
142
+ ├── generic-sm-finish.md # Preflight or execute (Story 31-11)
143
+ ├── generic-handoff.md # Workflow-driven handoff (Stories 31-7, 31-10)
144
+ ├── sm-handoff.md # SM→TEA/Dev handoff with Jira/branch
145
+ ├── sm-file-summary.md # Summarize files
146
+ ├── reviewer-preflight.md # Review prep
147
+ └── testing-runner.md # Run tests
148
+ ```
149
+
150
+ ## Context Budget
151
+
152
+ Each agent is designed to work within **~500-800 line context budget**:
153
+
154
+ ### Strategic Agent Budget
155
+ - Agent file: ~200-300 lines
156
+ - Sprint status: ~100-150 lines
157
+ - Repo contexts: ~60 lines
158
+ - Epics/docs: ~100 lines
159
+ - Active work: ~50 lines
160
+ - **Total:** ~500-660 lines
161
+
162
+ ### Tactical Agent Budget
163
+ - Agent file: ~250-400 lines
164
+ - Sprint status (story): ~50 lines
165
+ - Active work: ~50 lines
166
+ - Target repo context: ~100 lines
167
+ - **Total:** ~450-600 lines
168
+
169
+ ## Agent Coordination
170
+
171
+ ### TDD Flow Handoffs
172
+
173
+ ```
174
+ SM → TEA: Story selected, write failing tests
175
+ TEA → Dev: Tests written (RED), make them pass
176
+ Dev → Reviewer: Implementation done, review PR
177
+ Reviewer → SM: Story approved, finish it
178
+ Reviewer → Dev: Issues found, fix needed
179
+ ```
180
+
181
+ ### Strategic → Tactical Handoffs
182
+
183
+ ```
184
+ PM → SM: Epic needs stories
185
+ SM → TEA: Story ready for tests
186
+ TEA → Dev: Tests ready for implementation
187
+ Dev → Reviewer: PR ready for review
188
+ ```
189
+
190
+ ### Strategic ↔ Strategic Coordination
191
+
192
+ ```
193
+ PM ↔ Architect: Need design decisions
194
+ PM ↔ SM: Story prioritization
195
+ SM ↔ Architect: Technical approach
196
+ ```
197
+
198
+ ### Tactical → Strategic Feedback
199
+
200
+ ```
201
+ Dev → SM: Story blocked or needs clarification
202
+ TEA → SM: Test coverage gaps identified
203
+ Reviewer → SM: Code quality concerns
204
+ Tech Writer → SM: Documentation needs
205
+ ```
206
+
207
+ ## Creating New Agents
208
+
209
+ To add a new agent:
210
+
211
+ 1. Create `.pennyfarthing/agents/[name].md`
212
+ 2. Follow existing agent structure
213
+ 3. Add to `../agent-scopes.yaml`
214
+ 4. Update this README
215
+ 5. Create command in `.claude/commands/[name].md`
216
+
217
+ ### Agent Template Structure
218
+
219
+ ```markdown
220
+ # [Agent Name] Agent - [Role]
221
+
222
+ ## Persona
223
+ [Character description and expertise]
224
+
225
+ ## Responsibilities
226
+ [What they handle]
227
+
228
+ ## Context
229
+ [Project information]
230
+
231
+ ## Context Loading
232
+ [What files to load on activation]
233
+
234
+ ## Activation
235
+ [How they operate]
236
+
237
+ ## Key Workflows
238
+ [Common tasks]
239
+
240
+ ## Handoffs
241
+ [Coordination with other agents]
242
+
243
+ ## Activation Command
244
+ [@/agent-name]
245
+
246
+ ## Exit
247
+ [How to exit agent mode]
248
+ ```
249
+
250
+ ## Benefits
251
+
252
+ ✅ **Single Source of Truth** - All agents in one place
253
+ ✅ **Coordinated Planning** - Strategic agents see full scope
254
+ ✅ **Focused Implementation** - Tactical agents load only what they need
255
+ ✅ **Clear Hierarchy** - Strategic coordinate, tactical execute
256
+ ✅ **Scalable** - Easy to add new agents
257
+
258
+ ## Path Standards
259
+
260
+ **IMPORTANT:** All agent commands use `$CLAUDE_PROJECT_DIR` for path references.
261
+
262
+ ### Standard Pattern
263
+ ```bash
264
+ # ✅ CORRECT - Use $CLAUDE_PROJECT_DIR
265
+ $CLAUDE_PROJECT_DIR/scripts/agent-session.sh start "Agent Name"
266
+ $CLAUDE_PROJECT_DIR/.session/{STORY_ID}-session.md
267
+
268
+ # ❌ WRONG - Don't use git rev-parse (unreliable in agent context)
269
+ $(git rev-parse --show-toplevel)/scripts/agent-session.sh
270
+
271
+ # ❌ WRONG - Don't hardcode absolute paths
272
+ /Users/someone/project/scripts/agent-session.sh
273
+ ```
274
+
275
+ ### Why $CLAUDE_PROJECT_DIR?
276
+ - `$(git rev-parse --show-toplevel)` doesn't work reliably in agent context
277
+ - Hardcoded paths break on different machines
278
+ - `$CLAUDE_PROJECT_DIR` is set by the environment and works consistently
279
+
280
+ ### Usage in Agent Commands
281
+ All agent commands in `.claude/commands/` have been standardized to use `$CLAUDE_PROJECT_DIR`:
282
+ - Agent session registration
283
+ - Script execution
284
+ - File path references
285
+
286
+ ## Background Subagent Execution
287
+
288
+ Subagents can run in background using Claude Code's `run_in_background` parameter. This allows the main agent to continue working while slow operations complete asynchronously.
289
+
290
+ ### When to Use Background Execution
291
+
292
+ **Good candidates:**
293
+ - Test runs (via `testing-runner`) while writing more code
294
+ - Multiple independent file searches
295
+ - Long-running git operations (fetch, clone)
296
+ - Parallel exploration of code paths
297
+
298
+ **When NOT to use:**
299
+ - Operations where subsequent work depends on the result
300
+ - Operations that modify shared state (session file, git working tree)
301
+ - Sequential workflows (must complete phase A before phase B)
302
+
303
+ ### Spawning Background Subagents
304
+
305
+ ```yaml
306
+ Task tool:
307
+ subagent_type: "testing-runner"
308
+ run_in_background: true
309
+ prompt: |
310
+ REPOS: all
311
+ CONTEXT: Background test run while implementing
312
+ RUN_ID: bg-test-001
313
+ ```
314
+
315
+ ### Checking Background Task Status
316
+
317
+ Use the `TaskOutput` tool to check on background tasks:
318
+
319
+ ```yaml
320
+ TaskOutput tool:
321
+ task_id: {task_id from spawn}
322
+ block: false # Non-blocking check
323
+ timeout: 1000 # Quick timeout for status check
324
+ ```
325
+
326
+ **Status values:**
327
+ - `running` - Task still executing
328
+ - `completed` - Task finished, results available
329
+ - `error` - Task failed
330
+
331
+ ### Tracking Background Tasks in Session Files
332
+
333
+ Use the background task tracking utilities to manage session file entries:
334
+
335
+ ```bash
336
+ source $CLAUDE_PROJECT_DIR/scripts/utils/background-tasks.sh
337
+ SESSION_FILE="$CLAUDE_PROJECT_DIR/.session/${STORY_ID}-session.md"
338
+
339
+ # After spawning, record the task:
340
+ bg_task_add "$SESSION_FILE" "$TASK_ID" "testing-runner" "Background test run"
341
+
342
+ # After checking TaskOutput, update status:
343
+ bg_task_update "$SESSION_FILE" "$TASK_ID" "completed" # or "error"
344
+
345
+ # Clean up finished tasks:
346
+ bg_task_cleanup "$SESSION_FILE"
347
+ ```
348
+
349
+ **Available functions:**
350
+ | Function | Purpose |
351
+ |----------|---------|
352
+ | `bg_task_add` | Record new background task |
353
+ | `bg_task_update` | Update task status (running/completed/error) |
354
+ | `bg_task_cleanup` | Remove completed and errored tasks |
355
+ | `bg_task_list` | Show all running tasks |
356
+ | `bg_task_check` | Return 0 if any tasks running |
357
+ | `bg_task_summary` | Print counts by status |
358
+
359
+ ### Background Execution Constraints
360
+
361
+ 1. **No concurrent state mutation** - Don't have multiple background tasks writing to the same file
362
+ 2. **Independent operations only** - Each background task should be self-contained
363
+ 3. **Check before proceeding** - If you need the result, wait for it with `block: true`
364
+ 4. **Clean up tracking** - Use `bg_task_cleanup` after processing results
365
+
366
+ ### Example: Background Tests While Coding
367
+
368
+ ```bash
369
+ # 1. Spawn testing-runner with run_in_background: true
370
+ # 2. Record: bg_task_add "$SESSION_FILE" "$TASK_ID" "testing-runner" "Tests while coding"
371
+ # 3. Continue writing code
372
+ # 4. Periodically check TaskOutput with block: false
373
+ # 5. When complete: bg_task_update "$SESSION_FILE" "$TASK_ID" "completed"
374
+ # 6. Cleanup: bg_task_cleanup "$SESSION_FILE"
375
+ # 7. If RED: stop and fix
376
+ # 8. If GREEN: continue with confidence
377
+ ```
378
+
379
+ ## Quick Reference
380
+
381
+ ```bash
382
+ # View agent scope configuration
383
+ cat .claude/project/docs/agent-scopes.yaml
384
+
385
+ # List all agents
386
+ ls .pennyfarthing/agents/
387
+
388
+ # View agent definition
389
+ cat .pennyfarthing/agents/pm.md
390
+
391
+ # Activate agent
392
+ @/pm
393
+ ```
394
+
395
+ ---
396
+
397
+ **Your coordinated Pennyfarthing agent system is ready!**
@@ -0,0 +1,171 @@
1
+ # Architect Agent - System Architect
2
+
3
+ <persona>
4
+ Auto-loaded by `agent-session.sh start` from theme config. See output above.
5
+
6
+ **Fallback if not loaded:** Analytical, forward-thinking, focused on system design
7
+ </persona>
8
+
9
+ <status>experimental</status>
10
+
11
+ <role>
12
+ **Primary:** Technical design and architecture decisions outside the TDD flow
13
+ **Scope:** System design, tech decisions, pattern definition, cross-repo design
14
+ **Blessed Path:** The TDD flow (SM -> TEA -> Dev -> Reviewer) handles story implementation
15
+ </role>
16
+
17
+ <helpers>
18
+ From theme config. Model: haiku. Tasks: Architecture scanning, pattern analysis, codebase exploration.
19
+
20
+ - **Official subagents:** (use `subagent_type: "{name}"`)
21
+ - `workflow-status-check` - Scan sprint state and active sessions
22
+ - `testing-runner` - Verify builds pass after design changes
23
+ - `sm-file-summary` - Summarize files for context gathering
24
+ </helpers>
25
+
26
+ <responsibilities>
27
+ - System architecture and design
28
+ - Technical decision-making (ADRs)
29
+ - Pattern definition and enforcement
30
+ - Cross-repo architectural consistency
31
+ - Performance and scalability planning
32
+ - Technology evaluation and selection
33
+ </responsibilities>
34
+
35
+ <critical-gates>
36
+ ## Architect Does NOT Write Implementation Code
37
+
38
+ **Architect is analysis and design, not implementation.** Architect:
39
+ - Reads and analyzes existing code
40
+ - Creates documentation (architecture docs, ADRs, design specs)
41
+ - Makes recommendations and decisions
42
+ - Writes implementation guidance for Dev to follow
43
+
44
+ **Handoff to Dev for all code changes.**
45
+
46
+ **Before handing off designs:**
47
+ - [ ] Design documented with rationale
48
+ - [ ] Trade-offs explicitly stated
49
+ - [ ] Implementation guidance provided
50
+ - [ ] Build verification passed (if applicable)
51
+ </critical-gates>
52
+
53
+ <skills>
54
+ - `/mermaid` - Generate architecture diagrams
55
+ - `/dev-patterns` - Implementation patterns
56
+ </skills>
57
+
58
+ <context>
59
+ Context auto-loaded by `/prime --agent architect`:
60
+ - Shared context, shared behavior
61
+ - Agent sidecar: `.pennyfarthing/sidecars/architect/`
62
+ </context>
63
+
64
+ <reasoning-mode>
65
+
66
+ **Default:** Quiet mode - follow ReAct pattern internally, show only key decisions
67
+
68
+ **Toggle:** User says "verbose mode" to see explicit reasoning
69
+
70
+ When verbose, I show my thought process:
71
+ ```
72
+ THOUGHT: This feature spans API and UI. Need to design the contract first...
73
+ ACTION: Reading current API endpoints and data models
74
+ OBSERVATION: Existing pattern uses REST with typed responses. GraphQL not in use.
75
+ REFLECT: Recommend REST endpoint following existing patterns. Document in ADR.
76
+ ```
77
+
78
+ **Architect-Specific Reasoning:**
79
+ - When designing: Consider maintainability, testability, scalability
80
+ - When choosing patterns: Prefer existing patterns unless clearly inferior
81
+ - When making trade-offs: Document the decision and alternatives considered
82
+
83
+ **Turn Efficiency:** See `shared-agent-behavior.md` -> Turn Efficiency Protocol
84
+ </reasoning-mode>
85
+
86
+ <on-activation>
87
+ 1. Load sprint status from `sprint/current-sprint.yaml`
88
+ 2. Check for active work in `.session/*-session.md`
89
+ 3. Review architectural context (current patterns and decisions)
90
+ 4. Assess design needs
91
+ 5. Load additional docs lazily as needed
92
+ </on-activation>
93
+
94
+ ## What I Do vs What Helper Does
95
+
96
+ | I Do (Opus) | Helper Does (Haiku) |
97
+ |-------------|---------------------|
98
+ | Design decisions | Scan codebase for patterns |
99
+ | Trade-off analysis | Gather file summaries |
100
+ | ADR writing | Run build verification |
101
+ | Pattern selection | Check existing documentation |
102
+
103
+ ## Key Workflows
104
+
105
+ ### 1. Architectural Decision
106
+
107
+ **Input:** Technical problem or design question
108
+ **Output:** Decision with rationale and implementation guidance
109
+
110
+ 1. Understand the problem and constraints
111
+ 2. Identify architectural options
112
+ 3. Evaluate trade-offs (use ADR format)
113
+ 4. Make decision with clear rationale
114
+ 5. Provide implementation guidance to Dev
115
+
116
+ ### 2. Pattern Definition
117
+
118
+ **Input:** Recurring technical scenario
119
+ **Output:** Defined pattern for team to follow
120
+
121
+ 1. Identify the recurring problem
122
+ 2. Design the pattern with examples
123
+ 3. Document in appropriate location
124
+ 4. Update context files if needed
125
+
126
+ ### 3. Cross-Repo Design
127
+
128
+ **Input:** Feature spanning multiple repos/services
129
+ **Output:** Coordinated design across boundaries
130
+
131
+ 1. Define API contracts (endpoints, models)
132
+ 2. Design integration approach
133
+ 3. Identify shared concerns
134
+ 4. Document integration points
135
+ 5. Provide implementation guidance per repo
136
+
137
+ ### 4. Build Verification
138
+
139
+ When design changes may affect build:
140
+
141
+ ```yaml
142
+ Task tool:
143
+ subagent_type: "testing-runner"
144
+ prompt: |
145
+ REPOS: all
146
+ CONTEXT: Verifying build after design change
147
+ RUN_ID: architect-verify
148
+ ```
149
+
150
+ <handoffs>
151
+ ### From PM/SM
152
+ **When:** Epic or story needs architectural design
153
+ **Input:** Business requirements, technical constraints
154
+ **Action:** Design solution and provide guidance
155
+
156
+ ### To Dev
157
+ **When:** Design is complete
158
+ **Output:** Architecture decision and implementation plan
159
+ **Action:** "Dev, here's the architectural approach for [feature]"
160
+
161
+ ### To TEA
162
+ **When:** Design needs test strategy
163
+ **Output:** Testability considerations
164
+ **Action:** "TEA, here are the testing considerations for this design"
165
+ </handoffs>
166
+
167
+ <exit>
168
+ To exit: "Exit Architect" or switch to another agent.
169
+
170
+ On exit, run: `./scripts/run.sh agent-session.sh stop`
171
+ </exit>