@pennyfarthing/core 9.2.0 → 9.3.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 (1039) hide show
  1. package/package.json +36 -32
  2. package/LICENSE +0 -14
  3. package/README.md +0 -218
  4. package/pennyfarthing-dist/agents/README.md +0 -348
  5. package/pennyfarthing-dist/agents/architect.md +0 -180
  6. package/pennyfarthing-dist/agents/dev.md +0 -169
  7. package/pennyfarthing-dist/agents/devops.md +0 -203
  8. package/pennyfarthing-dist/agents/handoff.md +0 -235
  9. package/pennyfarthing-dist/agents/orchestrator.md +0 -182
  10. package/pennyfarthing-dist/agents/pm.md +0 -152
  11. package/pennyfarthing-dist/agents/reviewer-preflight.md +0 -129
  12. package/pennyfarthing-dist/agents/reviewer.md +0 -197
  13. package/pennyfarthing-dist/agents/sm-file-summary.md +0 -79
  14. package/pennyfarthing-dist/agents/sm-finish.md +0 -82
  15. package/pennyfarthing-dist/agents/sm-handoff.md +0 -129
  16. package/pennyfarthing-dist/agents/sm-setup.md +0 -251
  17. package/pennyfarthing-dist/agents/sm.md +0 -294
  18. package/pennyfarthing-dist/agents/tea.md +0 -161
  19. package/pennyfarthing-dist/agents/tech-writer.md +0 -226
  20. package/pennyfarthing-dist/agents/testing-runner.md +0 -184
  21. package/pennyfarthing-dist/agents/ux-designer.md +0 -236
  22. package/pennyfarthing-dist/agents/workflow-status-check.md +0 -96
  23. package/pennyfarthing-dist/commands/architect.md +0 -9
  24. package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
  25. package/pennyfarthing-dist/commands/benchmark.md +0 -485
  26. package/pennyfarthing-dist/commands/brainstorming.md +0 -91
  27. package/pennyfarthing-dist/commands/check.md +0 -156
  28. package/pennyfarthing-dist/commands/chore.md +0 -218
  29. package/pennyfarthing-dist/commands/close-epic.md +0 -139
  30. package/pennyfarthing-dist/commands/continue-session.md +0 -218
  31. package/pennyfarthing-dist/commands/create-branches-from-story.md +0 -358
  32. package/pennyfarthing-dist/commands/create-theme.md +0 -29
  33. package/pennyfarthing-dist/commands/dev.md +0 -9
  34. package/pennyfarthing-dist/commands/devops.md +0 -9
  35. package/pennyfarthing-dist/commands/fix-blocker.md +0 -22
  36. package/pennyfarthing-dist/commands/git-cleanup.md +0 -57
  37. package/pennyfarthing-dist/commands/health-check.md +0 -143
  38. package/pennyfarthing-dist/commands/help.md +0 -264
  39. package/pennyfarthing-dist/commands/job-fair.md +0 -102
  40. package/pennyfarthing-dist/commands/list-themes.md +0 -21
  41. package/pennyfarthing-dist/commands/new-work.md +0 -23
  42. package/pennyfarthing-dist/commands/orchestrator.md +0 -9
  43. package/pennyfarthing-dist/commands/parallel-work.md +0 -73
  44. package/pennyfarthing-dist/commands/party-mode.md +0 -77
  45. package/pennyfarthing-dist/commands/patch.md +0 -210
  46. package/pennyfarthing-dist/commands/permissions.md +0 -193
  47. package/pennyfarthing-dist/commands/pm.md +0 -9
  48. package/pennyfarthing-dist/commands/prime.md +0 -136
  49. package/pennyfarthing-dist/commands/release.md +0 -58
  50. package/pennyfarthing-dist/commands/repo-status.md +0 -49
  51. package/pennyfarthing-dist/commands/retro.md +0 -200
  52. package/pennyfarthing-dist/commands/reviewer.md +0 -9
  53. package/pennyfarthing-dist/commands/run-ci.md +0 -116
  54. package/pennyfarthing-dist/commands/set-theme.md +0 -56
  55. package/pennyfarthing-dist/commands/setup.md +0 -65
  56. package/pennyfarthing-dist/commands/show-theme.md +0 -21
  57. package/pennyfarthing-dist/commands/sm.md +0 -9
  58. package/pennyfarthing-dist/commands/solo.md +0 -447
  59. package/pennyfarthing-dist/commands/sprint-planning.md +0 -109
  60. package/pennyfarthing-dist/commands/sprint.md +0 -142
  61. package/pennyfarthing-dist/commands/standalone.md +0 -194
  62. package/pennyfarthing-dist/commands/start-epic.md +0 -168
  63. package/pennyfarthing-dist/commands/sync-epic-to-jira.md +0 -184
  64. package/pennyfarthing-dist/commands/sync-work-with-sprint.md +0 -373
  65. package/pennyfarthing-dist/commands/tea.md +0 -9
  66. package/pennyfarthing-dist/commands/tech-writer.md +0 -9
  67. package/pennyfarthing-dist/commands/theme-maker.md +0 -676
  68. package/pennyfarthing-dist/commands/update-domain-docs.md +0 -83
  69. package/pennyfarthing-dist/commands/ux-designer.md +0 -9
  70. package/pennyfarthing-dist/commands/work.md +0 -25
  71. package/pennyfarthing-dist/commands/workflow.md +0 -21
  72. package/pennyfarthing-dist/guides/agent-behavior.md +0 -90
  73. package/pennyfarthing-dist/guides/agent-coordination.md +0 -480
  74. package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +0 -432
  75. package/pennyfarthing-dist/guides/agent-template-strategic.md +0 -148
  76. package/pennyfarthing-dist/guides/agent-template-tactical.md +0 -162
  77. package/pennyfarthing-dist/guides/hooks.md +0 -230
  78. package/pennyfarthing-dist/guides/measurement-framework.md +0 -210
  79. package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +0 -766
  80. package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +0 -574
  81. package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +0 -488
  82. package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +0 -402
  83. package/pennyfarthing-dist/guides/permission-protocol.md +0 -188
  84. package/pennyfarthing-dist/guides/persona-loading.md +0 -46
  85. package/pennyfarthing-dist/guides/prompt-patterns.md +0 -338
  86. package/pennyfarthing-dist/guides/scale-levels.md +0 -114
  87. package/pennyfarthing-dist/guides/session-artifacts.md +0 -193
  88. package/pennyfarthing-dist/guides/session-schema.md +0 -346
  89. package/pennyfarthing-dist/guides/skill-schema.md +0 -412
  90. package/pennyfarthing-dist/guides/workflow-schema.md +0 -257
  91. package/pennyfarthing-dist/guides/workflow-step-schema.md +0 -512
  92. package/pennyfarthing-dist/guides/worktree-mode.md +0 -113
  93. package/pennyfarthing-dist/guides/xml-tags.md +0 -627
  94. package/pennyfarthing-dist/output-styles/teaching.md +0 -33
  95. package/pennyfarthing-dist/output-styles/terse.md +0 -20
  96. package/pennyfarthing-dist/output-styles/verbose.md +0 -28
  97. package/pennyfarthing-dist/personas/themes/a-team.yaml +0 -331
  98. package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +0 -324
  99. package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +0 -282
  100. package/pennyfarthing-dist/personas/themes/blade-runner.yaml +0 -289
  101. package/pennyfarthing-dist/personas/themes/catch-22.yaml +0 -304
  102. package/pennyfarthing-dist/personas/themes/control.yaml +0 -201
  103. package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +0 -315
  104. package/pennyfarthing-dist/personas/themes/discworld.yaml +0 -334
  105. package/pennyfarthing-dist/personas/themes/doctor-who.yaml +0 -284
  106. package/pennyfarthing-dist/personas/themes/dune.yaml +0 -301
  107. package/pennyfarthing-dist/personas/themes/firefly.yaml +0 -320
  108. package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +0 -284
  109. package/pennyfarthing-dist/personas/themes/harry-potter.yaml +0 -316
  110. package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +0 -323
  111. package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +0 -326
  112. package/pennyfarthing-dist/personas/themes/mad-max.yaml +0 -349
  113. package/pennyfarthing-dist/personas/themes/mash.yaml +0 -329
  114. package/pennyfarthing-dist/personas/themes/princess-bride.yaml +0 -344
  115. package/pennyfarthing-dist/personas/themes/sandman.yaml +0 -282
  116. package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -358
  117. package/pennyfarthing-dist/personas/themes/star-wars.yaml +0 -297
  118. package/pennyfarthing-dist/personas/themes/the-expanse.yaml +0 -337
  119. package/pennyfarthing-dist/personas/themes/the-matrix.yaml +0 -342
  120. package/pennyfarthing-dist/personas/themes/watchmen.yaml +0 -285
  121. package/pennyfarthing-dist/personas/themes/west-wing.yaml +0 -285
  122. package/pennyfarthing-dist/personas/themes/x-files.yaml +0 -296
  123. package/pennyfarthing-dist/scripts/README.md +0 -87
  124. package/pennyfarthing-dist/scripts/core/README.md +0 -25
  125. package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -390
  126. package/pennyfarthing-dist/scripts/core/check-context.sh +0 -194
  127. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -112
  128. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +0 -90
  129. package/pennyfarthing-dist/scripts/core/prime.sh +0 -30
  130. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -21
  131. package/pennyfarthing-dist/scripts/git/README.md +0 -25
  132. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -267
  133. package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -152
  134. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +0 -79
  135. package/pennyfarthing-dist/scripts/git/release.sh +0 -246
  136. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -497
  137. package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -156
  138. package/pennyfarthing-dist/scripts/hooks/README.md +0 -32
  139. package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
  140. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +0 -106
  141. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -95
  142. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -65
  143. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -35
  144. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -150
  145. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -102
  146. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -71
  147. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -42
  148. package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +0 -20
  149. package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -499
  150. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -30
  151. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -97
  152. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -65
  153. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +0 -78
  154. package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -94
  155. package/pennyfarthing-dist/scripts/jira/README.md +0 -36
  156. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -95
  157. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -91
  158. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -22
  159. package/pennyfarthing-dist/scripts/jira/jira-lib.sh +0 -464
  160. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -260
  161. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -18
  162. package/pennyfarthing-dist/scripts/jira/jira-sync.sh +0 -16
  163. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -16
  164. package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +0 -16
  165. package/pennyfarthing-dist/scripts/lib/README.md +0 -29
  166. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -177
  167. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -136
  168. package/pennyfarthing-dist/scripts/lib/common.sh +0 -212
  169. package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -269
  170. package/pennyfarthing-dist/scripts/lib/find-root.sh +0 -58
  171. package/pennyfarthing-dist/scripts/lib/logging.sh +0 -186
  172. package/pennyfarthing-dist/scripts/lib/retry.sh +0 -76
  173. package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -102
  174. package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -91
  175. package/pennyfarthing-dist/scripts/misc/README.md +0 -44
  176. package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -13
  177. package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -226
  178. package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -77
  179. package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -247
  180. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -231
  181. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -107
  182. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -74
  183. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -10
  184. package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -319
  185. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -141
  186. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -778
  187. package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -212
  188. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -7
  189. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -319
  190. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -193
  191. package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -259
  192. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -275
  193. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -160
  194. package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +0 -417
  195. package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +0 -54
  196. package/pennyfarthing-dist/scripts/sprint/README.md +0 -29
  197. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +0 -133
  198. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +0 -91
  199. package/pennyfarthing-dist/scripts/sprint/check-story.sh +0 -158
  200. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +0 -52
  201. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +0 -63
  202. package/pennyfarthing-dist/scripts/sprint/list-future.sh +0 -145
  203. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +0 -110
  204. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +0 -148
  205. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +0 -415
  206. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +0 -33
  207. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +0 -230
  208. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +0 -134
  209. package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +0 -139
  210. package/pennyfarthing-dist/scripts/story/README.md +0 -23
  211. package/pennyfarthing-dist/scripts/story/create-story.sh +0 -19
  212. package/pennyfarthing-dist/scripts/story/size-story.sh +0 -18
  213. package/pennyfarthing-dist/scripts/story/story-template.sh +0 -18
  214. package/pennyfarthing-dist/scripts/test/README.md +0 -23
  215. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +0 -59
  216. package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +0 -220
  217. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -374
  218. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -165
  219. package/pennyfarthing-dist/scripts/test/test-setup.sh +0 -337
  220. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -582
  221. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -515
  222. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -599
  223. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -332
  224. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -573
  225. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -859
  226. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -662
  227. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -589
  228. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -106
  229. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -597
  230. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -514
  231. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -517
  232. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -331
  233. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -647
  234. package/pennyfarthing-dist/scripts/theme/README.md +0 -22
  235. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -13
  236. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +0 -402
  237. package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -30
  238. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -97
  239. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -576
  240. package/pennyfarthing-dist/scripts/workflow/README.md +0 -28
  241. package/pennyfarthing-dist/scripts/workflow/check.py +0 -502
  242. package/pennyfarthing-dist/scripts/workflow/check.sh +0 -24
  243. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -154
  244. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -222
  245. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -61
  246. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -13
  247. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -124
  248. package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -34
  249. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -157
  250. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -132
  251. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -250
  252. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -161
  253. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +0 -246
  254. package/pennyfarthing-dist/skills/changelog/SKILL.md +0 -385
  255. package/pennyfarthing-dist/skills/code-review/SKILL.md +0 -172
  256. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +0 -277
  257. package/pennyfarthing-dist/skills/cyclist/SKILL.md +0 -88
  258. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -461
  259. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -261
  260. package/pennyfarthing-dist/skills/jira/SKILL.md +0 -508
  261. package/pennyfarthing-dist/skills/judge/SKILL.md +0 -644
  262. package/pennyfarthing-dist/skills/just/SKILL.md +0 -414
  263. package/pennyfarthing-dist/skills/mermaid/SKILL.md +0 -256
  264. package/pennyfarthing-dist/skills/otel/skill.md +0 -227
  265. package/pennyfarthing-dist/skills/permissions/skill.md +0 -175
  266. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -187
  267. package/pennyfarthing-dist/skills/skill-registry.schema.json +0 -107
  268. package/pennyfarthing-dist/skills/skill-registry.yaml +0 -393
  269. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +0 -101
  270. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +0 -97
  271. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +0 -164
  272. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +0 -101
  273. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +0 -116
  274. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +0 -164
  275. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +0 -39
  276. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +0 -147
  277. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +0 -93
  278. package/pennyfarthing-dist/skills/sprint/skill.md +0 -465
  279. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +0 -159
  280. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +0 -198
  281. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +0 -162
  282. package/pennyfarthing-dist/skills/story/skill.md +0 -219
  283. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +0 -446
  284. package/pennyfarthing-dist/skills/testing/SKILL.md +0 -121
  285. package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +0 -124
  286. package/pennyfarthing-dist/skills/theme/skill.md +0 -141
  287. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +0 -178
  288. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +0 -91
  289. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +0 -163
  290. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +0 -138
  291. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +0 -273
  292. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +0 -167
  293. package/pennyfarthing-dist/skills/workflow/skill.md +0 -345
  294. package/pennyfarthing-dist/skills/yq/SKILL.md +0 -272
  295. package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +0 -187
  296. package/pennyfarthing-dist/templates/LEADERBOARD.template.md +0 -59
  297. package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -276
  298. package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +0 -61
  299. package/pennyfarthing-dist/templates/persona-config.yaml.template +0 -22
  300. package/pennyfarthing-dist/templates/preferences.yaml.template +0 -15
  301. package/pennyfarthing-dist/templates/settings.local.json.template +0 -110
  302. package/pennyfarthing-dist/templates/setup-env.sh.template +0 -18
  303. package/pennyfarthing-dist/templates/shared-context.md.template +0 -70
  304. package/pennyfarthing-dist/templates/sidecar/decisions.md.template +0 -40
  305. package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +0 -37
  306. package/pennyfarthing-dist/templates/sidecar/patterns.md.template +0 -34
  307. package/pennyfarthing-dist/workflows/agent-docs.yaml +0 -70
  308. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +0 -113
  309. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +0 -105
  310. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +0 -127
  311. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +0 -145
  312. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +0 -150
  313. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +0 -145
  314. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +0 -154
  315. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +0 -172
  316. package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +0 -102
  317. package/pennyfarthing-dist/workflows/architecture.yaml +0 -65
  318. package/pennyfarthing-dist/workflows/bdd.yaml +0 -60
  319. package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +0 -62
  320. package/pennyfarthing-dist/workflows/brainstorming/checklist.md +0 -44
  321. package/pennyfarthing-dist/workflows/brainstorming/instructions.md +0 -736
  322. package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +0 -49
  323. package/pennyfarthing-dist/workflows/code-review/checklist.md +0 -23
  324. package/pennyfarthing-dist/workflows/code-review/instructions.md +0 -234
  325. package/pennyfarthing-dist/workflows/code-review/workflow.yaml +0 -51
  326. package/pennyfarthing-dist/workflows/dev-story/checklist.md +0 -80
  327. package/pennyfarthing-dist/workflows/dev-story/instructions.xml +0 -410
  328. package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +0 -50
  329. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +0 -281
  330. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +0 -256
  331. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +0 -298
  332. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +0 -177
  333. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +0 -145
  334. package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +0 -57
  335. package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +0 -28
  336. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +0 -103
  337. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-02-categorize.md +0 -147
  338. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-03-execute.md +0 -215
  339. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +0 -97
  340. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +0 -78
  341. package/pennyfarthing-dist/workflows/git-cleanup.yaml +0 -59
  342. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +0 -211
  343. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +0 -199
  344. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -202
  345. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +0 -162
  346. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +0 -280
  347. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +0 -158
  348. package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +0 -4
  349. package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +0 -40
  350. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-01-connect.md +0 -257
  351. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-02-explore.md +0 -107
  352. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-03-fix.md +0 -127
  353. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-04-commit.md +0 -122
  354. package/pennyfarthing-dist/workflows/interactive-debug/workflow.yaml +0 -51
  355. package/pennyfarthing-dist/workflows/patch.yaml +0 -67
  356. package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +0 -13
  357. package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +0 -197
  358. package/pennyfarthing-dist/workflows/prd/data/project-types.csv +0 -11
  359. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +0 -197
  360. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +0 -159
  361. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +0 -230
  362. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +0 -232
  363. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +0 -219
  364. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +0 -213
  365. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +0 -232
  366. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +0 -243
  367. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +0 -234
  368. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +0 -237
  369. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +0 -248
  370. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +0 -223
  371. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +0 -186
  372. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +0 -253
  373. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +0 -214
  374. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +0 -255
  375. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +0 -259
  376. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +0 -174
  377. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +0 -224
  378. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +0 -197
  379. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +0 -215
  380. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +0 -180
  381. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +0 -220
  382. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +0 -234
  383. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +0 -223
  384. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -211
  385. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +0 -249
  386. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +0 -269
  387. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +0 -215
  388. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +0 -270
  389. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +0 -248
  390. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +0 -238
  391. package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +0 -10
  392. package/pennyfarthing-dist/workflows/prd/workflow.yaml +0 -42
  393. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +0 -195
  394. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +0 -180
  395. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +0 -221
  396. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +0 -224
  397. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +0 -228
  398. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +0 -243
  399. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +0 -216
  400. package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +0 -10
  401. package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +0 -31
  402. package/pennyfarthing-dist/workflows/project-context/project-context-template.md +0 -21
  403. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +0 -206
  404. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +0 -349
  405. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +0 -306
  406. package/pennyfarthing-dist/workflows/project-context/workflow.yaml +0 -27
  407. package/pennyfarthing-dist/workflows/project-setup/steps/step-01-discover.md +0 -157
  408. package/pennyfarthing-dist/workflows/project-setup/steps/step-02-clone-repos.md +0 -217
  409. package/pennyfarthing-dist/workflows/project-setup/steps/step-03-repos-yaml.md +0 -159
  410. package/pennyfarthing-dist/workflows/project-setup/steps/step-04-claude-md.md +0 -186
  411. package/pennyfarthing-dist/workflows/project-setup/steps/step-05-shared-context.md +0 -185
  412. package/pennyfarthing-dist/workflows/project-setup/steps/step-06-task-runner.md +0 -279
  413. package/pennyfarthing-dist/workflows/project-setup/steps/step-07-theme.md +0 -200
  414. package/pennyfarthing-dist/workflows/project-setup/steps/step-08-theme-packs.md +0 -142
  415. package/pennyfarthing-dist/workflows/project-setup/steps/step-09-cyclist.md +0 -245
  416. package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +0 -204
  417. package/pennyfarthing-dist/workflows/project-setup/workflow.yaml +0 -41
  418. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +0 -177
  419. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +0 -143
  420. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +0 -138
  421. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +0 -135
  422. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +0 -129
  423. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +0 -163
  424. package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +0 -27
  425. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +0 -201
  426. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +0 -156
  427. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +0 -140
  428. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +0 -203
  429. package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +0 -74
  430. package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +0 -27
  431. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +0 -159
  432. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +0 -253
  433. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +0 -263
  434. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +0 -232
  435. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +0 -260
  436. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +0 -477
  437. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +0 -205
  438. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +0 -262
  439. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +0 -227
  440. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +0 -275
  441. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +0 -286
  442. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +0 -203
  443. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +0 -510
  444. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +0 -159
  445. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +0 -264
  446. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +0 -274
  447. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +0 -228
  448. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +0 -267
  449. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +0 -522
  450. package/pennyfarthing-dist/workflows/research/templates/research.template.md +0 -29
  451. package/pennyfarthing-dist/workflows/research/workflow.yaml +0 -45
  452. package/pennyfarthing-dist/workflows/retrospective/checklist.md +0 -31
  453. package/pennyfarthing-dist/workflows/retrospective/instructions.md +0 -1443
  454. package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +0 -50
  455. package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +0 -33
  456. package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +0 -55
  457. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +0 -69
  458. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +0 -61
  459. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +0 -80
  460. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +0 -90
  461. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +0 -78
  462. package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +0 -34
  463. package/pennyfarthing-dist/workflows/tdd.yaml +0 -50
  464. package/pennyfarthing-dist/workflows/trivial.yaml +0 -40
  465. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +0 -141
  466. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +0 -133
  467. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +0 -196
  468. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +0 -222
  469. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +0 -225
  470. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +0 -240
  471. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +0 -258
  472. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +0 -260
  473. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +0 -230
  474. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +0 -230
  475. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +0 -247
  476. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +0 -254
  477. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +0 -243
  478. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +0 -270
  479. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +0 -234
  480. package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +0 -13
  481. package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +0 -41
  482. package/pennyfarthing_scripts/README.md +0 -66
  483. package/pennyfarthing_scripts/__init__.py +0 -17
  484. package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  485. package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
  486. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  487. package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
  488. package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
  489. package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
  490. package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
  491. package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
  492. package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
  493. package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
  494. package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
  495. package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
  496. package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
  497. package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
  498. package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
  499. package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
  500. package/pennyfarthing_scripts/bellmode_hook.py +0 -154
  501. package/pennyfarthing_scripts/brownfield/__init__.py +0 -35
  502. package/pennyfarthing_scripts/brownfield/__main__.py +0 -7
  503. package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
  504. package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
  505. package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
  506. package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
  507. package/pennyfarthing_scripts/brownfield/cli.py +0 -131
  508. package/pennyfarthing_scripts/brownfield/discover.py +0 -753
  509. package/pennyfarthing_scripts/cli.py +0 -174
  510. package/pennyfarthing_scripts/common/__init__.py +0 -49
  511. package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  512. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  513. package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
  514. package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
  515. package/pennyfarthing_scripts/common/config.py +0 -91
  516. package/pennyfarthing_scripts/common/output.py +0 -180
  517. package/pennyfarthing_scripts/common/themes.py +0 -253
  518. package/pennyfarthing_scripts/config.py +0 -21
  519. package/pennyfarthing_scripts/context.py +0 -414
  520. package/pennyfarthing_scripts/git/__init__.py +0 -29
  521. package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
  522. package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
  523. package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
  524. package/pennyfarthing_scripts/git/create_branches.py +0 -439
  525. package/pennyfarthing_scripts/git/status_all.py +0 -310
  526. package/pennyfarthing_scripts/hooks.py +0 -455
  527. package/pennyfarthing_scripts/jira/__init__.py +0 -93
  528. package/pennyfarthing_scripts/jira/__main__.py +0 -10
  529. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  530. package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
  531. package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
  532. package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
  533. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  534. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  535. package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
  536. package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
  537. package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
  538. package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
  539. package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
  540. package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
  541. package/pennyfarthing_scripts/jira/bidirectional.py +0 -561
  542. package/pennyfarthing_scripts/jira/claim.py +0 -211
  543. package/pennyfarthing_scripts/jira/cli.py +0 -150
  544. package/pennyfarthing_scripts/jira/client.py +0 -613
  545. package/pennyfarthing_scripts/jira/epic.py +0 -176
  546. package/pennyfarthing_scripts/jira/story.py +0 -219
  547. package/pennyfarthing_scripts/jira/sync.py +0 -350
  548. package/pennyfarthing_scripts/jira_bidirectional_sync.py +0 -37
  549. package/pennyfarthing_scripts/jira_epic_creation.py +0 -30
  550. package/pennyfarthing_scripts/jira_sync.py +0 -36
  551. package/pennyfarthing_scripts/jira_sync_story.py +0 -30
  552. package/pennyfarthing_scripts/migration/__init__.py +0 -39
  553. package/pennyfarthing_scripts/migration/__main__.py +0 -10
  554. package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
  555. package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
  556. package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
  557. package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
  558. package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
  559. package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
  560. package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
  561. package/pennyfarthing_scripts/migration/cli.py +0 -304
  562. package/pennyfarthing_scripts/migration/session.py +0 -384
  563. package/pennyfarthing_scripts/migration/skill.py +0 -188
  564. package/pennyfarthing_scripts/migration/step.py +0 -229
  565. package/pennyfarthing_scripts/migration/validate.py +0 -282
  566. package/pennyfarthing_scripts/output.py +0 -37
  567. package/pennyfarthing_scripts/patch_mode.py +0 -449
  568. package/pennyfarthing_scripts/preflight/__init__.py +0 -17
  569. package/pennyfarthing_scripts/preflight/__main__.py +0 -10
  570. package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
  571. package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
  572. package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
  573. package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
  574. package/pennyfarthing_scripts/preflight/cli.py +0 -141
  575. package/pennyfarthing_scripts/preflight/finish.py +0 -382
  576. package/pennyfarthing_scripts/pretooluse_hook.py +0 -142
  577. package/pennyfarthing_scripts/prime/__init__.py +0 -125
  578. package/pennyfarthing_scripts/prime/__main__.py +0 -8
  579. package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
  580. package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
  581. package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
  582. package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
  583. package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
  584. package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
  585. package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
  586. package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
  587. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  588. package/pennyfarthing_scripts/prime/cli.py +0 -645
  589. package/pennyfarthing_scripts/prime/loader.py +0 -239
  590. package/pennyfarthing_scripts/prime/models.py +0 -206
  591. package/pennyfarthing_scripts/prime/persona.py +0 -308
  592. package/pennyfarthing_scripts/prime/session.py +0 -183
  593. package/pennyfarthing_scripts/prime/tiers.py +0 -201
  594. package/pennyfarthing_scripts/prime/workflow.py +0 -275
  595. package/pennyfarthing_scripts/schema_validation_hook.py +0 -306
  596. package/pennyfarthing_scripts/sprint/__init__.py +0 -66
  597. package/pennyfarthing_scripts/sprint/__main__.py +0 -10
  598. package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
  599. package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
  600. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  601. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  602. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  603. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  604. package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
  605. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  606. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  607. package/pennyfarthing_scripts/sprint/archive.py +0 -108
  608. package/pennyfarthing_scripts/sprint/archive_epic.py +0 -399
  609. package/pennyfarthing_scripts/sprint/cli.py +0 -284
  610. package/pennyfarthing_scripts/sprint/import_epic.py +0 -431
  611. package/pennyfarthing_scripts/sprint/loader.py +0 -193
  612. package/pennyfarthing_scripts/sprint/status.py +0 -122
  613. package/pennyfarthing_scripts/sprint/validator.py +0 -405
  614. package/pennyfarthing_scripts/sprint/work.py +0 -192
  615. package/pennyfarthing_scripts/story/__init__.py +0 -67
  616. package/pennyfarthing_scripts/story/__main__.py +0 -10
  617. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  618. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  619. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  620. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  621. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  622. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  623. package/pennyfarthing_scripts/story/cli.py +0 -105
  624. package/pennyfarthing_scripts/story/create.py +0 -167
  625. package/pennyfarthing_scripts/story/size.py +0 -113
  626. package/pennyfarthing_scripts/story/template.py +0 -151
  627. package/pennyfarthing_scripts/swebench.py +0 -216
  628. package/pennyfarthing_scripts/tests/__init__.py +0 -1
  629. package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  630. package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  631. package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
  632. package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
  633. package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
  634. package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
  635. package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
  636. package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
  637. package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
  638. package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
  639. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  640. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
  641. package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
  642. package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
  643. package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
  644. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
  645. package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
  646. package/pennyfarthing_scripts/tests/conftest.py +0 -106
  647. package/pennyfarthing_scripts/tests/test_brownfield.py +0 -842
  648. package/pennyfarthing_scripts/tests/test_cli_modules.py +0 -245
  649. package/pennyfarthing_scripts/tests/test_common.py +0 -180
  650. package/pennyfarthing_scripts/tests/test_git_utils.py +0 -866
  651. package/pennyfarthing_scripts/tests/test_jira_package.py +0 -334
  652. package/pennyfarthing_scripts/tests/test_package_structure.py +0 -372
  653. package/pennyfarthing_scripts/tests/test_patch_mode.py +0 -830
  654. package/pennyfarthing_scripts/tests/test_prime.py +0 -1050
  655. package/pennyfarthing_scripts/tests/test_sprint_package.py +0 -236
  656. package/pennyfarthing_scripts/tests/test_sprint_validator.py +0 -675
  657. package/pennyfarthing_scripts/tests/test_story_package.py +0 -156
  658. package/pennyfarthing_scripts/tests/test_tiers.py +0 -1090
  659. package/pennyfarthing_scripts/tests/test_token_counting.py +0 -559
  660. package/pennyfarthing_scripts/tests/test_workflow_check.py +0 -341
  661. package/pennyfarthing_scripts/welcome_hook.py +0 -157
  662. package/pennyfarthing_scripts/workflow.py +0 -287
  663. /package/{packages/core/bin → bin}/pennyfarthing.js +0 -0
  664. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts +0 -0
  665. /package/{packages/core/dist → dist}/bmad/context-reader.d.ts.map +0 -0
  666. /package/{packages/core/dist → dist}/bmad/context-reader.js +0 -0
  667. /package/{packages/core/dist → dist}/bmad/context-reader.js.map +0 -0
  668. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts +0 -0
  669. /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts.map +0 -0
  670. /package/{packages/core/dist → dist}/bmad/context-reader.test.js +0 -0
  671. /package/{packages/core/dist → dist}/bmad/context-reader.test.js.map +0 -0
  672. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts +0 -0
  673. /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts.map +0 -0
  674. /package/{packages/core/dist → dist}/bmad/epics-parser.js +0 -0
  675. /package/{packages/core/dist → dist}/bmad/epics-parser.js.map +0 -0
  676. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts +0 -0
  677. /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts.map +0 -0
  678. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js +0 -0
  679. /package/{packages/core/dist → dist}/bmad/epics-parser.test.js.map +0 -0
  680. /package/{packages/core/dist → dist}/bmad/index.d.ts +0 -0
  681. /package/{packages/core/dist → dist}/bmad/index.d.ts.map +0 -0
  682. /package/{packages/core/dist → dist}/bmad/index.js +0 -0
  683. /package/{packages/core/dist → dist}/bmad/index.js.map +0 -0
  684. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts +0 -0
  685. /package/{packages/core/dist → dist}/bmad/status-sync.d.ts.map +0 -0
  686. /package/{packages/core/dist → dist}/bmad/status-sync.js +0 -0
  687. /package/{packages/core/dist → dist}/bmad/status-sync.js.map +0 -0
  688. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts +0 -0
  689. /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts.map +0 -0
  690. /package/{packages/core/dist → dist}/bmad/status-sync.test.js +0 -0
  691. /package/{packages/core/dist → dist}/bmad/status-sync.test.js.map +0 -0
  692. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts +0 -0
  693. /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts.map +0 -0
  694. /package/{packages/core/dist → dist}/bmad/story-exporter.js +0 -0
  695. /package/{packages/core/dist → dist}/bmad/story-exporter.js.map +0 -0
  696. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts +0 -0
  697. /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts.map +0 -0
  698. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js +0 -0
  699. /package/{packages/core/dist → dist}/bmad/story-exporter.test.js.map +0 -0
  700. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts +0 -0
  701. /package/{packages/core/dist → dist}/bmad/story-parser.d.ts.map +0 -0
  702. /package/{packages/core/dist → dist}/bmad/story-parser.js +0 -0
  703. /package/{packages/core/dist → dist}/bmad/story-parser.js.map +0 -0
  704. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts +0 -0
  705. /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts.map +0 -0
  706. /package/{packages/core/dist → dist}/bmad/story-parser.test.js +0 -0
  707. /package/{packages/core/dist → dist}/bmad/story-parser.test.js.map +0 -0
  708. /package/{packages/core/dist → dist}/cli/commands/command.d.ts +0 -0
  709. /package/{packages/core/dist → dist}/cli/commands/command.d.ts.map +0 -0
  710. /package/{packages/core/dist → dist}/cli/commands/command.js +0 -0
  711. /package/{packages/core/dist → dist}/cli/commands/command.js.map +0 -0
  712. /package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts +0 -0
  713. /package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts.map +0 -0
  714. /package/{packages/core/dist → dist}/cli/commands/cyclist.js +0 -0
  715. /package/{packages/core/dist → dist}/cli/commands/cyclist.js.map +0 -0
  716. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts +0 -0
  717. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts.map +0 -0
  718. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.js +0 -0
  719. /package/{packages/core/dist → dist}/cli/commands/cyclist.test.js.map +0 -0
  720. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.d.ts +0 -0
  721. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.d.ts.map +0 -0
  722. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.js +0 -0
  723. /package/{packages/core/dist → dist}/cli/commands/doctor-legacy.test.js.map +0 -0
  724. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts +0 -0
  725. /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts.map +0 -0
  726. /package/{packages/core/dist → dist}/cli/commands/doctor.js +0 -0
  727. /package/{packages/core/dist → dist}/cli/commands/doctor.js.map +0 -0
  728. /package/{packages/core/dist → dist}/cli/commands/init.d.ts +0 -0
  729. /package/{packages/core/dist → dist}/cli/commands/init.d.ts.map +0 -0
  730. /package/{packages/core/dist → dist}/cli/commands/init.js +0 -0
  731. /package/{packages/core/dist → dist}/cli/commands/init.js.map +0 -0
  732. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts +0 -0
  733. /package/{packages/core/dist → dist}/cli/commands/skill.d.ts.map +0 -0
  734. /package/{packages/core/dist → dist}/cli/commands/skill.js +0 -0
  735. /package/{packages/core/dist → dist}/cli/commands/skill.js.map +0 -0
  736. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts +0 -0
  737. /package/{packages/core/dist → dist}/cli/commands/theme.d.ts.map +0 -0
  738. /package/{packages/core/dist → dist}/cli/commands/theme.js +0 -0
  739. /package/{packages/core/dist → dist}/cli/commands/theme.js.map +0 -0
  740. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts +0 -0
  741. /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts.map +0 -0
  742. /package/{packages/core/dist → dist}/cli/commands/uninstall.js +0 -0
  743. /package/{packages/core/dist → dist}/cli/commands/uninstall.js.map +0 -0
  744. /package/{packages/core/dist → dist}/cli/commands/update.d.ts +0 -0
  745. /package/{packages/core/dist → dist}/cli/commands/update.d.ts.map +0 -0
  746. /package/{packages/core/dist → dist}/cli/commands/update.js +0 -0
  747. /package/{packages/core/dist → dist}/cli/commands/update.js.map +0 -0
  748. /package/{packages/core/dist → dist}/cli/commands/version.d.ts +0 -0
  749. /package/{packages/core/dist → dist}/cli/commands/version.d.ts.map +0 -0
  750. /package/{packages/core/dist → dist}/cli/commands/version.js +0 -0
  751. /package/{packages/core/dist → dist}/cli/commands/version.js.map +0 -0
  752. /package/{packages/core/dist → dist}/cli/customization.test.d.ts +0 -0
  753. /package/{packages/core/dist → dist}/cli/customization.test.d.ts.map +0 -0
  754. /package/{packages/core/dist → dist}/cli/customization.test.js +0 -0
  755. /package/{packages/core/dist → dist}/cli/customization.test.js.map +0 -0
  756. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts +0 -0
  757. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts.map +0 -0
  758. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.js +0 -0
  759. /package/{packages/core/dist → dist}/cli/cyclist-migration.test.js.map +0 -0
  760. /package/{packages/core/dist → dist}/cli/index.d.ts +0 -0
  761. /package/{packages/core/dist → dist}/cli/index.d.ts.map +0 -0
  762. /package/{packages/core/dist → dist}/cli/index.js +0 -0
  763. /package/{packages/core/dist → dist}/cli/index.js.map +0 -0
  764. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts +0 -0
  765. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts.map +0 -0
  766. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js +0 -0
  767. /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js.map +0 -0
  768. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts +0 -0
  769. /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts.map +0 -0
  770. /package/{packages/core/dist → dist}/cli/theme-maker.test.js +0 -0
  771. /package/{packages/core/dist → dist}/cli/theme-maker.test.js.map +0 -0
  772. /package/{packages/core/dist → dist}/cli/utils/constants.d.ts +0 -0
  773. /package/{packages/core/dist → dist}/cli/utils/constants.d.ts.map +0 -0
  774. /package/{packages/core/dist → dist}/cli/utils/constants.js +0 -0
  775. /package/{packages/core/dist → dist}/cli/utils/constants.js.map +0 -0
  776. /package/{packages/core/dist → dist}/cli/utils/files.d.ts +0 -0
  777. /package/{packages/core/dist → dist}/cli/utils/files.d.ts.map +0 -0
  778. /package/{packages/core/dist → dist}/cli/utils/files.js +0 -0
  779. /package/{packages/core/dist → dist}/cli/utils/files.js.map +0 -0
  780. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts +0 -0
  781. /package/{packages/core/dist → dist}/cli/utils/logger.d.ts.map +0 -0
  782. /package/{packages/core/dist → dist}/cli/utils/logger.js +0 -0
  783. /package/{packages/core/dist → dist}/cli/utils/logger.js.map +0 -0
  784. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts +0 -0
  785. /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts.map +0 -0
  786. /package/{packages/core/dist → dist}/cli/utils/manifest.js +0 -0
  787. /package/{packages/core/dist → dist}/cli/utils/manifest.js.map +0 -0
  788. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts +0 -0
  789. /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts.map +0 -0
  790. /package/{packages/core/dist → dist}/cli/utils/node-modules.js +0 -0
  791. /package/{packages/core/dist → dist}/cli/utils/node-modules.js.map +0 -0
  792. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts +0 -0
  793. /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts.map +0 -0
  794. /package/{packages/core/dist → dist}/cli/utils/prompts.js +0 -0
  795. /package/{packages/core/dist → dist}/cli/utils/prompts.js.map +0 -0
  796. /package/{packages/core/dist → dist}/cli/utils/settings.d.ts +0 -0
  797. /package/{packages/core/dist → dist}/cli/utils/settings.d.ts.map +0 -0
  798. /package/{packages/core/dist → dist}/cli/utils/settings.js +0 -0
  799. /package/{packages/core/dist → dist}/cli/utils/settings.js.map +0 -0
  800. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts +0 -0
  801. /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts.map +0 -0
  802. /package/{packages/core/dist → dist}/cli/utils/symlinks.js +0 -0
  803. /package/{packages/core/dist → dist}/cli/utils/symlinks.js.map +0 -0
  804. /package/{packages/core/dist → dist}/cli/utils/themes.d.ts +0 -0
  805. /package/{packages/core/dist → dist}/cli/utils/themes.d.ts.map +0 -0
  806. /package/{packages/core/dist → dist}/cli/utils/themes.js +0 -0
  807. /package/{packages/core/dist → dist}/cli/utils/themes.js.map +0 -0
  808. /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts +0 -0
  809. /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts.map +0 -0
  810. /package/{packages/core/dist → dist}/cli/utils/themes.test.js +0 -0
  811. /package/{packages/core/dist → dist}/cli/utils/themes.test.js.map +0 -0
  812. /package/{packages/core/dist → dist}/cli/utils/version.d.ts +0 -0
  813. /package/{packages/core/dist → dist}/cli/utils/version.d.ts.map +0 -0
  814. /package/{packages/core/dist → dist}/cli/utils/version.js +0 -0
  815. /package/{packages/core/dist → dist}/cli/utils/version.js.map +0 -0
  816. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts +0 -0
  817. /package/{packages/core/dist → dist}/cli/workspace.test.d.ts.map +0 -0
  818. /package/{packages/core/dist → dist}/cli/workspace.test.js +0 -0
  819. /package/{packages/core/dist → dist}/cli/workspace.test.js.map +0 -0
  820. /package/{packages/core/dist → dist}/index.d.ts +0 -0
  821. /package/{packages/core/dist → dist}/index.d.ts.map +0 -0
  822. /package/{packages/core/dist → dist}/index.js +0 -0
  823. /package/{packages/core/dist → dist}/index.js.map +0 -0
  824. /package/{packages/core/dist → dist}/jira/jira-epic-creation.d.ts +0 -0
  825. /package/{packages/core/dist → dist}/jira/jira-epic-creation.d.ts.map +0 -0
  826. /package/{packages/core/dist → dist}/jira/jira-epic-creation.js +0 -0
  827. /package/{packages/core/dist → dist}/jira/jira-epic-creation.js.map +0 -0
  828. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.d.ts +0 -0
  829. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.d.ts.map +0 -0
  830. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.js +0 -0
  831. /package/{packages/core/dist → dist}/jira/jira-epic-creation.test.js.map +0 -0
  832. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.d.ts +0 -0
  833. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.d.ts.map +0 -0
  834. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.js +0 -0
  835. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.js.map +0 -0
  836. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.d.ts +0 -0
  837. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.d.ts.map +0 -0
  838. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.js +0 -0
  839. /package/{packages/core/dist → dist}/jira/jira-sprint-sync.test.js.map +0 -0
  840. /package/{packages/core/dist → dist}/permissions/index.d.ts +0 -0
  841. /package/{packages/core/dist → dist}/permissions/index.d.ts.map +0 -0
  842. /package/{packages/core/dist → dist}/permissions/index.js +0 -0
  843. /package/{packages/core/dist → dist}/permissions/index.js.map +0 -0
  844. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts +0 -0
  845. /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts.map +0 -0
  846. /package/{packages/core/dist → dist}/permissions/permission-schema.js +0 -0
  847. /package/{packages/core/dist → dist}/permissions/permission-schema.js.map +0 -0
  848. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts +0 -0
  849. /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts.map +0 -0
  850. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js +0 -0
  851. /package/{packages/core/dist → dist}/permissions/permission-schema.test.js.map +0 -0
  852. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts +0 -0
  853. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
  854. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js +0 -0
  855. /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js.map +0 -0
  856. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts +0 -0
  857. /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts.map +0 -0
  858. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js +0 -0
  859. /package/{packages/core/dist → dist}/scripts/benchmark-integration.js.map +0 -0
  860. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts +0 -0
  861. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
  862. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js +0 -0
  863. /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js.map +0 -0
  864. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts +0 -0
  865. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
  866. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js +0 -0
  867. /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js.map +0 -0
  868. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts +0 -0
  869. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts.map +0 -0
  870. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js +0 -0
  871. /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js.map +0 -0
  872. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts +0 -0
  873. /package/{packages/core/dist → dist}/scripts/generate-report.d.ts.map +0 -0
  874. /package/{packages/core/dist → dist}/scripts/generate-report.js +0 -0
  875. /package/{packages/core/dist → dist}/scripts/generate-report.js.map +0 -0
  876. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts +0 -0
  877. /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts.map +0 -0
  878. /package/{packages/core/dist → dist}/scripts/generate-report.test.js +0 -0
  879. /package/{packages/core/dist → dist}/scripts/generate-report.test.js.map +0 -0
  880. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts +0 -0
  881. /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts.map +0 -0
  882. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js +0 -0
  883. /package/{packages/core/dist → dist}/scripts/generate-spider-report.js.map +0 -0
  884. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts +0 -0
  885. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
  886. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js +0 -0
  887. /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js.map +0 -0
  888. /package/{packages/core/dist → dist}/scripts/generate-spider.d.ts +0 -0
  889. /package/{packages/core/dist → dist}/scripts/generate-spider.d.ts.map +0 -0
  890. /package/{packages/core/dist → dist}/scripts/generate-spider.js +0 -0
  891. /package/{packages/core/dist → dist}/scripts/generate-spider.js.map +0 -0
  892. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts +0 -0
  893. /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts.map +0 -0
  894. /package/{packages/core/dist → dist}/scripts/generate-spider.test.js +0 -0
  895. /package/{packages/core/dist → dist}/scripts/generate-spider.test.js.map +0 -0
  896. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts +0 -0
  897. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
  898. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js +0 -0
  899. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js.map +0 -0
  900. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
  901. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
  902. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js +0 -0
  903. /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js.map +0 -0
  904. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts +0 -0
  905. /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts.map +0 -0
  906. /package/{packages/core/dist → dist}/scripts/run-ci.test.js +0 -0
  907. /package/{packages/core/dist → dist}/scripts/run-ci.test.js.map +0 -0
  908. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts +0 -0
  909. /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts.map +0 -0
  910. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js +0 -0
  911. /package/{packages/core/dist → dist}/scripts/theme-detail.test.js.map +0 -0
  912. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts +0 -0
  913. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
  914. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js +0 -0
  915. /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js.map +0 -0
  916. /package/{packages/core/dist → dist}/workflow/gate-handler.d.ts +0 -0
  917. /package/{packages/core/dist → dist}/workflow/gate-handler.d.ts.map +0 -0
  918. /package/{packages/core/dist → dist}/workflow/gate-handler.js +0 -0
  919. /package/{packages/core/dist → dist}/workflow/gate-handler.js.map +0 -0
  920. /package/{packages/core/dist → dist}/workflow/gate-handler.test.d.ts +0 -0
  921. /package/{packages/core/dist → dist}/workflow/gate-handler.test.d.ts.map +0 -0
  922. /package/{packages/core/dist → dist}/workflow/gate-handler.test.js +0 -0
  923. /package/{packages/core/dist → dist}/workflow/gate-handler.test.js.map +0 -0
  924. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts +0 -0
  925. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts.map +0 -0
  926. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js +0 -0
  927. /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js.map +0 -0
  928. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts +0 -0
  929. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts.map +0 -0
  930. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js +0 -0
  931. /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js.map +0 -0
  932. /package/{packages/core/dist → dist}/workflow/handoff.d.ts +0 -0
  933. /package/{packages/core/dist → dist}/workflow/handoff.d.ts.map +0 -0
  934. /package/{packages/core/dist → dist}/workflow/handoff.js +0 -0
  935. /package/{packages/core/dist → dist}/workflow/handoff.js.map +0 -0
  936. /package/{packages/core/dist → dist}/workflow/handoff.test.d.ts +0 -0
  937. /package/{packages/core/dist → dist}/workflow/handoff.test.d.ts.map +0 -0
  938. /package/{packages/core/dist → dist}/workflow/handoff.test.js +0 -0
  939. /package/{packages/core/dist → dist}/workflow/handoff.test.js.map +0 -0
  940. /package/{packages/core/dist → dist}/workflow/index.d.ts +0 -0
  941. /package/{packages/core/dist → dist}/workflow/index.d.ts.map +0 -0
  942. /package/{packages/core/dist → dist}/workflow/index.js +0 -0
  943. /package/{packages/core/dist → dist}/workflow/index.js.map +0 -0
  944. /package/{packages/core/dist → dist}/workflow/session-state.d.ts +0 -0
  945. /package/{packages/core/dist → dist}/workflow/session-state.d.ts.map +0 -0
  946. /package/{packages/core/dist → dist}/workflow/session-state.js +0 -0
  947. /package/{packages/core/dist → dist}/workflow/session-state.js.map +0 -0
  948. /package/{packages/core/dist → dist}/workflow/session-state.test.d.ts +0 -0
  949. /package/{packages/core/dist → dist}/workflow/session-state.test.d.ts.map +0 -0
  950. /package/{packages/core/dist → dist}/workflow/session-state.test.js +0 -0
  951. /package/{packages/core/dist → dist}/workflow/session-state.test.js.map +0 -0
  952. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts +0 -0
  953. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts.map +0 -0
  954. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js +0 -0
  955. /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js.map +0 -0
  956. /package/{packages/core/dist → dist}/workflow/step-parser.d.ts +0 -0
  957. /package/{packages/core/dist → dist}/workflow/step-parser.d.ts.map +0 -0
  958. /package/{packages/core/dist → dist}/workflow/step-parser.js +0 -0
  959. /package/{packages/core/dist → dist}/workflow/step-parser.js.map +0 -0
  960. /package/{packages/core/dist → dist}/workflow/step-parser.test.d.ts +0 -0
  961. /package/{packages/core/dist → dist}/workflow/step-parser.test.d.ts.map +0 -0
  962. /package/{packages/core/dist → dist}/workflow/step-parser.test.js +0 -0
  963. /package/{packages/core/dist → dist}/workflow/step-parser.test.js.map +0 -0
  964. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts +0 -0
  965. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
  966. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js +0 -0
  967. /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js.map +0 -0
  968. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts +0 -0
  969. /package/{packages/core/dist → dist}/workflow/test-cache.d.ts.map +0 -0
  970. /package/{packages/core/dist → dist}/workflow/test-cache.js +0 -0
  971. /package/{packages/core/dist → dist}/workflow/test-cache.js.map +0 -0
  972. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts +0 -0
  973. /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts.map +0 -0
  974. /package/{packages/core/dist → dist}/workflow/test-cache.test.js +0 -0
  975. /package/{packages/core/dist → dist}/workflow/test-cache.test.js.map +0 -0
  976. /package/{packages/core/dist → dist}/workflow/trimodal.d.ts +0 -0
  977. /package/{packages/core/dist → dist}/workflow/trimodal.d.ts.map +0 -0
  978. /package/{packages/core/dist → dist}/workflow/trimodal.js +0 -0
  979. /package/{packages/core/dist → dist}/workflow/trimodal.js.map +0 -0
  980. /package/{packages/core/dist → dist}/workflow/trimodal.test.d.ts +0 -0
  981. /package/{packages/core/dist → dist}/workflow/trimodal.test.d.ts.map +0 -0
  982. /package/{packages/core/dist → dist}/workflow/trimodal.test.js +0 -0
  983. /package/{packages/core/dist → dist}/workflow/trimodal.test.js.map +0 -0
  984. /package/{packages/core/dist → dist}/workflow/variable-resolver.d.ts +0 -0
  985. /package/{packages/core/dist → dist}/workflow/variable-resolver.d.ts.map +0 -0
  986. /package/{packages/core/dist → dist}/workflow/variable-resolver.js +0 -0
  987. /package/{packages/core/dist → dist}/workflow/variable-resolver.js.map +0 -0
  988. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.d.ts +0 -0
  989. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.d.ts.map +0 -0
  990. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.js +0 -0
  991. /package/{packages/core/dist → dist}/workflow/variable-resolver.test.js.map +0 -0
  992. /package/{packages/core/dist → dist}/workflow/workflow-executor.d.ts +0 -0
  993. /package/{packages/core/dist → dist}/workflow/workflow-executor.d.ts.map +0 -0
  994. /package/{packages/core/dist → dist}/workflow/workflow-executor.js +0 -0
  995. /package/{packages/core/dist → dist}/workflow/workflow-executor.js.map +0 -0
  996. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.d.ts +0 -0
  997. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.d.ts.map +0 -0
  998. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.js +0 -0
  999. /package/{packages/core/dist → dist}/workflow/workflow-executor.test.js.map +0 -0
  1000. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts +0 -0
  1001. /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts.map +0 -0
  1002. /package/{packages/core/dist → dist}/workflow/workflow-loader.js +0 -0
  1003. /package/{packages/core/dist → dist}/workflow/workflow-loader.js.map +0 -0
  1004. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts +0 -0
  1005. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts.map +0 -0
  1006. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.js +0 -0
  1007. /package/{packages/core/dist → dist}/workflow/workflow-loader.test.js.map +0 -0
  1008. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts +0 -0
  1009. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts.map +0 -0
  1010. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.js +0 -0
  1011. /package/{packages/core/dist → dist}/workflow/workflow-migration.test.js.map +0 -0
  1012. /package/{packages/core/dist → dist}/workflow/workflow-permissions.d.ts +0 -0
  1013. /package/{packages/core/dist → dist}/workflow/workflow-permissions.d.ts.map +0 -0
  1014. /package/{packages/core/dist → dist}/workflow/workflow-permissions.js +0 -0
  1015. /package/{packages/core/dist → dist}/workflow/workflow-permissions.js.map +0 -0
  1016. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.d.ts +0 -0
  1017. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.d.ts.map +0 -0
  1018. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.js +0 -0
  1019. /package/{packages/core/dist → dist}/workflow/workflow-permissions.test.js.map +0 -0
  1020. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts +0 -0
  1021. /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts.map +0 -0
  1022. /package/{packages/core/dist → dist}/workflow/workflow-router.js +0 -0
  1023. /package/{packages/core/dist → dist}/workflow/workflow-router.js.map +0 -0
  1024. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts +0 -0
  1025. /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts.map +0 -0
  1026. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js +0 -0
  1027. /package/{packages/core/dist → dist}/workflow/workflow-router.test.js.map +0 -0
  1028. /package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts +0 -0
  1029. /package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts.map +0 -0
  1030. /package/{packages/core/dist → dist}/workflow/workflow-schema.js +0 -0
  1031. /package/{packages/core/dist → dist}/workflow/workflow-schema.js.map +0 -0
  1032. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts +0 -0
  1033. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts.map +0 -0
  1034. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.js +0 -0
  1035. /package/{packages/core/dist → dist}/workflow/workflow-schema.test.js.map +0 -0
  1036. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.d.ts +0 -0
  1037. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.d.ts.map +0 -0
  1038. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.js +0 -0
  1039. /package/{packages/core/dist → dist}/workflow/workflow-stepped-schema.test.js.map +0 -0
@@ -1,502 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- check.py - Quality gate runner for pre-handoff verification
4
-
5
- Story 21-1: /check command with dev-handoff integration
6
-
7
- Usage: python check.py [OPTIONS]
8
-
9
- Options:
10
- --skip-check Skip all checks (emergency bypass)
11
- --tests-only Run only tests, skip lint and typecheck
12
- --filter PATTERN Filter tests by pattern (passed to test runner)
13
- --repo REPO Run checks in specific repo subdirectory
14
- --no-lint Skip lint check
15
- --no-typecheck Skip type check
16
- --fast Skip slow packages (cyclist/Electron) for rapid iteration
17
-
18
- Runs lint, type check, and tests concurrently. Reports pass/fail status.
19
- Returns exit code 0 on all passing, non-zero on any failure.
20
- """
21
-
22
- import argparse
23
- import asyncio
24
- import json
25
- import os
26
- import shutil
27
- import sys
28
- from dataclasses import dataclass, field
29
- from enum import Enum
30
- from pathlib import Path
31
- from typing import Optional
32
-
33
-
34
- class CheckStatus(Enum):
35
- PASS = "pass"
36
- FAIL = "fail"
37
- SKIP = "skip"
38
-
39
-
40
- @dataclass
41
- class CheckResult:
42
- name: str
43
- status: CheckStatus
44
- command: Optional[str] = None
45
- message: Optional[str] = None
46
-
47
-
48
- @dataclass
49
- class CheckStats:
50
- run: int = 0
51
- passed: int = 0
52
- failed: int = 0
53
- skipped: int = 0
54
-
55
- def record(self, status: CheckStatus) -> None:
56
- if status == CheckStatus.PASS:
57
- self.run += 1
58
- self.passed += 1
59
- elif status == CheckStatus.FAIL:
60
- self.run += 1
61
- self.failed += 1
62
- elif status == CheckStatus.SKIP:
63
- self.skipped += 1
64
-
65
-
66
- @dataclass
67
- class RepoConfig:
68
- path: str = ""
69
- lint_cmd: str = ""
70
- test_cmd: str = ""
71
- test_filter_flag: str = ""
72
- language: str = ""
73
-
74
-
75
- @dataclass
76
- class CheckContext:
77
- project_root: Path
78
- working_dir: Path
79
- target_repo: str = ""
80
- test_filter: str = ""
81
- no_lint: bool = False
82
- no_typecheck: bool = False
83
- fast_mode: bool = False
84
- repo_config: RepoConfig = field(default_factory=RepoConfig)
85
- stats: CheckStats = field(default_factory=CheckStats)
86
-
87
-
88
- # ANSI colors
89
- class Colors:
90
- def __init__(self, enabled: bool = True):
91
- if enabled and sys.stdout.isatty():
92
- self.RED = "\033[0;31m"
93
- self.GREEN = "\033[0;32m"
94
- self.YELLOW = "\033[0;33m"
95
- self.CYAN = "\033[0;36m"
96
- self.NC = "\033[0m"
97
- else:
98
- self.RED = ""
99
- self.GREEN = ""
100
- self.YELLOW = ""
101
- self.CYAN = ""
102
- self.NC = ""
103
-
104
-
105
- COLORS = Colors()
106
-
107
-
108
- def print_pass(name: str, command: Optional[str] = None) -> None:
109
- suffix = f" ({command})" if command else ""
110
- print(f" {COLORS.GREEN}[PASS]{COLORS.NC} {name}{suffix}")
111
-
112
-
113
- def print_fail(name: str, command: Optional[str] = None) -> None:
114
- suffix = f" ({command})" if command else ""
115
- print(f" {COLORS.RED}[FAIL]{COLORS.NC} {name}{suffix}")
116
-
117
-
118
- def print_skip(name: str, reason: str = "") -> None:
119
- suffix = f" - {reason}" if reason else ""
120
- print(f" {COLORS.YELLOW}[SKIP]{COLORS.NC} {name}{suffix}")
121
-
122
-
123
- def print_section(title: str) -> None:
124
- print()
125
- print(f"{COLORS.CYAN}{title}{COLORS.NC}")
126
- print("=" * 40)
127
-
128
-
129
- def find_project_root() -> Path:
130
- """Find project root by looking for .pennyfarthing directory."""
131
- current = Path.cwd()
132
- while current != current.parent:
133
- if (current / ".pennyfarthing").is_dir():
134
- return current
135
- current = current.parent
136
- return Path.cwd()
137
-
138
-
139
- def detect_project_type(working_dir: Path) -> str:
140
- """Detect project type based on files present."""
141
- if (working_dir / "package.json").exists():
142
- return "node"
143
-
144
- # Check for Go files
145
- go_files = list(working_dir.glob("*.go"))
146
- if go_files:
147
- return "go"
148
-
149
- if (working_dir / "go.mod").exists():
150
- return "go"
151
-
152
- return "unknown"
153
-
154
-
155
- def has_just_recipe(recipe: str, working_dir: Path) -> bool:
156
- """Check if justfile has a specific recipe."""
157
- if not (working_dir / "justfile").exists():
158
- return False
159
- if not shutil.which("just"):
160
- return False
161
-
162
- try:
163
- import subprocess
164
- result = subprocess.run(
165
- ["just", "--list"],
166
- cwd=working_dir,
167
- capture_output=True,
168
- text=True,
169
- timeout=5
170
- )
171
- return any(line.startswith(f"{recipe} ") or line.strip() == recipe
172
- for line in result.stdout.splitlines())
173
- except Exception:
174
- return False
175
-
176
-
177
- def has_npm_script(script: str, working_dir: Path) -> bool:
178
- """Check if package.json has a specific script."""
179
- package_json = working_dir / "package.json"
180
- if not package_json.exists():
181
- return False
182
-
183
- try:
184
- with open(package_json) as f:
185
- data = json.load(f)
186
- return script in data.get("scripts", {})
187
- except Exception:
188
- return False
189
-
190
-
191
- async def run_command(cmd: list[str], cwd: Path) -> tuple[bool, str]:
192
- """Run a command asynchronously and return (success, output)."""
193
- try:
194
- proc = await asyncio.create_subprocess_exec(
195
- *cmd,
196
- cwd=cwd,
197
- stdout=asyncio.subprocess.PIPE,
198
- stderr=asyncio.subprocess.PIPE
199
- )
200
- stdout, stderr = await proc.communicate()
201
- success = proc.returncode == 0
202
- output = stdout.decode() + stderr.decode()
203
- return success, output
204
- except Exception as e:
205
- return False, str(e)
206
-
207
-
208
- async def run_shell_command(cmd: str, cwd: Path) -> tuple[bool, str]:
209
- """Run a shell command asynchronously."""
210
- try:
211
- proc = await asyncio.create_subprocess_shell(
212
- cmd,
213
- cwd=cwd,
214
- stdout=asyncio.subprocess.PIPE,
215
- stderr=asyncio.subprocess.PIPE
216
- )
217
- stdout, stderr = await proc.communicate()
218
- success = proc.returncode == 0
219
- output = stdout.decode() + stderr.decode()
220
- return success, output
221
- except Exception as e:
222
- return False, str(e)
223
-
224
-
225
- async def run_lint(ctx: CheckContext) -> CheckResult:
226
- """Run lint check."""
227
- if ctx.no_lint:
228
- return CheckResult("Lint", CheckStatus.SKIP, message="skipped by --no-lint or --tests-only")
229
-
230
- working_dir = ctx.working_dir
231
-
232
- # Use repo config lint command if available
233
- if ctx.repo_config.lint_cmd:
234
- success, _ = await run_shell_command(ctx.repo_config.lint_cmd, working_dir)
235
- return CheckResult(
236
- "Lint",
237
- CheckStatus.PASS if success else CheckStatus.FAIL,
238
- command=ctx.repo_config.lint_cmd
239
- )
240
-
241
- # Prefer justfile recipes
242
- if has_just_recipe("lint", working_dir):
243
- success, _ = await run_command(["just", "lint"], working_dir)
244
- return CheckResult("Lint", CheckStatus.PASS if success else CheckStatus.FAIL, command="just lint")
245
-
246
- project_type = detect_project_type(working_dir)
247
-
248
- if project_type == "node" and has_npm_script("lint", working_dir):
249
- success, _ = await run_command(["npm", "run", "lint"], working_dir)
250
- return CheckResult("Lint", CheckStatus.PASS if success else CheckStatus.FAIL, command="npm run lint")
251
-
252
- if project_type == "go" and shutil.which("golangci-lint"):
253
- success, _ = await run_command(["golangci-lint", "run"], working_dir)
254
- return CheckResult("Lint", CheckStatus.PASS if success else CheckStatus.FAIL, command="golangci-lint")
255
-
256
- eslint_path = working_dir / "node_modules" / ".bin" / "eslint"
257
- if eslint_path.exists():
258
- success, _ = await run_command([str(eslint_path), "."], working_dir)
259
- return CheckResult("Lint", CheckStatus.PASS if success else CheckStatus.FAIL, command="eslint")
260
-
261
- return CheckResult("Lint", CheckStatus.SKIP, message="no lint command configured")
262
-
263
-
264
- async def run_typecheck(ctx: CheckContext) -> CheckResult:
265
- """Run type check."""
266
- if ctx.no_typecheck:
267
- return CheckResult("Type Check", CheckStatus.SKIP, message="skipped by --no-typecheck or --tests-only")
268
-
269
- working_dir = ctx.working_dir
270
-
271
- # Prefer justfile recipes
272
- if has_just_recipe("typecheck", working_dir):
273
- success, _ = await run_command(["just", "typecheck"], working_dir)
274
- return CheckResult("Type Check", CheckStatus.PASS if success else CheckStatus.FAIL, command="just typecheck")
275
-
276
- has_tsconfig = (working_dir / "tsconfig.json").exists()
277
-
278
- if has_tsconfig and has_npm_script("typecheck", working_dir):
279
- success, _ = await run_command(["npm", "run", "typecheck"], working_dir)
280
- return CheckResult("Type Check", CheckStatus.PASS if success else CheckStatus.FAIL, command="npm run typecheck")
281
-
282
- if has_tsconfig and shutil.which("tsc"):
283
- success, _ = await run_command(["tsc", "--noEmit"], working_dir)
284
- return CheckResult("Type Check", CheckStatus.PASS if success else CheckStatus.FAIL, command="tsc --noEmit")
285
-
286
- tsc_path = working_dir / "node_modules" / ".bin" / "tsc"
287
- if has_tsconfig and tsc_path.exists():
288
- success, _ = await run_command([str(tsc_path), "--noEmit"], working_dir)
289
- return CheckResult("Type Check", CheckStatus.PASS if success else CheckStatus.FAIL, command="tsc --noEmit")
290
-
291
- if has_tsconfig:
292
- return CheckResult("Type Check", CheckStatus.SKIP, message="TypeScript found but no typecheck command")
293
-
294
- return CheckResult("Type Check", CheckStatus.SKIP, message="not a TypeScript project")
295
-
296
-
297
- async def run_tests(ctx: CheckContext) -> CheckResult:
298
- """Run tests."""
299
- working_dir = ctx.working_dir
300
- test_filter = ctx.test_filter
301
-
302
- if test_filter:
303
- print(f" Filter: {test_filter}")
304
-
305
- # Use repo config test command if available
306
- if ctx.repo_config.test_cmd:
307
- cmd = ctx.repo_config.test_cmd
308
- if test_filter and ctx.repo_config.test_filter_flag:
309
- cmd = f'{cmd} {ctx.repo_config.test_filter_flag} "{test_filter}"'
310
- success, _ = await run_shell_command(cmd, working_dir)
311
- label = ctx.repo_config.test_cmd
312
- if test_filter:
313
- label += f" {ctx.repo_config.test_filter_flag} {test_filter}"
314
- return CheckResult("Tests", CheckStatus.PASS if success else CheckStatus.FAIL, command=label)
315
-
316
- # Prefer justfile recipes
317
- if has_just_recipe("test", working_dir):
318
- cmd = ["just", "test"]
319
- label = "just test"
320
- if test_filter:
321
- cmd.append(test_filter)
322
- label += f" {test_filter}"
323
- success, _ = await run_command(cmd, working_dir)
324
- return CheckResult("Tests", CheckStatus.PASS if success else CheckStatus.FAIL, command=label)
325
-
326
- project_type = detect_project_type(working_dir)
327
-
328
- if project_type == "node" and has_npm_script("test", working_dir):
329
- # Check for pnpm workspace (monorepo)
330
- pnpm_workspace = (working_dir / "pnpm-workspace.yaml").exists()
331
- has_pnpm = shutil.which("pnpm") is not None
332
-
333
- if pnpm_workspace and has_pnpm:
334
- if ctx.fast_mode:
335
- cmd = "pnpm -r --filter '!@pennyfarthing/cyclist' test"
336
- label = "pnpm test (fast mode - skipping cyclist)"
337
- else:
338
- cmd = "pnpm -r test"
339
- label = "pnpm test"
340
- else:
341
- cmd = "npm test"
342
- label = "npm test"
343
-
344
- if test_filter:
345
- cmd += f' -- -t "{test_filter}"'
346
- label += f" -t {test_filter}"
347
-
348
- success, _ = await run_shell_command(cmd, working_dir)
349
- return CheckResult("Tests", CheckStatus.PASS if success else CheckStatus.FAIL, command=label)
350
-
351
- if project_type == "go":
352
- cmd = "go test ./..."
353
- label = "go test ./..."
354
- if test_filter:
355
- cmd = f'go test -run "{test_filter}" ./...'
356
- label = f"go test -run {test_filter} ./..."
357
- success, _ = await run_shell_command(cmd, working_dir)
358
- return CheckResult("Tests", CheckStatus.PASS if success else CheckStatus.FAIL, command=label)
359
-
360
- jest_path = working_dir / "node_modules" / ".bin" / "jest"
361
- if jest_path.exists():
362
- cmd = [str(jest_path)]
363
- label = "jest"
364
- if test_filter:
365
- cmd.extend(["-t", test_filter])
366
- label += f" -t {test_filter}"
367
- success, _ = await run_command(cmd, working_dir)
368
- return CheckResult("Tests", CheckStatus.PASS if success else CheckStatus.FAIL, command=label)
369
-
370
- return CheckResult("Tests", CheckStatus.SKIP, message="no test command configured")
371
-
372
-
373
- def print_result(result: CheckResult, stats: CheckStats) -> None:
374
- """Print a check result and update stats."""
375
- stats.record(result.status)
376
-
377
- if result.status == CheckStatus.PASS:
378
- print_pass(result.name, result.command)
379
- elif result.status == CheckStatus.FAIL:
380
- print_fail(result.name, result.command)
381
- else:
382
- print_skip(result.name, result.message or "")
383
-
384
-
385
- def print_summary(stats: CheckStats, project_type: str) -> int:
386
- """Print summary and return exit code."""
387
- print_section("Summary")
388
- print()
389
- print(f"Checks run: {stats.run}")
390
- print(f"Checks passed: {COLORS.GREEN}{stats.passed}{COLORS.NC}")
391
-
392
- if stats.failed > 0:
393
- print(f"Checks failed: {COLORS.RED}{stats.failed}{COLORS.NC}")
394
- else:
395
- print(f"Checks failed: {stats.failed}")
396
-
397
- if stats.skipped > 0:
398
- print(f"Checks skipped: {COLORS.YELLOW}{stats.skipped}{COLORS.NC}")
399
-
400
- print()
401
-
402
- if stats.failed > 0:
403
- print(f"{COLORS.RED}FAILED{COLORS.NC} - {stats.failed} check(s) failed")
404
- print("Fix issues before handoff to Reviewer.")
405
- return 1
406
- elif stats.run == 0:
407
- print(f"{COLORS.YELLOW}WARNING{COLORS.NC} - No checks ran (project type: {project_type})")
408
- print("Consider adding lint/test scripts to package.json or justfile.")
409
- return 0
410
- else:
411
- print(f"{COLORS.GREEN}PASSED{COLORS.NC} - All checks passed")
412
- return 0
413
-
414
-
415
- async def main() -> int:
416
- parser = argparse.ArgumentParser(
417
- description="Quality gate runner for pre-handoff verification"
418
- )
419
- parser.add_argument("--skip-check", action="store_true",
420
- help="Skip all checks (emergency bypass)")
421
- parser.add_argument("--tests-only", action="store_true",
422
- help="Run only tests, skip lint and typecheck")
423
- parser.add_argument("--filter", dest="test_filter", default="",
424
- help="Filter tests by pattern")
425
- parser.add_argument("--repo", dest="target_repo", default="",
426
- help="Run checks in specific repo subdirectory")
427
- parser.add_argument("--no-lint", action="store_true",
428
- help="Skip lint check")
429
- parser.add_argument("--no-typecheck", action="store_true",
430
- help="Skip type check")
431
- parser.add_argument("--fast", action="store_true",
432
- help="Skip slow packages for rapid iteration")
433
-
434
- args = parser.parse_args()
435
-
436
- # Handle --skip-check
437
- if args.skip_check:
438
- print("Quality checks skipped by --skip-check flag")
439
- print()
440
- print("WARNING: Skipping checks is for emergencies only.")
441
- print("Ensure checks pass before merging PR.")
442
- return 0
443
-
444
- # Handle --tests-only
445
- no_lint = args.no_lint or args.tests_only
446
- no_typecheck = args.no_typecheck or args.tests_only
447
-
448
- # Find project root
449
- project_root = find_project_root()
450
-
451
- # Handle --repo
452
- if args.target_repo:
453
- working_dir = project_root / args.target_repo
454
- if not working_dir.is_dir():
455
- print(f"Error: Repo directory not found: {working_dir}")
456
- return 1
457
- else:
458
- working_dir = project_root
459
-
460
- # Create context
461
- ctx = CheckContext(
462
- project_root=project_root,
463
- working_dir=working_dir,
464
- target_repo=args.target_repo,
465
- test_filter=args.test_filter,
466
- no_lint=no_lint,
467
- no_typecheck=no_typecheck,
468
- fast_mode=args.fast
469
- )
470
-
471
- # Print header
472
- print()
473
- print("Quality Gate Check")
474
- print("==================")
475
- print(f"Project: {project_root}")
476
- if args.target_repo:
477
- print(f"Repo: {args.target_repo}")
478
- print(f"Working dir: {working_dir}")
479
- if args.fast:
480
- print(f"{COLORS.YELLOW}Mode: FAST (skipping slow packages){COLORS.NC}")
481
-
482
- project_type = detect_project_type(working_dir)
483
-
484
- # Run lint and typecheck concurrently, then tests
485
- # (Tests often depend on lint/typecheck passing in CI, but we run all for reporting)
486
- print_section("Lint")
487
- lint_result = await run_lint(ctx)
488
- print_result(lint_result, ctx.stats)
489
-
490
- print_section("Type Check")
491
- typecheck_result = await run_typecheck(ctx)
492
- print_result(typecheck_result, ctx.stats)
493
-
494
- print_section("Tests")
495
- test_result = await run_tests(ctx)
496
- print_result(test_result, ctx.stats)
497
-
498
- return print_summary(ctx.stats, project_type)
499
-
500
-
501
- if __name__ == "__main__":
502
- sys.exit(asyncio.run(main()))
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env bash
2
- # check.sh - Quality gate runner for pre-handoff verification
3
- #
4
- # Story 21-1: /check command with dev-handoff integration
5
- #
6
- # Usage: ./scripts/check.sh [OPTIONS]
7
- #
8
- # Options:
9
- # --skip-check Skip all checks (emergency bypass)
10
- # --tests-only Run only tests, skip lint and typecheck
11
- # --filter PATTERN Filter tests by pattern (passed to test runner)
12
- # --repo REPO Run checks in specific repo subdirectory
13
- # --no-lint Skip lint check
14
- # --no-typecheck Skip type check
15
- # --fast Skip slow packages (cyclist/Electron) for rapid iteration
16
- #
17
- # Runs lint, type check, and tests. Reports pass/fail status.
18
- # Returns exit code 0 on all passing, non-zero on any failure.
19
-
20
- set -euo pipefail
21
-
22
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
23
-
24
- exec python3 "$SCRIPT_DIR/check.py" "$@"
@@ -1,154 +0,0 @@
1
- #!/bin/bash
2
- # Finish a story: archive, merge PR, transition Jira, update sprint YAML
3
- # Usage: finish-story.sh <story-id> [--dry-run]
4
- #
5
- # Example: finish-story.sh MSSCI-12052
6
- # finish-story.sh MSSCI-12052 --dry-run
7
- #
8
- # Prerequisites:
9
- # - Session file exists at .session/{story-id}-session.md
10
- # - PR is approved and mergeable
11
- # - Reviewer has approved (phase: finish in session)
12
- #
13
- # This script performs:
14
- # 1. Archive session file to sprint/archive/{jira-key}-session.md
15
- # 2. Squash merge PR and delete remote branch
16
- # 3. Transition Jira to Done
17
- # 4. Update sprint YAML (status: done, completed date)
18
- # 5. Clean up local branch and session file
19
-
20
- set -euo pipefail
21
-
22
- STORY_ID="${1:-}"
23
- DRY_RUN=false
24
-
25
- # Parse options
26
- for arg in "$@"; do
27
- case $arg in
28
- --dry-run)
29
- DRY_RUN=true
30
- shift
31
- ;;
32
- esac
33
- done
34
-
35
- if [[ -z "$STORY_ID" ]]; then
36
- echo "Usage: finish-story.sh <story-id> [--dry-run]"
37
- echo ""
38
- echo "Options:"
39
- echo " --dry-run Show what would be done without executing"
40
- exit 1
41
- fi
42
-
43
- # Find project root
44
- source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
45
-
46
- SESSION_FILE="$PROJECT_ROOT/.session/${STORY_ID}-session.md"
47
- SPRINT_FILE="$PROJECT_ROOT/sprint/current-sprint.yaml"
48
- ARCHIVE_DIR="$PROJECT_ROOT/sprint/archive"
49
-
50
- # Ensure archive directory exists
51
- mkdir -p "$ARCHIVE_DIR"
52
-
53
- # Validate session file exists
54
- if [[ ! -f "$SESSION_FILE" ]]; then
55
- echo "Error: Session file not found: $SESSION_FILE"
56
- exit 1
57
- fi
58
-
59
- # Extract metadata from session file (handle both "**Jira:**" and "- **Jira:**" formats)
60
- # Also handle markdown link format: [MSSCI-12721](https://...)
61
- JIRA_KEY=$(grep -E '\*\*Jira:\*\*' "$SESSION_FILE" | sed 's/.*\*\*Jira:\*\* //' | sed 's/\[//' | sed 's/\].*//' | tr -d ' ' || echo "")
62
- # Extract branch - strip any trailing annotations like "(pushed)"
63
- BRANCH=$(grep -E '\*\*Branch:\*\*' "$SESSION_FILE" | sed 's/.*\*\*Branch:\*\* //' | sed 's/ *(.*//' | tr -d ' ' || echo "")
64
-
65
- # Try to get PR number from session file first (format: **PR:** #422 - title)
66
- PR_NUMBER=$(grep -E '\*\*PR:\*\*' "$SESSION_FILE" | sed 's/.*#\([0-9]*\).*/\1/' || echo "")
67
-
68
- # Fallback: try to get Jira key from sprint YAML if not in session
69
- if [[ -z "$JIRA_KEY" || "$JIRA_KEY" == "null" ]]; then
70
- JIRA_KEY=$(yq ".epics[].stories[] | select(.id == \"$STORY_ID\") | .jira // \"\"" "$SPRINT_FILE" 2>/dev/null | head -1 || echo "")
71
- fi
72
-
73
- if [[ -z "$JIRA_KEY" || "$JIRA_KEY" == "null" ]]; then
74
- echo "Error: Could not determine Jira key for story $STORY_ID"
75
- echo "Check session file or sprint YAML for jira: field"
76
- exit 1
77
- fi
78
-
79
- # Fallback: get PR number from GitHub if not in session file
80
- if [[ -z "$PR_NUMBER" ]] && [[ -n "$BRANCH" ]]; then
81
- PR_NUMBER=$(gh pr list --head "$BRANCH" --json number --jq '.[0].number' 2>/dev/null || echo "")
82
- fi
83
-
84
- TODAY=$(date +%Y-%m-%d)
85
-
86
- echo "=== Finish Story: $STORY_ID ==="
87
- echo "Jira Key: $JIRA_KEY"
88
- echo "Branch: ${BRANCH:-none}"
89
- echo "PR: ${PR_NUMBER:-none}"
90
- echo ""
91
-
92
- if $DRY_RUN; then
93
- echo "[DRY RUN] Would perform:"
94
- echo " 1. Archive session → $ARCHIVE_DIR/${JIRA_KEY}-session.md"
95
- if [[ -n "$PR_NUMBER" ]]; then
96
- echo " 2. Merge PR #$PR_NUMBER (squash, delete branch)"
97
- else
98
- echo " 2. No PR to merge"
99
- fi
100
- echo " 3. Transition $JIRA_KEY to Done"
101
- echo " 4. Update sprint YAML (status: done, completed: $TODAY)"
102
- echo " 5. Delete local branch: $BRANCH"
103
- echo " 6. Remove session file"
104
- exit 0
105
- fi
106
-
107
- # Step 1: Archive session file
108
- echo "1. Archiving session file..."
109
- cp "$SESSION_FILE" "$ARCHIVE_DIR/${JIRA_KEY}-session.md"
110
- echo " → $ARCHIVE_DIR/${JIRA_KEY}-session.md"
111
-
112
- # Step 2: Merge PR (if exists)
113
- if [[ -n "$PR_NUMBER" ]]; then
114
- echo "2. Merging PR #$PR_NUMBER..."
115
- gh pr merge "$PR_NUMBER" --squash --delete-branch || {
116
- echo " Warning: PR merge failed (may already be merged)"
117
- }
118
- else
119
- echo "2. No PR found for branch $BRANCH (skipping merge)"
120
- fi
121
-
122
- # Step 3: Transition Jira to Done
123
- echo "3. Transitioning Jira to Done..."
124
- jira issue move "$JIRA_KEY" "Done" 2>/dev/null || {
125
- echo " Warning: Jira transition failed (may already be Done)"
126
- }
127
-
128
- # Step 4: Update sprint YAML
129
- echo "4. Updating sprint YAML..."
130
- # Update status to done
131
- yq eval -i "(.epics[].stories[] | select(.id == \"$STORY_ID\")).status = \"done\"" "$SPRINT_FILE"
132
- # Add completed date
133
- yq eval -i "(.epics[].stories[] | select(.id == \"$STORY_ID\")).completed = \"$TODAY\"" "$SPRINT_FILE"
134
- # Remove assigned_to (no longer in progress)
135
- yq eval -i "del((.epics[].stories[] | select(.id == \"$STORY_ID\")).assigned_to)" "$SPRINT_FILE"
136
- echo " → status: done, completed: $TODAY"
137
-
138
- # Step 5: Clean up git
139
- echo "5. Cleaning up git..."
140
- git checkout develop 2>/dev/null || git checkout main 2>/dev/null || true
141
- git pull origin "$(git branch --show-current)" 2>/dev/null || true
142
-
143
- if [[ -n "$BRANCH" ]]; then
144
- git branch -d "$BRANCH" 2>/dev/null || echo " Local branch already deleted"
145
- fi
146
-
147
- # Step 6: Remove session file
148
- echo "6. Removing session file..."
149
- rm "$SESSION_FILE"
150
-
151
- echo ""
152
- echo "=== Story $STORY_ID Complete ==="
153
- echo "Archived: sprint/archive/${JIRA_KEY}-session.md"
154
- echo "Jira: https://1898andco.atlassian.net/browse/$JIRA_KEY"