@pennyfarthing/core 11.0.0 → 11.1.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 (485) hide show
  1. package/README.md +80 -22
  2. package/package.json +14 -16
  3. package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.d.ts +20 -0
  4. package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.d.ts.map +1 -0
  5. package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.js +278 -0
  6. package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.js.map +1 -0
  7. package/packages/core/dist/cli/utils/constants.d.ts +7 -1
  8. package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
  9. package/packages/core/dist/cli/utils/constants.js +2 -0
  10. package/packages/core/dist/cli/utils/constants.js.map +1 -1
  11. package/packages/core/dist/cli/utils/constants.test.d.ts +10 -0
  12. package/packages/core/dist/cli/utils/constants.test.d.ts.map +1 -0
  13. package/packages/core/dist/cli/utils/constants.test.js +38 -0
  14. package/packages/core/dist/cli/utils/constants.test.js.map +1 -0
  15. package/packages/core/dist/consultation/consultation-protocol.d.ts +139 -0
  16. package/packages/core/dist/consultation/consultation-protocol.d.ts.map +1 -0
  17. package/packages/core/dist/consultation/consultation-protocol.js +178 -0
  18. package/packages/core/dist/consultation/consultation-protocol.js.map +1 -0
  19. package/packages/core/dist/consultation/consultation-protocol.test.d.ts +20 -0
  20. package/packages/core/dist/consultation/consultation-protocol.test.d.ts.map +1 -0
  21. package/packages/core/dist/consultation/consultation-protocol.test.js +474 -0
  22. package/packages/core/dist/consultation/consultation-protocol.test.js.map +1 -0
  23. package/packages/core/dist/public/js/react/react.js +3 -3
  24. package/packages/core/dist/scripts/theme-detail.test.d.ts +10 -0
  25. package/packages/core/dist/scripts/theme-detail.test.js +199 -0
  26. package/packages/core/dist/server/api/health-score.d.ts.map +1 -1
  27. package/packages/core/dist/server/api/health-score.js +25 -1
  28. package/packages/core/dist/server/api/health-score.js.map +1 -1
  29. package/packages/core/dist/server/api/settings.d.ts.map +1 -1
  30. package/packages/core/dist/server/api/settings.js +63 -1
  31. package/packages/core/dist/server/api/settings.js.map +1 -1
  32. package/packages/core/dist/server/api/theme-agents.d.ts.map +1 -1
  33. package/packages/core/dist/server/api/theme-agents.js +61 -0
  34. package/packages/core/dist/server/api/theme-agents.js.map +1 -1
  35. package/packages/core/dist/server/server.d.ts.map +1 -1
  36. package/packages/core/dist/server/server.js +17 -12
  37. package/packages/core/dist/server/server.js.map +1 -1
  38. package/packages/core/dist/workflow/gate-file-validation.d.ts +49 -0
  39. package/packages/core/dist/workflow/gate-file-validation.d.ts.map +1 -0
  40. package/packages/core/dist/workflow/gate-file-validation.js +157 -0
  41. package/packages/core/dist/workflow/gate-file-validation.js.map +1 -0
  42. package/packages/core/dist/workflow/gate-file-validation.test.d.ts +19 -0
  43. package/packages/core/dist/workflow/gate-file-validation.test.d.ts.map +1 -0
  44. package/packages/core/dist/workflow/gate-file-validation.test.js +536 -0
  45. package/packages/core/dist/workflow/gate-file-validation.test.js.map +1 -0
  46. package/packages/core/dist/workflow/gate-schema-validation.test.d.ts +14 -0
  47. package/packages/core/dist/workflow/gate-schema-validation.test.d.ts.map +1 -0
  48. package/packages/core/dist/workflow/gate-schema-validation.test.js +339 -0
  49. package/packages/core/dist/workflow/gate-schema-validation.test.js.map +1 -0
  50. package/packages/core/dist/workflow/handoff.js +2 -2
  51. package/packages/core/dist/workflow/handoff.js.map +1 -1
  52. package/packages/core/dist/workflow/handoff.test.js +16 -0
  53. package/packages/core/dist/workflow/handoff.test.js.map +1 -1
  54. package/packages/core/dist/workflow/workflow-schema.d.ts +4 -2
  55. package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
  56. package/packages/core/dist/workflow/workflow-schema.js +43 -8
  57. package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
  58. package/pennyfarthing-dist/agents/README.md +6 -14
  59. package/pennyfarthing-dist/agents/architect.md +43 -29
  60. package/pennyfarthing-dist/agents/ba.md +30 -29
  61. package/pennyfarthing-dist/agents/dev.md +32 -43
  62. package/pennyfarthing-dist/agents/devops.md +57 -21
  63. package/pennyfarthing-dist/agents/orchestrator.md +3 -10
  64. package/pennyfarthing-dist/agents/pm.md +45 -31
  65. package/pennyfarthing-dist/agents/reviewer.md +20 -66
  66. package/pennyfarthing-dist/agents/sm-setup.md +2 -2
  67. package/pennyfarthing-dist/agents/sm.md +8 -30
  68. package/pennyfarthing-dist/agents/tea.md +25 -41
  69. package/pennyfarthing-dist/agents/tech-writer.md +33 -90
  70. package/pennyfarthing-dist/agents/ux-designer.md +39 -39
  71. package/pennyfarthing-dist/commands/benchmark-control.md +8 -64
  72. package/pennyfarthing-dist/commands/benchmark.md +8 -480
  73. package/pennyfarthing-dist/commands/job-fair.md +8 -97
  74. package/pennyfarthing-dist/commands/pf-benchmark-control.md +70 -0
  75. package/pennyfarthing-dist/commands/pf-benchmark.md +486 -0
  76. package/pennyfarthing-dist/commands/pf-chore.md +4 -4
  77. package/pennyfarthing-dist/commands/pf-ci.md +40 -0
  78. package/pennyfarthing-dist/commands/pf-close-epic.md +9 -27
  79. package/pennyfarthing-dist/commands/pf-continue-session.md +9 -213
  80. package/pennyfarthing-dist/commands/pf-create-branches-from-story.md +11 -353
  81. package/pennyfarthing-dist/commands/pf-docs.md +28 -0
  82. package/pennyfarthing-dist/commands/pf-epic.md +67 -0
  83. package/pennyfarthing-dist/commands/pf-git-cleanup.md +11 -52
  84. package/pennyfarthing-dist/commands/pf-git.md +75 -0
  85. package/pennyfarthing-dist/commands/pf-help.md +110 -128
  86. package/pennyfarthing-dist/commands/pf-job-fair.md +102 -0
  87. package/pennyfarthing-dist/commands/pf-new-work.md +9 -18
  88. package/pennyfarthing-dist/commands/pf-parallel-work.md +6 -66
  89. package/pennyfarthing-dist/commands/pf-release.md +11 -76
  90. package/pennyfarthing-dist/commands/pf-repo-status.md +11 -44
  91. package/pennyfarthing-dist/commands/pf-run-ci.md +8 -111
  92. package/pennyfarthing-dist/commands/pf-session.md +51 -0
  93. package/pennyfarthing-dist/commands/pf-solo.md +447 -0
  94. package/pennyfarthing-dist/commands/pf-sprint-planning.md +8 -104
  95. package/pennyfarthing-dist/commands/pf-standalone.md +1 -1
  96. package/pennyfarthing-dist/commands/pf-start-epic.md +9 -163
  97. package/pennyfarthing-dist/commands/pf-sync-epic-to-jira.md +8 -179
  98. package/pennyfarthing-dist/commands/pf-sync-work-with-sprint.md +8 -368
  99. package/pennyfarthing-dist/commands/pf-update-domain-docs.md +8 -78
  100. package/pennyfarthing-dist/commands/solo.md +8 -442
  101. package/pennyfarthing-dist/guides/agent-behavior.md +13 -13
  102. package/pennyfarthing-dist/guides/agent-coordination.md +7 -7
  103. package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +6 -5
  104. package/pennyfarthing-dist/guides/bikerack.md +128 -0
  105. package/pennyfarthing-dist/guides/brownfield-tools.md +133 -0
  106. package/pennyfarthing-dist/guides/command-tag-taxonomy.md +2 -2
  107. package/pennyfarthing-dist/guides/gate-schema.md +227 -0
  108. package/pennyfarthing-dist/guides/gates.md +120 -0
  109. package/pennyfarthing-dist/guides/handoff-cli.md +116 -0
  110. package/pennyfarthing-dist/guides/hooks.md +86 -4
  111. package/pennyfarthing-dist/guides/output-styles.md +65 -0
  112. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +5 -5
  113. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +4 -4
  114. package/pennyfarthing-dist/guides/prompt-patterns.md +5 -5
  115. package/pennyfarthing-dist/guides/reflector.md +4 -4
  116. package/pennyfarthing-dist/guides/session-artifacts.md +1 -1
  117. package/pennyfarthing-dist/guides/skill-schema.md +1 -1
  118. package/pennyfarthing-dist/guides/tandem-protocol.md +13 -1
  119. package/pennyfarthing-dist/guides/worktree-mode.md +3 -3
  120. package/pennyfarthing-dist/guides/xml-tags.md +5 -4
  121. package/pennyfarthing-dist/personas/themes/hogans-heroes.yaml +11 -22
  122. package/pennyfarthing-dist/personas/themes/stephen-king.yaml +13 -24
  123. package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -0
  124. package/pennyfarthing-dist/scripts/core/check-context.sh +0 -0
  125. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +1 -1
  126. package/pennyfarthing-dist/scripts/core/prime.sh +0 -0
  127. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -0
  128. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -0
  129. package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -0
  130. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +0 -0
  131. package/pennyfarthing-dist/scripts/git/release.sh +0 -0
  132. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -0
  133. package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -0
  134. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +0 -0
  135. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -0
  136. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -0
  137. package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
  138. package/pennyfarthing-dist/scripts/hooks/dispatcher-template.sh +0 -0
  139. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +19 -14
  140. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -0
  141. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -0
  142. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -0
  143. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -0
  144. package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +0 -0
  145. package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -0
  146. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -0
  147. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -0
  148. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -0
  149. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +0 -0
  150. package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -0
  151. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -0
  152. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -0
  153. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -0
  154. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -0
  155. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -0
  156. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -0
  157. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -0
  158. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -0
  159. package/pennyfarthing-dist/scripts/lib/common.sh +0 -0
  160. package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -0
  161. package/pennyfarthing-dist/scripts/lib/logging.sh +0 -0
  162. package/pennyfarthing-dist/scripts/lib/retry.sh +0 -0
  163. package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -0
  164. package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -0
  165. package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -0
  166. package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -0
  167. package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -0
  168. package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -0
  169. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -0
  170. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -0
  171. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -0
  172. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -0
  173. package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -0
  174. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -0
  175. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -0
  176. package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -0
  177. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -0
  178. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -0
  179. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -0
  180. package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -0
  181. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -0
  182. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -0
  183. package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +191 -57
  184. package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +26 -10
  185. package/pennyfarthing-dist/scripts/story/create-story.sh +0 -0
  186. package/pennyfarthing-dist/scripts/story/size-story.sh +0 -0
  187. package/pennyfarthing-dist/scripts/story/story-template.sh +0 -0
  188. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
  189. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -0
  190. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -0
  191. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -0
  192. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -0
  193. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -0
  194. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -0
  195. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -0
  196. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -0
  197. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -0
  198. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -0
  199. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -0
  200. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
  201. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -0
  202. package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -0
  203. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -0
  204. package/pennyfarthing-dist/scripts/workflow/check.py +0 -0
  205. package/pennyfarthing-dist/scripts/workflow/check.sh +0 -0
  206. package/pennyfarthing-dist/scripts/workflow/complete-step.py +0 -0
  207. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -0
  208. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -0
  209. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -0
  210. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -0
  211. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -0
  212. package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -0
  213. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -0
  214. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -0
  215. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -0
  216. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -0
  217. package/pennyfarthing-dist/skills/pf-changelog/SKILL.md +4 -4
  218. package/pennyfarthing-dist/skills/pf-sprint/skill.md +1 -1
  219. package/pennyfarthing-dist/skills/pf-story/scripts/create-story.sh +0 -0
  220. package/pennyfarthing-dist/skills/pf-story/scripts/size-story.sh +0 -0
  221. package/pennyfarthing-dist/skills/pf-story/scripts/story-template.sh +0 -0
  222. package/pennyfarthing-dist/skills/pf-workflow/scripts/list-workflows.sh +0 -0
  223. package/pennyfarthing-dist/skills/pf-workflow/scripts/resume-workflow.sh +0 -0
  224. package/pennyfarthing-dist/skills/pf-workflow/scripts/show-workflow.sh +0 -0
  225. package/pennyfarthing-dist/skills/pf-workflow/scripts/start-workflow.sh +0 -0
  226. package/pennyfarthing-dist/skills/pf-workflow/scripts/workflow-status.sh +0 -0
  227. package/pennyfarthing-dist/skills/skill-registry.schema.json +4 -0
  228. package/pennyfarthing-dist/skills/skill-registry.yaml +5 -0
  229. package/pennyfarthing-dist/workflows/2party-tdd.yaml +11 -0
  230. package/pennyfarthing-dist/workflows/agent-docs.yaml +2 -0
  231. package/pennyfarthing-dist/workflows/bdd-tandem.yaml +4 -0
  232. package/pennyfarthing-dist/workflows/bdd.yaml +4 -0
  233. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +1 -1
  234. package/pennyfarthing-dist/workflows/tdd-tandem.yaml +3 -0
  235. package/pennyfarthing-dist/workflows/tdd.yaml +3 -0
  236. package/pennyfarthing-dist/workflows/trivial.yaml +2 -0
  237. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  238. package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
  239. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  240. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  241. package/pennyfarthing_scripts/__pycache__/context.cpython-314.pyc +0 -0
  242. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  243. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  244. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  245. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  246. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  247. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  248. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  249. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  250. package/pennyfarthing_scripts/__pycache__/session_start_hook.cpython-314.pyc +0 -0
  251. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  252. package/pennyfarthing_scripts/bc/__pycache__/__init__.cpython-314.pyc +0 -0
  253. package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-314.pyc +0 -0
  254. package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-314.pyc +0 -0
  255. package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
  256. package/pennyfarthing_scripts/bikerack/__pycache__/__main__.cpython-314.pyc +0 -0
  257. package/pennyfarthing_scripts/bikerack/__pycache__/background_panel.cpython-314.pyc +0 -0
  258. package/pennyfarthing_scripts/bikerack/__pycache__/base_panel.cpython-314.pyc +0 -0
  259. package/pennyfarthing_scripts/bikerack/__pycache__/changed_panel.cpython-314.pyc +0 -0
  260. package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
  261. package/pennyfarthing_scripts/bikerack/__pycache__/debug_panel.cpython-314.pyc +0 -0
  262. package/pennyfarthing_scripts/bikerack/__pycache__/diffs_panel.cpython-314.pyc +0 -0
  263. package/pennyfarthing_scripts/bikerack/__pycache__/git_panel.cpython-314.pyc +0 -0
  264. package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
  265. package/pennyfarthing_scripts/bikerack/__pycache__/sprint_panel.cpython-314.pyc +0 -0
  266. package/pennyfarthing_scripts/bikerack/__pycache__/tui.cpython-314.pyc +0 -0
  267. package/pennyfarthing_scripts/bikerack/__pycache__/ws_client.cpython-314.pyc +0 -0
  268. package/pennyfarthing_scripts/bikerack/debug_panel.py +218 -0
  269. package/pennyfarthing_scripts/bikerack/diffs_panel.py +203 -27
  270. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  271. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  272. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  273. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  274. package/pennyfarthing_scripts/cli.py +114 -0
  275. package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
  276. package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
  277. package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
  278. package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
  279. package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
  280. package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
  281. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  282. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  283. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  284. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  285. package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
  286. package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
  287. package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
  288. package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
  289. package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
  290. package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
  291. package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
  292. package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
  293. package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
  294. package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
  295. package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
  296. package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
  297. package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
  298. package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
  299. package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
  300. package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
  301. package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
  302. package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
  303. package/pennyfarthing_scripts/epic/__init__.py +0 -0
  304. package/pennyfarthing_scripts/epic/cli.py +64 -0
  305. package/pennyfarthing_scripts/gate/__init__.py +1 -0
  306. package/pennyfarthing_scripts/gate/__pycache__/__init__.cpython-314.pyc +0 -0
  307. package/pennyfarthing_scripts/gate/__pycache__/cli.cpython-314.pyc +0 -0
  308. package/pennyfarthing_scripts/gate/__pycache__/validate.cpython-314.pyc +0 -0
  309. package/pennyfarthing_scripts/gate/cli.py +56 -0
  310. package/pennyfarthing_scripts/gate/validate.py +266 -0
  311. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  312. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  313. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  314. package/pennyfarthing_scripts/git_group/__init__.py +0 -0
  315. package/pennyfarthing_scripts/git_group/cli.py +100 -0
  316. package/pennyfarthing_scripts/handoff/__init__.py +1 -0
  317. package/pennyfarthing_scripts/handoff/__pycache__/__init__.cpython-314.pyc +0 -0
  318. package/pennyfarthing_scripts/handoff/__pycache__/cli.cpython-314.pyc +0 -0
  319. package/pennyfarthing_scripts/handoff/__pycache__/complete_phase.cpython-314.pyc +0 -0
  320. package/pennyfarthing_scripts/handoff/__pycache__/gate_file.cpython-314.pyc +0 -0
  321. package/pennyfarthing_scripts/handoff/__pycache__/gate_runner.cpython-314.pyc +0 -0
  322. package/pennyfarthing_scripts/handoff/__pycache__/marker.cpython-314.pyc +0 -0
  323. package/pennyfarthing_scripts/handoff/__pycache__/resolve_gate.cpython-314.pyc +0 -0
  324. package/pennyfarthing_scripts/handoff/cli.py +120 -0
  325. package/pennyfarthing_scripts/handoff/complete_phase.py +155 -0
  326. package/pennyfarthing_scripts/handoff/gate_file.py +105 -0
  327. package/pennyfarthing_scripts/handoff/gate_runner.py +152 -0
  328. package/pennyfarthing_scripts/handoff/marker.py +109 -0
  329. package/pennyfarthing_scripts/handoff/resolve_gate.py +152 -0
  330. package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  331. package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
  332. package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
  333. package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
  334. package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
  335. package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
  336. package/pennyfarthing_scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
  337. package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
  338. package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
  339. package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  340. package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  341. package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
  342. package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
  343. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  344. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  345. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  346. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  347. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  348. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  349. package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
  350. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  351. package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
  352. package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  353. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  354. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  355. package/pennyfarthing_scripts/launch/__pycache__/__init__.cpython-314.pyc +0 -0
  356. package/pennyfarthing_scripts/launch/__pycache__/cli.cpython-314.pyc +0 -0
  357. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  358. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  359. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  360. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  361. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  362. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  363. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  364. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  365. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  366. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  367. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  368. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  369. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  370. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  371. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  372. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  373. package/pennyfarthing_scripts/prime/__pycache__/version_sentinel.cpython-314.pyc +0 -0
  374. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  375. package/pennyfarthing_scripts/prime/workflow.py +39 -0
  376. package/pennyfarthing_scripts/session/__init__.py +0 -0
  377. package/pennyfarthing_scripts/session/cli.py +87 -0
  378. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  379. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  380. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  381. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  382. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  383. package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  384. package/pennyfarthing_scripts/sprint/__pycache__/epic_update.cpython-314.pyc +0 -0
  385. package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
  386. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  387. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  388. package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
  389. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  390. package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
  391. package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  392. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  393. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  394. package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  395. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  396. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  397. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  398. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  399. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  400. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  401. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  402. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  403. package/pennyfarthing_scripts/tests/__pycache__/test_108_2_remove_handoff_fallback.cpython-314-pytest-9.0.2.pyc +0 -0
  404. package/pennyfarthing_scripts/tests/__pycache__/test_archive_epic.cpython-314-pytest-9.0.2.pyc +0 -0
  405. package/pennyfarthing_scripts/tests/__pycache__/test_bc.cpython-314-pytest-9.0.2.pyc +0 -0
  406. package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
  407. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  408. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  409. package/pennyfarthing_scripts/tests/__pycache__/test_cli_normalization.cpython-314-pytest-9.0.2.pyc +0 -0
  410. package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
  411. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  412. package/pennyfarthing_scripts/tests/__pycache__/test_epic_shard_validation.cpython-314-pytest-9.0.2.pyc +0 -0
  413. package/pennyfarthing_scripts/tests/__pycache__/test_gate_file_resolution.cpython-314-pytest-9.0.2.pyc +0 -0
  414. package/pennyfarthing_scripts/tests/__pycache__/test_gate_runner.cpython-314-pytest-9.0.2.pyc +0 -0
  415. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  416. package/pennyfarthing_scripts/tests/__pycache__/test_handoff_cli.cpython-314-pytest-9.0.2.pyc +0 -0
  417. package/pennyfarthing_scripts/tests/__pycache__/test_handoff_e2e.cpython-314-pytest-9.0.2.pyc +0 -0
  418. package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
  419. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  420. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  421. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  422. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  423. package/pennyfarthing_scripts/tests/__pycache__/test_resolve_gate_file_field.cpython-314-pytest-9.0.2.pyc +0 -0
  424. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  425. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_panel.cpython-314-pytest-9.0.2.pyc +0 -0
  426. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  427. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  428. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  429. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  430. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  431. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  432. package/pennyfarthing_scripts/tests/__pycache__/test_topology_loader.cpython-314-pytest-9.0.2.pyc +0 -0
  433. package/pennyfarthing_scripts/tests/__pycache__/test_tui_focus.cpython-314-pytest-9.0.2.pyc +0 -0
  434. package/pennyfarthing_scripts/tests/__pycache__/test_tui_panel_persistence.cpython-314-pytest-9.0.2.pyc +0 -0
  435. package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
  436. package/pennyfarthing_scripts/tests/__pycache__/test_version_sentinel.cpython-314-pytest-9.0.2.pyc +0 -0
  437. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  438. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  439. package/pennyfarthing_scripts/tests/test_108_1_gate_migration.py +540 -0
  440. package/pennyfarthing_scripts/tests/test_108_2_remove_handoff_fallback.py +339 -0
  441. package/pennyfarthing_scripts/tests/test_confidence_sm_evaluation.py +253 -0
  442. package/pennyfarthing_scripts/tests/test_confidence_sm_gate.py +315 -0
  443. package/pennyfarthing_scripts/tests/test_gate_file_resolution.py +341 -0
  444. package/pennyfarthing_scripts/tests/test_gate_runner.py +620 -0
  445. package/pennyfarthing_scripts/tests/test_handoff_cli.py +929 -0
  446. package/pennyfarthing_scripts/tests/test_handoff_e2e.py +454 -0
  447. package/pennyfarthing_scripts/tests/test_resolve_gate_file_field.py +464 -0
  448. package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
  449. package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
  450. package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
  451. package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
  452. package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  453. package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
  454. package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
  455. package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
  456. package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
  457. package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
  458. package/pennyfarthing_scripts/validate/adapters/skill_command.py +200 -0
  459. package/pennyfarthing_scripts/validate/adapters/workflow.py +64 -0
  460. package/pennyfarthing_scripts/validate/cli.py +15 -4
  461. package/packages/core/dist/scripts/benchmark-integration.d.ts +0 -182
  462. package/packages/core/dist/scripts/benchmark-integration.d.ts.map +0 -1
  463. package/packages/core/dist/scripts/benchmark-integration.js +0 -691
  464. package/packages/core/dist/scripts/benchmark-integration.js.map +0 -1
  465. package/packages/core/dist/scripts/job-fair-aggregator.d.ts +0 -150
  466. package/packages/core/dist/scripts/job-fair-aggregator.d.ts.map +0 -1
  467. package/packages/core/dist/scripts/job-fair-aggregator.js +0 -547
  468. package/packages/core/dist/scripts/job-fair-aggregator.js.map +0 -1
  469. package/pennyfarthing-dist/agents/handoff.md +0 -250
  470. package/pennyfarthing-dist/agents/sm-handoff.md +0 -152
  471. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -112
  472. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  473. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  474. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  475. package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
  476. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  477. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  478. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  479. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  480. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  481. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  482. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  483. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  484. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
  485. package/scripts/README.md +0 -41
@@ -0,0 +1,40 @@
1
+ ---
2
+ description: Detect and run CI locally
3
+ args: "[run] [--detect-only] [--dry-run]"
4
+ ---
5
+
6
+ # CI Operations
7
+
8
+ <purpose>
9
+ Run CI locally by detecting the project's CI system and executing appropriate commands.
10
+ </purpose>
11
+
12
+ ## Commands
13
+
14
+ ### `/pf-ci run`
15
+
16
+ Run CI locally (auto-detects CI system).
17
+
18
+ ```bash
19
+ # Run CI
20
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh
21
+
22
+ # Detect only
23
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh --detect-only
24
+
25
+ # Dry run
26
+ $CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh --dry-run
27
+ ```
28
+
29
+ ## CI System Detection
30
+
31
+ | Priority | System | Detection | Command |
32
+ |----------|--------|-----------|---------|
33
+ | 1 | Justfile | `just --list` shows `ci` recipe | `just ci` |
34
+ | 2 | GitHub Actions | `.github/workflows/*.yml` | `act` |
35
+ | 3 | GitLab CI | `.gitlab-ci.yml` | `gitlab-runner exec` |
36
+ | 4 | npm fallback | `package.json` | `npm run build && npm test && npm run lint` |
37
+
38
+ ## Related
39
+
40
+ - `/pf-check` — Run quality gates before handoff
@@ -1,32 +1,14 @@
1
1
  ---
2
- description: Close an epic - verify completion, update status, and archive context
2
+ deprecated: true
3
+ redirect: pf-epic
4
+ description: "DEPRECATED: Use /pf-epic close instead."
3
5
  ---
4
6
 
5
- # Close Epic
7
+ # /close-epic - DEPRECATED
6
8
 
7
- <purpose>
8
- Closes an epic after all stories are done. Updates sprint YAML, transitions Jira, archives context.
9
- Counterpart to `/start-epic`. Idempotent — safe to run multiple times.
10
- </purpose>
9
+ Epic commands have been consolidated into `/pf-epic`. Use:
11
10
 
12
- <usage>
13
- ```bash
14
- /close-epic 79 # Close epic 79
15
- /close-epic epic-79 # Also accepts epic-N format
16
- ```
17
- </usage>
18
-
19
- <workflow>
20
- 1. Parse epic ID (strip `epic-` prefix if present). Ask if not provided.
21
- 2. Read epic shard `sprint/epic-{JIRA_KEY}.yaml`, verify all stories `status: done`. Warn if incomplete.
22
- 3. Update epic: `status: done`, `completed_points: {sum of story points}`
23
- 4. Recalculate sprint summary totals in `sprint/current-sprint.yaml`
24
- 5. If epic has `jira:` key → `pf jira move {JIRA_KEY} "Done"`
25
- 6. If `sprint/context/context-epic-{N}.md` exists → move to `sprint/archive/`
26
- 7. Commit and push sprint changes
27
- </workflow>
28
-
29
- <related>
30
- - `/start-epic` — Start an epic (move to current sprint, generate context)
31
- - `/pf-sprint status` — View sprint progress
32
- </related>
11
+ | Old Command | New Command |
12
+ |-------------|-------------|
13
+ | `/start-epic <id>` | `/pf-epic start <id>` |
14
+ | `/close-epic <id>` | `/pf-epic close <id>` |
@@ -1,218 +1,14 @@
1
1
  ---
2
- description: Resume work from a saved checkpoint after context circuit breaker
2
+ deprecated: true
3
+ redirect: pf-session
4
+ description: "DEPRECATED: Use /pf-session continue instead."
3
5
  ---
4
6
 
5
- # Continue Session
7
+ # /continue-session - DEPRECATED
6
8
 
7
- <purpose>
8
- Recovery command for resuming work after the context circuit breaker (85% threshold) halts execution. Loads saved checkpoints and resumes the appropriate agent to continue where you left off.
9
- </purpose>
9
+ Session commands have been consolidated into `/pf-session`. Use:
10
10
 
11
- <when-to-use>
12
- - After context circuit breaker blocks further work
13
- - After a session timeout or interruption
14
- - When returning to work saved with `checkpoint_save`
15
- - To recover from any context overflow situation
16
- </when-to-use>
17
-
18
- <usage>
19
- ```
20
- /continue-session [--list] [--story-id ID]
21
- ```
22
-
23
- | Option | Description |
24
- |--------|-------------|
25
- | (none) | Interactive: show checkpoints, let user choose |
26
- | `--list` | Just display available checkpoints, don't restore |
27
- | `--story-id ID` | Resume specific story directly (skip selection) |
28
- </usage>
29
-
30
- <on-invoke>
31
-
32
- ## Step 1: Check for Circuit Breaker Agent
33
-
34
- First, check if the circuit breaker saved an active agent:
35
-
36
- ```bash
37
- source "${PROJECT_ROOT:-.}/.pennyfarthing/scripts/lib/checkpoint.sh"
38
- SAVED_AGENT=$(checkpoint_restore "circuit_breaker_agent")
39
- if [[ -n "$SAVED_AGENT" ]]; then
40
- echo "Circuit breaker saved agent: $SAVED_AGENT"
41
- else
42
- echo "No circuit breaker agent found"
43
- fi
44
- ```
45
-
46
- **If a saved agent is found:**
47
- - Invoke that agent's command (e.g., `/sm`, `/dev`, `/tea`, `/reviewer`)
48
- - The agent will be primed with FULL tier context (fresh session)
49
- - This restores the exact agent that was active when the circuit breaker triggered
50
-
51
- ```markdown
52
- ## Circuit Breaker Recovery
53
-
54
- The circuit breaker saved your active agent: **{SAVED_AGENT}**
55
-
56
- Invoking `/{SAVED_AGENT}` to restore with full context...
57
- ```
58
-
59
- Then invoke the Skill tool with skill="{SAVED_AGENT}" to activate the agent.
60
-
61
- **If no saved agent**, continue to Step 2 below.
62
-
63
- ## Step 2: Scan for Checkpoints
64
-
65
- Run bash to check for saved checkpoints:
66
-
67
- ```bash
68
- CHECKPOINT_FILE="${PROJECT_ROOT:-.}/.session/checkpoints.log"
69
- if [[ -f "$CHECKPOINT_FILE" ]]; then
70
- echo "=== Recent Checkpoints ==="
71
- tail -20 "$CHECKPOINT_FILE"
72
- else
73
- echo "No checkpoints found."
74
- fi
75
- ```
76
-
77
- ## Step 3: Parse and Present Options (if no saved agent)
78
-
79
- If checkpoints exist, parse and present them:
80
-
81
- ```markdown
82
- ## Available Checkpoints
83
-
84
- | # | Timestamp | Label | Data |
85
- |---|-----------|-------|------|
86
- | 1 | 2026-01-06T14:30:22Z | phase:3-4 | dev |
87
- | 2 | 2026-01-06T14:28:15Z | context:3-4 | Working on continue-session command |
88
-
89
- Which checkpoint would you like to restore? (Enter number or 'all' for most recent of each label)
90
- ```
91
-
92
- Output `<!-- CYCLIST:CHOICES:checkpoint -->` marker, then use AskUserQuestion to let user choose.
93
-
94
- ## Step 4: Restore Checkpoint
95
-
96
- Source the checkpoint utilities and restore:
97
-
98
- ```bash
99
- # Source checkpoint utilities
100
- source "${PROJECT_ROOT:-.}/.pennyfarthing/scripts/lib/checkpoint.sh"
101
-
102
- # Restore by label
103
- PHASE=$(checkpoint_restore "phase:${STORY_ID}")
104
- CONTEXT=$(checkpoint_restore "context:${STORY_ID}")
105
- FILES=$(checkpoint_restore "files:${STORY_ID}")
106
-
107
- echo "Restored checkpoint:"
108
- echo " Phase: $PHASE"
109
- echo " Context: $CONTEXT"
110
- echo " Files: $FILES"
111
- ```
112
-
113
- ## Step 5: Find Session File
114
-
115
- Look for the matching session file:
116
-
117
- ```bash
118
- SESSION_FILE=".session/${STORY_ID}-session.md"
119
- if [[ -f "$SESSION_FILE" ]]; then
120
- echo "Found session file: $SESSION_FILE"
121
- head -20 "$SESSION_FILE"
122
- else
123
- echo "Warning: No session file found for story $STORY_ID"
124
- fi
125
- ```
126
-
127
- ## Step 6: Resume Appropriate Agent
128
-
129
- Based on the restored phase, invoke the appropriate agent:
130
-
131
- | Phase | Agent | Command |
132
- |-------|-------|---------|
133
- | `setup` or `sm` | TEA | `/tea` |
134
- | `tea` or `red` | Dev | `/dev` |
135
- | `dev` or `green` | Reviewer | `/reviewer` |
136
- | `review` | Reviewer | `/reviewer` |
137
- | `approved` | SM | `/sm` (finish flow) |
138
-
139
- Present to user:
140
- ```markdown
141
- ## Session Restored
142
-
143
- **Story:** {STORY_ID} - {title from session}
144
- **Phase:** {PHASE}
145
- **Context:** {CONTEXT}
146
-
147
- Ready to continue with **{Agent Name}**.
148
-
149
- The checkpoint shows you were working on: {CONTEXT}
150
-
151
- [Continue] [Show more details] [Cancel]
152
- ```
153
-
154
- </on-invoke>
155
-
156
- <checkpoint-labels>
157
- Standard checkpoint labels include the story ID:
158
-
159
- | Label Pattern | Purpose | Example |
160
- |---------------|---------|---------|
161
- | `circuit_breaker_agent` | **Auto-saved** by circuit breaker | `circuit_breaker_agent` → `dev` |
162
- | `phase:{story-id}` | Workflow phase | `phase:3-4` → `dev` |
163
- | `context:{story-id}` | Work summary | `context:3-4` → `Implementing validation` |
164
- | `files:{story-id}` | Key files | `files:3-4` → `src/api.ts,src/utils.ts` |
165
- | `branch:{story-id}` | Git branch | `branch:3-4` → `feat/3-4-session` |
166
- </checkpoint-labels>
167
-
168
- <no-checkpoints>
169
- If no checkpoints are found:
170
-
171
- ```markdown
172
- ## No Checkpoints Found
173
-
174
- No saved checkpoints exist in `.session/checkpoints.log`.
175
-
176
- **Options:**
177
- 1. `/work` - Check for active session files
178
- 2. `/new-work` - Start fresh with a new story
179
- 3. Check git stash: `git stash list`
180
- ```
181
- </no-checkpoints>
182
-
183
- <stale-checkpoint-warning>
184
- If checkpoint is older than 24 hours:
185
-
186
- ```markdown
187
- ## Stale Checkpoint Warning
188
-
189
- The most recent checkpoint is from **{timestamp}** ({hours} hours ago).
190
-
191
- The codebase may have changed significantly since then.
192
-
193
- **Options:**
194
- 1. [Restore anyway] - Load this checkpoint
195
- 2. [Check git log] - See what changed since checkpoint
196
- 3. [Start fresh] - Begin new work with `/new-work`
197
- ```
198
- </stale-checkpoint-warning>
199
-
200
- <integration>
201
- This command completes the circuit breaker workflow:
202
-
203
- 1. Agent works normally
204
- 2. Context reaches 85% → circuit breaker triggers
205
- 3. Circuit breaker **automatically saves** the active agent to `circuit_breaker_agent` checkpoint
206
- 4. User starts new Claude session
207
- 5. User runs `/continue-session`
208
- 6. Command reads `circuit_breaker_agent` checkpoint
209
- 7. Agent is invoked with `/{agent}` command → FULL tier context injection
210
- 8. Agent resumes with complete persona, behavior guide, and session context
211
- </integration>
212
-
213
- <reference>
214
- - **Checkpoint API:** `.pennyfarthing/scripts/lib/checkpoint.sh`
215
- - **Circuit Breaker:** `scripts/hooks/context-circuit-breaker.sh`
216
- - **Related:** `/work`, `/new-work`
217
- - **Session Files:** `.session/{story-id}-session.md`
218
- </reference>
11
+ | Old Command | New Command |
12
+ |-------------|-------------|
13
+ | `/new-work` | `/pf-session new` |
14
+ | `/continue-session` | `/pf-session continue` |
@@ -1,358 +1,16 @@
1
1
  ---
2
- description: Create feature branches in both repos from a story
2
+ deprecated: true
3
+ redirect: pf-git
4
+ description: "DEPRECATED: Use /pf-git branches instead."
3
5
  ---
4
6
 
5
- # Create Branches from Story Workflow
7
+ # /create-branches-from-story - DEPRECATED
6
8
 
7
- This workflow helps you create coordinated feature branches in the subrepos (`API`, `UI`) from a story or feature request.
9
+ Git commands have been consolidated into `/pf-git`. Use:
8
10
 
9
- ## Prerequisites
10
-
11
- - [ ] Story/feature is defined
12
- - [ ] You're on the main branch in both repos
13
- - [ ] Working directory is clean (no uncommitted changes)
14
-
15
- ## Steps
16
-
17
- ### 1. Extract Branch Name from Story
18
-
19
- Read the story/feature description and create a branch name following the pattern:
20
- - Format: `feature/[story-id]-[short-description]`
21
- - Example: `feature/AUTH-123-user-login`
22
- - Use kebab-case for description
23
- - Keep it short but descriptive
24
-
25
- **Branch naming conventions:**
26
- - `feature/` - New features
27
- - `bugfix/` - Bug fixes
28
- - `hotfix/` - Urgent production fixes
29
- - `refactor/` - Code refactoring
30
- - `chore/` - Maintenance tasks
31
-
32
- ### 2. Determine Scope
33
-
34
- Ask: Does this story require changes in:
35
- - [ ] API only → Create branch in `API` only
36
- - [ ] UI only → Create branch in `UI` only
37
- - [ ] Both → Create branches in both repos
38
-
39
- ### 2b. Choose Branch Strategy
40
-
41
- **Option A: Standard (in-place branch switching)**
42
- - Use when: Working on one thing at a time
43
- - Pros: Simple, no extra directories
44
- - Cons: Must stash/commit before switching
45
-
46
- **Option B: Worktree (parallel development)**
47
- - Use when: Need to work on multiple things simultaneously
48
- - Pros: No branch switching, isolated work directories
49
- - Cons: Uses more disk space
50
-
51
- If you need parallel work, skip to **Step 3b** below.
52
-
53
- ### 3. Create Branches
54
-
55
- Run the following commands based on scope:
56
-
57
- #### For API Changes
58
-
59
- ```bash
60
- cd $CLAUDE_PROJECT_DIR/API
61
-
62
- # Ensure you're on main and up to date
63
- git checkout main
64
- git pull origin main
65
-
66
- # Create and checkout new branch
67
- git checkout -b feature/[story-id]-[description]
68
-
69
- # Push branch to remote
70
- git push -u origin feature/[story-id]-[description]
71
-
72
- # Confirm
73
- git branch --show-current
74
- ```
75
-
76
- #### For UI Changes
77
-
78
- ```bash
79
- cd $CLAUDE_PROJECT_DIR/UI
80
-
81
- # Ensure you're on main and up to date
82
- git checkout main
83
- git pull origin main
84
-
85
- # Create and checkout new branch
86
- git checkout -b feature/[story-id]-[description]
87
-
88
- # Push branch to remote
89
- git push -u origin feature/[story-id]-[description]
90
-
91
- # Confirm
92
- git branch --show-current
93
- ```
94
-
95
- ### 3b. Create Worktree (Alternative for Parallel Work)
96
-
97
- Use this instead of Step 3 if you need to work on multiple stories simultaneously:
98
-
99
- ```bash
100
- cd $CLAUDE_PROJECT_DIR
101
-
102
- # Create worktree with branches (both API and UI)
103
- ./scripts/git/worktree-manager.sh create [story-id] feat/[story-id]-[description]
104
-
105
- # Example: Story 5-2
106
- ./scripts/git/worktree-manager.sh create 5-2 feat/5-2-csv-import
107
-
108
- # For API-only work
109
- ./scripts/git/worktree-manager.sh create [story-id] feat/[story-id]-[description] api
110
-
111
- # For UI-only work
112
- ./scripts/git/worktree-manager.sh create [story-id] feat/[story-id]-[description] ui
113
- ```
114
-
115
- This creates:
116
- - Worktree at `worktrees/[story-id]/API` and/or `UI`
117
- - Session file at `.session/wt-[story-id].md`
118
- - Branches created from develop
119
-
120
- **Skip to Step 5b** if using worktrees.
121
-
122
- ### 4. Document the Work
123
-
124
- Edit `.session/{STORY_ID}-session.md`:
125
-
126
- ```markdown
127
- # Feature: [Story Title]
128
-
129
- **Story ID:** [STORY-123]
130
- **Repos:** [X] API [X] UI [ ] Both
131
- **Branches:**
132
- - API: feature/[story-id]-[description]
133
- - UI: feature/[story-id]-[description]
134
- **Date:** [YYYY-MM-DD]
135
-
136
- ## Goal
137
- [One sentence - what are you building?]
138
-
139
- ## Story Description
140
- [Copy relevant parts of the story]
141
-
142
- ## Acceptance Criteria
143
- - [ ] [Criterion 1]
144
- - [ ] [Criterion 2]
145
- - [ ] [Criterion 3]
146
-
147
- ## API Changes
148
- - Files: [list expected files]
149
- - Endpoints: [list new/modified endpoints]
150
- - Branch: feature/[story-id]-[description]
151
-
152
- ## UI Changes
153
- - Files: [list expected files]
154
- - Components: [list new/modified components]
155
- - Branch: feature/[story-id]-[description]
156
-
157
- ## Technical Notes
158
- [Any technical considerations, dependencies, etc.]
159
-
160
- ## Testing Plan
161
- - [ ] API unit tests
162
- - [ ] UI component tests
163
- - [ ] Integration tests
164
- - [ ] Manual testing
165
-
166
- ## Done
167
- - [ ] All acceptance criteria met
168
- - [ ] Tests pass
169
- - [ ] Code reviewed
170
- - [ ] Branches merged
171
- - [ ] Deployed
172
-
173
- ## Next Steps
174
- [What happens after this story is complete?]
175
- ```
176
-
177
- ### 6. Verify Setup
178
-
179
- Check that everything is ready:
180
-
181
- ```bash
182
- # Check API branch
183
- cd $CLAUDE_PROJECT_DIR/API
184
- git branch --show-current
185
- # Should show: feature/[story-id]-[description]
186
-
187
- # Check UI branch
188
- cd $CLAUDE_PROJECT_DIR/UI
189
- git branch --show-current
190
- # Should show: feature/[story-id]-[description]
191
-
192
- # Check Pennyfarthing session exists
193
- cd $CLAUDE_PROJECT_DIR
194
- ls -la .session/{STORY_ID}-session.md
195
- # Should exist
196
- ```
197
-
198
- ### 5b. Document Worktree Work (if using worktrees)
199
-
200
- The worktree manager already created a session file. Edit `.session/wt-[story-id].md` with the same content as Step 5.
201
-
202
- ### 7. Start Development
203
-
204
- You're now ready to start work:
205
-
206
- **Standard (in-place branches):**
207
- ```bash
208
- # Work in API
209
- cd $CLAUDE_PROJECT_DIR/API
210
- # You're on feature branch, AI loads session + API context
211
-
212
- # Work in UI
213
- cd $CLAUDE_PROJECT_DIR/UI
214
- # You're on feature branch, AI loads session + UI context
215
- ```
216
-
217
- **Worktree (parallel work):**
218
- ```bash
219
- # Work in API worktree
220
- cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/API
221
-
222
- # Work in UI worktree
223
- cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/UI
224
-
225
- # Get port configuration for dev servers
226
- eval $(./scripts/git/worktree-manager.sh ports [story-id])
227
- echo "API: $API_PORT, UI: $UI_PORT"
228
- ```
229
-
230
- ## Example: Complete Workflow
231
-
232
- ### Story: "Add User Authentication"
233
-
234
- ```bash
235
- # 1. Create API branch
236
- cd $CLAUDE_PROJECT_DIR/API
237
- git checkout main && git pull
238
- git checkout -b feature/AUTH-123-user-authentication
239
- git push -u origin feature/AUTH-123-user-authentication
240
-
241
- # 2. Create UI branch
242
- cd ../UI
243
- git checkout main && git pull
244
- git checkout -b feature/AUTH-123-user-authentication
245
- git push -u origin feature/AUTH-123-user-authentication
246
-
247
- # 3. Edit session file
248
- # Update .session/{STORY_ID}-session.md with story details
249
-
250
- # 5. Start working
251
- cd API
252
- # Implement auth endpoints
253
-
254
- cd ../UI
255
- # Implement login UI
256
- ```
257
-
258
- ## Tips
259
-
260
- ### Branch Naming Best Practices
261
-
262
- - **Be consistent** - Use same branch name in both repos for related work
263
- - **Include story ID** - Makes it easy to track back to requirements
264
- - **Keep it short** - But descriptive enough to understand at a glance
265
- - **Use prefixes** - feature/, bugfix/, etc. for clarity
266
-
267
- ### When to Create Branches
268
-
269
- - **Both repos affected** - Create matching branches in both
270
- - **Single repo** - Only create branch where needed
271
- - **Uncertain** - Start with both, delete unused later
272
-
273
- ### Branch Cleanup
274
-
275
- After merging:
276
- ```bash
277
- # Delete local branch
278
- git branch -d feature/[story-id]-[description]
279
-
280
- # Delete remote branch
281
- git push origin --delete feature/[story-id]-[description]
282
- ```
283
-
284
- ## Troubleshooting
285
-
286
- ### Already have uncommitted changes?
287
-
288
- ```bash
289
- # Stash changes
290
- git stash
291
-
292
- # Create branch
293
- git checkout -b feature/[story-id]-[description]
294
-
295
- # Apply stashed changes
296
- git stash pop
297
- ```
298
-
299
- ### Wrong branch name?
300
-
301
- ```bash
302
- # Rename local branch
303
- git branch -m old-name new-name
304
-
305
- # Delete old remote branch
306
- git push origin --delete old-name
307
-
308
- # Push new branch
309
- git push -u origin new-name
310
- ```
311
-
312
- ### Forgot to pull main first?
313
-
314
- ```bash
315
- # Fetch latest
316
- git fetch origin
317
-
318
- # Rebase your branch on latest main
319
- git rebase origin/main
320
- ```
321
-
322
- ## Integration with Pennyfarthing
323
-
324
- This workflow integrates with the solo dev Pennyfarthing structure:
325
-
326
- 1. **Branches** - Git manages code isolation
327
- 2. **Session** - Pennyfarthing tracks work progress
328
- 3. **Context** - Repo context files guide AI
329
- 4. **Archive** - When done, archive session and delete branches
330
-
331
- **Workflow:**
332
- ```
333
- Story → Branches → Pennyfarthing Session → Development → Merge → Archive
334
- ```
335
-
336
- ## Quick Reference
337
-
338
- ```bash
339
- # Create API branch
340
- cd API && git checkout main && git pull && \
341
- git checkout -b feature/STORY-ID-description && \
342
- git push -u origin feature/STORY-ID-description
343
-
344
- # Create UI branch
345
- cd ../UI && git checkout main && git pull && \
346
- git checkout -b feature/STORY-ID-description && \
347
- git push -u origin feature/STORY-ID-description
348
-
349
- # Edit session
350
- # Update .session/{STORY_ID}-session.md
351
-
352
- # Start work
353
- cd API # or UI
354
- ```
355
-
356
- ---
357
-
358
- **You're ready to start development with coordinated branches and Pennyfarthing tracking!**
11
+ | Old Command | New Command |
12
+ |-------------|-------------|
13
+ | `/repo-status` | `/pf-git status` |
14
+ | `/git-cleanup` | `/pf-git cleanup` |
15
+ | `/create-branches-from-story` | `/pf-git branches` |
16
+ | `/release` | `/pf-git release` |
@@ -0,0 +1,28 @@
1
+ ---
2
+ description: Domain documentation management
3
+ args: "[update]"
4
+ ---
5
+
6
+ # Documentation Operations
7
+
8
+ <purpose>
9
+ Manage domain documentation files. Currently supports updating CLAUDE-*.md domain documentation files to reflect the current state of the codebase.
10
+ </purpose>
11
+
12
+ ## Commands
13
+
14
+ ### `/pf-docs update`
15
+
16
+ Update CLAUDE-*.md domain documentation files based on current codebase.
17
+
18
+ Scans the relevant files for each domain and updates documentation with:
19
+ - Service files and their main functions
20
+ - Handler files and their endpoints
21
+ - Model files and their structs
22
+ - Worker files (if applicable)
23
+ - Test files
24
+
25
+ ## Related
26
+
27
+ - `/pf-help` — Context-aware help
28
+ - `/tech-writer` — Technical Writer agent