@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,140 @@
1
+ ---
2
+ description: Load essential project context at agent activation
3
+ ---
4
+
5
+ <purpose>
6
+ Quickly load essential context files to reduce agent cold-start overhead.
7
+ Automatically invoked on agent activation via agent-session.sh.
8
+ </purpose>
9
+
10
+ <when-to-use>
11
+ - Automatically on agent activation (`/sm`, `/tea`, `/dev`, `/reviewer`)
12
+ - Manually to refresh context mid-session
13
+ - To verify what context is available
14
+ </when-to-use>
15
+
16
+ <execution>
17
+
18
+ ## Running /prime
19
+
20
+ Use the prime.sh script:
21
+
22
+ ```bash
23
+ # Load all essential context (default)
24
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/prime.sh
25
+
26
+ # Minimal mode - CLAUDE.md only (fastest)
27
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/prime.sh --minimal
28
+
29
+ # Full mode - include domain docs
30
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/prime.sh --full
31
+
32
+ # Quiet mode - suppress headers (used by agent-session.sh)
33
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/prime.sh --quiet
34
+
35
+ # With agent sidecar loading
36
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/prime.sh --agent reviewer
37
+ ```
38
+
39
+ ## Options
40
+
41
+ | Option | Description |
42
+ |--------|-------------|
43
+ | `--minimal` | Load only CLAUDE.md files (fastest startup) |
44
+ | `--full` | Include domain docs from .claude/project/ |
45
+ | `--quiet` | Suppress section headers (for automated use) |
46
+ | `--agent <name>` | Load agent's sidecar patterns (learned project-specific patterns) |
47
+
48
+ ## What Gets Loaded
49
+
50
+ Context is loaded in priority order:
51
+
52
+ ### Default Mode
53
+ | Priority | Content | Source |
54
+ |----------|---------|--------|
55
+ | 1 | Project instructions | `CLAUDE.md` |
56
+ | 2 | User instructions | `~/.claude/CLAUDE.md` (if exists) |
57
+ | 3 | Sprint summary | `sprint/current-sprint.yaml` (key fields only) |
58
+ | 4 | Active session | `.session/*-session.md` (first 50 lines) |
59
+ | 5 | Agent sidecar | `.pennyfarthing/sidecars/{agent}/*.md` (if `--agent` provided) |
60
+ | 6 | Shared context | `.pennyfarthing/guides/shared-context.md` (project info - all agents) |
61
+ | 7 | Shared behavior | `.pennyfarthing/guides/shared-agent-behavior.md` (protocols - all agents) |
62
+ | 8 | Tactical guide | `.pennyfarthing/guides/tactical-agent-behavior.md` (for sm, tea, dev, reviewer only) |
63
+
64
+ ### Minimal Mode (`--minimal`)
65
+ Only loads CLAUDE.md files (priority 1-2).
66
+
67
+ ### Full Mode (`--full`)
68
+ Adds domain documentation from `.claude/project/CLAUDE-*.md` files.
69
+
70
+ ### Agent Sidecar (`--agent <name>`)
71
+ When agent name is provided, loads the agent's project-specific patterns from their sidecar directory. This gives agents their learned patterns immediately on activation.
72
+
73
+ ### Shared Context (automatic for all agents)
74
+ All agents receive the shared context guide which includes project info, directory structure, git strategy, sprint system overview, and build commands.
75
+
76
+ ### Shared Behavior (automatic for all agents)
77
+ All agents receive the shared behavior guide which includes confidence protocols, sidecar memory system documentation, reasoning modes, and exit protocols.
78
+
79
+ ### Tactical Guide (automatic for tactical agents)
80
+ For tactical agents (sm, tea, dev, reviewer), additionally loads the tactical behavior guide which includes critical patterns for Bash tool usage, session file handling, and handoff protocols.
81
+
82
+ </execution>
83
+
84
+ <output-format>
85
+
86
+ ```
87
+ # CLAUDE.md
88
+ [Project instructions content...]
89
+
90
+ # ~/.claude/CLAUDE.md (if exists)
91
+ [User instructions content...]
92
+
93
+ ---
94
+ # Sprint Context
95
+ Sprint 7: Benchmark framework expansion, monorepo consolidation, rich agent telemetry
96
+ Progress: 62/106 points
97
+
98
+ ---
99
+ # Active Session
100
+ [First 50 lines of session file...]
101
+ ```
102
+
103
+ With `--quiet`, section headers are suppressed.
104
+
105
+ </output-format>
106
+
107
+ <integration>
108
+
109
+ ## agent-session.sh Integration
110
+
111
+ The `/prime` command is automatically invoked when agents activate:
112
+
113
+ 1. User invokes `/sm`, `/tea`, `/dev`, or `/reviewer`
114
+ 2. `agent-session.sh start` runs
115
+ 3. Persona XML is output
116
+ 4. `/prime --quiet --agent <agent-name>` loads context automatically
117
+ 5. Agent starts with full context AND their learned patterns loaded
118
+
119
+ This reduces the "cold start" problem where agents must discover context through multiple file reads. The `--agent` flag ensures each agent gets their project-specific sidecar patterns immediately.
120
+
121
+ ## Manual Refresh
122
+
123
+ If context becomes stale mid-session, run `/prime` manually:
124
+
125
+ ```bash
126
+ /prime # Refresh standard context
127
+ /prime --full # Include domain docs
128
+ ```
129
+
130
+ </integration>
131
+
132
+ <reference>
133
+ - **Script:** `.pennyfarthing/scripts/prime.sh`
134
+ - **Called by:** agent-session.sh on agent start (with `--agent` flag)
135
+ - **Loads:** CLAUDE.md, sprint, session, sidecar, shared context, shared behavior, tactical guide
136
+ - **Sidecar location:** `.pennyfarthing/sidecars/{agent}/*.md`
137
+ - **Shared context:** `.pennyfarthing/guides/shared-context.md` (all agents)
138
+ - **Shared behavior:** `.pennyfarthing/guides/shared-agent-behavior.md` (all agents)
139
+ - **Tactical guide:** `.pennyfarthing/guides/tactical-agent-behavior.md` (sm, tea, dev, reviewer only)
140
+ </reference>
@@ -0,0 +1,58 @@
1
+ ---
2
+ description: Merge develop to main and push (optional version bump)
3
+ ---
4
+
5
+ ```bash
6
+ ./scripts/run.sh release.sh "$@"
7
+ ```
8
+
9
+ <purpose>
10
+ Release current develop branch to main and push to origin.
11
+ </purpose>
12
+
13
+ <usage>
14
+ ```bash
15
+ # Just merge and push (no version change)
16
+ /release
17
+
18
+ # With version bump
19
+ /release --bump patch # 1.5.0 -> 1.5.1
20
+ /release --bump minor # 1.5.0 -> 1.6.0
21
+ /release --bump major # 1.5.0 -> 2.0.0
22
+
23
+ # Preview what would happen
24
+ /release --dry-run
25
+ /release --bump patch --dry-run
26
+ ```
27
+ </usage>
28
+
29
+ <workflow>
30
+ 1. Pre-flight checks (clean working directory, branches exist)
31
+ 2. Pull latest develop and main
32
+ 3. Merge develop into main (fast-forward when possible)
33
+ 4. Push main to origin
34
+ 5. Push develop to origin
35
+ 6. Push any tags
36
+
37
+ If `--bump` specified, delegates to `deploy.sh` which also:
38
+ - Bumps VERSION file
39
+ - Commits version change
40
+ - Creates annotated git tag
41
+ - Creates GitHub release from the tag (requires `gh` CLI)
42
+ </workflow>
43
+
44
+ <when-to-use>
45
+ - After completing a sprint or set of features
46
+ - When develop is stable and ready for production
47
+ - Before deploying to production environments
48
+ </when-to-use>
49
+
50
+ <prerequisites>
51
+ - Clean working directory (no uncommitted changes)
52
+ - On develop branch (or will switch to it)
53
+ - Origin remote configured
54
+ </prerequisites>
55
+
56
+ <skills>
57
+ - `/changelog` - For changelog format reference, auto-generation patterns, and version bump decisions
58
+ </skills>
@@ -0,0 +1,49 @@
1
+ ---
2
+ description: Check git status of all project repos
3
+ ---
4
+
5
+ # Repository Status Check
6
+
7
+ Check the git status of all project repos at once.
8
+
9
+ ## Configuration
10
+
11
+ Repos are configured in `.claude/project/repos.yaml`. The script automatically reads this configuration.
12
+
13
+ ## Instructions
14
+
15
+ Run this command to show the status of all repos:
16
+
17
+ ```bash
18
+ $CLAUDE_PROJECT_DIR/scripts/run.sh git-status-all.sh
19
+ ```
20
+
21
+ For a brief one-line-per-repo summary:
22
+
23
+ ```bash
24
+ $CLAUDE_PROJECT_DIR/scripts/run.sh git-status-all.sh --brief
25
+ ```
26
+
27
+ ## What It Shows
28
+
29
+ For each configured repo:
30
+ - Current branch
31
+ - Whether there are uncommitted changes
32
+ - Whether the repo is ahead/behind origin
33
+ - Unpushed commits (if any)
34
+
35
+ ## Adding More Repos
36
+
37
+ To add repos, edit `.claude/project/repos.yaml`:
38
+
39
+ ```yaml
40
+ repos:
41
+ my-api:
42
+ path: my-api # relative to project root
43
+ type: api
44
+ language: go
45
+ my-ui:
46
+ path: my-ui
47
+ type: ui
48
+ language: typescript
49
+ ```
@@ -0,0 +1,200 @@
1
+ ---
2
+ description: Facilitate a sprint retrospective
3
+ ---
4
+
5
+ # Retro - Sprint Retrospective
6
+
7
+ You are facilitating a **sprint retrospective** to reflect on what happened, learn from it, and improve.
8
+
9
+ ## Pre-Retro: Load Context
10
+
11
+ First, load the sprint data:
12
+ ```bash
13
+ # Check sprint status
14
+ cat sprint/current-sprint.yaml
15
+
16
+ # Check completed work
17
+ ls -la sprint/archive/
18
+
19
+ # Check any session handoffs
20
+ cat .session/{STORY_ID}-session.md 2>/dev/null || echo "No active work"
21
+ ```
22
+
23
+ ## Retro Format: 4 Ls
24
+
25
+ ### 1. Liked (What went well?)
26
+ - What worked?
27
+ - What should we keep doing?
28
+ - What made us proud?
29
+
30
+ ### 2. Learned (What did we discover?)
31
+ - New techniques or approaches
32
+ - Things we didn't know before
33
+ - Surprises (good or bad)
34
+
35
+ ### 3. Lacked (What was missing?)
36
+ - Resources we needed
37
+ - Information gaps
38
+ - Tools or processes that would have helped
39
+
40
+ ### 4. Longed For (What do we wish we had?)
41
+ - Improvements for next time
42
+ - Things to try
43
+ - Experiments to run
44
+
45
+ ## Output Template
46
+
47
+ ```markdown
48
+ ## Sprint [N] Retrospective
49
+ **Date**: [Date]
50
+ **Sprint Goal**: [Goal from sprint file]
51
+ **Velocity**: [Planned] planned / [Completed] completed
52
+
53
+ ### Liked
54
+ - [Thing that went well]
55
+ - [Another positive]
56
+
57
+ ### Learned
58
+ - [Discovery or insight]
59
+ - [Technical learning]
60
+
61
+ ### Lacked
62
+ - [Missing resource/info]
63
+ - [Gap identified]
64
+
65
+ ### Longed For
66
+ - [Improvement idea]
67
+ - [Experiment to try]
68
+
69
+ ### Action Items
70
+ | Action | Owner | Due |
71
+ |--------|-------|-----|
72
+ | [Specific action] | [Agent/Person] | [Next sprint] |
73
+
74
+ ### Metrics
75
+ - Stories completed: X/Y
76
+ - Bugs fixed: N
77
+ - Tech debt addressed: [List]
78
+ - Tests added: N
79
+ ```
80
+
81
+ ## Sidecar Maintenance
82
+
83
+ Review and consolidate agent sidecars during retro:
84
+
85
+ ### 1. Review Sidecar Entries
86
+
87
+ ```bash
88
+ echo "=== Sidecar Entries This Sprint ==="
89
+ for agent in dev tea sm reviewer architect; do
90
+ SIDECAR=".claude/project/agents/${agent}-sidecar"
91
+ if [ -d "$SIDECAR" ]; then
92
+ echo "--- $agent ---"
93
+ for file in "$SIDECAR"/*.md; do
94
+ [ -f "$file" ] && grep -l "$(date +%Y)" "$file" 2>/dev/null && cat "$file"
95
+ done
96
+ fi
97
+ done
98
+ ```
99
+
100
+ ### 2. Consolidate Learnings
101
+
102
+ For each sidecar entry, ask:
103
+ - **Still relevant?** Keep if yes, remove if no
104
+ - **Needs updating?** Refine based on experience
105
+ - **Promote to docs?** If it's general knowledge, move to project docs
106
+
107
+ ### 3. Prune Stale Entries
108
+
109
+ Remove entries that:
110
+ - Were one-time fixes
111
+ - No longer apply (code changed)
112
+ - Have been superseded by newer learnings
113
+
114
+ ### 4. Cross-Pollinate
115
+
116
+ If Dev learned something TEA should know:
117
+ - Add reference to TEA's sidecar
118
+ - Or move to shared docs if both need it
119
+
120
+ ### Sidecar Health Check
121
+
122
+ ```bash
123
+ echo "=== Sidecar Health ==="
124
+ for agent in dev tea sm reviewer; do
125
+ SIDECAR=".claude/project/agents/${agent}-sidecar"
126
+ if [ -d "$SIDECAR" ]; then
127
+ ENTRIES=$(grep -c "^## " "$SIDECAR"/*.md 2>/dev/null | awk -F: '{sum+=$2} END {print sum}')
128
+ echo "$agent: $ENTRIES entries"
129
+ fi
130
+ done
131
+ ```
132
+
133
+ **Target:** 5-15 entries per agent. More = too noisy. Fewer = not capturing enough.
134
+
135
+ ---
136
+
137
+ ## Session Artifact Cleanup
138
+
139
+ During retro, clean up accumulated session artifacts from the sprint:
140
+
141
+ ### 1. Preview Cleanup
142
+
143
+ ```bash
144
+ # See what would be cleaned (dry-run)
145
+ $CLAUDE_PROJECT_DIR/scripts/run.sh session-cleanup.sh --dry-run --aggressive
146
+ ```
147
+
148
+ Review the output. Look for:
149
+ - Files that should NOT be cleaned (active work artifacts)
150
+ - Unexpectedly large number of files (indicates cleanup wasn't running properly)
151
+
152
+ ### 2. Execute Cleanup
153
+
154
+ ```bash
155
+ # Run full cleanup with aggressive mode (archives completed epic contexts)
156
+ $CLAUDE_PROJECT_DIR/scripts/run.sh session-cleanup.sh --aggressive
157
+ ```
158
+
159
+ This removes:
160
+ - Old test result files (7+ days): `test-*.log`, `test-*.md`
161
+ - Old TEA artifacts: `tea-*.md`, `*-red-*.md`, `*-green-*.md`
162
+ - Completed handoff files: `*-handoff*.md`, `*-handoff*.txt`
163
+ - Old lint logs: `lint-*.log`
164
+ - Rotates `session-log.txt` to last 1000 lines
165
+ - Archives epic contexts for completed epics
166
+
167
+ ### 3. Verify Clean State
168
+
169
+ ```bash
170
+ # Check remaining files
171
+ ls -la .session/
172
+
173
+ # Should only see:
174
+ # - .gitkeep
175
+ # - session-log.txt (rotated)
176
+ # - agents/ directory
177
+ # - Any active work artifacts
178
+ ```
179
+
180
+ ---
181
+
182
+ ## Follow-Up Actions
183
+
184
+ After the retro:
185
+ 1. Update sprint/current-sprint.yaml with lessons learned
186
+ 2. Create stories for improvement actions
187
+ 3. Archive the retro in sprint/archive/
188
+ 4. Commit sidecar updates
189
+ 5. Verify session cleanup completed successfully
190
+
191
+ ## Usage
192
+
193
+ ```
194
+ /retro # Run retro for current sprint
195
+ /retro sprint-1 # Run retro for specific sprint
196
+ ```
197
+
198
+ ---
199
+
200
+ **TIME TO REFLECT. WHAT SPRINT ARE WE REVIEWING?**
@@ -0,0 +1,64 @@
1
+ ---
2
+ description: Code Reviewer - Critical code review and quality enforcement
3
+ ---
4
+
5
+ <agent-activation>
6
+ **FIRST:** Use Bash tool to run:
7
+ ```bash
8
+ d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/run.sh" agent-session.sh start "reviewer"
9
+ ```
10
+ This finds the project root and loads your persona. Adopt the character shown in the output.
11
+
12
+ Then load and follow `.pennyfarthing/agents/reviewer.md`
13
+ </agent-activation>
14
+
15
+ <agent-exit>
16
+ On exit: Capture learnings to sidecar, run `agent-session.sh stop`
17
+ </agent-exit>
18
+
19
+ <purpose>
20
+ Adversarial code reviewer who demands excellence and prevents flawed code from shipping.
21
+ </purpose>
22
+
23
+ <when-to-use>
24
+ - After Dev creates PR with GREEN tests
25
+ - Security and architecture concerns need validation
26
+ - Performance implications need assessment
27
+ - Edge cases and error handling need verification
28
+ </when-to-use>
29
+
30
+ <workflow-position>
31
+ **TDD Flow:** SM → TEA → Dev → **Reviewer**
32
+
33
+ | Entry | Exit |
34
+ |-------|------|
35
+ | After Dev (tests GREEN + PR created) | Approve → SM (finish) OR Reject → Dev (fixes) |
36
+ </workflow-position>
37
+
38
+ <workflow-steps>
39
+ 1. Receive handoff from Dev with PR link and test results
40
+ 2. Spawn pre-flight subagent to gather mechanical data (tests, lint, diff stats)
41
+ 3. Read actual code changes using `git diff develop...HEAD`
42
+ 4. Apply critical analysis: security, edge cases, performance, architecture
43
+ 5. Categorize findings (Critical/Major/Minor)
44
+ 6. Make judgment: APPROVE or REJECT
45
+ 7. Write assessment to session file
46
+ 8. Spawn handoff subagent (approve or reject)
47
+ 9. Check context usage; invoke next agent or tell user to start fresh
48
+ </workflow-steps>
49
+
50
+ <responsibilities>
51
+ | I Do (Opus) | Helper Does (Haiku) |
52
+ |-------------|---------------------|
53
+ | Security analysis, data flow tracing | Run tests, gather lint results |
54
+ | Edge case and performance analysis | Check for code smells |
55
+ | Architecture critique, judgment calls | Gather diff statistics |
56
+ | Write assessment; decide APPROVE/REJECT | Update session for handoff |
57
+ </responsibilities>
58
+
59
+ <reference>
60
+ - **Agent:** `.pennyfarthing/agents/reviewer.md`
61
+ - **Sidecar:** `.claude/project/agents/reviewer-sidecar/`
62
+ - **Skills:** `/code-review`, `/testing`, `/architecture`
63
+ - **Subagents:** `reviewer-preflight.md`, `reviewer-handoff-approve.md`, `reviewer-handoff-reject.md`
64
+ </reference>
@@ -0,0 +1,116 @@
1
+ ---
2
+ description: Detect and run CI locally
3
+ ---
4
+
5
+ <purpose>
6
+ Run CI locally by detecting the project's CI system and executing the appropriate commands. Thin wrapper that delegates to project configuration.
7
+ </purpose>
8
+
9
+ <when-to-use>
10
+ - Before pushing to verify CI will pass
11
+ - To reproduce CI failures locally
12
+ - To run the full CI pipeline without pushing
13
+ - When you want to know what CI system the project uses
14
+ </when-to-use>
15
+
16
+ <execution>
17
+
18
+ ## Running CI Locally
19
+
20
+ Use the run-ci.sh script:
21
+
22
+ ```bash
23
+ # Run CI locally (auto-detects CI system)
24
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh
25
+
26
+ # Show what CI system is detected without running
27
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh --detect-only
28
+
29
+ # Show what command would run without executing
30
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh --dry-run
31
+
32
+ # Show help
33
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh --help
34
+ ```
35
+
36
+ ## Options
37
+
38
+ | Option | Description |
39
+ |--------|-------------|
40
+ | `--help`, `-h` | Show help message |
41
+ | `--detect-only` | Show detected CI system without running |
42
+ | `--dry-run` | Show what would run without executing |
43
+
44
+ </execution>
45
+
46
+ <detection-order>
47
+
48
+ ## CI System Detection
49
+
50
+ The script detects CI systems in this order:
51
+
52
+ | Priority | System | Detection | Command |
53
+ |----------|--------|-----------|---------|
54
+ | 1 | Justfile | `just --list` shows `ci` recipe | `just ci` |
55
+ | 2 | GitHub Actions | `.github/workflows/*.yml` exists | `act` |
56
+ | 3 | GitLab CI | `.gitlab-ci.yml` exists | `gitlab-runner exec` |
57
+ | 4 | npm fallback | `package.json` exists | `npm run build && npm test && npm run lint` |
58
+
59
+ ### Package Manager Detection
60
+
61
+ For npm fallback, the script detects package manager:
62
+ - `pnpm-lock.yaml` or `pnpm-workspace.yaml` → `pnpm`
63
+ - `yarn.lock` → `yarn`
64
+ - Otherwise → `npm`
65
+
66
+ </detection-order>
67
+
68
+ <output-format>
69
+
70
+ ## Output Examples
71
+
72
+ ### --detect-only
73
+ ```
74
+ Detected CI system: github-actions
75
+ Would run: act
76
+ ```
77
+
78
+ ### --dry-run
79
+ ```
80
+ Detected: github-actions
81
+ Would run: act
82
+ ```
83
+
84
+ ### Running CI
85
+ ```
86
+ Running CI: github-actions
87
+ Command: act
88
+
89
+ [act output follows...]
90
+ ```
91
+
92
+ Exit codes:
93
+ - `0` - CI ran successfully
94
+ - `1` - CI failed or no CI system detected
95
+
96
+ </output-format>
97
+
98
+ <requirements>
99
+
100
+ ## Tool Requirements
101
+
102
+ | CI System | Required Tool | Installation |
103
+ |-----------|--------------|--------------|
104
+ | GitHub Actions | `act` | `brew install act` |
105
+ | GitLab CI | `gitlab-runner` | See GitLab docs |
106
+ | Justfile | `just` | `brew install just` |
107
+ | npm fallback | `npm`/`pnpm`/`yarn` | Comes with Node.js |
108
+
109
+ If a required tool is not installed, the script will show a warning.
110
+
111
+ </requirements>
112
+
113
+ <reference>
114
+ - **Script:** `.pennyfarthing/scripts/run-ci.sh`
115
+ - **Story:** 21-4 (Command & Skill Expansion)
116
+ </reference>
@@ -0,0 +1,52 @@
1
+ ---
2
+ description: Set the active persona theme
3
+ ---
4
+
5
+ # Set Theme
6
+
7
+ Change the active persona theme for all agents.
8
+
9
+ ## Arguments
10
+
11
+ - `<name>` - Theme name to activate (required)
12
+
13
+ ## Instructions
14
+
15
+ 1. If no theme name provided, list available themes:
16
+ ```bash
17
+ ls pennyfarthing-dist/personas/themes/*.yaml | xargs -I{} basename {} .yaml | sort
18
+ ```
19
+ Then ask the user which theme they want to use.
20
+
21
+ 2. Validate theme exists:
22
+ ```bash
23
+ ls pennyfarthing-dist/personas/themes/<name>.yaml
24
+ ```
25
+ If not found, show error and list available themes.
26
+
27
+ 3. Read the current config file to prepare for editing:
28
+ ```bash
29
+ cat .pennyfarthing/config.local.yaml 2>/dev/null || echo "FILE_NOT_FOUND"
30
+ ```
31
+
32
+ 4. Set the theme in `.pennyfarthing/config.local.yaml`:
33
+
34
+ **If the file exists and has a `theme:` line:**
35
+ - Use the Edit tool to replace `theme: <old>` with `theme: <new>`
36
+
37
+ **If the file doesn't exist or lacks the theme line:**
38
+ - Use the Write tool to create/overwrite the file:
39
+ ```yaml
40
+ # Pennyfarthing Local Configuration
41
+ # This file is gitignored - your personal preferences
42
+
43
+ theme: <name>
44
+ ```
45
+
46
+ 5. Verify the change was written:
47
+ ```bash
48
+ cat .pennyfarthing/config.local.yaml
49
+ ```
50
+ Confirm the theme line shows the new value.
51
+
52
+ 6. Inform the user they need to start a new agent session to use the new theme.
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Show details of a theme including all agent personas
3
+ ---
4
+
5
+ # Show Theme
6
+
7
+ Display full details of a theme including all agent character mappings.
8
+
9
+ ## Arguments
10
+
11
+ - `[name]` - Theme name to show (optional, defaults to current theme)
12
+
13
+ ## Instructions
14
+
15
+ Run the pennyfarthing CLI to show theme details:
16
+
17
+ ```bash
18
+ pennyfarthing theme show [name]
19
+ ```
20
+
21
+ Present the theme information clearly, showing each agent's character, style, and quote.