@pennyfarthing/core 10.0.3 → 10.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/README.md +9 -7
  2. package/package.json +7 -1
  3. package/packages/core/dist/cli/commands/cyclist.d.ts +5 -1
  4. package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -1
  5. package/packages/core/dist/cli/commands/cyclist.js +4 -4
  6. package/packages/core/dist/cli/commands/cyclist.js.map +1 -1
  7. package/packages/core/dist/cli/commands/cyclist.test.js +2 -2
  8. package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -1
  9. package/packages/core/dist/cli/commands/doctor-legacy.test.js +17 -16
  10. package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
  11. package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
  12. package/packages/core/dist/cli/commands/doctor.js +251 -4
  13. package/packages/core/dist/cli/commands/doctor.js.map +1 -1
  14. package/packages/core/dist/cli/commands/init.d.ts +7 -0
  15. package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
  16. package/packages/core/dist/cli/commands/init.js +43 -7
  17. package/packages/core/dist/cli/commands/init.js.map +1 -1
  18. package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
  19. package/packages/core/dist/cli/commands/update.js +26 -0
  20. package/packages/core/dist/cli/commands/update.js.map +1 -1
  21. package/packages/core/dist/cli/index.js +1 -1
  22. package/packages/core/dist/cli/index.js.map +1 -1
  23. package/packages/core/dist/cli/ocean-profiles.test.js +1 -1
  24. package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
  25. package/packages/core/dist/cli/utils/files.d.ts +10 -0
  26. package/packages/core/dist/cli/utils/files.d.ts.map +1 -1
  27. package/packages/core/dist/cli/utils/files.js +35 -0
  28. package/packages/core/dist/cli/utils/files.js.map +1 -1
  29. package/packages/core/dist/cli/utils/python.d.ts +22 -0
  30. package/packages/core/dist/cli/utils/python.d.ts.map +1 -0
  31. package/packages/core/dist/cli/utils/python.js +102 -0
  32. package/packages/core/dist/cli/utils/python.js.map +1 -0
  33. package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
  34. package/packages/core/dist/cli/utils/settings.js +10 -0
  35. package/packages/core/dist/cli/utils/settings.js.map +1 -1
  36. package/packages/core/dist/scripts/generate-report.d.ts.map +1 -1
  37. package/packages/core/dist/scripts/generate-report.js +11 -7
  38. package/packages/core/dist/scripts/generate-report.js.map +1 -1
  39. package/packages/core/dist/scripts/generate-spider-report.d.ts.map +1 -1
  40. package/packages/core/dist/scripts/generate-spider-report.js +12 -8
  41. package/packages/core/dist/scripts/generate-spider-report.js.map +1 -1
  42. package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -1
  43. package/packages/core/dist/scripts/generate-spider.js +6 -4
  44. package/packages/core/dist/scripts/generate-spider.js.map +1 -1
  45. package/packages/core/dist/scripts/generate-spider.test.js +2 -2
  46. package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
  47. package/pennyfarthing-dist/agents/README.md +1 -3
  48. package/pennyfarthing-dist/agents/architect.md +0 -6
  49. package/pennyfarthing-dist/agents/devops.md +0 -6
  50. package/pennyfarthing-dist/agents/orchestrator.md +0 -6
  51. package/pennyfarthing-dist/agents/pm.md +1 -7
  52. package/pennyfarthing-dist/agents/sm-finish.md +1 -1
  53. package/pennyfarthing-dist/agents/sm-setup.md +2 -2
  54. package/pennyfarthing-dist/agents/sm.md +4 -11
  55. package/pennyfarthing-dist/commands/architect.md +11 -3
  56. package/pennyfarthing-dist/commands/close-epic.md +24 -131
  57. package/pennyfarthing-dist/commands/create-theme.md +14 -24
  58. package/pennyfarthing-dist/commands/dev.md +11 -3
  59. package/pennyfarthing-dist/commands/devops.md +11 -3
  60. package/pennyfarthing-dist/commands/health-check.md +1 -3
  61. package/pennyfarthing-dist/commands/help.md +8 -12
  62. package/pennyfarthing-dist/commands/list-themes.md +14 -16
  63. package/pennyfarthing-dist/commands/orchestrator.md +11 -3
  64. package/pennyfarthing-dist/commands/parallel-work.md +1 -3
  65. package/pennyfarthing-dist/commands/pm.md +11 -3
  66. package/pennyfarthing-dist/commands/prime.md +6 -6
  67. package/pennyfarthing-dist/commands/repo-status.md +2 -2
  68. package/pennyfarthing-dist/commands/reviewer.md +11 -3
  69. package/pennyfarthing-dist/commands/run-ci.md +1 -1
  70. package/pennyfarthing-dist/commands/set-theme.md +14 -51
  71. package/pennyfarthing-dist/commands/setup.md +1 -1
  72. package/pennyfarthing-dist/commands/show-theme.md +14 -16
  73. package/pennyfarthing-dist/commands/sm.md +11 -3
  74. package/pennyfarthing-dist/commands/sprint.md +8 -8
  75. package/pennyfarthing-dist/commands/tea.md +11 -3
  76. package/pennyfarthing-dist/commands/tech-writer.md +11 -3
  77. package/pennyfarthing-dist/commands/theme-maker.md +14 -671
  78. package/pennyfarthing-dist/commands/theme.md +95 -0
  79. package/pennyfarthing-dist/commands/ux-designer.md +11 -3
  80. package/pennyfarthing-dist/commands/work.md +3 -5
  81. package/pennyfarthing-dist/guides/agent-coordination.md +11 -13
  82. package/pennyfarthing-dist/guides/agent-template-tactical.md +2 -3
  83. package/pennyfarthing-dist/guides/command-tag-taxonomy.md +212 -0
  84. package/pennyfarthing-dist/guides/hooks.md +5 -5
  85. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +3 -3
  86. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +9 -59
  87. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +4 -5
  88. package/pennyfarthing-dist/guides/prime.md +2 -2
  89. package/pennyfarthing-dist/guides/skill-schema.md +25 -26
  90. package/pennyfarthing-dist/guides/xml-tags.md +2 -2
  91. package/pennyfarthing-dist/scripts/README.md +2 -2
  92. package/pennyfarthing-dist/scripts/core/agent-session.sh +6 -2
  93. package/pennyfarthing-dist/scripts/core/prime.sh +8 -10
  94. package/pennyfarthing-dist/scripts/git/git-status-all.sh +1 -1
  95. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +8 -6
  96. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +3 -3
  97. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +14 -12
  98. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +4 -3
  99. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +11 -5
  100. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +1 -1
  101. package/pennyfarthing-dist/scripts/misc/README.md +1 -1
  102. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +3 -3
  103. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +1 -2
  104. package/pennyfarthing-dist/scripts/sprint/README.md +32 -17
  105. package/pennyfarthing-dist/scripts/story/README.md +1 -1
  106. package/pennyfarthing-dist/scripts/test/test-setup.sh +1 -1
  107. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +5 -5
  108. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +3 -79
  109. package/pennyfarthing-dist/scripts/theme/README.md +1 -1
  110. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -1
  111. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +62 -17
  112. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +2 -2
  113. package/pennyfarthing-dist/skills/skill-registry.yaml +41 -28
  114. package/pennyfarthing-dist/skills/sprint/skill.md +386 -68
  115. package/pennyfarthing-dist/skills/story/skill.md +14 -206
  116. package/pennyfarthing-dist/skills/theme/skill.md +290 -75
  117. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +23 -166
  118. package/pennyfarthing-dist/skills/workflow/skill.md +4 -4
  119. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -11
  120. package/pennyfarthing-dist/templates/auto-load-sm.sh.template +14 -0
  121. package/pennyfarthing-dist/templates/settings.local.json.template +9 -0
  122. package/pennyfarthing-dist/workflows/2party-tdd.yaml +399 -0
  123. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +42 -25
  124. package/pennyfarthing-dist/workflows/git-cleanup.yaml +1 -1
  125. package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +1 -1
  126. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  127. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  128. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  129. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  130. package/pennyfarthing_scripts/cli.py +15 -0
  131. package/pennyfarthing_scripts/codemarkers/__init__.py +19 -0
  132. package/pennyfarthing_scripts/codemarkers/__main__.py +6 -0
  133. package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
  134. package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
  135. package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
  136. package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
  137. package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
  138. package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
  139. package/pennyfarthing_scripts/codemarkers/analyze.py +326 -0
  140. package/pennyfarthing_scripts/codemarkers/cli.py +129 -0
  141. package/pennyfarthing_scripts/codemarkers/formatters.py +89 -0
  142. package/pennyfarthing_scripts/codemarkers/models.py +45 -0
  143. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  144. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  145. package/pennyfarthing_scripts/common/config.py +2 -1
  146. package/pennyfarthing_scripts/complexity/__init__.py +15 -0
  147. package/pennyfarthing_scripts/complexity/__main__.py +6 -0
  148. package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
  149. package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
  150. package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
  151. package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
  152. package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
  153. package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
  154. package/pennyfarthing_scripts/complexity/analyze.py +207 -0
  155. package/pennyfarthing_scripts/complexity/cli.py +78 -0
  156. package/pennyfarthing_scripts/complexity/formatters.py +64 -0
  157. package/pennyfarthing_scripts/complexity/models.py +32 -0
  158. package/pennyfarthing_scripts/deadcode/__init__.py +6 -0
  159. package/pennyfarthing_scripts/deadcode/__main__.py +6 -0
  160. package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
  161. package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
  162. package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
  163. package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
  164. package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
  165. package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
  166. package/pennyfarthing_scripts/deadcode/analyze.py +323 -0
  167. package/pennyfarthing_scripts/deadcode/cli.py +163 -0
  168. package/pennyfarthing_scripts/deadcode/formatters.py +106 -0
  169. package/pennyfarthing_scripts/deadcode/models.py +54 -0
  170. package/pennyfarthing_scripts/dependencies/__init__.py +20 -0
  171. package/pennyfarthing_scripts/dependencies/__main__.py +5 -0
  172. package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
  173. package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
  174. package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
  175. package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
  176. package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
  177. package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
  178. package/pennyfarthing_scripts/dependencies/analyze.py +155 -0
  179. package/pennyfarthing_scripts/dependencies/cli.py +72 -0
  180. package/pennyfarthing_scripts/dependencies/formatters.py +63 -0
  181. package/pennyfarthing_scripts/dependencies/models.py +39 -0
  182. package/pennyfarthing_scripts/healthscore/__init__.py +21 -0
  183. package/pennyfarthing_scripts/healthscore/__main__.py +6 -0
  184. package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
  185. package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
  186. package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
  187. package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
  188. package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
  189. package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
  190. package/pennyfarthing_scripts/healthscore/analyze.py +161 -0
  191. package/pennyfarthing_scripts/healthscore/cli.py +76 -0
  192. package/pennyfarthing_scripts/healthscore/formatters.py +46 -0
  193. package/pennyfarthing_scripts/healthscore/models.py +44 -0
  194. package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
  195. package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
  196. package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  197. package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  198. package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
  199. package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
  200. package/pennyfarthing_scripts/hotspots/analyze.py +28 -1
  201. package/pennyfarthing_scripts/hotspots/cli.py +11 -9
  202. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  203. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  204. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  205. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  206. package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
  207. package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
  208. package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  209. package/pennyfarthing_scripts/jira/bidirectional.py +42 -15
  210. package/pennyfarthing_scripts/jira/cli.py +78 -1
  211. package/pennyfarthing_scripts/jira/client.py +28 -0
  212. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  213. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  214. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  215. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  216. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  217. package/pennyfarthing_scripts/prime/workflow.py +5 -3
  218. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  219. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  220. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  221. package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  222. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  223. package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
  224. package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
  225. package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
  226. package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  227. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  228. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  229. package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  230. package/pennyfarthing_scripts/sprint/archive.py +63 -6
  231. package/pennyfarthing_scripts/sprint/archive_epic.py +198 -85
  232. package/pennyfarthing_scripts/sprint/cli.py +1565 -65
  233. package/pennyfarthing_scripts/sprint/epic_add.py +173 -0
  234. package/pennyfarthing_scripts/sprint/loader.py +46 -2
  235. package/pennyfarthing_scripts/sprint/story_add.py +202 -27
  236. package/pennyfarthing_scripts/sprint/story_finish.py +211 -0
  237. package/pennyfarthing_scripts/sprint/validate_cmd.py +44 -5
  238. package/pennyfarthing_scripts/sprint/validator.py +13 -3
  239. package/pennyfarthing_scripts/sprint/work.py +43 -3
  240. package/pennyfarthing_scripts/sprint/yaml_io.py +124 -15
  241. package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
  242. package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
  243. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  244. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  245. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  246. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  247. package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
  248. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  249. package/pennyfarthing_scripts/tests/test_codemarkers.py +682 -0
  250. package/pennyfarthing_scripts/tests/test_healthscore.py +524 -0
  251. package/pennyfarthing_scripts/tests/test_sprint_package.py +166 -0
  252. package/pennyfarthing_scripts/tests/test_yaml_io.py +117 -0
  253. package/pennyfarthing_scripts/theme/__init__.py +5 -0
  254. package/pennyfarthing_scripts/theme/__main__.py +6 -0
  255. package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
  256. package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
  257. package/pennyfarthing_scripts/theme/cli.py +286 -0
  258. package/scripts/README.md +53 -0
  259. package/scripts/postinstall.cjs +34 -0
  260. package/pennyfarthing-dist/agents/workflow-status-check.md +0 -96
  261. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +0 -133
  262. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +0 -91
  263. package/pennyfarthing-dist/scripts/sprint/check-story.sh +0 -158
  264. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +0 -52
  265. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +0 -63
  266. package/pennyfarthing-dist/scripts/sprint/list-future.sh +0 -145
  267. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +0 -110
  268. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +0 -148
  269. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +0 -415
  270. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +0 -33
  271. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +0 -230
  272. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +0 -134
  273. package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +0 -139
  274. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +0 -101
  275. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +0 -97
  276. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +0 -164
  277. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +0 -23
  278. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +0 -116
  279. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +0 -164
  280. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +0 -39
  281. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +0 -147
  282. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +0 -23
@@ -1,219 +1,27 @@
1
1
  ---
2
2
  name: story
3
3
  description: |
4
- Story creation, sizing, and templates. Use when creating new stories,
5
- determining story points, or getting the right template for bug/feature/refactor work.
6
- For starting work on stories, use /sprint work instead.
4
+ DEPRECATED: Use /sprint story instead.
5
+ Story commands have been consolidated under /sprint.
7
6
  args: "[size|template|create|finish] [options]"
7
+ deprecated: true
8
+ redirect: sprint
8
9
  ---
9
10
 
10
- # /story - Story Management
11
+ # /story - DEPRECATED
11
12
 
12
- Story creation and sizing utilities. For **starting work** on stories, use `/sprint work`.
13
+ Story commands have been consolidated into `/sprint`. Use the new commands:
13
14
 
14
- ## Commands
15
-
16
- ### `/story size [points]`
17
-
18
- Display story sizing guidelines.
19
-
20
- <when>
21
- - Without argument: Show all sizing guidelines
22
- - With points: Show specific guidance for that point value
23
- </when>
24
-
25
- <run>
26
- .pennyfarthing/scripts/story/size-story.sh [points]
27
- </run>
28
-
29
- <example>
30
- .pennyfarthing/scripts/story/size-story.sh # All guidelines
31
- .pennyfarthing/scripts/story/size-story.sh 3 # 3-point guidance
32
- .pennyfarthing/scripts/story/size-story.sh 13 # Split guidance
33
- </example>
34
-
35
- <output>
36
- Sizing characteristics, workflow suggestions, examples.
37
- </output>
38
-
39
- ---
40
-
41
- ### `/story template [type]`
42
-
43
- Display story templates by type.
44
-
45
- <when>
46
- - Without argument: Show all templates
47
- - With type: Show specific template (bug, feature, refactor, chore)
48
- </when>
49
-
50
- <run>
51
- .pennyfarthing/scripts/story/story-template.sh [type]
52
- </run>
53
-
54
- <example>
55
- .pennyfarthing/scripts/story/story-template.sh # All templates
56
- .pennyfarthing/scripts/story/story-template.sh bug # Bug template
57
- .pennyfarthing/scripts/story/story-template.sh feature # Feature template
58
- </example>
59
-
60
- <output>
61
- YAML template with acceptance criteria patterns.
62
- </output>
63
-
64
- ---
65
-
66
- ### `/story create <epic-id> "<title>" <points> [options]`
67
-
68
- Generate a story YAML block for adding to sprint.
69
-
70
- <run>
71
- .pennyfarthing/scripts/story/create-story.sh <epic-id> "<title>" <points> [options]
72
- </run>
73
-
74
- <args>
75
- | Arg | Required | Description |
76
- |-----|----------|-------------|
77
- | `epic-id` | Yes | Parent epic (e.g., `MSSCI-11952`) |
78
- | `title` | Yes | Story title (quoted) |
79
- | `points` | Yes | Story points (1, 2, 3, 5, 8) |
80
- </args>
81
-
82
- <output>
83
- | Option | Values | Default | Description |
84
- |--------|--------|---------|-------------|
85
- | `--type` | bug, feature, refactor, chore | feature | Story type |
86
- | `--workflow` | (project-defined) | auto | Override auto-workflow |
87
- | `--priority` | P0, P1, P2, P3 | P2 | Priority level |
88
- | `--repos` | (project-defined) | - | Affected repos |
89
- | `--jira` | flag | - | Also show Jira create command |
90
- </output>
91
-
92
- <example>
93
- # Simple feature
94
- .pennyfarthing/scripts/story/create-story.sh MSSCI-11952 "Add error handling" 3
95
-
96
- # Bug fix
97
- .pennyfarthing/scripts/story/create-story.sh MSSCI-11952 "Fix null pointer" 2 --type bug
98
-
99
- # Chore with explicit workflow
100
- .pennyfarthing/scripts/story/create-story.sh MSSCI-11952 "Update deps" 1 --type chore
101
-
102
- # With Jira command
103
- .pennyfarthing/scripts/story/create-story.sh MSSCI-11952 "New feature" 5 --jira
104
- </example>
105
-
106
- <output>
107
- YAML block ready to paste into `sprint/current-sprint.yaml`
108
- </output>
109
-
110
- ---
111
-
112
- ### `/story finish <story-id> [--dry-run]`
113
-
114
- Complete a story: archive session, merge PR, transition Jira, update sprint YAML.
115
-
116
- <critical>
117
- Prerequisites before running:
118
- - Session file exists at `.session/{story-id}-session.md`
119
- - PR is approved and mergeable
120
- - Reviewer has approved (phase: finish in session)
121
- </critical>
122
-
123
- <run>
124
- .pennyfarthing/scripts/workflow/finish-story.sh <story-id> [--dry-run]
125
- </run>
126
-
127
- <args>
128
- | Arg | Required | Description |
129
- |-----|----------|-------------|
130
- | `story-id` | Yes | Story ID (e.g., `MSSCI-12052`) |
131
- | `--dry-run` | No | Show what would be done without executing |
132
- </args>
133
-
134
- <example>
135
- .pennyfarthing/scripts/workflow/finish-story.sh MSSCI-12052 # Finish story
136
- .pennyfarthing/scripts/workflow/finish-story.sh MSSCI-12052 --dry-run # Preview only
137
- </example>
138
-
139
- <output>
140
- 1. Archives session file to `sprint/archive/{jira-key}-session.md`
141
- 2. Squash merges PR and deletes remote branch
142
- 3. Transitions Jira issue to Done
143
- 4. Updates sprint YAML (status: done, completed date, removes assigned_to)
144
- 5. Deletes local feature branch
145
- 6. Removes session file
146
-
147
- Step-by-step progress with final summary and Jira link.
148
- </output>
149
-
150
- ---
151
-
152
- ## Sizing Quick Reference
153
-
154
- | Points | Scale | Complexity | Examples |
155
- |--------|-------|------------|----------|
156
- | 1-2 | Trivial | Single file, minimal testing | Config, typo, simple fix |
157
- | 3 | Small | Few files, some testing | Validation, single component |
158
- | 5 | Medium | Multiple files, comprehensive testing | New page, API endpoint |
159
- | 8 | Large | Significant scope, extensive testing | Integration, major refactor |
160
- | 13+ | **SPLIT** | Too complex for single story | Break into smaller stories |
161
-
162
- ## Workflow Selection
163
-
164
- Workflows define the development process for a story. Common patterns:
165
-
166
- | Workflow | When to Use |
167
- |----------|-------------|
168
- | `trivial` | Quick changes, no new tests needed |
169
- | `tdd` | Standard development with test coverage |
170
- | `agent-docs` | Documentation-focused work |
171
- | `bdd` | Behavior-driven development |
172
-
173
- <output>
174
- Auto-selection heuristics:
175
- - 1-2 point chores/bugs → `trivial`
176
- - 3+ point features → `tdd`
177
- - Documentation tasks → `agent-docs`
178
- </output>
179
-
180
- <when>
181
- Projects can define custom workflows in `pennyfarthing-dist/workflows/`.
182
- </when>
183
-
184
- ## Acceptance Criteria Patterns
185
-
186
- ### Good AC (SMART)
187
-
188
- <example>
189
- - "Admin users can access /admin/settings without 403"
190
- - "API returns 204 No Content on successful DELETE"
191
- - "Tests cover admin, manager, analyst roles"
192
- </example>
193
-
194
- ### Bad AC (Vague)
195
-
196
- <critical>
197
- Avoid these patterns:
198
- - "Feature works correctly"
199
- - "No bugs"
200
- - "Good performance"
201
- </critical>
202
-
203
- ---
15
+ | Old Command | New Command |
16
+ |-------------|-------------|
17
+ | `/story size [points]` | `/sprint story size [points]` |
18
+ | `/story template [type]` | `/sprint story template [type]` |
19
+ | `/story create <epic-id> ...` | `/sprint story add <epic-id> ...` |
20
+ | `/story finish <story-id>` | `/sprint story finish <story-id>` |
204
21
 
205
22
  ## Related Skills
206
23
 
207
24
  | Skill | Purpose |
208
25
  |-------|---------|
209
- | `/sprint` | Sprint management, backlog, start work |
210
- | `/jira` | Jira operations (create in Jira, sync, claim) |
211
- | `/workflow` | View/set workflow definitions |
212
-
213
- ## File Locations
214
-
215
- | File | Purpose |
216
- |------|---------|
217
- | `sprint/current-sprint.yaml` | Add new stories here |
218
- | `sprint/planning.yaml` | Future epics/stories |
219
- | `pennyfarthing-dist/workflows/` | Workflow definitions |
26
+ | `/sprint` | All sprint, story, and epic operations |
27
+ | `/jira` | Jira operations (create, sync, claim) |
@@ -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