@pennyfarthing/core 10.0.5 → 10.2.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 (580) hide show
  1. package/README.md +19 -22
  2. package/package.json +17 -11
  3. package/packages/core/dist/cli/commands/doctor-file-layout.test.js.map +1 -1
  4. package/packages/core/dist/cli/commands/doctor-legacy.test.js +24 -0
  5. package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
  6. package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
  7. package/packages/core/dist/cli/commands/doctor.js +346 -13
  8. package/packages/core/dist/cli/commands/doctor.js.map +1 -1
  9. package/packages/core/dist/cli/commands/e2e-fresh-install.test.js +1 -1
  10. package/packages/core/dist/cli/commands/e2e-fresh-install.test.js.map +1 -1
  11. package/packages/core/dist/cli/commands/e2e-upgrade.test.js +1 -1
  12. package/packages/core/dist/cli/commands/e2e-upgrade.test.js.map +1 -1
  13. package/packages/core/dist/cli/commands/hooks-consolidation.test.js +2 -2
  14. package/packages/core/dist/cli/commands/hooks-consolidation.test.js.map +1 -1
  15. package/packages/core/dist/cli/commands/init-consolidation.test.js.map +1 -1
  16. package/packages/core/dist/cli/commands/init.d.ts +7 -0
  17. package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
  18. package/packages/core/dist/cli/commands/init.js +41 -8
  19. package/packages/core/dist/cli/commands/init.js.map +1 -1
  20. package/packages/core/dist/cli/commands/uninstall.d.ts.map +1 -1
  21. package/packages/core/dist/cli/commands/uninstall.js +24 -13
  22. package/packages/core/dist/cli/commands/uninstall.js.map +1 -1
  23. package/packages/core/dist/cli/commands/update-consolidation.test.js +0 -10
  24. package/packages/core/dist/cli/commands/update-consolidation.test.js.map +1 -1
  25. package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
  26. package/packages/core/dist/cli/commands/update.js +26 -0
  27. package/packages/core/dist/cli/commands/update.js.map +1 -1
  28. package/packages/core/dist/cli/index.js +1 -1
  29. package/packages/core/dist/cli/index.js.map +1 -1
  30. package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
  31. package/packages/core/dist/cli/theme-maker.test.js +64 -115
  32. package/packages/core/dist/cli/theme-maker.test.js.map +1 -1
  33. package/packages/core/dist/cli/utils/python.d.ts +22 -0
  34. package/packages/core/dist/cli/utils/python.d.ts.map +1 -0
  35. package/packages/core/dist/cli/utils/python.js +102 -0
  36. package/packages/core/dist/cli/utils/python.js.map +1 -0
  37. package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
  38. package/packages/core/dist/cli/utils/settings.js +10 -0
  39. package/packages/core/dist/cli/utils/settings.js.map +1 -1
  40. package/packages/core/dist/index.d.ts +1 -1
  41. package/packages/core/dist/index.d.ts.map +1 -1
  42. package/packages/core/dist/index.js +2 -2
  43. package/packages/core/dist/index.js.map +1 -1
  44. package/packages/core/dist/plugins/plugin-discovery.d.ts +116 -0
  45. package/packages/core/dist/plugins/plugin-discovery.d.ts.map +1 -0
  46. package/packages/core/dist/plugins/plugin-discovery.js +165 -0
  47. package/packages/core/dist/plugins/plugin-discovery.js.map +1 -0
  48. package/packages/core/dist/plugins/plugin-discovery.test.d.ts +22 -0
  49. package/packages/core/dist/plugins/plugin-discovery.test.d.ts.map +1 -0
  50. package/packages/core/dist/plugins/plugin-discovery.test.js +498 -0
  51. package/packages/core/dist/plugins/plugin-discovery.test.js.map +1 -0
  52. package/packages/core/dist/scripts/generate-spider-report.js.map +1 -1
  53. package/packages/core/dist/workflow/context-watch.d.ts +80 -0
  54. package/packages/core/dist/workflow/context-watch.d.ts.map +1 -0
  55. package/packages/core/dist/workflow/context-watch.js +235 -0
  56. package/packages/core/dist/workflow/context-watch.js.map +1 -0
  57. package/packages/core/dist/workflow/context-watch.test.d.ts +1 -0
  58. package/packages/core/dist/workflow/context-watch.test.d.ts.map +1 -0
  59. package/packages/core/dist/workflow/context-watch.test.js +746 -0
  60. package/packages/core/dist/workflow/context-watch.test.js.map +1 -0
  61. package/packages/core/dist/workflow/file-watch.d.ts +82 -0
  62. package/packages/core/dist/workflow/file-watch.d.ts.map +1 -0
  63. package/packages/core/dist/workflow/file-watch.js +198 -0
  64. package/packages/core/dist/workflow/file-watch.js.map +1 -0
  65. package/packages/core/dist/workflow/file-watch.test.d.ts +21 -0
  66. package/packages/core/dist/workflow/file-watch.test.d.ts.map +1 -0
  67. package/packages/core/dist/workflow/file-watch.test.js +469 -0
  68. package/packages/core/dist/workflow/file-watch.test.js.map +1 -0
  69. package/packages/core/dist/workflow/observation-writer.d.ts +79 -0
  70. package/packages/core/dist/workflow/observation-writer.d.ts.map +1 -0
  71. package/packages/core/dist/workflow/observation-writer.js +97 -0
  72. package/packages/core/dist/workflow/observation-writer.js.map +1 -0
  73. package/packages/core/dist/workflow/observation-writer.test.d.ts +18 -0
  74. package/packages/core/dist/workflow/observation-writer.test.d.ts.map +1 -0
  75. package/packages/core/dist/workflow/observation-writer.test.js +424 -0
  76. package/packages/core/dist/workflow/observation-writer.test.js.map +1 -0
  77. package/packages/core/dist/workflow/story-workflow-routing.test.js +4 -2
  78. package/packages/core/dist/workflow/story-workflow-routing.test.js.map +1 -1
  79. package/packages/core/dist/workflow/tandem-lifecycle.d.ts +117 -0
  80. package/packages/core/dist/workflow/tandem-lifecycle.d.ts.map +1 -0
  81. package/packages/core/dist/workflow/tandem-lifecycle.js +186 -0
  82. package/packages/core/dist/workflow/tandem-lifecycle.js.map +1 -0
  83. package/packages/core/dist/workflow/tandem-lifecycle.test.d.ts +16 -0
  84. package/packages/core/dist/workflow/tandem-lifecycle.test.d.ts.map +1 -0
  85. package/packages/core/dist/workflow/tandem-lifecycle.test.js +531 -0
  86. package/packages/core/dist/workflow/tandem-lifecycle.test.js.map +1 -0
  87. package/packages/core/dist/workflow/tool-watch.d.ts +68 -0
  88. package/packages/core/dist/workflow/tool-watch.d.ts.map +1 -0
  89. package/packages/core/dist/workflow/tool-watch.js +166 -0
  90. package/packages/core/dist/workflow/tool-watch.js.map +1 -0
  91. package/packages/core/dist/workflow/tool-watch.test.d.ts +18 -0
  92. package/packages/core/dist/workflow/tool-watch.test.d.ts.map +1 -0
  93. package/packages/core/dist/workflow/tool-watch.test.js +718 -0
  94. package/packages/core/dist/workflow/tool-watch.test.js.map +1 -0
  95. package/packages/core/dist/workflow/workflow-migration.test.js +8 -4
  96. package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
  97. package/packages/core/dist/workflow/workflow-schema.d.ts +7 -0
  98. package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
  99. package/packages/core/dist/workflow/workflow-schema.js +44 -0
  100. package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
  101. package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +1 -1
  102. package/packages/core/dist/workflow/workflow-schema.test.js +192 -0
  103. package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -1
  104. package/pennyfarthing-dist/agents/README.md +1 -3
  105. package/pennyfarthing-dist/agents/architect.md +0 -6
  106. package/pennyfarthing-dist/agents/devops.md +0 -6
  107. package/pennyfarthing-dist/agents/handoff.md +18 -3
  108. package/pennyfarthing-dist/agents/orchestrator.md +0 -6
  109. package/pennyfarthing-dist/agents/pm.md +0 -6
  110. package/pennyfarthing-dist/agents/sm-finish.md +1 -1
  111. package/pennyfarthing-dist/agents/sm-handoff.md +27 -4
  112. package/pennyfarthing-dist/agents/sm.md +11 -11
  113. package/pennyfarthing-dist/agents/tandem-backseat.md +119 -0
  114. package/pennyfarthing-dist/commands/architect.md +11 -3
  115. package/pennyfarthing-dist/commands/close-epic.md +24 -131
  116. package/pennyfarthing-dist/commands/create-theme.md +14 -24
  117. package/pennyfarthing-dist/commands/dev.md +11 -3
  118. package/pennyfarthing-dist/commands/devops.md +11 -3
  119. package/pennyfarthing-dist/commands/health-check.md +1 -3
  120. package/pennyfarthing-dist/commands/help.md +8 -12
  121. package/pennyfarthing-dist/commands/list-themes.md +14 -16
  122. package/pennyfarthing-dist/commands/orchestrator.md +11 -3
  123. package/pennyfarthing-dist/commands/parallel-work.md +1 -3
  124. package/pennyfarthing-dist/commands/pm.md +11 -3
  125. package/pennyfarthing-dist/commands/prime.md +6 -6
  126. package/pennyfarthing-dist/commands/reviewer.md +11 -3
  127. package/pennyfarthing-dist/commands/run-ci.md +1 -1
  128. package/pennyfarthing-dist/commands/set-theme.md +14 -51
  129. package/pennyfarthing-dist/commands/setup.md +5 -1
  130. package/pennyfarthing-dist/commands/show-theme.md +14 -16
  131. package/pennyfarthing-dist/commands/sm.md +11 -3
  132. package/pennyfarthing-dist/commands/tea.md +11 -3
  133. package/pennyfarthing-dist/commands/tech-writer.md +11 -3
  134. package/pennyfarthing-dist/commands/theme-maker.md +14 -671
  135. package/pennyfarthing-dist/commands/theme.md +95 -0
  136. package/pennyfarthing-dist/commands/ux-designer.md +11 -3
  137. package/pennyfarthing-dist/commands/work.md +3 -5
  138. package/pennyfarthing-dist/guides/agent-behavior.md +62 -6
  139. package/pennyfarthing-dist/guides/agent-coordination.md +11 -13
  140. package/pennyfarthing-dist/guides/agent-template-tactical.md +2 -3
  141. package/pennyfarthing-dist/guides/bikelane.md +3 -2
  142. package/pennyfarthing-dist/guides/command-tag-taxonomy.md +212 -0
  143. package/pennyfarthing-dist/guides/hooks.md +5 -5
  144. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +3 -3
  145. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +9 -59
  146. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +4 -5
  147. package/pennyfarthing-dist/guides/prime.md +2 -2
  148. package/pennyfarthing-dist/guides/scale-levels.md +4 -6
  149. package/pennyfarthing-dist/guides/skill-schema.md +4 -4
  150. package/pennyfarthing-dist/guides/tandem-protocol.md +158 -0
  151. package/pennyfarthing-dist/personas/themes/discworld.yaml +1 -1
  152. package/pennyfarthing-dist/personas/themes/fifth-element.yaml +295 -0
  153. package/pennyfarthing-dist/scripts/README.md +1 -1
  154. package/pennyfarthing-dist/scripts/core/agent-session.sh +6 -2
  155. package/pennyfarthing-dist/scripts/core/check-context.sh +0 -0
  156. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -0
  157. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +0 -0
  158. package/pennyfarthing-dist/scripts/core/prime.sh +8 -10
  159. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -0
  160. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -0
  161. package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -0
  162. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +8 -6
  163. package/pennyfarthing-dist/scripts/git/release.sh +0 -0
  164. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -0
  165. package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -0
  166. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +131 -54
  167. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -0
  168. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -0
  169. package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
  170. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -0
  171. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +32 -15
  172. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +4 -3
  173. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -0
  174. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +11 -5
  175. package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +0 -0
  176. package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -0
  177. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -0
  178. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -0
  179. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -0
  180. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +0 -0
  181. package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -0
  182. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -0
  183. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -0
  184. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -0
  185. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -0
  186. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -0
  187. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -0
  188. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -0
  189. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -0
  190. package/pennyfarthing-dist/scripts/lib/common.sh +0 -0
  191. package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -0
  192. package/pennyfarthing-dist/scripts/lib/logging.sh +0 -0
  193. package/pennyfarthing-dist/scripts/lib/retry.sh +0 -0
  194. package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -0
  195. package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -0
  196. package/pennyfarthing-dist/scripts/misc/README.md +1 -1
  197. package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -0
  198. package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -0
  199. package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -0
  200. package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -0
  201. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -0
  202. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -0
  203. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -0
  204. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -0
  205. package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -0
  206. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -0
  207. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -0
  208. package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -0
  209. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -0
  210. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -0
  211. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -0
  212. package/pennyfarthing-dist/scripts/misc/statusline.sh +50 -8
  213. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -0
  214. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +1 -2
  215. package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +0 -0
  216. package/pennyfarthing-dist/scripts/story/create-story.sh +0 -0
  217. package/pennyfarthing-dist/scripts/story/size-story.sh +0 -0
  218. package/pennyfarthing-dist/scripts/story/story-template.sh +0 -0
  219. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
  220. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -0
  221. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -0
  222. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +5 -5
  223. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -0
  224. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -0
  225. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -0
  226. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -0
  227. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -0
  228. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +3 -79
  229. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -0
  230. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -0
  231. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
  232. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -0
  233. package/pennyfarthing-dist/scripts/theme/README.md +1 -1
  234. package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -0
  235. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -1
  236. package/pennyfarthing-dist/scripts/workflow/README.md +2 -2
  237. package/pennyfarthing-dist/scripts/workflow/check.py +0 -0
  238. package/pennyfarthing-dist/scripts/workflow/check.sh +0 -0
  239. package/pennyfarthing-dist/scripts/workflow/complete-step.py +0 -0
  240. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +10 -144
  241. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -0
  242. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -0
  243. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -0
  244. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -0
  245. package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -0
  246. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -0
  247. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -0
  248. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -0
  249. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -0
  250. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +2 -2
  251. package/pennyfarthing-dist/skills/skill-registry.schema.json +8 -0
  252. package/pennyfarthing-dist/skills/skill-registry.yaml +21 -17
  253. package/pennyfarthing-dist/skills/sprint/skill.md +25 -2
  254. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +0 -0
  255. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +0 -0
  256. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +0 -0
  257. package/pennyfarthing-dist/skills/theme/skill.md +290 -75
  258. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +23 -166
  259. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +0 -0
  260. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +0 -0
  261. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +0 -0
  262. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +0 -0
  263. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +0 -0
  264. package/pennyfarthing-dist/skills/workflow/skill.md +27 -4
  265. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -11
  266. package/pennyfarthing-dist/templates/auto-load-sm.sh.template +14 -0
  267. package/pennyfarthing-dist/templates/settings.local.json.template +9 -0
  268. package/pennyfarthing-dist/workflows/2party-tdd.yaml +399 -0
  269. package/pennyfarthing-dist/workflows/architecture/workflow.yaml +65 -0
  270. package/pennyfarthing-dist/workflows/bdd-tandem.yaml +70 -0
  271. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +41 -24
  272. package/pennyfarthing-dist/workflows/tdd-tandem.yaml +61 -0
  273. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  274. package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
  275. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  276. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  277. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  278. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  279. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  280. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  281. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  282. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  283. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  284. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  285. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  286. package/pennyfarthing_scripts/bellmode_hook.py +202 -47
  287. package/pennyfarthing_scripts/brownfield/__init__.py +6 -6
  288. package/pennyfarthing_scripts/brownfield/__main__.py +1 -0
  289. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  290. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  291. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  292. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  293. package/pennyfarthing_scripts/brownfield/cli.py +0 -1
  294. package/pennyfarthing_scripts/brownfield/discover.py +1 -2
  295. package/pennyfarthing_scripts/cli.py +23 -3
  296. package/pennyfarthing_scripts/codemarkers/__init__.py +23 -0
  297. package/pennyfarthing_scripts/codemarkers/__main__.py +6 -0
  298. package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
  299. package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
  300. package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
  301. package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
  302. package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
  303. package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
  304. package/pennyfarthing_scripts/codemarkers/analyze.py +501 -0
  305. package/pennyfarthing_scripts/codemarkers/cli.py +179 -0
  306. package/pennyfarthing_scripts/codemarkers/formatters.py +88 -0
  307. package/pennyfarthing_scripts/codemarkers/models.py +60 -0
  308. package/pennyfarthing_scripts/common/__init__.py +8 -9
  309. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  310. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  311. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  312. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  313. package/pennyfarthing_scripts/common/config.py +1 -1
  314. package/pennyfarthing_scripts/complexity/__init__.py +15 -0
  315. package/pennyfarthing_scripts/complexity/__main__.py +6 -0
  316. package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
  317. package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
  318. package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
  319. package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
  320. package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
  321. package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
  322. package/pennyfarthing_scripts/complexity/analyze.py +207 -0
  323. package/pennyfarthing_scripts/complexity/cli.py +82 -0
  324. package/pennyfarthing_scripts/complexity/formatters.py +64 -0
  325. package/pennyfarthing_scripts/complexity/models.py +32 -0
  326. package/pennyfarthing_scripts/context.py +14 -15
  327. package/pennyfarthing_scripts/deadcode/__init__.py +6 -0
  328. package/pennyfarthing_scripts/deadcode/__main__.py +6 -0
  329. package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
  330. package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
  331. package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
  332. package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
  333. package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
  334. package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
  335. package/pennyfarthing_scripts/deadcode/analyze.py +322 -0
  336. package/pennyfarthing_scripts/deadcode/cli.py +163 -0
  337. package/pennyfarthing_scripts/deadcode/formatters.py +106 -0
  338. package/pennyfarthing_scripts/deadcode/models.py +54 -0
  339. package/pennyfarthing_scripts/dependencies/__init__.py +20 -0
  340. package/pennyfarthing_scripts/dependencies/__main__.py +5 -0
  341. package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
  342. package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
  343. package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
  344. package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
  345. package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
  346. package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
  347. package/pennyfarthing_scripts/dependencies/analyze.py +155 -0
  348. package/pennyfarthing_scripts/dependencies/cli.py +76 -0
  349. package/pennyfarthing_scripts/dependencies/formatters.py +63 -0
  350. package/pennyfarthing_scripts/dependencies/models.py +39 -0
  351. package/pennyfarthing_scripts/git/__init__.py +5 -5
  352. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  353. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  354. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  355. package/pennyfarthing_scripts/git/create_branches.py +3 -2
  356. package/pennyfarthing_scripts/git/status_all.py +1 -1
  357. package/pennyfarthing_scripts/healthscore/__init__.py +21 -0
  358. package/pennyfarthing_scripts/healthscore/__main__.py +14 -0
  359. package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  360. package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
  361. package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
  362. package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
  363. package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
  364. package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
  365. package/pennyfarthing_scripts/healthscore/analyze.py +591 -0
  366. package/pennyfarthing_scripts/healthscore/cli.py +80 -0
  367. package/pennyfarthing_scripts/healthscore/formatters.py +46 -0
  368. package/pennyfarthing_scripts/healthscore/models.py +43 -0
  369. package/pennyfarthing_scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
  370. package/pennyfarthing_scripts/hooks.py +8 -11
  371. package/pennyfarthing_scripts/hotspots/__init__.py +6 -6
  372. package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
  373. package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
  374. package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  375. package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  376. package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
  377. package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
  378. package/pennyfarthing_scripts/hotspots/analyze.py +155 -14
  379. package/pennyfarthing_scripts/hotspots/cli.py +12 -10
  380. package/pennyfarthing_scripts/hotspots/models.py +0 -1
  381. package/pennyfarthing_scripts/jira/__init__.py +15 -17
  382. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  383. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  384. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  385. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  386. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  387. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  388. package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
  389. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  390. package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
  391. package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  392. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  393. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  394. package/pennyfarthing_scripts/jira/bidirectional.py +44 -18
  395. package/pennyfarthing_scripts/jira/claim.py +21 -0
  396. package/pennyfarthing_scripts/jira/cli.py +6 -3
  397. package/pennyfarthing_scripts/jira/client.py +32 -4
  398. package/pennyfarthing_scripts/jira/create.py +45 -1
  399. package/pennyfarthing_scripts/jira/epic.py +3 -2
  400. package/pennyfarthing_scripts/jira/reconcile.py +0 -1
  401. package/pennyfarthing_scripts/jira/story.py +2 -0
  402. package/pennyfarthing_scripts/jira/sync.py +1 -1
  403. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  404. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  405. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  406. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  407. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  408. package/pennyfarthing_scripts/migration/skill.py +0 -1
  409. package/pennyfarthing_scripts/migration/step.py +0 -1
  410. package/pennyfarthing_scripts/migration/validate.py +8 -5
  411. package/pennyfarthing_scripts/patch_mode.py +2 -2
  412. package/pennyfarthing_scripts/preflight/__init__.py +1 -1
  413. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  414. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  415. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  416. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  417. package/pennyfarthing_scripts/preflight/finish.py +0 -1
  418. package/pennyfarthing_scripts/pretooluse_hook.py +6 -7
  419. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  420. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  421. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  422. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  423. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  424. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  425. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  426. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  427. package/pennyfarthing_scripts/prime/cli.py +5 -1
  428. package/pennyfarthing_scripts/prime/loader.py +2 -3
  429. package/pennyfarthing_scripts/prime/persona.py +2 -1
  430. package/pennyfarthing_scripts/prime/tiers.py +4 -4
  431. package/pennyfarthing_scripts/schema_validation_hook.py +2 -3
  432. package/pennyfarthing_scripts/sprint/__init__.py +10 -12
  433. package/pennyfarthing_scripts/sprint/__main__.py +2 -2
  434. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  435. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  436. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  437. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  438. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  439. package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  440. package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
  441. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  442. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  443. package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
  444. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  445. package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
  446. package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  447. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  448. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  449. package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  450. package/pennyfarthing_scripts/sprint/archive.py +0 -1
  451. package/pennyfarthing_scripts/sprint/archive_epic.py +198 -97
  452. package/pennyfarthing_scripts/sprint/cli.py +62 -46
  453. package/pennyfarthing_scripts/sprint/epic_add.py +8 -1
  454. package/pennyfarthing_scripts/sprint/import_epic.py +42 -18
  455. package/pennyfarthing_scripts/sprint/loader.py +6 -0
  456. package/pennyfarthing_scripts/sprint/status.py +1 -2
  457. package/pennyfarthing_scripts/sprint/story_add.py +202 -27
  458. package/pennyfarthing_scripts/sprint/story_finish.py +209 -0
  459. package/pennyfarthing_scripts/sprint/story_update.py +11 -3
  460. package/pennyfarthing_scripts/sprint/validate_cmd.py +0 -1
  461. package/pennyfarthing_scripts/sprint/validator.py +120 -6
  462. package/pennyfarthing_scripts/sprint/work.py +28 -7
  463. package/pennyfarthing_scripts/sprint/yaml_io.py +10 -2
  464. package/pennyfarthing_scripts/story/__init__.py +14 -16
  465. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  466. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  467. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  468. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  469. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  470. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  471. package/pennyfarthing_scripts/story/size.py +0 -1
  472. package/pennyfarthing_scripts/story/template.py +0 -1
  473. package/pennyfarthing_scripts/swebench.py +1 -2
  474. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  475. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  476. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  477. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  478. package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
  479. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  480. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  481. package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
  482. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  483. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  484. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  485. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  486. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  487. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  488. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  489. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  490. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  491. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  492. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  493. package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
  494. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  495. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  496. package/pennyfarthing_scripts/tests/conftest.py +1 -2
  497. package/pennyfarthing_scripts/tests/test_brownfield.py +10 -13
  498. package/pennyfarthing_scripts/tests/test_cli_modules.py +0 -4
  499. package/pennyfarthing_scripts/tests/test_codemarkers.py +687 -0
  500. package/pennyfarthing_scripts/tests/test_common.py +9 -4
  501. package/pennyfarthing_scripts/tests/test_epic_shard_validation.py +699 -0
  502. package/pennyfarthing_scripts/tests/test_git_utils.py +10 -13
  503. package/pennyfarthing_scripts/tests/test_healthscore.py +516 -0
  504. package/pennyfarthing_scripts/tests/test_jira_package.py +0 -3
  505. package/pennyfarthing_scripts/tests/test_package_structure.py +3 -16
  506. package/pennyfarthing_scripts/tests/test_patch_mode.py +7 -11
  507. package/pennyfarthing_scripts/tests/test_prime.py +39 -21
  508. package/pennyfarthing_scripts/tests/test_sprint_package.py +3 -8
  509. package/pennyfarthing_scripts/tests/test_sprint_validator.py +53 -5
  510. package/pennyfarthing_scripts/tests/test_story_add.py +3 -7
  511. package/pennyfarthing_scripts/tests/test_story_package.py +0 -3
  512. package/pennyfarthing_scripts/tests/test_story_update.py +5 -10
  513. package/pennyfarthing_scripts/tests/test_tiers.py +18 -17
  514. package/pennyfarthing_scripts/tests/test_token_counting.py +19 -13
  515. package/pennyfarthing_scripts/tests/test_validate_cmd.py +2 -7
  516. package/pennyfarthing_scripts/tests/test_workflow_check.py +0 -2
  517. package/pennyfarthing_scripts/tests/test_yaml_io.py +0 -3
  518. package/pennyfarthing_scripts/theme/__init__.py +5 -0
  519. package/pennyfarthing_scripts/theme/__main__.py +6 -0
  520. package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
  521. package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
  522. package/pennyfarthing_scripts/theme/cli.py +287 -0
  523. package/pennyfarthing_scripts/validate/__init__.py +21 -0
  524. package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
  525. package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
  526. package/pennyfarthing_scripts/validate/adapters/__init__.py +0 -0
  527. package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  528. package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
  529. package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
  530. package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
  531. package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
  532. package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
  533. package/pennyfarthing_scripts/validate/adapters/agent.py +239 -0
  534. package/pennyfarthing_scripts/validate/adapters/schema.py +30 -0
  535. package/pennyfarthing_scripts/validate/adapters/skill_command.py +292 -0
  536. package/pennyfarthing_scripts/validate/adapters/sprint.py +69 -0
  537. package/pennyfarthing_scripts/validate/adapters/workflow.py +320 -0
  538. package/pennyfarthing_scripts/validate/cli.py +141 -0
  539. package/pennyfarthing_scripts/welcome_hook.py +2 -3
  540. package/pennyfarthing_scripts/workflow.py +3 -3
  541. package/scripts/README.md +41 -0
  542. package/pennyfarthing-dist/agents/workflow-status-check.md +0 -96
  543. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  544. package/pennyfarthing-dist/commands/benchmark.md +0 -485
  545. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  546. package/pennyfarthing-dist/commands/solo.md +0 -447
  547. package/pennyfarthing-dist/guides/benchmarks.md +0 -62
  548. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  549. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +0 -59
  550. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +0 -220
  551. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -374
  552. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -165
  553. package/pennyfarthing-dist/scripts/test/test-setup.sh +0 -337
  554. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -13
  555. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +0 -402
  556. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -97
  557. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -261
  558. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -644
  559. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -187
  560. package/pennyfarthing-dist/workflows/dev-story/checklist.md +0 -80
  561. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +0 -410
  562. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +0 -50
  563. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +0 -201
  564. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +0 -156
  565. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +0 -140
  566. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +0 -203
  567. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +0 -74
  568. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +0 -27
  569. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  570. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  571. package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
  572. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  573. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  574. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  575. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  576. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  577. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  578. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  579. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  580. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
@@ -1,107 +1,335 @@
1
1
  ---
2
2
  name: theme
3
- description: Manage persona themes - list available themes, show current/specific theme details, and set active theme. Use when switching persona themes, viewing available characters, or checking which theme is currently active.
3
+ description: Manage persona themes - list available themes, show current/specific theme details, set active theme, create themes, and run the interactive theme maker wizard.
4
+ args: "[list|show|set|create|maker] [options]"
4
5
  ---
5
6
 
6
7
  # Theme Management Skill
7
8
 
8
9
  <run>
9
- To manage persona themes, use the following commands:
10
- - `/list-themes` - List all available themes
11
- - `/show-theme` - Show current theme or specific theme details
12
- - `/set-theme <name>` - Set the active theme
13
- - `/theme-maker` - Create a new custom theme interactively
10
+ Route based on arguments:
11
+ - No args or `show` Show current theme
12
+ - `list` List available themes
13
+ - `show [name]` Show theme details
14
+ - `set <name>` Set active theme
15
+ - `create <name>` → Create theme from base
16
+ - `maker` → Interactive AI-driven theme wizard
14
17
  </run>
15
18
 
16
19
  <output>
17
20
  Theme commands return theme names, descriptions, agent mappings, and confirmation of theme changes. Current theme is stored in `.pennyfarthing/config.local.yaml`.
18
21
  </output>
19
22
 
20
- ## Overview
21
-
22
- Pennyfarthing uses themed personas to give each agent a unique character. This skill provides commands to list, view, and change themes.
23
-
24
23
  ## Quick Reference
25
24
 
26
- | Action | Command |
27
- |--------|---------|
28
- | List all themes | `/list-themes` or see below |
29
- | Show current theme | `/show-theme` |
30
- | Show specific theme | `/show-theme <name>` |
31
- | Set active theme | `/set-theme <name>` |
32
- | Create new theme | `/theme-maker` (interactive) |
25
+ | Invocation | CLI Command | Purpose |
26
+ |------------|-------------|---------|
27
+ | `/theme` | `pf theme show` | Show current theme |
28
+ | `/theme list` | `pf theme list` | List all available themes |
29
+ | `/theme show [name]` | `pf theme show [name]` | Show theme details |
30
+ | `/theme show [name] --full` | `pf theme show [name] --full` | Extended details (OCEAN, quirks) |
31
+ | `/theme set <name>` | `pf theme set <name>` | Set active theme |
32
+ | `/theme create <name>` | `pf theme create <name>` | Create from base theme |
33
+ | `/theme create <name> --base X` | `pf theme create <name> --base X` | Create from specific base |
34
+ | `/theme create <name> --user` | `pf theme create <name> --user` | Create as user-level theme |
35
+ | `/theme maker` | *(interactive wizard)* | AI-driven theme creation |
36
+
37
+ ---
33
38
 
34
- ## List Available Themes
39
+ ## `/theme list`
35
40
 
36
- To see all available themes:
41
+ Run `pf theme list` and display the output directly to the user.
37
42
 
38
43
  ```bash
39
- ls pennyfarthing-dist/personas/themes/*.yaml | xargs -I{} basename {} .yaml | sort
44
+ pf theme list
40
45
  ```
41
46
 
42
- To show the current theme:
47
+ **IMPORTANT:** Copy the command output into your response text so the user sees it in the console. Bash tool output may be collapsed in the UI.
48
+
49
+ The output shows:
50
+ - Current theme marked with `*`
51
+ - Tier in brackets: `[S]` elite, `[A]` excellent, `[B]` strong, `[C]` good, `[D]` below average, `[U]` unbenchmarked
52
+
53
+ ---
54
+
55
+ ## `/theme show [name]`
43
56
 
44
57
  ```bash
45
- cat .pennyfarthing/config.local.yaml 2>/dev/null || echo "No theme configured"
58
+ # Show current theme
59
+ pf theme show
60
+
61
+ # Show specific theme
62
+ pf theme show blade-runner
63
+
64
+ # Show full details (OCEAN scores, quirks, catchphrases, helpers)
65
+ pf theme show blade-runner --full
46
66
  ```
47
67
 
48
- ## Show Theme Details
68
+ **IMPORTANT:** Copy the command output into your response text so the user sees it in the console.
49
69
 
50
- To display a theme's agent mappings:
70
+ ---
71
+
72
+ ## `/theme set <name>`
51
73
 
52
74
  ```bash
53
- # Show current theme
54
- THEME=$(cat .pennyfarthing/config.local.yaml 2>/dev/null | grep "^theme:" | cut -d'"' -f2)
55
- cat pennyfarthing-dist/personas/themes/${THEME}.yaml
75
+ pf theme set <name>
76
+ ```
77
+
78
+ If no theme name provided, run `pf theme list` first, then ask the user which theme they want.
79
+
80
+ After setting, refresh the current agent's persona:
81
+ ```bash
82
+ pf agent start "sm"
56
83
  ```
84
+ **Adopt the new character immediately** - do not continue using the old persona.
85
+
86
+ ---
87
+
88
+ ## `/theme create <name> [--base <theme>] [--user]`
57
89
 
58
- Or for a specific theme:
90
+ Create a new custom theme by copying from a base.
59
91
 
60
92
  ```bash
61
- cat pennyfarthing-dist/personas/themes/<theme-name>.yaml
93
+ # Create from default base (minimalist)
94
+ pf theme create my-theme
95
+
96
+ # Create from specific base
97
+ pf theme create my-theme --base blade-runner
98
+
99
+ # Create as user-level theme (available across all projects)
100
+ pf theme create my-theme --user
62
101
  ```
63
102
 
64
- ## Set Active Theme
103
+ After creation, guide the user:
104
+ - Edit the theme file to customize agents
105
+ - Run `pf theme set <name>` to activate
106
+
107
+ ---
108
+
109
+ ## `/theme maker`
110
+
111
+ Interactive wizard for creating custom persona themes with AI-driven generation. Unlike `/theme create` which copies from a base, this walks through the full creation process.
65
112
 
66
- To change the active theme:
113
+ ### Step 1: Theme Name
67
114
 
68
- 1. Verify theme exists:
69
- ```bash
70
- ls pennyfarthing-dist/personas/themes/<name>.yaml
71
- ```
115
+ Ask the user for a theme name.
72
116
 
73
- 2. Read current config:
74
- ```bash
75
- cat .pennyfarthing/config.local.yaml 2>/dev/null || echo "FILE_NOT_FOUND"
76
- ```
117
+ **Validation rules:**
118
+ - Lowercase letters only
119
+ - Must start with a letter
120
+ - Hyphens allowed (no underscores or spaces)
121
+ - No conflicts with existing themes
122
+
123
+ ### Step 2: Mode Selection
124
+
125
+ Use AskUserQuestion:
126
+
127
+ ```yaml
128
+ questions:
129
+ - question: "How would you like to create your theme?"
130
+ header: "Mode"
131
+ options:
132
+ - label: "AI-Driven (Recommended)"
133
+ description: "Describe a concept or universe, I generate all 10 agent personas"
134
+ - label: "Guided"
135
+ description: "I suggest character options per agent, you pick"
136
+ - label: "Manual"
137
+ description: "You specify character, style, and quote for each agent"
138
+ multiSelect: false
139
+ ```
77
140
 
78
- 3. Update `.pennyfarthing/config.local.yaml`:
79
- - If file exists with `theme:` line: Use Edit tool to replace `theme: <old>` with `theme: <new>`
80
- - If file missing or no theme line: Use Write tool to create:
81
- ```yaml
82
- # Pennyfarthing Local Configuration
83
- theme: <name>
84
- ```
141
+ ### Step 3: Dispatch to Mode
85
142
 
86
- 4. Verify the write succeeded:
87
- ```bash
88
- cat .pennyfarthing/config.local.yaml
89
- ```
143
+ Based on selection, follow the appropriate mode below.
90
144
 
91
- 5. Start a new agent session to use the new theme
145
+ ---
146
+
147
+ ### AI-Driven Mode
148
+
149
+ Best for: Users who describe a concept and want the AI to generate everything.
150
+
151
+ **Flow:**
152
+ 1. Ask for universe/concept description
153
+ 2. Generate all 10 agent personas
154
+ 3. Preview and confirm
155
+ 4. Write theme file
156
+ 5. Optionally generate portraits
157
+
158
+ **For each agent, generate:**
159
+ - `character`: Name fitting the universe
160
+ - `shortName`: Display name for UI (see Short Name Generation below)
161
+ - `visual`: Visual description for portrait generation (see Visual Descriptions below)
162
+ - `ocean`: OCEAN personality profile (see Role-Appropriate OCEAN Profiles below)
163
+ - `style`: 1-2 sentence communication style
164
+ - `expertise`: Areas of expertise in the universe context
165
+ - `role`: Role description within the universe
166
+ - `trait`: Character traits
167
+ - `quote`: Signature quote
168
+ - `emoji`: Single representative emoji
169
+ - `helper`: Assistant with name and communication style
170
+
171
+ ---
172
+
173
+ ### Guided Mode
174
+
175
+ Best for: Users who want to pick characters from suggestions.
176
+
177
+ **Flow:**
178
+ 1. Ask for universe/concept description
179
+ 2. For each agent, suggest 3-4 character options via AskUserQuestion
180
+ 3. Generate remaining details (style, OCEAN, quote, etc.) for selected characters
181
+ 4. Preview and confirm
182
+ 5. Write theme file
183
+
184
+ **Agent Order:** orchestrator, sm, tea, dev, reviewer, architect, pm, tech-writer, ux-designer, devops
185
+
186
+ ---
187
+
188
+ ### Manual Mode
189
+
190
+ Best for: Users who know exactly what they want.
191
+
192
+ **Flow:**
193
+ 1. Ask for theme description
194
+ 2. For each agent, collect character name, style, and quote via free text
195
+ 3. Offer OCEAN auto-generation or manual entry
196
+ 4. Generate remaining fields (expertise, emoji, helper)
197
+ 5. Preview and confirm
198
+ 6. Write theme file
199
+
200
+ **Skip Handling:** If user types "skip" for an agent, use defaults (generic role name, "Professional and direct" style).
201
+
202
+ ---
203
+
204
+ ## Agent Roles Reference
205
+
206
+ | Agent | Role | Character Should Be |
207
+ |-------|------|---------------------|
208
+ | orchestrator | Meta-coordinator | Pattern-seer, guide, overseer |
209
+ | sm | Scrum Master | Leader, coordinator, keeps team together |
210
+ | tea | Test Engineer | Analyst, detail-oriented, finds flaws |
211
+ | dev | Developer | Builder, practical, gets things done |
212
+ | reviewer | Code Reviewer | Critical, honest, high standards |
213
+ | architect | System Architect | Big-picture thinker, systems designer |
214
+ | pm | Product Manager | Strategic, stakeholder manager |
215
+ | tech-writer | Documentation | Clear communicator, precise |
216
+ | ux-designer | UX Design | User advocate, feels the experience |
217
+ | devops | Infrastructure | Reliable, keeps systems running |
218
+
219
+ ## Short Name Generation
220
+
221
+ Priority for `shortName`:
222
+ 1. **Quoted nicknames first**: "Hannibal", "Starbuck" → use the nickname
223
+ 2. **Unique first name**: If unique among all characters in the theme
224
+ 3. **Unique surname**: If surname distinguishes the character
225
+ 4. **First + Last**: If needed for disambiguation
226
+ 5. **Iconic names**: Keep full for iconic two-word names (e.g., "Big Brother", "Sun Tzu")
227
+
228
+ Skip titles like "Dr.", "Captain", "President" when extracting shortName.
229
+
230
+ ## Visual Descriptions
231
+
232
+ The `visual` field provides a portrait prompt for `./scripts/generate-portraits.sh`.
233
+
234
+ **Guidelines:**
235
+ - Focus on physical appearance, distinctive features, and visual props
236
+ - Include clothing, expression, and setting elements
237
+ - Be specific and visual - describe what a portrait would show
238
+
239
+ ## Role-Appropriate OCEAN Profiles
240
+
241
+ | Agent | Recommended Profile | Rationale |
242
+ |-------|---------------------|-----------|
243
+ | orchestrator | High O (4-5), Moderate C (3-4) | Pattern-seer needs openness |
244
+ | sm | High A (4-5), Moderate C (3-4) | Coordination requires agreeableness |
245
+ | tea | High C (4-5), High O (4-5) | Testing needs conscientiousness + creativity |
246
+ | dev | High C (4-5), Moderate O (3-4) | Building needs discipline + problem-solving |
247
+ | reviewer | High C (4-5), Low A (2-3) | Critical review prioritizes standards |
248
+ | architect | High O (4-5), High C (4-5) | Design needs vision + structure |
249
+ | pm | High E (4-5), High A (4-5) | Stakeholder mgmt needs sociability |
250
+ | tech-writer | High C (4-5), Low N (1-2) | Documentation needs precision + calm |
251
+ | ux-designer | High A (4-5), High O (4-5) | User advocacy needs empathy + creativity |
252
+ | devops | High C (4-5), Low N (1-2) | Operations needs reliability |
253
+
254
+ ## Theme File Output
255
+
256
+ Write to `.claude/pennyfarthing/themes/{name}.yaml`:
257
+
258
+ ```yaml
259
+ # Custom theme: {name}
260
+ # Created by /theme maker
261
+
262
+ theme:
263
+ name: {Name}
264
+ description: "{description}"
265
+ source: "{source}"
266
+ default_emoji_use: minimal
267
+ default_humor: enabled
268
+ character_immersion: high
269
+ user_title: {title}
270
+ pennyfarthing_version: "{current version from VERSION file}"
271
+ created: {date}
272
+
273
+ agents:
274
+ orchestrator:
275
+ character: {generated}
276
+ shortName: {generated}
277
+ visual: "{generated}"
278
+ ocean:
279
+ O: {1-5} # {rationale}
280
+ C: {1-5} # {rationale}
281
+ E: {1-5} # {rationale}
282
+ A: {1-5} # {rationale}
283
+ N: {1-5} # {rationale}
284
+ style: {generated}
285
+ expertise: {generated}
286
+ role: {generated}
287
+ trait: {generated}
288
+ quote: "{generated}"
289
+ emoji: "{generated}"
290
+ helper:
291
+ name: {generated}
292
+ style: "{generated}"
293
+ # ... all 10 agents
294
+ ```
295
+
296
+ **OCEAN Validation:** Before writing, verify:
297
+ - All 10 agents have `ocean:` blocks with O, C, E, A, N keys
298
+ - All scores are integers 1-5
299
+ - Each score has a rationale comment
300
+
301
+ **Important:** Read `VERSION` file at project root to set `pennyfarthing_version`.
302
+
303
+ ## Portrait Generation (Optional)
304
+
305
+ After creating a theme, offer to generate portraits:
306
+
307
+ ```bash
308
+ # Generate all portraits
309
+ ./scripts/generate-portraits.sh --theme {name}
310
+
311
+ # Single agent
312
+ ./scripts/generate-portraits.sh --theme {name} --role {role}
313
+
314
+ # Dry run preview
315
+ ./scripts/generate-portraits.sh --theme {name} --dry-run
316
+ ```
317
+
318
+ **Requirements:** Python 3 venv with diffusers, transformers, accelerate, torch, pillow, pyyaml, tqdm. Apple Silicon (MPS) or NVIDIA GPU (CUDA).
319
+
320
+ **Output:** `pennyfarthing-dist/personas/portraits/{theme}/{shortName}-{OCEAN}.png`
92
321
 
93
322
  ## Theme File Locations
94
323
 
95
324
  | Location | Purpose |
96
325
  |----------|---------|
97
326
  | `pennyfarthing-dist/personas/themes/` | Built-in themes (96+) |
98
- | `.claude/pennyfarthing/themes/` | User-created custom themes |
327
+ | `.claude/pennyfarthing/themes/` | Project-level custom themes |
328
+ | `~/.claude/pennyfarthing/themes/` | User-level custom themes |
99
329
  | `.pennyfarthing/config.local.yaml` | Theme selection (agent-writable, gitignored) |
100
330
 
101
331
  ## Theme Structure
102
332
 
103
- Each theme YAML defines agents with:
104
-
105
333
  ```yaml
106
334
  theme:
107
335
  name: theme-name
@@ -111,31 +339,18 @@ agents:
111
339
  sm:
112
340
  character: Character Name
113
341
  style: Communication style description
114
- quote: Signature quote
115
342
  trait: Key personality trait
116
343
  helper: Helper/assistant description
344
+ ocean: { O: 3, C: 4, E: 2, A: 3, N: 2 }
345
+ quirks: [...]
346
+ catchphrases: [...]
117
347
  tea:
118
348
  # ...same structure...
119
- dev:
120
- # ...
121
349
  ```
122
350
 
123
- ## Creating Custom Themes
124
-
125
- For creating new themes, use `/theme-maker` which provides:
126
- - **AI-Driven Mode**: Describe a concept, AI generates all personas
127
- - **Guided Mode**: Pick from AI-suggested characters
128
- - **Manual Mode**: Specify every detail yourself
129
-
130
- See the `theme-creation` skill for full documentation.
131
-
132
- ## Common Theme Categories
133
-
134
- Themes are available across many categories:
135
- - **TV/Film**: star-trek-tos, star-trek-tng, breaking-bad, the-wire, firefly, etc.
136
- - **Literature**: shakespeare, jane-austen, dickens, discworld, dune, etc.
137
- - **Historical**: ancient-philosophers, military-commanders, renaissance-masters, etc.
138
- - **Mythology**: greek-mythology, norse-mythology, arthurian-mythos, etc.
139
- - **Animated**: futurama, the-simpsons, avatar-the-last-airbender, etc.
351
+ ## Validation Rules for Theme Names
140
352
 
141
- Run the list command to see all 96+ available themes.
353
+ - Lowercase letters only
354
+ - Must start with a letter
355
+ - Hyphens allowed (no underscores or spaces)
356
+ - No conflicts with existing themes
@@ -1,178 +1,35 @@
1
1
  ---
2
2
  name: theme-creation
3
- description: Create custom persona themes for Pennyfarthing. Use when users want to create, generate, or customize agent personas/themes, especially with AI-driven generation.
3
+ description: |
4
+ DEPRECATED: Use /theme maker instead.
5
+ Theme creation has been consolidated under /theme.
6
+ deprecated: true
7
+ redirect: theme
4
8
  ---
5
9
 
6
- # Theme Creation Skill
10
+ # /theme-creation - DEPRECATED
7
11
 
8
- <run>/theme-maker</run>
12
+ <run>
13
+ This skill is deprecated. Use `/theme maker` instead.
14
+ </run>
9
15
 
10
- <output>Interactive wizard that guides users through AI-driven, Guided, or Manual theme creation modes to build custom persona themes for Pennyfarthing agents</output>
16
+ <output>
17
+ Redirects to the consolidated `/theme` skill.
18
+ </output>
11
19
 
12
- ## Overview
20
+ Theme creation has been consolidated into the `/theme` skill. Use:
13
21
 
14
- This skill covers creating custom persona themes for Pennyfarthing agents. Themes define how each agent (SM, TEA, Dev, Reviewer, etc.) presents themselves with character names, styles, quotes, and personality traits.
22
+ | Old Command | New Command |
23
+ |-------------|-------------|
24
+ | `/theme-maker` | `/theme maker` |
25
+ | `/create-theme <name>` | `/theme create <name>` |
15
26
 
16
- ## When to Use This Skill
17
-
18
- **Invoke `/theme-maker` when the user:**
19
- - Asks to "create a theme" or "make a theme"
20
- - Wants "AI-driven theme generation"
21
- - Says "generate personas" or "generate characters"
22
- - Mentions a fictional universe and wants agents based on it
23
- - Asks for "custom personas" or "themed agents"
24
- - Wants to "customize agent characters"
25
- - Mentions any fictional universe + "theme" (e.g., "Star Wars theme", "pirates theme")
26
-
27
- **Trigger phrases:**
28
- - "create a [X] theme"
29
- - "make a theme based on [X]"
30
- - "generate [X] personas"
31
- - "I want [X] themed agents"
32
- - "AI-driven theme generation"
33
- - "custom theme for [universe]"
34
-
35
- ## Available Commands
27
+ The `/theme` skill now handles all theme operations:
36
28
 
37
29
  | Command | Purpose |
38
30
  |---------|---------|
39
- | `/theme-maker` | Interactive wizard with AI-driven, Guided, or Manual modes |
40
- | `/create-theme <name>` | Quick CLI-based theme creation (copies from base) |
41
- | `/set-theme <name>` | Activate an existing theme |
42
- | `/list-themes` | Show available themes |
43
- | `/show-theme <name>` | Display theme details |
44
-
45
- ## Theme Creation Modes
46
-
47
- ### AI-Driven Mode (Recommended)
48
-
49
- Best for: Users who describe a concept and want the AI to generate everything.
50
-
51
- **Flow:**
52
- 1. User provides universe/concept (e.g., "Gilligan's Island, humorous")
53
- 2. AI generates all 10 agent personas automatically
54
- 3. User previews and confirms or regenerates
55
- 4. Theme file written to `.claude/pennyfarthing/themes/`
56
-
57
- **What gets generated:**
58
- - Character names fitting the universe
59
- - OCEAN personality profiles (O/C/E/A/N scores 1-5)
60
- - Communication styles
61
- - Signature quotes
62
- - Emojis and visual descriptions
63
- - Helper assistants for each agent
64
-
65
- ### Guided Mode
66
-
67
- Best for: Users who want to pick characters from suggestions.
68
-
69
- **Flow:**
70
- 1. User provides universe/concept
71
- 2. AI suggests 3-4 character options per agent
72
- 3. User picks (or enters custom) for each
73
- 4. AI fills in remaining details (style, quote, OCEAN)
74
-
75
- ### Manual Mode
76
-
77
- Best for: Users who know exactly what they want.
78
-
79
- **Flow:**
80
- 1. User provides theme description
81
- 2. User enters character, style, quote for each agent
82
- 3. Optional: Specify OCEAN scores or let AI generate
83
- 4. Theme file created with user's exact specifications
84
-
85
- ## Agent Roles Reference
86
-
87
- When generating or suggesting characters, match to these roles:
88
-
89
- | Agent | Role | Character Should Be |
90
- |-------|------|---------------------|
91
- | orchestrator | Meta-coordinator | Pattern-seer, guide, overseer |
92
- | sm | Scrum Master | Leader, coordinator, keeps team together |
93
- | tea | Test Engineer | Analyst, detail-oriented, finds flaws |
94
- | dev | Developer | Builder, practical, gets things done |
95
- | reviewer | Code Reviewer | Critical, honest, high standards |
96
- | architect | System Architect | Big-picture thinker, systems designer |
97
- | pm | Product Manager | Strategic, stakeholder manager |
98
- | tech-writer | Documentation | Clear communicator, precise |
99
- | ux-designer | UX Design | User advocate, feels the experience |
100
- | devops | Infrastructure | Reliable, keeps systems running |
101
-
102
- ## Theme File Location
103
-
104
- - **User themes:** `.claude/pennyfarthing/themes/{name}.yaml`
105
- - **Built-in themes:** `pennyfarthing-dist/personas/themes/`
106
-
107
- ## OCEAN Personality Profiles
108
-
109
- Each agent gets an OCEAN profile (Big Five personality traits):
110
-
111
- | Dimension | Low (1-2) | High (4-5) |
112
- |-----------|-----------|------------|
113
- | **O**penness | Traditional, practical | Creative, curious |
114
- | **C**onscientiousness | Flexible, spontaneous | Organized, disciplined |
115
- | **E**xtraversion | Reserved, reflective | Outgoing, energetic |
116
- | **A**greeableness | Competitive, skeptical | Cooperative, trusting |
117
- | **N**euroticism | Calm, stable | Emotional, reactive |
118
-
119
- ## Examples
120
-
121
- ### Example 1: AI-Driven Theme Creation
122
-
123
- **User:** "Create a Gilligan's Island theme, make it humorous"
124
-
125
- **Action:** Invoke `/theme-maker`, select AI-Driven mode, generate 10 agents based on the show's characters.
126
-
127
- ### Example 2: Quick Theme from Base
128
-
129
- **User:** "Create a theme called my-team based on discworld"
130
-
131
- **Action:** Run `/create-theme my-team --base discworld`
132
-
133
- ### Example 3: List and Switch Themes
134
-
135
- **User:** "What themes are available? Switch to star-trek."
136
-
137
- **Action:** Run `/list-themes`, then `/set-theme star-trek`
138
-
139
- ## Validation Rules for Theme Names
140
-
141
- - Lowercase letters only
142
- - Must start with a letter
143
- - Hyphens allowed (no underscores or spaces)
144
- - No conflicts with existing themes
145
-
146
- ## Portrait Generation
147
-
148
- Each agent can have a `visual` field that describes their appearance for portrait generation.
149
-
150
- **Generate all portraits for a theme:**
151
- ```bash
152
- ./scripts/generate-portraits.sh --theme {name}
153
- ```
154
-
155
- **Generate a single agent's portrait:**
156
- ```bash
157
- ./scripts/generate-portraits.sh --theme {name} --role {role}
158
- ```
159
-
160
- **Dry run (preview):**
161
- ```bash
162
- ./scripts/generate-portraits.sh --theme {name} --dry-run
163
- ```
164
-
165
- **Requirements:**
166
- - Python 3 venv at `.venv/` with: `pip install diffusers transformers accelerate torch pillow pyyaml tqdm`
167
- - Apple Silicon Mac (MPS) or NVIDIA GPU (CUDA)
168
- - ~6.5GB model download on first run
169
-
170
- **Output:** `pennyfarthing-dist/personas/portraits/{theme}/{shortName}-{OCEAN}.png`
171
-
172
- ## Post-Creation Steps
173
-
174
- After creating a theme:
175
- 1. Theme file at `.claude/pennyfarthing/themes/{name}.yaml`
176
- 2. Activate with `/set-theme {name}`
177
- 3. Generate portraits with `./scripts/generate-portraits.sh --theme {name}`
178
- 4. Edit YAML directly for fine-tuning
31
+ | `/theme list` | List available themes |
32
+ | `/theme show [name]` | Show theme details |
33
+ | `/theme set <name>` | Set active theme |
34
+ | `/theme create <name>` | Create from base theme |
35
+ | `/theme maker` | Interactive AI-driven wizard |