@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,156 @@
1
+ ---
2
+ description: Start an epic - move to current sprint and generate tech context
3
+ ---
4
+
5
+ # Start Epic Workflow
6
+
7
+ **This command prepares an epic for development by moving it to the current sprint and generating technical context.**
8
+
9
+ ## What This Does
10
+
11
+ 1. **Validates** the epic exists in backlog or current sprint
12
+ 2. **Moves** the epic to current sprint if not already there
13
+ 3. **Runs** the SM agent's `epic-tech-context` task to generate technical specifications
14
+
15
+ ## Prerequisites
16
+
17
+ ```bash
18
+ cd $CLAUDE_PROJECT_DIR
19
+
20
+ # Verify sprint files exist
21
+ if [ ! -f "sprint/current-sprint.yaml" ] || [ ! -f "sprint/backlog.yaml" ]; then
22
+ echo "ERROR: Sprint files not found"
23
+ exit 1
24
+ fi
25
+
26
+ echo "Sprint files found - ready to start epic"
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ Provide the epic ID when invoking this command:
32
+ - `epic-5` - Conductor epic (format: `epic-N`)
33
+
34
+ ## Workflow Steps
35
+
36
+ ### Step 0: Clean Previous Work Artifacts
37
+
38
+ Before starting a new epic, clean up stale artifacts from previous work:
39
+
40
+ ```bash
41
+ cd $CLAUDE_PROJECT_DIR
42
+
43
+ # Run conservative cleanup (7+ day old artifacts)
44
+ $CLAUDE_PROJECT_DIR/scripts/run.sh session-cleanup.sh --dry-run
45
+
46
+ # If dry-run looks good, run actual cleanup
47
+ $CLAUDE_PROJECT_DIR/scripts/run.sh session-cleanup.sh
48
+
49
+ # Archive epic contexts for completed epics
50
+ $CLAUDE_PROJECT_DIR/scripts/run.sh session-cleanup.sh --aggressive
51
+ ```
52
+
53
+ This ensures a clean slate before starting new epic work and archives contexts from completed epics.
54
+
55
+ ### Step 1: Identify Epic
56
+
57
+ Ask the user for the epic ID if not provided:
58
+ > "Which epic would you like to start? (e.g., epic-5, sim-epic-10)"
59
+
60
+ ### Step 2: Check Epic Location
61
+
62
+ ```bash
63
+ cd $CLAUDE_PROJECT_DIR
64
+
65
+ # Check if epic is in current sprint
66
+ if grep -q "^$EPIC_ID:" sprint/current-sprint.yaml; then
67
+ echo "Epic $EPIC_ID is already in current sprint"
68
+ EPIC_LOCATION="current"
69
+ elif grep -q "^$EPIC_ID:" sprint/backlog.yaml; then
70
+ echo "Epic $EPIC_ID found in backlog - will move to current sprint"
71
+ EPIC_LOCATION="backlog"
72
+ else
73
+ echo "ERROR: Epic $EPIC_ID not found in sprint files"
74
+ exit 1
75
+ fi
76
+ ```
77
+
78
+ ### Step 3: Move Epic to Current Sprint (if needed)
79
+
80
+ If the epic is in backlog:
81
+
82
+ 1. **Extract** the epic block from `sprint/backlog.yaml`
83
+ 2. **Add** the epic to `sprint/current-sprint.yaml` under the active work section
84
+ 3. **Update** the epic status from `backlog` or `planned` to `in-progress`
85
+ 4. **Remove** the epic from `sprint/backlog.yaml`
86
+
87
+ **Format for current-sprint.yaml:**
88
+ ```yaml
89
+ # Epic [N]: [Name] ([points] pts)
90
+ # [Description]
91
+ epic-N:
92
+ name: "[Epic Name]"
93
+ status: in-progress
94
+ points: [N]
95
+ priority: [High|Medium|Low]
96
+ repos: [api|ui|both]
97
+ stories:
98
+ # Stories will be added during tech context generation
99
+ ```
100
+
101
+ ### Step 4: Generate Epic Tech Context
102
+
103
+ Invoke the SM agent with the `epic-tech-context` task:
104
+
105
+ **Run:** `/sm` with task: `epic-tech-context` for epic `$EPIC_ID`
106
+
107
+ The SM agent will:
108
+ 1. Load the epic details from current sprint
109
+ 2. Analyze the codebase for relevant files
110
+ 3. Generate technical context including:
111
+ - Current state analysis
112
+ - Technical approach
113
+ - File modifications needed
114
+ - API/UI changes
115
+ - Database changes
116
+ - Testing strategy
117
+ - Story breakdown with acceptance criteria
118
+ 4. Save context to `.session/context-epic-$EPIC_ID.md`
119
+
120
+ ### Step 5: Confirm Ready
121
+
122
+ After tech context is generated:
123
+
124
+ ```
125
+ ✅ Epic $EPIC_ID is ready for development
126
+
127
+ Next steps:
128
+ 1. Review the tech context: cat .session/context-epic-$EPIC_ID.md
129
+ 2. Start first story: /new-work
130
+ 3. SM will select from this epic's stories
131
+ ```
132
+
133
+ ## Example
134
+
135
+ ```bash
136
+ # User invokes: /start-epic epic-5
137
+
138
+ # Output:
139
+ # → Checking epic-5 location...
140
+ # → Epic epic-5 found in backlog
141
+ # → Moving epic-5 to current sprint...
142
+ # → Updating status to in-progress...
143
+ # → Invoking SM for epic-tech-context...
144
+ # → [SM generates technical context]
145
+ # → ✅ Epic epic-5 is ready for development
146
+ ```
147
+
148
+ ## Notes
149
+
150
+ - This command does NOT start a story - use `/new-work` for that
151
+ - The epic tech context provides the foundation for story-level work
152
+ - Stories within the epic will be worked via the normal TDD flow
153
+
154
+ ---
155
+
156
+ **Flow:** `/start-epic` → SM (epic-tech-context) → `/new-work` → TDD cycle
@@ -0,0 +1,184 @@
1
+ ---
2
+ description: Sync Pennyfarthing epic to Jira MSSCI project using jira CLI
3
+ ---
4
+
5
+ # Sync Epic to Jira Workflow
6
+
7
+ This workflow syncs a Pennyfarthing epic and its stories to Jira using the `jira` CLI tool.
8
+
9
+ **IMPORTANT:** All Pennyfarthing issues MUST be labeled with `pennyfarthing` to distinguish them from Conductor work.
10
+
11
+ ## Prerequisites
12
+
13
+ - `jira` CLI installed: `brew install ankitpokhrel/jira-cli/jira-cli`
14
+ - `jira` CLI configured: `jira init`
15
+ - Epic exists in `sprint/current-sprint.yaml`
16
+
17
+ **For complete jira CLI reference, see the `jira` skill** (`.claude/skills/jira/SKILL.md`). The examples below are quick references; the skill has troubleshooting, user mappings, and edge cases.
18
+
19
+ ## Label Requirement
20
+
21
+ All Pennyfarthing epics and stories must include the `pennyfarthing` label:
22
+ ```bash
23
+ -l pennyfarthing
24
+ ```
25
+
26
+ ## Quick Sync
27
+
28
+ ### Sync a Single Story
29
+
30
+ ```bash
31
+ # View story status
32
+ ./scripts/run.sh jira-sync-story.sh 35-2-topology-editor
33
+
34
+ # Transition to match Conductor status
35
+ ./scripts/run.sh jira-sync-story.sh 35-2-topology-editor --transition
36
+
37
+ # Add a comment
38
+ ./scripts/run.sh jira-sync-story.sh 35-2-topology-editor --comment "Started development"
39
+ ```
40
+
41
+ ### Sync All Stories in Epic
42
+
43
+ ```bash
44
+ # For each story in the epic, sync status
45
+ for story in $(yq '.epic-35.stories | keys | .[]' sprint/current-sprint.yaml); do
46
+ ./scripts/run.sh jira-sync-story.sh "$story" --transition
47
+ done
48
+ ```
49
+
50
+ ## Manual Jira CLI Commands
51
+
52
+ **IMPORTANT:** Most commands require `-p MSSCI` (project flag) even when the issue key contains the project prefix.
53
+
54
+ ### View Issue
55
+
56
+ ```bash
57
+ jira issue view MSSCI-123
58
+ ```
59
+
60
+ ### Create Story
61
+
62
+ ```bash
63
+ jira issue create \
64
+ -p MSSCI \
65
+ -tStory \
66
+ -s"Story 1-5: Add Epic Context Guardrail" \
67
+ -b"Description here" \
68
+ -yHigh \
69
+ -l pennyfarthing \
70
+ --no-input
71
+ ```
72
+
73
+ ### Create Epic
74
+
75
+ ```bash
76
+ jira issue create \
77
+ -p MSSCI \
78
+ -tEpic \
79
+ -s"Epic 1: Agentic Best Practices Implementation" \
80
+ -b"Epic description" \
81
+ -l pennyfarthing \
82
+ --no-input
83
+ ```
84
+
85
+ ### Link Story to Epic
86
+
87
+ ```bash
88
+ # Use --parent to link a story to its epic
89
+ jira issue create \
90
+ -p MSSCI \
91
+ -tStory \
92
+ -s"Story Title" \
93
+ --parent MSSCI-EPIC_KEY \
94
+ -l pennyfarthing \
95
+ --no-input
96
+ ```
97
+
98
+ ### Assign Issue
99
+
100
+ ```bash
101
+ # Assign to self
102
+ jira issue assign -p MSSCI MSSCI-123 "$(jira me)"
103
+
104
+ # Assign to someone else
105
+ jira issue assign -p MSSCI MSSCI-123 "john.doe@1898andco.io"
106
+ ```
107
+
108
+ ### Transition Issue
109
+
110
+ ```bash
111
+ jira issue move MSSCI-123 "In Progress" -p MSSCI
112
+ jira issue move MSSCI-123 "In Review" -p MSSCI
113
+ jira issue move MSSCI-123 "Done" -p MSSCI
114
+ ```
115
+
116
+ ### Add Comment
117
+
118
+ ```bash
119
+ jira issue comment add MSSCI-123 "Development started on branch feat/35-2"
120
+ ```
121
+
122
+ ### Link Issues
123
+
124
+ ```bash
125
+ jira issue link MSSCI-123 MSSCI-124 "Blocks"
126
+ ```
127
+
128
+ ### List Issues
129
+
130
+ ```bash
131
+ # All in-progress stories
132
+ jira issue list -s "In Progress"
133
+
134
+ # Stories in current sprint
135
+ jira sprint list --current
136
+
137
+ # Stories assigned to me
138
+ jira issue list -a$(jira me)
139
+ ```
140
+
141
+ ## Status Mapping
142
+
143
+ | Conductor | Jira |
144
+ |-----------|------|
145
+ | `backlog` | To Do |
146
+ | `in-progress` | In Progress |
147
+ | `review` | In Review |
148
+ | `done` | Done |
149
+
150
+ ## Priority Mapping
151
+
152
+ | Conductor | Jira |
153
+ |-----------|------|
154
+ | `P0` | Highest |
155
+ | `P1` | High |
156
+ | `P2` | Medium |
157
+
158
+ ## Troubleshooting
159
+
160
+ **jira CLI not configured:**
161
+ ```bash
162
+ jira init
163
+ # Follow prompts to authenticate
164
+ ```
165
+
166
+ **Issue not found:**
167
+ - Check the Jira key is correct
168
+ - Verify you have access to the project
169
+
170
+ **Transition not available:**
171
+ - Some transitions require specific conditions
172
+ - Check the Jira workflow for allowed transitions
173
+
174
+ ## Related Scripts
175
+
176
+ | Script | Purpose |
177
+ |--------|---------|
178
+ | `jira-claim-story.sh` | Check/claim story assignment |
179
+ | `jira-sync-story.sh` | Sync single story status |
180
+ | `sync-epic-to-jira.sh` | Generate sync report for epic |
181
+
182
+ ---
183
+
184
+ **Last Updated**: 2025-12-16
@@ -0,0 +1,376 @@
1
+ ---
2
+ description: Sync Pennyfarthing work session with unified sprint status
3
+ ---
4
+
5
+ # Sync Work Session with Sprint Status
6
+
7
+ This workflow helps you coordinate your Pennyfarthing work session with the unified sprint status tracking.
8
+
9
+ ## Prerequisites
10
+
11
+ - [ ] Active work session exists (`.session/{STORY_ID}-session.md`)
12
+ - [ ] You know which story/epic you're working on
13
+
14
+ ## Unified Sprint Status
15
+
16
+ **Location:** `sprint/sprint-status.yaml`
17
+
18
+ This single file tracks work across both API and UI repos, making coordination simple.
19
+
20
+ ## Steps
21
+
22
+ ### 1. View Current Sprint Status
23
+
24
+ Check the unified sprint status:
25
+
26
+ ```bash
27
+ cat sprint/sprint-status.yaml
28
+ ```
29
+
30
+ **Current Sprint 1 - Coordinated Development Setup:**
31
+ - Epic 1: Coordinated Development Setup - IN PROGRESS (2/5 done)
32
+ - 1-1: Pennyfarthing Solo Dev Setup - done
33
+ - 1-2: Cross-Repo Workflows - done
34
+ - 1-3: Environment Configuration - backlog
35
+ - 1-4: API Connection Verification - backlog
36
+ - 1-5: Development Documentation - backlog
37
+
38
+ - Epic 2: Critical Bug Fixes - BACKLOG (plan as needed)
39
+ - Epic 3: Core Feature Development - BACKLOG (plan as needed)
40
+
41
+ ### 2. Update Pennyfarthing Session with Story Info
42
+
43
+ Edit `.session/{STORY_ID}-session.md` to include story details:
44
+
45
+ ```markdown
46
+ # Feature: [Story Title]
47
+
48
+ **Story ID:** [Epic-Story] (e.g., 1-3, 1-4)
49
+ **Repos:** [X] API [X] UI [X] Both
50
+ **Date:** [YYYY-MM-DD]
51
+ **Epic:** [Epic Number and Name]
52
+ **Priority:** [P0/P1/P2]
53
+ **Points:** [Story Points]
54
+
55
+ ## Goal
56
+ [Copy from sprint status story description]
57
+
58
+ ## Story Context
59
+ **Sprint Status:** sprint/sprint-status.yaml
60
+ **Story Line:** [Line number in sprint status]
61
+
62
+ ## Scope
63
+ - [ ] [Task from story]
64
+ - [ ] [Task from story]
65
+ - [ ] [Task from story]
66
+
67
+ ## API Changes
68
+ - Files: [from story prerequisites]
69
+ - Endpoints: [from story description]
70
+
71
+ ## UI Changes
72
+ - Files: [from story prerequisites]
73
+ - Components: [from story description]
74
+
75
+ ## Prerequisites
76
+ [Copy from sprint status]
77
+
78
+ ## Acceptance Criteria
79
+ [Copy from story file if exists]
80
+
81
+ ## Quick Notes
82
+ [Your implementation notes]
83
+
84
+ ## Done
85
+ - [ ] Tests pass
86
+ - [ ] Works as expected
87
+ - [ ] Committed
88
+ - [ ] Sprint status updated
89
+
90
+ ## Next
91
+ [Next story in epic or next epic]
92
+ ```
93
+
94
+ ### 3. Update Sprint Status to "in-progress"
95
+
96
+ When you start work, update the sprint status file:
97
+
98
+ **For API work:**
99
+ ```bash
100
+ cd $CLAUDE_PROJECT_DIR/API
101
+
102
+ # Edit sprint status
103
+ # Change story status from 'backlog' to 'in-progress'
104
+ # Example: 2-2-okta-sso-integration: in-progress
105
+ ```
106
+
107
+ **For UI work:**
108
+ ```bash
109
+ cd $CLAUDE_PROJECT_DIR/UI
110
+
111
+ # Edit sprint status
112
+ # Change story status from 'backlog' to 'in-progress'
113
+ # Example: 5-2-environment-configuration-validation: in-progress
114
+ ```
115
+
116
+ ### 4. Work on the Story
117
+
118
+ Follow your Pennyfarthing session and check off tasks as you complete them.
119
+
120
+ ### 5. Update Sprint Status to "done"
121
+
122
+ When work is complete:
123
+
124
+ **For API work:**
125
+ ```bash
126
+ cd $CLAUDE_PROJECT_DIR/API
127
+
128
+ # Edit sprint status
129
+ # Change: 2-2-okta-sso-integration: done
130
+ # Add completion date if tracking
131
+ ```
132
+
133
+ **For UI work:**
134
+ ```bash
135
+ cd $CLAUDE_PROJECT_DIR/UI
136
+
137
+ # Edit sprint status
138
+ # Change: 5-2-environment-configuration-validation: done
139
+ # Add completion date and commit SHA if tracking
140
+ ```
141
+
142
+ ### 6. Commit Sprint Status Updates
143
+
144
+ ```bash
145
+ # API
146
+ cd $CLAUDE_PROJECT_DIR/API
147
+ git add docs/sprint-artifacts/sprint-status.yaml
148
+ git commit -m "chore: update sprint status for story [ID]"
149
+
150
+ # UI
151
+ cd $CLAUDE_PROJECT_DIR/UI
152
+ git add docs/sprint-artifacts/sprint-status.yaml
153
+ git commit -m "chore: update sprint status for story [ID]"
154
+ ```
155
+
156
+ ### 7. Archive Pennyfarthing Session
157
+
158
+ ```bash
159
+ cd $CLAUDE_PROJECT_DIR
160
+ # Invoke /sm and run finish-story task
161
+ # Archive with story ID: story-5-2-env-config-20241202.md
162
+ ```
163
+
164
+ ## Current Sprint Focus
165
+
166
+ ### API - Next Stories to Work On
167
+
168
+ **Epic 2: Authentication (In Progress)**
169
+ - 2-2-okta-sso-integration: backlog → Ready to start
170
+ - 2-5-mfa-multi-factor-authentication: backlog → After 2-2
171
+
172
+ ### UI - Next Stories to Work On
173
+
174
+ **Epic 1: Dev Tooling (In Progress - 1/8 done)**
175
+ - 1-3-environment-configuration-files: backlog → Priority P0
176
+ - 1-4-root-level-development-orchestration: backlog → Priority P1
177
+ - 1-5-cross-repo-scripts: backlog → Priority P1
178
+ - 1-6-api-contract-synchronization: backlog → Priority P1
179
+
180
+ **Epic 5: Bug Fixes (In Progress - 1/10 done)**
181
+ - 5-2-environment-configuration-validation: backlog → Priority P0
182
+ - 5-3-route-validation-and-navigation-testing: backlog → Priority P1
183
+ - 5-4-api-integration-testing: backlog → Priority P0
184
+
185
+ ## Story Status Workflow
186
+
187
+ ```
188
+ backlog → in-progress → review → done
189
+ ```
190
+
191
+ **Status Definitions:**
192
+ - `backlog`: Story exists but not started
193
+ - `drafted`: Story file created (if applicable)
194
+ - `ready-for-dev`: Story approved and contexted
195
+ - `in-progress`: Actively working (update when you start)
196
+ - `review`: Under review (code review)
197
+ - `done`: Completed (update when finished)
198
+
199
+ ## Example: Complete Story Workflow
200
+
201
+ ### Story: UI 5-2 Environment Configuration Validation
202
+
203
+ ```bash
204
+ # 1. Start work session
205
+ cd $CLAUDE_PROJECT_DIR
206
+ ./scripts/run.sh new-work.sh
207
+
208
+ # 2. Edit session with story details
209
+ cat > .session/{STORY_ID}-session.md << 'EOF'
210
+ # Feature: Environment Configuration Validation
211
+
212
+ **Story ID:** 5-2
213
+ **Repos:** [ ] API [X] UI [ ] Both
214
+ **Date:** 2024-12-02
215
+ **Epic:** Epic 5 - Bug Fixes & Split Issues Resolution
216
+ **Priority:** P0
217
+ **Points:** 3
218
+
219
+ ## Goal
220
+ Validate environment configuration files and ensure proper loading
221
+
222
+ ## Story Context
223
+ **UI Story:** UI/docs/sprint-artifacts/sprint-status.yaml#L229
224
+ **Prerequisites:** Epic 1 (Dev Tooling)
225
+
226
+ ## Scope
227
+ - [ ] Validate .env files exist
228
+ - [ ] Check required environment variables
229
+ - [ ] Add runtime validation
230
+ - [ ] Update documentation
231
+
232
+ ## UI Changes
233
+ - Files: src/config/env.ts, src/utils/validation.ts
234
+ - Components: ErrorBoundary updates
235
+
236
+ ## Quick Notes
237
+ - Check for missing API_BASE_URL
238
+ - Validate WebSocket URL format
239
+ - Add helpful error messages
240
+
241
+ ## Done
242
+ - [ ] Tests pass
243
+ - [ ] Works as expected
244
+ - [ ] Committed
245
+ - [ ] Sprint status updated
246
+
247
+ ## Next
248
+ Story 5-3: Route validation
249
+ EOF
250
+
251
+ # 3. Update sprint status to in-progress
252
+ cd UI
253
+ # Edit: 5-2-environment-configuration-validation: in-progress
254
+
255
+ # 4. Do the work
256
+ # ... implement validation ...
257
+
258
+ # 5. Commit work
259
+ git add .
260
+ git commit -m "feat: add environment configuration validation (story 5-2)"
261
+
262
+ # 6. Update sprint status to done
263
+ # Edit: 5-2-environment-configuration-validation: done
264
+
265
+ # 7. Commit sprint status
266
+ git add docs/sprint-artifacts/sprint-status.yaml
267
+ git commit -m "chore: mark story 5-2 as done"
268
+
269
+ # 8. Archive session
270
+ cd ..
271
+ # Invoke /sm and run finish-story task
272
+ # Archive as: story-5-2-env-validation-20241202.md
273
+ ```
274
+
275
+ ## Tips
276
+
277
+ ### Link Story Files
278
+
279
+ If a story has a detailed `.md` file, reference it:
280
+
281
+ ```markdown
282
+ ## Story Context
283
+ **Story File:** UI/docs/sprint-artifacts/stories/5-2-environment-configuration-validation.md
284
+ **Sprint Status:** UI/docs/sprint-artifacts/sprint-status.yaml#L229
285
+ ```
286
+
287
+ ### Track Story Points
288
+
289
+ Include story points in your session for velocity tracking:
290
+
291
+ ```markdown
292
+ **Points:** 3
293
+ **Estimated Hours:** 4-6
294
+ **Actual Hours:** [fill in when done]
295
+ ```
296
+
297
+ ### Cross-Repo Stories
298
+
299
+ For stories that span both repos:
300
+
301
+ ```markdown
302
+ **Repos:** [X] API [X] UI [X] Both
303
+
304
+ ## API Story
305
+ **ID:** 2-2-okta-sso-integration
306
+ **Status:** API/docs/sprint-artifacts/sprint-status.yaml#L50
307
+
308
+ ## UI Story
309
+ **ID:** 3-2-client-context-propagation
310
+ **Status:** UI/docs/sprint-artifacts/sprint-status.yaml#L147
311
+ ```
312
+
313
+ ### Epic Progress Tracking
314
+
315
+ Track epic progress in your session:
316
+
317
+ ```markdown
318
+ ## Epic Progress
319
+ **Epic 5:** Bug Fixes (1/10 stories done, 5/47 points)
320
+ **This Story:** 5-2 (3 points)
321
+ **After This:** 2/10 stories, 8/47 points (17%)
322
+ ```
323
+
324
+ ## Integration with Workflows
325
+
326
+ ### With /create-branches-from-story
327
+
328
+ ```bash
329
+ # 1. Create branches with story ID
330
+ @/create-branches-from-story
331
+ # Branch: feature/5-2-env-config-validation
332
+
333
+ # 2. Session already created, add story details
334
+ # Edit .session/{STORY_ID}-session.md with sprint info
335
+
336
+ # 3. Update sprint status to in-progress
337
+
338
+ # 4. Work, commit, update to done
339
+ ```
340
+
341
+ ### With /new-work
342
+
343
+ ```bash
344
+ # 1. Start session
345
+ @/new-work
346
+
347
+ # 2. Look up story in sprint status
348
+
349
+ # 3. Fill in session with story details
350
+
351
+ # 4. Update sprint status
352
+ ```
353
+
354
+ ## Quick Reference
355
+
356
+ ```bash
357
+ # View API sprint status
358
+ cat API/docs/sprint-artifacts/sprint-status.yaml | grep -A 2 "epic-[0-9]:"
359
+
360
+ # View UI sprint status
361
+ cat UI/docs/sprint-artifacts/sprint-status.yaml | grep -A 2 "epic-[0-9]:"
362
+
363
+ # Find story by ID
364
+ grep "5-2-" UI/docs/sprint-artifacts/sprint-status.yaml
365
+
366
+ # Update story status
367
+ # Edit sprint-status.yaml: change 'backlog' to 'in-progress' or 'done'
368
+
369
+ # Commit sprint status
370
+ git add docs/sprint-artifacts/sprint-status.yaml
371
+ git commit -m "chore: update sprint status for story [ID]"
372
+ ```
373
+
374
+ ---
375
+
376
+ **Your Pennyfarthing session is now synced with sprint tracking!**