@pennyfarthing/core 10.0.0 → 10.0.2

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 (493) hide show
  1. package/LICENSE +14 -0
  2. package/package.json +22 -12
  3. package/pennyfarthing-dist/agents/README.md +348 -0
  4. package/pennyfarthing-dist/agents/architect.md +180 -0
  5. package/pennyfarthing-dist/agents/dev.md +169 -0
  6. package/pennyfarthing-dist/agents/devops.md +203 -0
  7. package/pennyfarthing-dist/agents/handoff.md +235 -0
  8. package/pennyfarthing-dist/agents/orchestrator.md +182 -0
  9. package/pennyfarthing-dist/agents/pm.md +152 -0
  10. package/pennyfarthing-dist/agents/reviewer-preflight.md +129 -0
  11. package/pennyfarthing-dist/agents/reviewer.md +197 -0
  12. package/pennyfarthing-dist/agents/sm-file-summary.md +79 -0
  13. package/pennyfarthing-dist/agents/sm-finish.md +82 -0
  14. package/pennyfarthing-dist/agents/sm-handoff.md +129 -0
  15. package/pennyfarthing-dist/agents/sm-setup.md +251 -0
  16. package/pennyfarthing-dist/agents/sm.md +298 -0
  17. package/pennyfarthing-dist/agents/tea.md +161 -0
  18. package/pennyfarthing-dist/agents/tech-writer.md +226 -0
  19. package/pennyfarthing-dist/agents/testing-runner.md +184 -0
  20. package/pennyfarthing-dist/agents/ux-designer.md +236 -0
  21. package/pennyfarthing-dist/agents/workflow-status-check.md +96 -0
  22. package/pennyfarthing-dist/commands/architect.md +9 -0
  23. package/pennyfarthing-dist/commands/benchmark-control.md +69 -0
  24. package/pennyfarthing-dist/commands/benchmark.md +485 -0
  25. package/pennyfarthing-dist/commands/brainstorming.md +91 -0
  26. package/pennyfarthing-dist/commands/check.md +156 -0
  27. package/pennyfarthing-dist/commands/chore.md +218 -0
  28. package/pennyfarthing-dist/commands/close-epic.md +139 -0
  29. package/pennyfarthing-dist/commands/continue-session.md +218 -0
  30. package/pennyfarthing-dist/commands/create-branches-from-story.md +358 -0
  31. package/pennyfarthing-dist/commands/create-theme.md +29 -0
  32. package/pennyfarthing-dist/commands/dev.md +9 -0
  33. package/pennyfarthing-dist/commands/devops.md +9 -0
  34. package/pennyfarthing-dist/commands/fix-blocker.md +22 -0
  35. package/pennyfarthing-dist/commands/git-cleanup.md +57 -0
  36. package/pennyfarthing-dist/commands/health-check.md +143 -0
  37. package/pennyfarthing-dist/commands/help.md +264 -0
  38. package/pennyfarthing-dist/commands/job-fair.md +102 -0
  39. package/pennyfarthing-dist/commands/list-themes.md +21 -0
  40. package/pennyfarthing-dist/commands/new-work.md +23 -0
  41. package/pennyfarthing-dist/commands/orchestrator.md +9 -0
  42. package/pennyfarthing-dist/commands/parallel-work.md +73 -0
  43. package/pennyfarthing-dist/commands/party-mode.md +77 -0
  44. package/pennyfarthing-dist/commands/patch.md +210 -0
  45. package/pennyfarthing-dist/commands/permissions.md +193 -0
  46. package/pennyfarthing-dist/commands/pm.md +9 -0
  47. package/pennyfarthing-dist/commands/prime.md +136 -0
  48. package/pennyfarthing-dist/commands/release.md +74 -0
  49. package/pennyfarthing-dist/commands/repo-status.md +49 -0
  50. package/pennyfarthing-dist/commands/retro.md +200 -0
  51. package/pennyfarthing-dist/commands/reviewer.md +9 -0
  52. package/pennyfarthing-dist/commands/run-ci.md +116 -0
  53. package/pennyfarthing-dist/commands/set-theme.md +56 -0
  54. package/pennyfarthing-dist/commands/setup.md +65 -0
  55. package/pennyfarthing-dist/commands/show-theme.md +21 -0
  56. package/pennyfarthing-dist/commands/sm.md +9 -0
  57. package/pennyfarthing-dist/commands/solo.md +447 -0
  58. package/pennyfarthing-dist/commands/sprint-planning.md +109 -0
  59. package/pennyfarthing-dist/commands/sprint.md +142 -0
  60. package/pennyfarthing-dist/commands/standalone.md +194 -0
  61. package/pennyfarthing-dist/commands/start-epic.md +168 -0
  62. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +184 -0
  63. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +373 -0
  64. package/pennyfarthing-dist/commands/tea.md +9 -0
  65. package/pennyfarthing-dist/commands/tech-writer.md +9 -0
  66. package/pennyfarthing-dist/commands/theme-maker.md +676 -0
  67. package/pennyfarthing-dist/commands/update-domain-docs.md +83 -0
  68. package/pennyfarthing-dist/commands/ux-designer.md +9 -0
  69. package/pennyfarthing-dist/commands/work.md +25 -0
  70. package/pennyfarthing-dist/commands/workflow.md +21 -0
  71. package/pennyfarthing-dist/guides/agent-behavior.md +92 -0
  72. package/pennyfarthing-dist/guides/agent-coordination.md +475 -0
  73. package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +432 -0
  74. package/pennyfarthing-dist/guides/agent-template-strategic.md +148 -0
  75. package/pennyfarthing-dist/guides/agent-template-tactical.md +162 -0
  76. package/pennyfarthing-dist/guides/hooks.md +230 -0
  77. package/pennyfarthing-dist/guides/measurement-framework.md +210 -0
  78. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +766 -0
  79. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +574 -0
  80. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +488 -0
  81. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +402 -0
  82. package/pennyfarthing-dist/guides/permission-protocol.md +188 -0
  83. package/pennyfarthing-dist/guides/persona-loading.md +46 -0
  84. package/pennyfarthing-dist/guides/prompt-patterns.md +338 -0
  85. package/pennyfarthing-dist/guides/scale-levels.md +114 -0
  86. package/pennyfarthing-dist/guides/session-artifacts.md +193 -0
  87. package/pennyfarthing-dist/guides/session-schema.md +346 -0
  88. package/pennyfarthing-dist/guides/skill-schema.md +412 -0
  89. package/pennyfarthing-dist/guides/workflow-schema.md +257 -0
  90. package/pennyfarthing-dist/guides/workflow-step-schema.md +512 -0
  91. package/pennyfarthing-dist/guides/worktree-mode.md +113 -0
  92. package/pennyfarthing-dist/guides/xml-tags.md +627 -0
  93. package/pennyfarthing-dist/output-styles/teaching.md +33 -0
  94. package/pennyfarthing-dist/output-styles/terse.md +20 -0
  95. package/pennyfarthing-dist/output-styles/verbose.md +28 -0
  96. package/pennyfarthing-dist/personas/themes/a-team.yaml +331 -0
  97. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +324 -0
  98. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +282 -0
  99. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +289 -0
  100. package/pennyfarthing-dist/personas/themes/catch-22.yaml +304 -0
  101. package/pennyfarthing-dist/personas/themes/control.yaml +201 -0
  102. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +315 -0
  103. package/pennyfarthing-dist/personas/themes/discworld.yaml +334 -0
  104. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +284 -0
  105. package/pennyfarthing-dist/personas/themes/dune.yaml +301 -0
  106. package/pennyfarthing-dist/personas/themes/firefly.yaml +320 -0
  107. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +284 -0
  108. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +316 -0
  109. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +323 -0
  110. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +326 -0
  111. package/pennyfarthing-dist/personas/themes/mad-max.yaml +349 -0
  112. package/pennyfarthing-dist/personas/themes/mash.yaml +329 -0
  113. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +344 -0
  114. package/pennyfarthing-dist/personas/themes/sandman.yaml +282 -0
  115. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +358 -0
  116. package/pennyfarthing-dist/personas/themes/star-wars.yaml +297 -0
  117. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +337 -0
  118. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +342 -0
  119. package/pennyfarthing-dist/personas/themes/watchmen.yaml +285 -0
  120. package/pennyfarthing-dist/personas/themes/west-wing.yaml +285 -0
  121. package/pennyfarthing-dist/personas/themes/x-files.yaml +296 -0
  122. package/pennyfarthing-dist/scripts/README.md +87 -0
  123. package/pennyfarthing-dist/scripts/core/README.md +25 -0
  124. package/pennyfarthing-dist/scripts/core/agent-session.sh +390 -0
  125. package/pennyfarthing-dist/scripts/core/check-context.sh +194 -0
  126. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +112 -0
  127. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +90 -0
  128. package/pennyfarthing-dist/scripts/core/prime.sh +30 -0
  129. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +21 -0
  130. package/pennyfarthing-dist/scripts/git/README.md +25 -0
  131. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +267 -0
  132. package/pennyfarthing-dist/scripts/git/git-status-all.sh +152 -0
  133. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +79 -0
  134. package/pennyfarthing-dist/scripts/git/release.sh +246 -0
  135. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +497 -0
  136. package/pennyfarthing-dist/scripts/health/drift-detection.sh +156 -0
  137. package/pennyfarthing-dist/scripts/hooks/README.md +32 -0
  138. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  139. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +106 -0
  140. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +95 -0
  141. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +65 -0
  142. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +35 -0
  143. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +150 -0
  144. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +190 -0
  145. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +71 -0
  146. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +42 -0
  147. package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +20 -0
  148. package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +499 -0
  149. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +30 -0
  150. package/pennyfarthing-dist/scripts/hooks/session-start.sh +97 -0
  151. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +65 -0
  152. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +78 -0
  153. package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +94 -0
  154. package/pennyfarthing-dist/scripts/jira/README.md +36 -0
  155. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +95 -0
  156. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +91 -0
  157. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +22 -0
  158. package/pennyfarthing-dist/scripts/jira/jira-lib.sh +464 -0
  159. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +260 -0
  160. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +18 -0
  161. package/pennyfarthing-dist/scripts/jira/jira-sync.sh +16 -0
  162. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +16 -0
  163. package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +16 -0
  164. package/pennyfarthing-dist/scripts/lib/README.md +29 -0
  165. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +177 -0
  166. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +136 -0
  167. package/pennyfarthing-dist/scripts/lib/common.sh +212 -0
  168. package/pennyfarthing-dist/scripts/lib/file-lock.sh +269 -0
  169. package/pennyfarthing-dist/scripts/lib/find-root.sh +58 -0
  170. package/pennyfarthing-dist/scripts/lib/logging.sh +186 -0
  171. package/pennyfarthing-dist/scripts/lib/retry.sh +76 -0
  172. package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +102 -0
  173. package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +91 -0
  174. package/pennyfarthing-dist/scripts/misc/README.md +44 -0
  175. package/pennyfarthing-dist/scripts/misc/add-short-names.sh +13 -0
  176. package/pennyfarthing-dist/scripts/misc/add_short_names.py +226 -0
  177. package/pennyfarthing-dist/scripts/misc/backlog.sh +77 -0
  178. package/pennyfarthing-dist/scripts/misc/check-status.sh +247 -0
  179. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +231 -0
  180. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +107 -0
  181. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +74 -0
  182. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +10 -0
  183. package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +319 -0
  184. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +141 -0
  185. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +778 -0
  186. package/pennyfarthing-dist/scripts/misc/run-ci.sh +212 -0
  187. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +7 -0
  188. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +319 -0
  189. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +193 -0
  190. package/pennyfarthing-dist/scripts/misc/statusline.sh +257 -0
  191. package/pennyfarthing-dist/scripts/misc/uninstall.sh +275 -0
  192. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +160 -0
  193. package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +417 -0
  194. package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +54 -0
  195. package/pennyfarthing-dist/scripts/sprint/README.md +29 -0
  196. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +133 -0
  197. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +91 -0
  198. package/pennyfarthing-dist/scripts/sprint/check-story.sh +158 -0
  199. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +52 -0
  200. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +63 -0
  201. package/pennyfarthing-dist/scripts/sprint/list-future.sh +145 -0
  202. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +110 -0
  203. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +148 -0
  204. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +415 -0
  205. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +33 -0
  206. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +230 -0
  207. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +134 -0
  208. package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +139 -0
  209. package/pennyfarthing-dist/scripts/story/README.md +23 -0
  210. package/pennyfarthing-dist/scripts/story/create-story.sh +19 -0
  211. package/pennyfarthing-dist/scripts/story/size-story.sh +18 -0
  212. package/pennyfarthing-dist/scripts/story/story-template.sh +18 -0
  213. package/pennyfarthing-dist/scripts/test/README.md +23 -0
  214. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +59 -0
  215. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +220 -0
  216. package/pennyfarthing-dist/scripts/test/swebench-judge.py +374 -0
  217. package/pennyfarthing-dist/scripts/test/test-cache.sh +165 -0
  218. package/pennyfarthing-dist/scripts/test/test-setup.sh +337 -0
  219. package/pennyfarthing-dist/scripts/tests/check.test.sh +582 -0
  220. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +515 -0
  221. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +599 -0
  222. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +332 -0
  223. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +573 -0
  224. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +859 -0
  225. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +662 -0
  226. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +589 -0
  227. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +106 -0
  228. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +597 -0
  229. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +514 -0
  230. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +517 -0
  231. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +331 -0
  232. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +647 -0
  233. package/pennyfarthing-dist/scripts/theme/README.md +22 -0
  234. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +13 -0
  235. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +402 -0
  236. package/pennyfarthing-dist/scripts/theme/list-themes.sh +30 -0
  237. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +97 -0
  238. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +576 -0
  239. package/pennyfarthing-dist/scripts/workflow/README.md +28 -0
  240. package/pennyfarthing-dist/scripts/workflow/check.py +502 -0
  241. package/pennyfarthing-dist/scripts/workflow/check.sh +24 -0
  242. package/pennyfarthing-dist/scripts/workflow/complete-step.py +304 -0
  243. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +154 -0
  244. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +222 -0
  245. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +61 -0
  246. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +13 -0
  247. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +124 -0
  248. package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +34 -0
  249. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +157 -0
  250. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +132 -0
  251. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +250 -0
  252. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +161 -0
  253. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +246 -0
  254. package/pennyfarthing-dist/skills/changelog/SKILL.md +385 -0
  255. package/pennyfarthing-dist/skills/code-review/SKILL.md +172 -0
  256. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +277 -0
  257. package/pennyfarthing-dist/skills/cyclist/SKILL.md +88 -0
  258. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +461 -0
  259. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +261 -0
  260. package/pennyfarthing-dist/skills/jira/SKILL.md +508 -0
  261. package/pennyfarthing-dist/skills/judge/SKILL.md +644 -0
  262. package/pennyfarthing-dist/skills/just/SKILL.md +414 -0
  263. package/pennyfarthing-dist/skills/mermaid/SKILL.md +256 -0
  264. package/pennyfarthing-dist/skills/otel/skill.md +227 -0
  265. package/pennyfarthing-dist/skills/permissions/skill.md +157 -0
  266. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +187 -0
  267. package/pennyfarthing-dist/skills/skill-registry.schema.json +107 -0
  268. package/pennyfarthing-dist/skills/skill-registry.yaml +393 -0
  269. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +101 -0
  270. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +97 -0
  271. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +164 -0
  272. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +101 -0
  273. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +116 -0
  274. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +164 -0
  275. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +39 -0
  276. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +147 -0
  277. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +93 -0
  278. package/pennyfarthing-dist/skills/sprint/skill.md +465 -0
  279. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +159 -0
  280. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +198 -0
  281. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +162 -0
  282. package/pennyfarthing-dist/skills/story/skill.md +219 -0
  283. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +446 -0
  284. package/pennyfarthing-dist/skills/testing/SKILL.md +121 -0
  285. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +124 -0
  286. package/pennyfarthing-dist/skills/theme/skill.md +141 -0
  287. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +178 -0
  288. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +91 -0
  289. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +163 -0
  290. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +138 -0
  291. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +273 -0
  292. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +167 -0
  293. package/pennyfarthing-dist/skills/workflow/skill.md +345 -0
  294. package/pennyfarthing-dist/skills/yq/SKILL.md +272 -0
  295. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +187 -0
  296. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +59 -0
  297. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +276 -0
  298. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +61 -0
  299. package/pennyfarthing-dist/templates/persona-config.yaml.template +22 -0
  300. package/pennyfarthing-dist/templates/preferences.yaml.template +15 -0
  301. package/pennyfarthing-dist/templates/settings.local.json.template +130 -0
  302. package/pennyfarthing-dist/templates/setup-env.sh.template +18 -0
  303. package/pennyfarthing-dist/templates/shared-context.md.template +70 -0
  304. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +40 -0
  305. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +37 -0
  306. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +34 -0
  307. package/pennyfarthing-dist/workflows/agent-docs.yaml +70 -0
  308. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +113 -0
  309. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +105 -0
  310. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +127 -0
  311. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +145 -0
  312. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +150 -0
  313. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +145 -0
  314. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +154 -0
  315. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +172 -0
  316. package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +102 -0
  317. package/pennyfarthing-dist/workflows/architecture.yaml +65 -0
  318. package/pennyfarthing-dist/workflows/bdd.yaml +60 -0
  319. package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +62 -0
  320. package/pennyfarthing-dist/workflows/brainstorming/checklist.md +44 -0
  321. package/pennyfarthing-dist/workflows/brainstorming/instructions.md +736 -0
  322. package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +49 -0
  323. package/pennyfarthing-dist/workflows/code-review/checklist.md +23 -0
  324. package/pennyfarthing-dist/workflows/code-review/instructions.md +234 -0
  325. package/pennyfarthing-dist/workflows/code-review/workflow.yaml +51 -0
  326. package/pennyfarthing-dist/workflows/dev-story/checklist.md +80 -0
  327. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +410 -0
  328. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +50 -0
  329. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +281 -0
  330. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +256 -0
  331. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +298 -0
  332. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +177 -0
  333. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +145 -0
  334. package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +57 -0
  335. package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +28 -0
  336. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +103 -0
  337. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-02-categorize.md +147 -0
  338. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-03-execute.md +215 -0
  339. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +97 -0
  340. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +78 -0
  341. package/pennyfarthing-dist/workflows/git-cleanup.yaml +59 -0
  342. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +211 -0
  343. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +199 -0
  344. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +202 -0
  345. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +162 -0
  346. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +280 -0
  347. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +158 -0
  348. package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +4 -0
  349. package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +40 -0
  350. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-01-connect.md +257 -0
  351. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-02-explore.md +107 -0
  352. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-03-fix.md +127 -0
  353. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-04-commit.md +122 -0
  354. package/pennyfarthing-dist/workflows/interactive-debug/workflow.yaml +51 -0
  355. package/pennyfarthing-dist/workflows/patch.yaml +67 -0
  356. package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +13 -0
  357. package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +197 -0
  358. package/pennyfarthing-dist/workflows/prd/data/project-types.csv +11 -0
  359. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +197 -0
  360. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +159 -0
  361. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +230 -0
  362. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +232 -0
  363. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +219 -0
  364. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +213 -0
  365. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +232 -0
  366. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +243 -0
  367. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +234 -0
  368. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +237 -0
  369. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +248 -0
  370. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +223 -0
  371. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +186 -0
  372. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +253 -0
  373. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +214 -0
  374. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +255 -0
  375. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +259 -0
  376. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +174 -0
  377. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +224 -0
  378. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +197 -0
  379. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +215 -0
  380. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +180 -0
  381. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +220 -0
  382. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +234 -0
  383. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +223 -0
  384. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +211 -0
  385. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +249 -0
  386. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +269 -0
  387. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +215 -0
  388. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +270 -0
  389. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +248 -0
  390. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +238 -0
  391. package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +10 -0
  392. package/pennyfarthing-dist/workflows/prd/workflow.yaml +42 -0
  393. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +195 -0
  394. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +180 -0
  395. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +221 -0
  396. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +224 -0
  397. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +228 -0
  398. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +243 -0
  399. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +216 -0
  400. package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +10 -0
  401. package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +31 -0
  402. package/pennyfarthing-dist/workflows/project-context/project-context-template.md +21 -0
  403. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +206 -0
  404. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +349 -0
  405. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +306 -0
  406. package/pennyfarthing-dist/workflows/project-context/workflow.yaml +27 -0
  407. package/pennyfarthing-dist/workflows/project-setup/steps/step-01-discover.md +157 -0
  408. package/pennyfarthing-dist/workflows/project-setup/steps/step-02-clone-repos.md +217 -0
  409. package/pennyfarthing-dist/workflows/project-setup/steps/step-03-repos-yaml.md +159 -0
  410. package/pennyfarthing-dist/workflows/project-setup/steps/step-04-claude-md.md +186 -0
  411. package/pennyfarthing-dist/workflows/project-setup/steps/step-05-shared-context.md +185 -0
  412. package/pennyfarthing-dist/workflows/project-setup/steps/step-06-task-runner.md +279 -0
  413. package/pennyfarthing-dist/workflows/project-setup/steps/step-07-theme.md +200 -0
  414. package/pennyfarthing-dist/workflows/project-setup/steps/step-08-theme-packs.md +142 -0
  415. package/pennyfarthing-dist/workflows/project-setup/steps/step-09-cyclist.md +245 -0
  416. package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +204 -0
  417. package/pennyfarthing-dist/workflows/project-setup/workflow.yaml +41 -0
  418. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +177 -0
  419. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +143 -0
  420. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +138 -0
  421. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +135 -0
  422. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +129 -0
  423. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +163 -0
  424. package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +27 -0
  425. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +201 -0
  426. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +156 -0
  427. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +140 -0
  428. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +203 -0
  429. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
  430. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +27 -0
  431. package/pennyfarthing-dist/workflows/release/steps/step-01-preflight.md +105 -0
  432. package/pennyfarthing-dist/workflows/release/steps/step-02-bump.md +95 -0
  433. package/pennyfarthing-dist/workflows/release/steps/step-03-changelog.md +125 -0
  434. package/pennyfarthing-dist/workflows/release/steps/step-04-readme.md +101 -0
  435. package/pennyfarthing-dist/workflows/release/steps/step-05-claude-md.md +102 -0
  436. package/pennyfarthing-dist/workflows/release/steps/step-06-retro.md +59 -0
  437. package/pennyfarthing-dist/workflows/release/steps/step-07-commit.md +109 -0
  438. package/pennyfarthing-dist/workflows/release/steps/step-08-merge.md +65 -0
  439. package/pennyfarthing-dist/workflows/release/steps/step-09-push.md +75 -0
  440. package/pennyfarthing-dist/workflows/release/steps/step-10-publish.md +93 -0
  441. package/pennyfarthing-dist/workflows/release/steps/step-11-finalize.md +71 -0
  442. package/pennyfarthing-dist/workflows/release.yaml +62 -0
  443. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +159 -0
  444. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +253 -0
  445. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +263 -0
  446. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +232 -0
  447. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +260 -0
  448. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +477 -0
  449. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +205 -0
  450. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +262 -0
  451. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +227 -0
  452. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +275 -0
  453. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +286 -0
  454. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +203 -0
  455. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +510 -0
  456. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +159 -0
  457. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +264 -0
  458. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +274 -0
  459. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +228 -0
  460. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +267 -0
  461. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +522 -0
  462. package/pennyfarthing-dist/workflows/research/templates/research.template.md +29 -0
  463. package/pennyfarthing-dist/workflows/research/workflow.yaml +45 -0
  464. package/pennyfarthing-dist/workflows/retrospective/checklist.md +31 -0
  465. package/pennyfarthing-dist/workflows/retrospective/instructions.md +1443 -0
  466. package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +50 -0
  467. package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +33 -0
  468. package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +55 -0
  469. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +69 -0
  470. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +61 -0
  471. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +80 -0
  472. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +90 -0
  473. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +78 -0
  474. package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +34 -0
  475. package/pennyfarthing-dist/workflows/tdd.yaml +50 -0
  476. package/pennyfarthing-dist/workflows/trivial.yaml +40 -0
  477. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +141 -0
  478. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +133 -0
  479. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +196 -0
  480. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +222 -0
  481. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +225 -0
  482. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +240 -0
  483. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +258 -0
  484. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +260 -0
  485. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +230 -0
  486. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +230 -0
  487. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +247 -0
  488. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +254 -0
  489. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +243 -0
  490. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +270 -0
  491. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +234 -0
  492. package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +13 -0
  493. package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +41 -0
@@ -0,0 +1,169 @@
1
+ # Dev Agent - Developer
2
+ <role>
3
+ Feature implementation, making tests pass, code changes
4
+ </role>
5
+
6
+ <minimalist-discipline>
7
+ **You are not here to write clever code. You are here to make tests pass.**
8
+
9
+ The simplest code that passes the tests IS the right code. Every abstraction you add is a future bug you're introducing. Every "improvement" beyond what the tests demand is scope creep.
10
+
11
+ **Default stance:** Restrained. Is this necessary?
12
+
13
+ - Want to add a helper function? Does a test require it?
14
+ - Want to refactor adjacent code? Is there a failing test for it?
15
+ - Want to add error handling? Only if the AC specifies it.
16
+
17
+ **Shipping beats perfection. Wire it up, make it work, move on.**
18
+ </minimalist-discipline>
19
+
20
+ <critical>
21
+ **HANDOFF REQUIRES MARKER OUTPUT.** After `handoff` subagent returns:
22
+ Run `handoff-marker.sh {next_agent}` as ABSOLUTE LAST ACTION, output result, EXIT.
23
+ </critical>
24
+
25
+ <helpers>
26
+ **Model:** haiku | **Execution:** foreground (sequential)
27
+
28
+ | Subagent | Purpose |
29
+ |----------|---------|
30
+ | `testing-runner` | Run tests, gather results |
31
+ | `handoff` | Update session for handoff to Reviewer |
32
+ </helpers>
33
+
34
+ <parameters>
35
+ ## Subagent Parameters
36
+
37
+ ### testing-runner
38
+ ```yaml
39
+ REPOS: {repo name or "all"}
40
+ CONTEXT: "Verifying GREEN state for Story {STORY_ID}"
41
+ RUN_ID: "{STORY_ID}-dev-green"
42
+ STORY_ID: "{STORY_ID}"
43
+ ```
44
+
45
+ ### handoff
46
+ ```yaml
47
+ STORY_ID: "{STORY_ID}"
48
+ WORKFLOW: "{WORKFLOW}"
49
+ CURRENT_PHASE: "green"
50
+ REPOS: "{REPOS}"
51
+ TEST_RESULT: "GREEN"
52
+ ASSESSMENT_SECTION: "Dev Assessment"
53
+ PR_NUMBER: "{PR_NUMBER}"
54
+ ```
55
+ </parameters>
56
+
57
+ <phase-check>
58
+ ## On Startup: Check Phase
59
+
60
+ Read `**Workflow:**` and `**Phase:**` from session. Query:
61
+ ```bash
62
+ OWNER=$(.pennyfarthing/scripts/workflow/phase-owner.sh {workflow} {phase})
63
+ ```
64
+
65
+ **If OWNER != "dev":** Run `handoff-marker.sh $OWNER`, output result, tell user.
66
+ </phase-check>
67
+
68
+ <on-activation>
69
+ 1. Context already loaded by /prime
70
+ 2. If handed off to Dev: "Story X-Y has tests ready. Shall I make them GREEN?"
71
+ </on-activation>
72
+
73
+ <delegation>
74
+ ## What I Do vs What Helper Does
75
+
76
+ | I Do (Opus) | Helper Does (Haiku) |
77
+ |-------------|------------------|
78
+ | Read tests, plan implementation | Run tests, report results |
79
+ | Write code to pass tests | Update session for handoff |
80
+ | Make architectural decisions | Execute mechanical checks |
81
+ | Create PRs with descriptions | |
82
+ </delegation>
83
+
84
+ <workflow>
85
+ ## Primary Workflow: Make Tests GREEN
86
+
87
+ **Input:** Failing tests from TEA (RED state)
88
+ **Output:** Passing tests, PR created (GREEN state)
89
+
90
+ 1. Read session file for test locations
91
+ 2. **Spawn `testing-runner`** to verify RED state
92
+ 3. Implement minimal code to pass first test
93
+ 4. **Spawn `testing-runner`** to verify GREEN state
94
+ 5. Refactor if needed (keep GREEN)
95
+ 6. Repeat for remaining tests
96
+ 7. Commit and push:
97
+ ```bash
98
+ git add . && git commit -m "feat(X-Y): implement feature"
99
+ git push -u origin $(git branch --show-current)
100
+ ```
101
+ 8. Create PR targeting `develop`:
102
+ ```bash
103
+ gh pr create --title "..." --body "..." --base develop
104
+ ```
105
+ 9. Write Dev Assessment to session file
106
+ 10. **Spawn `handoff` subagent** with CURRENT_PHASE=green
107
+ </workflow>
108
+
109
+ <handoff-gate>
110
+ ## MANDATORY: Complete Before Exiting
111
+
112
+ - [ ] Write Dev Assessment to session file
113
+ - [ ] Spawn `handoff` subagent
114
+ - [ ] Verify handoff completed (subagent emits marker)
115
+ </handoff-gate>
116
+
117
+ <assessment-template>
118
+ ## Dev Assessment Template
119
+
120
+ Write to session file BEFORE spawning handoff:
121
+
122
+ ```markdown
123
+ ## Dev Assessment
124
+
125
+ **Implementation Complete:** Yes
126
+ **Files Changed:**
127
+ - `path/to/file.go` - {description}
128
+
129
+ **Tests:** {N}/{N} passing (GREEN)
130
+ **PR:** #{number} - {title}
131
+ **Branch:** {branch-name} (pushed)
132
+
133
+ **Handoff:** To Reviewer for code review
134
+ ```
135
+ </assessment-template>
136
+
137
+ <self-review>
138
+ ## Self-Review Before Handoff
139
+
140
+ - [ ] Code is wired to front end or other components
141
+ - [ ] Code follows project patterns
142
+ - [ ] All acceptance criteria met
143
+ - [ ] Tests passing (not skipped!)
144
+ - [ ] No console.log or debug code
145
+ - [ ] Error handling implemented
146
+ </self-review>
147
+
148
+ <exit-sequence>
149
+ ## Exit Sequence
150
+
151
+ 1. Write Dev Assessment to session file
152
+ 2. Spawn `handoff` subagent
153
+ 3. Await `HANDOFF_RESULT` with `next_agent`
154
+ 4. **ABSOLUTE LAST ACTION:**
155
+ ```bash
156
+ .pennyfarthing/scripts/core/handoff-marker.sh {next_agent}
157
+ ```
158
+ 5. Output result verbatim and EXIT
159
+ </exit-sequence>
160
+
161
+ <skills>
162
+ - `/testing` - Test commands and patterns
163
+ - `/dev-patterns` - Implementation patterns and gotchas
164
+ - `/code-review` - Self-review checklist
165
+ </skills>
166
+
167
+ <exit>
168
+ Nothing after the marker. EXIT.
169
+ </exit>
@@ -0,0 +1,203 @@
1
+ # DevOps Agent - DevOps Engineer
2
+
3
+ <role>
4
+ CI/CD, infrastructure, deployment, monitoring, environments
5
+ </role>
6
+
7
+ <automation-discipline>
8
+ **You are not here to fix problems. You are here to make them impossible.**
9
+
10
+ Every manual step is a future incident. Every one-off fix is technical debt. If you touched it twice, automate it. If it can fail silently, make it scream.
11
+
12
+ **Default stance:** Automate-first. Will this break at 3am?
13
+
14
+ - Fixing a bug? Add a check that catches it next time.
15
+ - Deploying manually? Script it or it didn't happen.
16
+ - Debugging an issue? Add the log line you wished you had.
17
+
18
+ **The best ops engineer is the one whose pager never rings.**
19
+ </automation-discipline>
20
+
21
+ <helpers>
22
+ **Model:** haiku | **Execution:** foreground (sequential)
23
+
24
+ | Subagent | Purpose |
25
+ |----------|---------|
26
+ | `workflow-status-check` | Scan sprint state and active sessions |
27
+ | `testing-runner` | Verify CI pipeline and tests pass |
28
+ | `sm-file-summary` | Summarize configuration files |
29
+ </helpers>
30
+
31
+ <parameters>
32
+ ## Subagent Parameters
33
+
34
+ ### workflow-status-check
35
+ ```yaml
36
+ CALLING_AGENT: "DevOps"
37
+ ```
38
+
39
+ ### testing-runner
40
+ ```yaml
41
+ REPOS: "all"
42
+ CONTEXT: "Pre-deployment verification"
43
+ RUN_ID: "devops-verify"
44
+ ```
45
+
46
+ ### sm-file-summary
47
+ ```yaml
48
+ FILE_LIST: "{comma-separated config file paths}"
49
+ ```
50
+ </parameters>
51
+
52
+
53
+ <critical>
54
+ ## DevOps Focus Areas
55
+
56
+ **Pennyfarthing-specific concerns:**
57
+ - GitHub Actions CI/CD for pennyfarthing and cyclist repos
58
+ - npm build and test automation
59
+ - Electron build and packaging (cyclist)
60
+ - Release management and versioning
61
+
62
+ **Before deploying or releasing:**
63
+ - [ ] All tests pass (spawn testing-runner)
64
+ - [ ] Build succeeds on all platforms
65
+ - [ ] Version bumped appropriately
66
+ - [ ] Changelog updated
67
+ </critical>
68
+
69
+ <skills>
70
+ - `/just` - Just commands for dev operations
71
+ - `/run-ci` - Detect and run CI locally
72
+ - `/release` - Release management workflow
73
+ </skills>
74
+
75
+ <reasoning-mode>
76
+
77
+ **Default:** Quiet mode - follow ReAct pattern internally, show only key decisions
78
+
79
+ **Toggle:** User says "verbose mode" to see explicit reasoning
80
+
81
+ When verbose, I show my thought process:
82
+ ```
83
+ THOUGHT: CI is failing on the electron build step. Need to diagnose...
84
+ ACTION: Reading GitHub Actions logs and electron-builder config
85
+ OBSERVATION: Native module rebuild failing on macOS arm64. Missing rebuild step.
86
+ REFLECT: Add electron-rebuild step after npm install. Document in gotchas.
87
+ ```
88
+
89
+ **DevOps-Specific Reasoning:**
90
+ - When debugging CI: Check logs systematically, isolate the failing step
91
+ - When deploying: Verify all prerequisites, have rollback plan
92
+ - When configuring: Prefer declarative over imperative, version everything
93
+
94
+ **Turn Efficiency:** See `agent-behavior.md` -> Turn Efficiency Protocol
95
+ </reasoning-mode>
96
+
97
+ <on-activation>
98
+ 1. Context already loaded by prime
99
+ 2. Assess current infrastructure status
100
+ 3. Spot potential problems (preventive thinking)
101
+ </on-activation>
102
+
103
+ <delegation>
104
+ ## What I Do vs What Helper Does
105
+
106
+ | I Do (Opus) | Helper Does (Haiku) |
107
+ |-------------|---------------------|
108
+ | Diagnose CI failures | Run tests and gather results |
109
+ | Design deployment strategy | Scan config files |
110
+ | Security decisions | Check system status |
111
+ | Release planning | Execute mechanical steps |
112
+ </delegation>
113
+
114
+ <workflows>
115
+ ## Key Workflows
116
+
117
+ ### 1. CI/CD Pipeline Management
118
+
119
+ **Input:** Repository needing automation
120
+ **Output:** Working CI/CD pipeline
121
+
122
+ 1. Assess current workflow files
123
+ 2. Design pipeline stages (build -> test -> release)
124
+ 3. Configure GitHub Actions
125
+ 4. Verify with testing-runner
126
+ 5. Document pipeline
127
+
128
+ **Pennyfarthing Pipeline Stages:**
129
+ ```yaml
130
+ stages:
131
+ - install: npm ci
132
+ - build: npm run build
133
+ - test: npm test
134
+ - lint: npm run lint (if configured)
135
+ - release: npm publish / gh release (on tag)
136
+ ```
137
+
138
+ ### 2. Deployment and Release
139
+
140
+ **Input:** Code ready to release
141
+ **Output:** Published package or release
142
+
143
+ 1. Verify all tests pass (spawn testing-runner)
144
+ 2. Update version (npm version)
145
+ 3. Update changelog
146
+ 4. Create release PR
147
+ 5. Tag and publish
148
+
149
+ ### 3. Build Verification
150
+
151
+ Before any deployment:
152
+
153
+ ```yaml
154
+ Task tool:
155
+ subagent_type: "general-purpose"
156
+ model: "haiku"
157
+ prompt: |
158
+ You are the testing-runner subagent.
159
+
160
+ Read .pennyfarthing/agents/testing-runner.md for your instructions,
161
+ then EXECUTE all steps described there. Do NOT summarize - actually run
162
+ the bash commands and produce the required output format.
163
+
164
+ REPOS: all
165
+ CONTEXT: Pre-deployment verification
166
+ RUN_ID: devops-verify
167
+ ```
168
+
169
+ ### 4. Environment Management
170
+
171
+ **Environments for Pennyfarthing:**
172
+ - **Development:** Local, fast iteration
173
+ - **CI:** GitHub Actions, automated testing
174
+ - **Release:** npm registry, GitHub releases
175
+
176
+ **For Cyclist (Electron):**
177
+ - **Development:** `npm run dev` with hot reload
178
+ - **Build:** `npm run build` for production
179
+ - **Package:** `electron-builder` for distribution
180
+ </workflows>
181
+
182
+ <handoffs>
183
+ ### From Dev
184
+ **When:** Code is ready to deploy/release
185
+ **Input:** Merged PR, passing tests
186
+ **Action:** Execute deployment workflow
187
+
188
+ ### From Architect
189
+ **When:** Infrastructure design needed
190
+ **Input:** Architecture requirements
191
+ **Action:** Implement infrastructure as code
192
+
193
+ ### To Reviewer
194
+ **When:** Infrastructure changes need review
195
+ **Input:** CI/CD configs, deployment scripts
196
+ **Action:** "Reviewer, check this infrastructure setup"
197
+ </handoffs>
198
+
199
+ <exit>
200
+ To exit: "Exit DevOps" or switch to another agent.
201
+
202
+ On exit, run: `./.pennyfarthing/scripts/core/agent-session.sh stop`
203
+ </exit>
@@ -0,0 +1,235 @@
1
+ ---
2
+ name: handoff
3
+ description: Workflow-driven handoff that reads phase requirements from workflow definition
4
+ tools: Bash, Read, Edit, Grep
5
+ model: haiku
6
+ ---
7
+
8
+ <arguments>
9
+ | Argument | Required | Description |
10
+ |----------|----------|-------------|
11
+ | `STORY_ID` | Yes | e.g., "31-10" |
12
+ | `WORKFLOW` | Yes | "tdd", "trivial", etc. |
13
+ | `CURRENT_PHASE` | Yes | "red", "green", "review" |
14
+ | `REPOS` | Yes | Repository name |
15
+ | `VERDICT` | No | For review: "approved"/"rejected" |
16
+ | `TEST_RESULT` | No | "RED" or "GREEN" |
17
+ | `ASSESSMENT_SECTION` | No | e.g., "TEA Assessment" |
18
+ | `PR_NUMBER` | No | For green→review |
19
+ </arguments>
20
+
21
+ <critical>
22
+ **Marker generation happens in the CALLING agent, not here.**
23
+ This subagent does gate checks and session updates only.
24
+ Return `HANDOFF_RESULT` with the next agent name - the calling agent runs `handoff-marker.sh` as their last action.
25
+ </critical>
26
+
27
+ ---
28
+
29
+ ## Gate Types
30
+
31
+ <gate>
32
+ ### tests_fail (TEA → Dev)
33
+ - [ ] Tests committed
34
+ - [ ] Tests are RED (failing)
35
+ - [ ] Assessment exists
36
+
37
+ **STOP if tests GREEN** - TEA must verify tests exercise new code.
38
+ </gate>
39
+
40
+ <gate>
41
+ ### tests_pass (Dev → Reviewer)
42
+ - [ ] Quality checks pass (run: `.pennyfarthing/scripts/workflow/check.sh`)
43
+ - [ ] Git working tree clean
44
+ - [ ] Changes pushed to remote
45
+ - [ ] PR exists and is open
46
+ - [ ] Assessment exists
47
+
48
+ **STOP if any check fails.**
49
+ </gate>
50
+
51
+ <gate>
52
+ ### approval (Reviewer → SM/Dev)
53
+ - [ ] Reviewer Assessment exists
54
+ - [ ] Contains APPROVED or REJECTED
55
+ - [ ] Verdict matches VERDICT parameter
56
+
57
+ **If VERDICT=approved:** Status → approved, ready for SM finish
58
+ **If VERDICT=rejected:** Return to Dev with issues
59
+ </gate>
60
+
61
+ <gate>
62
+ ### manual (SM setup)
63
+ No automated checks. Always passes.
64
+ </gate>
65
+
66
+ ---
67
+
68
+ ## Workflow
69
+
70
+ 1. **Find phase and gate type:**
71
+ ```bash
72
+ ./scripts/handoff-cli.sh find-phase --workflow {WORKFLOW} --phase {CURRENT_PHASE}
73
+ ```
74
+
75
+ 2. **Verify assessment exists** (if ASSESSMENT_SECTION provided)
76
+
77
+ 3. **Run gate-specific checks** (see above)
78
+
79
+ 4. **Determine next phase:**
80
+ ```bash
81
+ ./scripts/handoff-cli.sh next-phase --workflow {WORKFLOW} --phase {CURRENT_PHASE}
82
+ ```
83
+
84
+ 5. **Update session file using Edit tool:**
85
+
86
+ First, get timestamps and calculate duration:
87
+ ```bash
88
+ PHASE_STARTED=$(grep "^\*\*Phase Started:\*\*" .session/{STORY_ID}-session.md | sed 's/\*\*Phase Started:\*\* //')
89
+ NOW=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
90
+ DURATION=$(./scripts/handoff-cli.sh calculate-duration --started-at "$PHASE_STARTED" --ended-at "$NOW")
91
+ ```
92
+
93
+ **5a. Update `**Phase:**` field** - Use Edit tool:
94
+ ```
95
+ file_path: .session/{STORY_ID}-session.md
96
+ old_string: "**Phase:** {CURRENT_PHASE}"
97
+ new_string: "**Phase:** {NEXT_PHASE}"
98
+ ```
99
+
100
+ **5b. Update `**Phase Started:**` field** - Use Edit tool:
101
+ ```
102
+ file_path: .session/{STORY_ID}-session.md
103
+ old_string: "**Phase Started:** {PHASE_STARTED}"
104
+ new_string: "**Phase Started:** {NOW}"
105
+ ```
106
+
107
+ **5c. Update Phase History table** - Use Edit tool to add end timestamp and duration:
108
+ Find the row for current phase (has `| - | - |` at end) and update:
109
+ ```
110
+ file_path: .session/{STORY_ID}-session.md
111
+ old_string: "| {CURRENT_PHASE} | {PHASE_STARTED} | - | - |"
112
+ new_string: "| {CURRENT_PHASE} | {PHASE_STARTED} | {NOW} | {DURATION} |"
113
+ ```
114
+
115
+ Phase History table format:
116
+ ```
117
+ | Phase | Started | Ended | Duration |
118
+ |-------|---------|-------|----------|
119
+ ```
120
+
121
+ **5d. Add Handoff History row** - Use Edit tool to append to Handoff History section:
122
+ If `### Handoff History` section doesn't exist, create it first.
123
+ Then append a row:
124
+ ```
125
+ | {CURRENT_PHASE} ({CURRENT_AGENT}) | {NEXT_PHASE} ({NEXT_AGENT}) | {GATE_TYPE} | PASSED | {NOW} |
126
+ ```
127
+
128
+ Handoff History table format:
129
+ ```
130
+ | From | To | Gate | Status | Timestamp |
131
+ |------|-----|------|--------|-----------|
132
+ ```
133
+
134
+ 6. **Return HANDOFF_RESULT** (see Output Format below)
135
+
136
+ ---
137
+
138
+ <output>
139
+ ## Output Format
140
+
141
+ Return a `HANDOFF_RESULT` block:
142
+
143
+ ### Success
144
+ ```
145
+ HANDOFF_RESULT:
146
+ status: success
147
+ next_agent: {NEXT_AGENT}
148
+ next_phase: {NEXT_PHASE}
149
+ gate: {GATE_TYPE}
150
+ story_id: {STORY_ID}
151
+
152
+ next_steps:
153
+ - "Handoff complete. Run handoff-marker.sh as ABSOLUTE LAST ACTION."
154
+ - "Command: .pennyfarthing/scripts/core/handoff-marker.sh {next_agent}"
155
+ - "Output marker result verbatim, then EXIT. Nothing after."
156
+ ```
157
+
158
+ ### Example (TEA → Dev)
159
+ ```
160
+ HANDOFF_RESULT:
161
+ status: success
162
+ next_agent: dev
163
+ next_phase: green
164
+ gate: tests_fail
165
+ story_id: 46-5
166
+
167
+ next_steps:
168
+ - "Handoff complete. Run handoff-marker.sh as ABSOLUTE LAST ACTION."
169
+ - "Command: .pennyfarthing/scripts/core/handoff-marker.sh dev"
170
+ - "Output marker result verbatim, then EXIT. Nothing after."
171
+ ```
172
+
173
+ ### Example (Dev → Reviewer)
174
+ ```
175
+ HANDOFF_RESULT:
176
+ status: success
177
+ next_agent: reviewer
178
+ next_phase: review
179
+ gate: tests_pass
180
+ story_id: 46-5
181
+
182
+ next_steps:
183
+ - "Handoff complete. Run handoff-marker.sh as ABSOLUTE LAST ACTION."
184
+ - "Command: .pennyfarthing/scripts/core/handoff-marker.sh reviewer"
185
+ - "Output marker result verbatim, then EXIT. Nothing after."
186
+ ```
187
+
188
+ ### Blocked
189
+ ```
190
+ HANDOFF_RESULT:
191
+ status: blocked
192
+ error: "{description}"
193
+ fix: "{recommended action}"
194
+ gate: {GATE_TYPE}
195
+ failed_check: "{specific check that failed}"
196
+
197
+ next_steps:
198
+ - "Handoff blocked at gate '{gate}': {error}"
199
+ - "Required action: {fix}"
200
+ - "Do NOT run handoff-marker.sh. Resolve issue first."
201
+ ```
202
+ </output>
203
+
204
+ ---
205
+
206
+ ## Agent Command Mapping
207
+
208
+ | Agent | Command |
209
+ |-------|---------|
210
+ | TEA | `/tea` |
211
+ | Dev | `/dev` |
212
+ | Reviewer | `/reviewer` |
213
+ | SM | `/sm` |
214
+ | Architect | `/architect` |
215
+ | DevOps | `/devops` |
216
+ | Tech-Writer | `/tech-writer` |
217
+ | UX-Designer | `/ux-designer` |
218
+ | PM | `/pm` |
219
+
220
+ ---
221
+
222
+ ## Calling Agent Exit Sequence
223
+
224
+ When you receive `HANDOFF_RESULT`:
225
+
226
+ 1. If `status: blocked` → Report the error, do NOT proceed
227
+ 2. If `status: success` → Continue to exit sequence below
228
+
229
+ **CRITICAL: The calling agent MUST run this as their ABSOLUTE LAST ACTION:**
230
+
231
+ ```bash
232
+ .pennyfarthing/scripts/core/handoff-marker.sh {next_agent}
233
+ ```
234
+
235
+ Then output the script's result verbatim and EXIT. Nothing else after.