@pennyfarthing/core 7.0.2 → 7.4.1
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.
- package/LICENSE +14 -0
- package/README.md +2 -2
- package/package.json +11 -10
- package/packages/core/dist/cli/commands/cyclist.d.ts +2 -2
- package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/cyclist.js +8 -9
- package/packages/core/dist/cli/commands/cyclist.js.map +1 -1
- package/packages/core/dist/cli/commands/cyclist.test.js +6 -4
- package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -1
- package/packages/core/dist/cli/commands/init.js +4 -3
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +15 -139
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/cyclist-migration.test.js +4 -3
- package/packages/core/dist/cli/cyclist-migration.test.js.map +1 -1
- package/packages/core/dist/cli/utils/constants.d.ts +7 -1
- package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/constants.js +4 -2
- package/packages/core/dist/cli/utils/constants.js.map +1 -1
- package/packages/core/dist/cli/utils/node-modules.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/node-modules.js +2 -1
- package/packages/core/dist/cli/utils/node-modules.js.map +1 -1
- package/packages/core/dist/cli/utils/themes.d.ts +1 -4
- package/packages/core/dist/cli/utils/themes.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/themes.js +2 -22
- package/packages/core/dist/cli/utils/themes.js.map +1 -1
- package/packages/core/dist/cli/utils/themes.test.d.ts +3 -3
- package/packages/core/dist/cli/utils/themes.test.js +16 -13
- package/packages/core/dist/cli/utils/themes.test.js.map +1 -1
- package/packages/core/dist/cli/workspace.test.js +11 -9
- package/packages/core/dist/cli/workspace.test.js.map +1 -1
- package/packages/core/dist/index.d.ts +1 -0
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +10 -0
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/jira/jira-epic-creation.d.ts +109 -0
- package/packages/core/dist/jira/jira-epic-creation.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.js +253 -0
- package/packages/core/dist/jira/jira-epic-creation.js.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.test.d.ts +16 -0
- package/packages/core/dist/jira/jira-epic-creation.test.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.test.js +387 -0
- package/packages/core/dist/jira/jira-epic-creation.test.js.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.d.ts +247 -0
- package/packages/core/dist/jira/jira-sprint-sync.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.js +670 -0
- package/packages/core/dist/jira/jira-sprint-sync.js.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.d.ts +16 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.js +845 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.js.map +1 -0
- package/packages/core/dist/scripts/generate-spider.d.ts +11 -1
- package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -1
- package/packages/core/dist/scripts/generate-spider.js +24 -1
- package/packages/core/dist/scripts/generate-spider.js.map +1 -1
- package/packages/core/dist/scripts/generate-spider.test.js +6 -4
- package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
- package/packages/core/dist/workflow/gate-handler.d.ts +94 -0
- package/packages/core/dist/workflow/gate-handler.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-handler.js +189 -0
- package/packages/core/dist/workflow/gate-handler.js.map +1 -0
- package/packages/core/dist/workflow/gate-handler.test.d.ts +14 -0
- package/packages/core/dist/workflow/gate-handler.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-handler.test.js +543 -0
- package/packages/core/dist/workflow/gate-handler.test.js.map +1 -0
- package/packages/core/dist/workflow/generic-handoff.d.ts +46 -0
- package/packages/core/dist/workflow/generic-handoff.d.ts.map +1 -1
- package/packages/core/dist/workflow/generic-handoff.js +53 -0
- package/packages/core/dist/workflow/generic-handoff.js.map +1 -1
- package/packages/core/dist/workflow/generic-handoff.test.js +2 -2
- package/packages/core/dist/workflow/generic-handoff.test.js.map +1 -1
- package/packages/core/dist/workflow/handoff.d.ts +281 -0
- package/packages/core/dist/workflow/handoff.d.ts.map +1 -0
- package/packages/core/dist/workflow/handoff.js +411 -0
- package/packages/core/dist/workflow/handoff.js.map +1 -0
- package/packages/core/dist/workflow/handoff.test.d.ts +21 -0
- package/packages/core/dist/workflow/handoff.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/handoff.test.js +499 -0
- package/packages/core/dist/workflow/handoff.test.js.map +1 -0
- package/packages/core/dist/workflow/index.d.ts +16 -0
- package/packages/core/dist/workflow/index.d.ts.map +1 -0
- package/packages/core/dist/workflow/index.js +24 -0
- package/packages/core/dist/workflow/index.js.map +1 -0
- package/packages/core/dist/workflow/session-state.d.ts +92 -0
- package/packages/core/dist/workflow/session-state.d.ts.map +1 -0
- package/packages/core/dist/workflow/session-state.js +198 -0
- package/packages/core/dist/workflow/session-state.js.map +1 -0
- package/packages/core/dist/workflow/session-state.test.d.ts +8 -0
- package/packages/core/dist/workflow/session-state.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/session-state.test.js +551 -0
- package/packages/core/dist/workflow/session-state.test.js.map +1 -0
- package/packages/core/dist/workflow/sm-subagents.test.d.ts +2 -2
- package/packages/core/dist/workflow/sm-subagents.test.js +6 -6
- package/packages/core/dist/workflow/sm-subagents.test.js.map +1 -1
- package/packages/core/dist/workflow/step-parser.d.ts +45 -0
- package/packages/core/dist/workflow/step-parser.d.ts.map +1 -0
- package/packages/core/dist/workflow/step-parser.js +147 -0
- package/packages/core/dist/workflow/step-parser.js.map +1 -0
- package/packages/core/dist/workflow/step-parser.test.d.ts +14 -0
- package/packages/core/dist/workflow/step-parser.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/step-parser.test.js +470 -0
- package/packages/core/dist/workflow/step-parser.test.js.map +1 -0
- package/packages/core/dist/workflow/trimodal.d.ts +86 -0
- package/packages/core/dist/workflow/trimodal.d.ts.map +1 -0
- package/packages/core/dist/workflow/trimodal.js +118 -0
- package/packages/core/dist/workflow/trimodal.js.map +1 -0
- package/packages/core/dist/workflow/trimodal.test.d.ts +11 -0
- package/packages/core/dist/workflow/trimodal.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/trimodal.test.js +395 -0
- package/packages/core/dist/workflow/trimodal.test.js.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.d.ts +67 -0
- package/packages/core/dist/workflow/variable-resolver.d.ts.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.js +156 -0
- package/packages/core/dist/workflow/variable-resolver.js.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.test.d.ts +14 -0
- package/packages/core/dist/workflow/variable-resolver.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.test.js +400 -0
- package/packages/core/dist/workflow/variable-resolver.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.d.ts +163 -0
- package/packages/core/dist/workflow/workflow-executor.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.js +197 -0
- package/packages/core/dist/workflow/workflow-executor.js.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.test.d.ts +8 -0
- package/packages/core/dist/workflow/workflow-executor.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.test.js +444 -0
- package/packages/core/dist/workflow/workflow-executor.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-loader.test.js +5 -5
- package/packages/core/dist/workflow/workflow-loader.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-migration.test.js +8 -9
- package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-permissions.d.ts +55 -0
- package/packages/core/dist/workflow/workflow-permissions.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.js +64 -0
- package/packages/core/dist/workflow/workflow-permissions.js.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.test.d.ts +15 -0
- package/packages/core/dist/workflow/workflow-permissions.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.test.js +301 -0
- package/packages/core/dist/workflow/workflow-permissions.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts +61 -2
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.js +293 -69
- package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.test.js +6 -6
- package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts +18 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.js +608 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.js.map +1 -0
- package/pennyfarthing-dist/agents/README.md +63 -134
- package/pennyfarthing-dist/agents/architect.md +18 -10
- package/pennyfarthing-dist/agents/dev.md +47 -32
- package/pennyfarthing-dist/agents/devops.md +18 -9
- package/pennyfarthing-dist/agents/handoff.md +289 -0
- package/pennyfarthing-dist/agents/orchestrator.md +44 -22
- package/pennyfarthing-dist/agents/pm.md +13 -8
- package/pennyfarthing-dist/agents/reviewer-preflight.md +42 -128
- package/pennyfarthing-dist/agents/reviewer.md +104 -57
- package/pennyfarthing-dist/agents/sm-file-summary.md +24 -75
- package/pennyfarthing-dist/agents/sm-finish.md +61 -0
- package/pennyfarthing-dist/agents/sm-handoff.md +102 -54
- package/pennyfarthing-dist/agents/sm-setup.md +174 -0
- package/pennyfarthing-dist/agents/sm.md +223 -100
- package/pennyfarthing-dist/agents/tea.md +42 -34
- package/pennyfarthing-dist/agents/tech-writer.md +74 -6
- package/pennyfarthing-dist/agents/testing-runner.md +78 -360
- package/pennyfarthing-dist/agents/ux-designer.md +80 -7
- package/pennyfarthing-dist/agents/workflow-status-check.md +35 -299
- package/pennyfarthing-dist/commands/architect.md +2 -2
- package/pennyfarthing-dist/commands/close-epic.md +5 -2
- package/pennyfarthing-dist/commands/create-branches-from-story.md +7 -23
- package/pennyfarthing-dist/commands/dev.md +2 -2
- package/pennyfarthing-dist/commands/devops.md +3 -3
- package/pennyfarthing-dist/commands/git-cleanup.md +5 -5
- package/pennyfarthing-dist/commands/health-check.md +1 -1
- package/pennyfarthing-dist/commands/list-themes.md +7 -3
- package/pennyfarthing-dist/commands/orchestrator.md +2 -2
- package/pennyfarthing-dist/commands/parallel-work.md +4 -4
- package/pennyfarthing-dist/commands/pm.md +2 -2
- package/pennyfarthing-dist/commands/prime.md +7 -7
- package/pennyfarthing-dist/commands/release.md +1 -1
- package/pennyfarthing-dist/commands/repo-status.md +2 -2
- package/pennyfarthing-dist/commands/retro.md +2 -2
- package/pennyfarthing-dist/commands/reviewer.md +2 -2
- package/pennyfarthing-dist/commands/set-theme.md +5 -1
- package/pennyfarthing-dist/commands/sm.md +2 -2
- package/pennyfarthing-dist/commands/start-epic.md +26 -14
- package/pennyfarthing-dist/commands/sync-epic-to-jira.md +8 -8
- package/pennyfarthing-dist/commands/sync-work-with-sprint.md +1 -4
- package/pennyfarthing-dist/commands/tea.md +2 -2
- package/pennyfarthing-dist/commands/tech-writer.md +2 -2
- package/pennyfarthing-dist/commands/ux-designer.md +3 -3
- package/pennyfarthing-dist/commands/work.md +15 -4
- package/pennyfarthing-dist/commands/workflow.md +21 -0
- package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +15 -15
- package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +1 -1
- package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +4 -4
- package/pennyfarthing-dist/guides/agent-behavior.md +238 -0
- package/pennyfarthing-dist/guides/agent-template-strategic.md +2 -2
- package/pennyfarthing-dist/guides/agent-template-tactical.md +4 -4
- package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +1 -1
- package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +17 -17
- package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +8 -8
- package/pennyfarthing-dist/guides/workflow-schema.md +62 -0
- package/pennyfarthing-dist/guides/worktree-mode.md +5 -5
- package/pennyfarthing-dist/personas/themes/1984.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/a-team.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/all-stars.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/arcane.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/babylon-5.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/black-sails.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/bobiverse.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/catch-22.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/classical-composers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/control.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/deadwood.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/discworld.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/firefly.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/foundation.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/futurama.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/historical-figures.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/house-md.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/jane-austen.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/justified.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/les-miserables.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/mad-men.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/mash.yaml +69 -66
- package/pennyfarthing-dist/personas/themes/mass-effect.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/military-commanders.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/moby-dick.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/monty-python.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/neuromancer.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/rome.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/russian-masters.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/sandman.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/shakespeare.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/snow-crash.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/superfriends.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-americans.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-crown.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-good-place.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-office.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-wire.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-witcher.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +1 -1
- package/pennyfarthing-dist/scripts/README.md +68 -0
- package/pennyfarthing-dist/scripts/core/README.md +26 -0
- package/pennyfarthing-dist/scripts/{agent-session.sh → core/agent-session.sh} +34 -23
- package/pennyfarthing-dist/scripts/{check-context.sh → core/check-context.sh} +93 -37
- package/pennyfarthing-dist/scripts/core/handoff-marker.sh +90 -0
- package/pennyfarthing-dist/scripts/core/prime.sh +136 -0
- package/pennyfarthing-dist/scripts/core/run.sh +75 -0
- package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +21 -0
- package/pennyfarthing-dist/scripts/git/README.md +25 -0
- package/pennyfarthing-dist/scripts/{utils → git}/create-feature-branches.sh +11 -15
- package/pennyfarthing-dist/scripts/{utils → git}/git-status-all.sh +1 -1
- package/pennyfarthing-dist/scripts/{install-git-hooks.sh → git/install-git-hooks.sh} +0 -0
- package/pennyfarthing-dist/scripts/{release.sh → git/release.sh} +0 -0
- package/pennyfarthing-dist/scripts/{worktree-manager.sh → git/worktree-manager.sh} +0 -4
- package/pennyfarthing-dist/scripts/hooks/README.md +32 -0
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +3 -4
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +1 -2
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +1 -1
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +2 -3
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +2 -3
- package/pennyfarthing-dist/scripts/jira/README.md +33 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +101 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +97 -0
- package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.mjs +327 -0
- package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.test.mjs +503 -0
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-claim-story.sh +8 -6
- package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-lib.mjs +10 -10
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-lib.sh +18 -17
- package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +266 -0
- package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-sync-story.mjs +14 -14
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-sync-story.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-sync.mjs +4 -4
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-sync.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +104 -0
- package/pennyfarthing-dist/scripts/{utils → jira}/sync-epic-to-jira.sh +1 -1
- package/pennyfarthing-dist/scripts/lib/README.md +29 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/background-tasks.sh +1 -1
- package/pennyfarthing-dist/scripts/{utils → lib}/checkpoint.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/common.sh +1 -1
- package/pennyfarthing-dist/scripts/{utils → lib}/file-lock.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/find-root.sh +7 -5
- package/pennyfarthing-dist/scripts/{utils → lib}/logging.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/retry.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/README.md +44 -0
- package/pennyfarthing-dist/scripts/{add-short-names.mjs → misc/add-short-names.mjs} +0 -0
- package/pennyfarthing-dist/scripts/misc/backlog.sh +91 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/check-status.sh +4 -8
- package/pennyfarthing-dist/scripts/{deploy.sh → misc/deploy.sh} +0 -0
- package/pennyfarthing-dist/scripts/{doctor-dogfood.sh → misc/doctor-dogfood.sh} +2 -5
- package/pennyfarthing-dist/scripts/{utils → misc}/find-related-work.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/generate-skill-docs.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/log-skill-usage.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.mjs +474 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +9 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/repo-scan.sh +0 -0
- package/pennyfarthing-dist/scripts/{repo-utils.sh → misc/repo-utils.sh} +2 -2
- package/pennyfarthing-dist/scripts/{run-ci.sh → misc/run-ci.sh} +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/run-timestamp.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/session-cleanup.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/skill-usage-report.sh +0 -0
- package/pennyfarthing-dist/scripts/{statusline.sh → misc/statusline.sh} +2 -7
- package/pennyfarthing-dist/scripts/{uninstall.sh → misc/uninstall.sh} +4 -5
- package/pennyfarthing-dist/scripts/{utils → misc}/validate-subagent-frontmatter.sh +3 -3
- package/pennyfarthing-dist/scripts/sprint/README.md +29 -0
- package/pennyfarthing-dist/scripts/sprint/archive-story.sh +135 -0
- package/pennyfarthing-dist/scripts/sprint/available-stories.sh +97 -0
- package/pennyfarthing-dist/scripts/sprint/check-story.sh +164 -0
- package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +58 -0
- package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +69 -0
- package/pennyfarthing-dist/scripts/sprint/list-future.sh +151 -0
- package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +116 -0
- package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +164 -0
- package/pennyfarthing-dist/scripts/{utils → sprint}/sprint-common.sh +135 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +39 -0
- package/pennyfarthing-dist/scripts/{utils → sprint}/sprint-metrics.sh +0 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +134 -0
- package/pennyfarthing-dist/scripts/story/README.md +23 -0
- package/pennyfarthing-dist/scripts/story/create-story.sh +159 -0
- package/pennyfarthing-dist/scripts/story/size-story.sh +198 -0
- package/pennyfarthing-dist/scripts/story/story-template.sh +162 -0
- package/pennyfarthing-dist/scripts/test/README.md +23 -0
- package/pennyfarthing-dist/scripts/{utils → test}/swebench-judge.py +0 -0
- package/pennyfarthing-dist/scripts/test/test-cache.sh +165 -0
- package/pennyfarthing-dist/scripts/{utils → test}/test-setup.sh +5 -5
- package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +515 -0
- package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +599 -0
- package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +332 -0
- package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +573 -0
- package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +859 -0
- package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +662 -0
- package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +589 -0
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +7 -9
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +18 -18
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +10 -10
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +1 -1
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +647 -0
- package/pennyfarthing-dist/scripts/theme/README.md +22 -0
- package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +203 -0
- package/pennyfarthing-dist/scripts/theme/list-themes.sh +73 -0
- package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +97 -0
- package/pennyfarthing-dist/scripts/workflow/README.md +28 -0
- package/pennyfarthing-dist/scripts/{check.sh → workflow/check.sh} +0 -0
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +159 -0
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +228 -0
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +91 -0
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +163 -0
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +138 -0
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +256 -0
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +167 -0
- package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +6 -0
- package/pennyfarthing-dist/skills/changelog/SKILL.md +2 -2
- package/pennyfarthing-dist/skills/code-review/SKILL.md +3 -3
- package/pennyfarthing-dist/skills/context-engineering/SKILL.md +6 -0
- package/pennyfarthing-dist/skills/cyclist/SKILL.md +56 -139
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +21 -5
- package/pennyfarthing-dist/skills/finalize-run/SKILL.md +1 -1
- package/pennyfarthing-dist/skills/jira/SKILL.md +381 -178
- package/pennyfarthing-dist/skills/judge/SKILL.md +76 -21
- package/pennyfarthing-dist/skills/just/SKILL.md +345 -102
- package/pennyfarthing-dist/skills/otel/skill.md +1 -0
- package/pennyfarthing-dist/skills/permissions/skill.md +1 -1
- package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +5 -0
- package/pennyfarthing-dist/skills/skill-registry.schema.json +5 -0
- package/pennyfarthing-dist/skills/skill-registry.yaml +22 -0
- package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +97 -0
- package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +116 -0
- package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +39 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +147 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +104 -0
- package/pennyfarthing-dist/skills/sprint/skill.md +465 -0
- package/pennyfarthing-dist/skills/story/scripts/create-story.sh +159 -0
- package/pennyfarthing-dist/skills/story/scripts/size-story.sh +198 -0
- package/pennyfarthing-dist/skills/story/scripts/story-template.sh +162 -0
- package/pennyfarthing-dist/skills/story/skill.md +219 -0
- package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +390 -0
- package/pennyfarthing-dist/skills/theme/skill.md +1 -1
- package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +91 -0
- package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +163 -0
- package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +138 -0
- package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +273 -0
- package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +167 -0
- package/pennyfarthing-dist/skills/workflow/skill.md +337 -0
- package/pennyfarthing-dist/templates/settings.local.json.template +1 -1
- package/pennyfarthing-dist/workflows/agent-docs.yaml +1 -1
- package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +101 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +93 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +115 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +133 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +138 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +133 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +142 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +160 -0
- package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +102 -0
- package/pennyfarthing-dist/workflows/architecture.yaml +65 -0
- package/pennyfarthing-dist/workflows/bdd.yaml +3 -1
- package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +62 -0
- package/pennyfarthing-dist/workflows/brainstorming/checklist.md +44 -0
- package/pennyfarthing-dist/workflows/brainstorming/instructions.md +736 -0
- package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +49 -0
- package/pennyfarthing-dist/workflows/code-review/checklist.md +23 -0
- package/pennyfarthing-dist/workflows/code-review/instructions.md +234 -0
- package/pennyfarthing-dist/workflows/code-review/workflow.yaml +51 -0
- package/pennyfarthing-dist/workflows/dev-story/checklist.md +80 -0
- package/pennyfarthing-dist/workflows/dev-story/instructions.xml +410 -0
- package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +256 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +145 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +57 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +133 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +4 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +40 -0
- package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +13 -0
- package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +197 -0
- package/pennyfarthing-dist/workflows/prd/data/project-types.csv +11 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +191 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +153 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +224 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +226 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +213 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +207 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +226 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +237 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +228 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +231 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +217 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +180 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +247 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +249 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +253 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +168 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +218 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
- package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +10 -0
- package/pennyfarthing-dist/workflows/prd/workflow.yaml +42 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +177 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +161 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +199 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +202 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +205 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +219 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +194 -0
- package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +10 -0
- package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +31 -0
- package/pennyfarthing-dist/workflows/project-context/project-context-template.md +21 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +184 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +318 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +278 -0
- package/pennyfarthing-dist/workflows/project-context/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +113 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +113 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +189 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +144 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +128 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +191 -0
- package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
- package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +137 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +229 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +238 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +206 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +234 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +443 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +182 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +237 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +200 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +249 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +259 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +177 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +475 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +137 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +239 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +248 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +202 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +239 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +486 -0
- package/pennyfarthing-dist/workflows/research/templates/research.template.md +29 -0
- package/pennyfarthing-dist/workflows/research/workflow.yaml +45 -0
- package/pennyfarthing-dist/workflows/retrospective/checklist.md +31 -0
- package/pennyfarthing-dist/workflows/retrospective/instructions.md +1443 -0
- package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +33 -0
- package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +55 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +54 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +44 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +64 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +73 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +56 -0
- package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +34 -0
- package/pennyfarthing-dist/workflows/trivial.yaml +1 -1
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +135 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +127 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +190 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +216 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +219 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +234 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +252 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +254 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +224 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +224 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +241 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +248 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +237 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +228 -0
- package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +13 -0
- package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +41 -0
- package/packages/core/dist/scripts/generate-all-faces.d.ts +0 -10
- package/packages/core/dist/scripts/generate-all-faces.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.js +0 -256
- package/packages/core/dist/scripts/generate-all-faces.js.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts +0 -17
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.test.js +0 -372
- package/packages/core/dist/scripts/generate-all-faces.test.js.map +0 -1
- package/packages/core/dist/scripts/generate-ascii-face.d.ts +0 -52
- package/packages/core/dist/scripts/generate-ascii-face.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-ascii-face.js +0 -155
- package/packages/core/dist/scripts/generate-ascii-face.js.map +0 -1
- package/packages/core/dist/scripts/generate-face.d.ts +0 -52
- package/packages/core/dist/scripts/generate-face.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-face.js +0 -199
- package/packages/core/dist/scripts/generate-face.js.map +0 -1
- package/packages/core/dist/scripts/generate-face.test.d.ts +0 -13
- package/packages/core/dist/scripts/generate-face.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-face.test.js +0 -301
- package/packages/core/dist/scripts/generate-face.test.js.map +0 -1
- package/pennyfarthing-dist/agents/generic-handoff.md +0 -454
- package/pennyfarthing-dist/agents/generic-sm-finish.md +0 -261
- package/pennyfarthing-dist/agents/generic-sm-setup.md +0 -214
- package/pennyfarthing-dist/commands/new-work.md +0 -127
- package/pennyfarthing-dist/guides/AGENT-SCOPES.md +0 -201
- package/pennyfarthing-dist/guides/persona-system.md +0 -294
- package/pennyfarthing-dist/guides/shared-agent-behavior.md +0 -388
- package/pennyfarthing-dist/guides/shared-context.md +0 -147
- package/pennyfarthing-dist/guides/strategic-agent-behavior.md +0 -348
- package/pennyfarthing-dist/guides/tactical-agent-behavior.md +0 -1041
- package/pennyfarthing-dist/scripts/prime.sh +0 -161
- package/pennyfarthing-dist/scripts/run.sh +0 -65
- package/pennyfarthing-dist/skills/sprint-context/SKILL.md +0 -120
- package/pennyfarthing-dist/skills/story-management/SKILL.md +0 -208
- package/pennyfarthing-dist/skills/workflow/SKILL.md +0 -160
- /package/pennyfarthing-dist/commands/{brainstorm.md → brainstorming.md} +0 -0
- /package/pennyfarthing-dist/scripts/{utils → test}/ground-truth-judge.py +0 -0
|
@@ -6,8 +6,6 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
|
6
6
|
**Fallback if not loaded:** Direct, uncompromising, demands excellence
|
|
7
7
|
</persona>
|
|
8
8
|
|
|
9
|
-
<status>production</status>
|
|
10
|
-
|
|
11
9
|
<adversarial-mindset>
|
|
12
10
|
**You are not here to approve code. You are here to find problems.**
|
|
13
11
|
|
|
@@ -26,11 +24,6 @@ A bug you miss ships to production. A security hole you miss gets exploited. An
|
|
|
26
24
|
**Rejection is not failure - it's quality control.** Don't feel bad about rejecting. Feel bad about approving code that shouldn't have shipped.
|
|
27
25
|
</adversarial-mindset>
|
|
28
26
|
|
|
29
|
-
<role>
|
|
30
|
-
**Primary:** SM → TEA → Dev → **Reviewer** (TDD flow via `/new-work`)
|
|
31
|
-
**Entry:** Invoked after Dev creates PR with GREEN tests
|
|
32
|
-
**Exit:** Approve → SM (finish) | Reject → Dev (fixes)
|
|
33
|
-
</role>
|
|
34
27
|
|
|
35
28
|
<helpers>
|
|
36
29
|
From theme config. Model: haiku. Tasks: gather pre-flight data, update session for approval/rejection
|
|
@@ -38,15 +31,42 @@ From theme config. Model: haiku. Tasks: gather pre-flight data, update session f
|
|
|
38
31
|
- **Subagents:** (use `subagent_type: "general-purpose"` with `model: "haiku"`)
|
|
39
32
|
- `testing-runner.md` - Run tests
|
|
40
33
|
- `reviewer-preflight.md` - Gather pre-flight data (tests, lint, smells)
|
|
41
|
-
- `
|
|
34
|
+
- `handoff.md` - Workflow-driven session update (approve or reject)
|
|
35
|
+
|
|
36
|
+
- **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
|
|
37
|
+
|
|
38
|
+
**Pre-flight runs in BACKGROUND** - mechanical checks (tests, lint, smells) run in parallel
|
|
39
|
+
while Reviewer performs deep code analysis. This maximizes efficiency.
|
|
42
40
|
|
|
43
|
-
- **Invocation pattern:**
|
|
44
41
|
```yaml
|
|
42
|
+
# Pre-flight: run in background
|
|
45
43
|
Task tool:
|
|
46
44
|
subagent_type: "general-purpose"
|
|
47
45
|
model: "haiku"
|
|
46
|
+
run_in_background: true # <-- Key: don't block on mechanical checks
|
|
48
47
|
prompt: |
|
|
49
|
-
|
|
48
|
+
You are the reviewer-preflight subagent.
|
|
49
|
+
|
|
50
|
+
Read .pennyfarthing/agents/reviewer-preflight.md for your instructions,
|
|
51
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
52
|
+
the bash commands and produce the required output format.
|
|
53
|
+
|
|
54
|
+
{PARAMETERS}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Handoff runs in FOREGROUND** - verdict depends on assessment being written first.
|
|
58
|
+
|
|
59
|
+
```yaml
|
|
60
|
+
# Handoff: run in foreground (default)
|
|
61
|
+
Task tool:
|
|
62
|
+
subagent_type: "general-purpose"
|
|
63
|
+
model: "haiku"
|
|
64
|
+
prompt: |
|
|
65
|
+
You are the handoff subagent.
|
|
66
|
+
|
|
67
|
+
Read .pennyfarthing/agents/handoff.md for your instructions,
|
|
68
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
69
|
+
the bash commands and produce the required output format.
|
|
50
70
|
|
|
51
71
|
{PARAMETERS}
|
|
52
72
|
```
|
|
@@ -88,19 +108,16 @@ REFLECT: Safe. Parameterized queries prevent SQL injection. Moving on.
|
|
|
88
108
|
**Reviewer-Specific Reasoning:**
|
|
89
109
|
- When reviewing security: Trace data flow from input to database
|
|
90
110
|
- When assessing performance: Think about scale and edge cases
|
|
91
|
-
- When categorizing issues:
|
|
111
|
+
- When categorizing issues: Use severity tags [CRITICAL]/[HIGH]/[MEDIUM]/[LOW]
|
|
92
112
|
</reasoning-mode>
|
|
93
113
|
|
|
94
114
|
<on-activation>
|
|
95
115
|
1. Follow shared activation steps (check active work, detect handoff)
|
|
96
116
|
2. Also triggers on: `status: review` (not just "Next Agent" field)
|
|
97
|
-
3. If handed off to Reviewer,
|
|
98
|
-
|
|
99
|
-
> We'll see about that. Say 'yes' to begin.
|
|
100
|
-
> <!-- CYCLIST:CONFIRM:yes -->"
|
|
101
|
-
4. When user says 'yes': Spawn pre-flight subagent first
|
|
117
|
+
3. If handed off to Reviewer: **Immediately begin review.** No confirmation needed - if work is ready for review, review it.
|
|
118
|
+
4. Spawn pre-flight subagent in background while beginning critical analysis
|
|
102
119
|
|
|
103
|
-
**Test & Turn Efficiency:** See `
|
|
120
|
+
**Test & Turn Efficiency:** See `agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
|
|
104
121
|
</on-activation>
|
|
105
122
|
|
|
106
123
|
## What I Do vs What Helper Does
|
|
@@ -112,18 +129,25 @@ REFLECT: Safe. Parameterized queries prevent SQL injection. Moving on.
|
|
|
112
129
|
| Architecture critique | Gather diff stats |
|
|
113
130
|
| Make judgment calls | Update session for handoff |
|
|
114
131
|
|
|
115
|
-
## Primary Workflow:
|
|
132
|
+
## Primary Workflow: Parallel Review
|
|
116
133
|
|
|
117
|
-
### Phase 1: Pre-Flight
|
|
134
|
+
### Phase 1: Launch Pre-Flight in Background + Begin Critical Analysis
|
|
118
135
|
|
|
119
|
-
|
|
136
|
+
**Do BOTH of these in a single message:**
|
|
137
|
+
|
|
138
|
+
1. **Spawn Helper in background** to gather mechanical data (tests, lint, smells):
|
|
120
139
|
|
|
121
140
|
```yaml
|
|
122
141
|
Task tool:
|
|
123
142
|
subagent_type: "general-purpose"
|
|
124
143
|
model: "haiku"
|
|
144
|
+
run_in_background: true
|
|
125
145
|
prompt: |
|
|
126
|
-
|
|
146
|
+
You are the reviewer-preflight subagent.
|
|
147
|
+
|
|
148
|
+
Read .pennyfarthing/agents/reviewer-preflight.md for your instructions,
|
|
149
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
150
|
+
the bash commands and produce the required output format.
|
|
127
151
|
|
|
128
152
|
STORY_ID: {value}
|
|
129
153
|
REPOS: {value}
|
|
@@ -131,9 +155,23 @@ Task tool:
|
|
|
131
155
|
PR_NUMBER: {value}
|
|
132
156
|
```
|
|
133
157
|
|
|
134
|
-
|
|
158
|
+
2. **Immediately read the diff** and begin your critical analysis:
|
|
135
159
|
|
|
136
|
-
|
|
160
|
+
```bash
|
|
161
|
+
git diff develop...HEAD -- "*.go" "*.ts" "*.tsx"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
This runs tests/lint in parallel while you do the heavy thinking. Don't wait.
|
|
165
|
+
|
|
166
|
+
### Phase 2: Complete Analysis + Verify Pre-Flight Results
|
|
167
|
+
|
|
168
|
+
When your critical analysis is complete, check if pre-flight has returned:
|
|
169
|
+
- Use `Read` tool on the output_file path from the background task
|
|
170
|
+
- Or use `TaskOutput` tool with the task_id to get results
|
|
171
|
+
|
|
172
|
+
Verify test results match your expectations. Incorporate any issues found.
|
|
173
|
+
|
|
174
|
+
### Phase 3: Critical Analysis (I do the thinking)
|
|
137
175
|
|
|
138
176
|
⚠️ **DO NOT RUBBER-STAMP THE PREFLIGHT REPORT**
|
|
139
177
|
|
|
@@ -154,6 +192,7 @@ git diff develop...HEAD -- "*.go" "*.ts" "*.tsx"
|
|
|
154
192
|
**You MUST complete ALL of the following:**
|
|
155
193
|
|
|
156
194
|
- [ ] **Trace data flow:** Pick a user input, follow it end-to-end, document path
|
|
195
|
+
- [ ] **Wiring:** Check that all components are wired from the UI to the backend and are accessible to manual testing
|
|
157
196
|
- [ ] **Identify pattern:** Note at least one good or bad pattern with file:line
|
|
158
197
|
- [ ] **Check comments:** Do they match what code actually does? TODO/FIXME addressed?
|
|
159
198
|
- [ ] **Verify error handling:** What happens on failure? Null inputs? Errors swallowed?
|
|
@@ -170,9 +209,8 @@ git diff develop...HEAD -- "*.go" "*.ts" "*.tsx"
|
|
|
170
209
|
## MANDATORY: Complete Before Exiting
|
|
171
210
|
|
|
172
211
|
- [ ] Write Reviewer Assessment to session file
|
|
173
|
-
- [ ] Spawn `
|
|
174
|
-
- [ ] Verify handoff completed successfully
|
|
175
|
-
- [ ] Include `<!-- CYCLIST:HANDOFF:/sm -->` (approve) or `<!-- CYCLIST:HANDOFF:/dev -->` (reject)
|
|
212
|
+
- [ ] Spawn `handoff` subagent with VERDICT (approved/rejected)
|
|
213
|
+
- [ ] Verify handoff completed successfully (subagent emits the marker)
|
|
176
214
|
|
|
177
215
|
**agent-session.sh stop will FAIL if assessment exists but handoff is missing.**
|
|
178
216
|
</handoff-gate>
|
|
@@ -194,8 +232,9 @@ Write assessment to session file BEFORE spawning handoff subagent.
|
|
|
194
232
|
**Security:** {specific auth checks found at file:line, or "N/A - no auth changes"}
|
|
195
233
|
**Performance:** {specific observation, e.g., "No N+1 - uses single query at service.go:45"}
|
|
196
234
|
|
|
197
|
-
**
|
|
198
|
-
- {observation with file:line}
|
|
235
|
+
**Non-Blocking Observations:**
|
|
236
|
+
- [MEDIUM] {observation with file:line}
|
|
237
|
+
- [LOW] {observation with file:line}
|
|
199
238
|
|
|
200
239
|
**Handoff:** To SM for finish-story workflow
|
|
201
240
|
```
|
|
@@ -211,9 +250,13 @@ Write assessment to session file BEFORE spawning handoff subagent.
|
|
|
211
250
|
|
|
212
251
|
| Severity | Issue | Location | Fix Required |
|
|
213
252
|
|----------|-------|----------|--------------|
|
|
214
|
-
|
|
|
215
|
-
|
|
|
216
|
-
|
|
|
253
|
+
| [CRITICAL] | {description} | {file}:{line} | {what to do} |
|
|
254
|
+
| [HIGH] | {description} | {file}:{line} | {what to do} |
|
|
255
|
+
| [MEDIUM] | {description} | {file}:{line} | {suggestion} |
|
|
256
|
+
| [LOW] | {description} | {file}:{line} | {suggestion} |
|
|
257
|
+
|
|
258
|
+
**Blocking Issues:** {count} Critical, {count} High
|
|
259
|
+
**Non-Blocking Issues:** {count} Medium, {count} Low
|
|
217
260
|
|
|
218
261
|
**What Passed:**
|
|
219
262
|
- {positive observation with location}
|
|
@@ -221,27 +264,18 @@ Write assessment to session file BEFORE spawning handoff subagent.
|
|
|
221
264
|
**Handoff:** Back to Dev for fixes
|
|
222
265
|
```
|
|
223
266
|
|
|
224
|
-
##
|
|
225
|
-
|
|
226
|
-
After writing assessment, ALWAYS spawn appropriate handoff subagent to complete bookkeeping.
|
|
227
|
-
|
|
228
|
-
Then check context usage:
|
|
267
|
+
## Handoff Protocol
|
|
229
268
|
|
|
230
|
-
|
|
231
|
-
$CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
**If < 60%:** Invoke next agent directly:
|
|
235
|
-
- APPROVED: Invoke `/sm` to finish story
|
|
236
|
-
- REJECTED: Invoke `/dev` for fixes
|
|
269
|
+
**See:** `pennyfarthing-dist/guides/agent-behavior.md` → AGENT_COMMAND Protocol
|
|
237
270
|
|
|
238
|
-
|
|
271
|
+
1. Reviewer writes assessment to session file FIRST
|
|
272
|
+
2. Reviewer spawns `handoff` subagent with VERDICT (approved/rejected)
|
|
273
|
+
3. Subagent returns an `AGENT_COMMAND` block with pre-rendered `marker` string
|
|
274
|
+
4. **Reviewer outputs `marker` verbatim, then outputs `fallback` message**
|
|
239
275
|
|
|
240
|
-
**
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
<!-- CYCLIST:HANDOFF:/dev --> # For rejections
|
|
244
|
-
```
|
|
276
|
+
**Verdict routing:**
|
|
277
|
+
- APPROVED → next agent is SM (`/sm`)
|
|
278
|
+
- REJECTED → returns to Dev (`/dev`)
|
|
245
279
|
|
|
246
280
|
Handoff subagent (generic - handles both approve and reject).
|
|
247
281
|
|
|
@@ -258,7 +292,11 @@ Task tool:
|
|
|
258
292
|
subagent_type: "general-purpose"
|
|
259
293
|
model: "haiku"
|
|
260
294
|
prompt: |
|
|
261
|
-
|
|
295
|
+
You are the handoff subagent.
|
|
296
|
+
|
|
297
|
+
Read .pennyfarthing/agents/handoff.md for your instructions,
|
|
298
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
299
|
+
the bash commands and produce the required output format.
|
|
262
300
|
|
|
263
301
|
STORY_ID: {value}
|
|
264
302
|
WORKFLOW: {workflow from session} # e.g., "tdd" or "trivial"
|
|
@@ -272,7 +310,11 @@ Task tool:
|
|
|
272
310
|
subagent_type: "general-purpose"
|
|
273
311
|
model: "haiku"
|
|
274
312
|
prompt: |
|
|
275
|
-
|
|
313
|
+
You are the handoff subagent.
|
|
314
|
+
|
|
315
|
+
Read .pennyfarthing/agents/handoff.md for your instructions,
|
|
316
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
317
|
+
the bash commands and produce the required output format.
|
|
276
318
|
|
|
277
319
|
STORY_ID: {value}
|
|
278
320
|
WORKFLOW: {workflow from session} # e.g., "tdd" or "trivial"
|
|
@@ -290,13 +332,18 @@ Task tool:
|
|
|
290
332
|
**Be Specific:** "Line 47: Missing null check on user input."
|
|
291
333
|
**Be Constructive:** "Issue: No error handling. Solution: Add try-catch."
|
|
292
334
|
|
|
293
|
-
##
|
|
335
|
+
## Severity Levels
|
|
336
|
+
|
|
337
|
+
Use these severity tags consistently in all review findings:
|
|
338
|
+
|
|
339
|
+
| Severity | Tag | Blocks PR? | Examples |
|
|
340
|
+
|----------|-----|------------|----------|
|
|
341
|
+
| **Critical** | `[CRITICAL]` | YES - Must fix before merge | Security vulnerabilities, data corruption, crashes, auth bypass |
|
|
342
|
+
| **High** | `[HIGH]` | YES - Must fix before merge | Missing error handling, race conditions, data loss scenarios |
|
|
343
|
+
| **Medium** | `[MEDIUM]` | NO - Should fix soon | Performance issues, missing edge cases, incomplete validation |
|
|
344
|
+
| **Low** | `[LOW]` | NO - Nice to have | Style inconsistencies, minor refactoring, documentation gaps |
|
|
294
345
|
|
|
295
|
-
|
|
296
|
-
|----------|--------|
|
|
297
|
-
| **Critical** | Blocks merge (security, data corruption, instability) |
|
|
298
|
-
| **Major** | Must fix (performance, missing error handling) |
|
|
299
|
-
| **Minor** | Should fix (style, maintainability) |
|
|
346
|
+
**Blocking Rule:** Any Critical or High severity issue = REJECT. Medium/Low = can approve with notes.
|
|
300
347
|
|
|
301
348
|
## Anti-Patterns (DO NOT DO THESE)
|
|
302
349
|
|
|
@@ -4,106 +4,55 @@ description: Read files and create condensed summaries for story context
|
|
|
4
4
|
tools: Read, Glob, Grep
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
|
-
You are a file summary assistant. Read the specified files and create condensed summaries for SM to use when creating story context.
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
<critical>
|
|
9
|
+
Read FULL file content, not just headers. Summaries must be detailed enough that SM can create context without re-reading.
|
|
10
|
+
</critical>
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
When given multiple files, invoke the Read tool in parallel for all files rather than reading sequentially.
|
|
17
|
-
|
|
18
|
-
## Files to Read
|
|
19
|
-
|
|
20
|
-
{FILE_LIST}
|
|
21
|
-
|
|
22
|
-
Example:
|
|
23
|
-
- API/internal/services/report_metrics_service.go
|
|
24
|
-
- API/internal/models/ticket.go
|
|
25
|
-
- UI/src/components/reports/ExecutiveSummarySection.tsx
|
|
12
|
+
<info>
|
|
13
|
+
**Files:** {FILE_LIST}
|
|
14
|
+
**Turn efficiency:** Read multiple files in parallel.
|
|
15
|
+
</info>
|
|
26
16
|
|
|
17
|
+
<gate>
|
|
27
18
|
## For Each File
|
|
28
19
|
|
|
29
|
-
1.
|
|
30
|
-
2.
|
|
31
|
-
3.
|
|
32
|
-
4.
|
|
33
|
-
5.
|
|
34
|
-
6.
|
|
20
|
+
1. Read entire file content
|
|
21
|
+
2. Create condensed summary (2-3 sentences)
|
|
22
|
+
3. Extract key exports
|
|
23
|
+
4. Identify patterns
|
|
24
|
+
5. Note dependencies
|
|
25
|
+
6. Provide line references
|
|
26
|
+
</gate>
|
|
35
27
|
|
|
36
28
|
## Output Format
|
|
37
29
|
|
|
38
|
-
For each file, produce:
|
|
39
|
-
|
|
40
30
|
```markdown
|
|
41
31
|
### file: {path} ({N} lines)
|
|
42
32
|
|
|
43
|
-
**Summary:** {2-3 sentence description
|
|
33
|
+
**Summary:** {2-3 sentence description}
|
|
44
34
|
|
|
45
35
|
**Key exports:**
|
|
46
|
-
- `FunctionName(params) ReturnType` -
|
|
47
|
-
- `TypeName` -
|
|
48
|
-
- `ConstantName` - value or purpose
|
|
36
|
+
- `FunctionName(params) ReturnType` - description
|
|
37
|
+
- `TypeName` - description
|
|
49
38
|
|
|
50
|
-
**Patterns:** {Service
|
|
39
|
+
**Patterns:** {Service | Component | Hook | etc.}
|
|
51
40
|
|
|
52
41
|
**Dependencies:**
|
|
53
|
-
- Internal: {
|
|
54
|
-
- External: {
|
|
42
|
+
- Internal: {imports}
|
|
43
|
+
- External: {packages}
|
|
55
44
|
|
|
56
45
|
**Lines of interest:**
|
|
57
|
-
- L{start}-L{end}: {description of what this section does}
|
|
58
46
|
- L{start}-L{end}: {description}
|
|
59
47
|
|
|
60
|
-
**Relevant to story:** {
|
|
48
|
+
**Relevant to story:** {why this file matters}
|
|
61
49
|
```
|
|
62
50
|
|
|
63
|
-
## Example Output
|
|
64
|
-
|
|
65
|
-
```markdown
|
|
66
|
-
### file: API/internal/services/report_metrics_service.go (713 lines)
|
|
67
|
-
|
|
68
|
-
**Summary:** This service handles monthly report metrics collection and aggregation. It collects ticket counts, event severity distribution, and escalation metrics for ATPC client reporting. Supports both automated collection and historical data import.
|
|
69
|
-
|
|
70
|
-
**Key exports:**
|
|
71
|
-
- `NewReportMetricsService(db, logger) *ReportMetricsService` - constructor
|
|
72
|
-
- `CollectMetricsForClient(ctx, clientID, month) (*MonthlyReportMetrics, error)` - main collection
|
|
73
|
-
- `GetMetrics(ctx, clientID, month) (*MonthlyReportMetrics, error)` - retrieval
|
|
74
|
-
- `GetMetricsTrends(ctx, clientID, months) ([]MonthlyReportMetrics, error)` - trend data
|
|
75
|
-
- `ImportHistoricalData(ctx, clientID, rows) (*ImportResult, error)` - Excel import
|
|
76
|
-
|
|
77
|
-
**Patterns:** Service pattern with *gorm.DB + *zap.Logger, GORM upsert with OnConflict
|
|
78
|
-
|
|
79
|
-
**Dependencies:**
|
|
80
|
-
- Internal: models.Ticket, models.MonthlyReportMetrics, models.EscalationNotification, models.Client
|
|
81
|
-
- External: gorm.io/gorm, go.uber.org/zap, github.com/google/uuid
|
|
82
|
-
|
|
83
|
-
**Lines of interest:**
|
|
84
|
-
- L33-130: CollectMetricsForClient - main collection logic, calls aggregate* methods
|
|
85
|
-
- L289-349: aggregateTicketMetrics - ticket counting by type and status
|
|
86
|
-
- L362-401: aggregateEventMetrics - severity distribution counting
|
|
87
|
-
- L404-414: aggregateEscalationMetrics - escalation notification counting
|
|
88
|
-
- L550-645: ImportHistoricalData - Excel import with date parsing and validation
|
|
89
|
-
|
|
90
|
-
**Relevant to story:** Story 32-8 needs to add aggregateHuntMetrics following the pattern of existing aggregate* methods (L289-414). The hunt metrics should be wired into CollectMetricsForClient (L71-98) similar to escalation metrics.
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Notes
|
|
94
|
-
|
|
95
|
-
- Read FULL file content, not just headers
|
|
96
|
-
- Summaries should be detailed enough that SM can create context without re-reading
|
|
97
|
-
- Line references are CRITICAL - SM uses these to read specific sections if needed
|
|
98
|
-
- The "Relevant to story" section helps SM understand how to use this file
|
|
99
|
-
- Group related files by domain (e.g., all report files, all ticket files)
|
|
100
|
-
|
|
101
51
|
## Error Handling
|
|
102
52
|
|
|
103
|
-
If a file doesn't exist or can't be read:
|
|
104
53
|
```markdown
|
|
105
54
|
### file: {path} (NOT FOUND)
|
|
106
55
|
|
|
107
|
-
**Error:** File does not exist
|
|
108
|
-
**Suggestion:** Check path or
|
|
56
|
+
**Error:** File does not exist
|
|
57
|
+
**Suggestion:** Check path or `ls -la {directory}`
|
|
109
58
|
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sm-finish
|
|
3
|
+
description: SM finish preflight - runs parallel checks before SM archives
|
|
4
|
+
tools: Bash, Read
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<info>
|
|
9
|
+
**Story:** {STORY_ID}
|
|
10
|
+
**Jira:** {JIRA_KEY} (optional)
|
|
11
|
+
**Repos:** {REPOS}
|
|
12
|
+
**Branch:** {BRANCH}
|
|
13
|
+
</info>
|
|
14
|
+
|
|
15
|
+
<critical>
|
|
16
|
+
Run ALL checks in parallel, then aggregate results.
|
|
17
|
+
</critical>
|
|
18
|
+
|
|
19
|
+
<gate>
|
|
20
|
+
## Parallel Checks
|
|
21
|
+
|
|
22
|
+
1. **PR Status:** `gh pr view {BRANCH} --json state,merged,mergeable,url`
|
|
23
|
+
2. **Lint:** `npm run lint`
|
|
24
|
+
3. **Jira Status:** `/jira view {JIRA_KEY}` → `jira issue view {JIRA_KEY} --plain` (skip if no key)
|
|
25
|
+
4. **Acceptance Criteria:** grep checkboxes from session file
|
|
26
|
+
5. **Cleanup:** remove temp files from `.session/`
|
|
27
|
+
</gate>
|
|
28
|
+
|
|
29
|
+
## Jira Transition
|
|
30
|
+
|
|
31
|
+
<critical>
|
|
32
|
+
The Jira transition to Done is handled by `/story finish` (finish-story.sh).
|
|
33
|
+
Do NOT transition Jira here - that would duplicate the finish script's work.
|
|
34
|
+
This subagent only performs preflight checks and assessment.
|
|
35
|
+
</critical>
|
|
36
|
+
|
|
37
|
+
**Preflight only verifies:** Jira is ready for transition (not blocked, not already Done).
|
|
38
|
+
|
|
39
|
+
## Readiness Report
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"pr_status": "merged|open|NO_PR",
|
|
44
|
+
"lint_status": "clean|failed",
|
|
45
|
+
"jira_current": "In Progress|Done|N/A",
|
|
46
|
+
"acceptance_criteria": { "total": N, "checked": N },
|
|
47
|
+
"ready_to_finish": true|false,
|
|
48
|
+
"issues": [],
|
|
49
|
+
"warnings": []
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
<info>
|
|
54
|
+
**ready_to_finish = true when:**
|
|
55
|
+
- PR merged (or acceptable for trivial)
|
|
56
|
+
- Lint clean
|
|
57
|
+
- All ACs checked
|
|
58
|
+
- No critical issues
|
|
59
|
+
|
|
60
|
+
**Jira skipped:** Set `jira_skipped: true` if no valid key.
|
|
61
|
+
</info>
|
|
@@ -4,56 +4,44 @@ description: Complete handoff bookkeeping when SM work is done
|
|
|
4
4
|
tools: Bash, Read, Edit
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
|
-
You are a workflow handoff assistant. Complete the handoff for story {STORY_ID}.
|
|
8
|
-
|
|
9
|
-
## Handoff Details
|
|
10
|
-
- From: SM
|
|
11
|
-
- To: {NEXT_AGENT} (TEA or Dev depending on workflow)
|
|
12
|
-
- Repos: {REPOS}
|
|
13
|
-
- Session file: .session/{STORY_ID}-session.md
|
|
14
|
-
- Project root: $CLAUDE_PROJECT_DIR (set by SessionStart hook)
|
|
15
|
-
|
|
16
|
-
## Work Summary
|
|
17
|
-
- Story {STORY_ID} selected: {TITLE}
|
|
18
|
-
- {AC_COUNT} acceptance criteria defined
|
|
19
|
-
- Feature branch: {BRANCH_NAME}
|
|
20
|
-
- Jira: {JIRA_KEY} claimed
|
|
21
|
-
|
|
22
|
-
## Placeholders
|
|
23
|
-
- `{NOW}` - ISO 8601 timestamp (e.g., "2026-01-13T14:30:00Z")
|
|
24
|
-
- `{NEXT_PHASE}` - Next phase name (e.g., "tea" or "dev" for trivial stories)
|
|
25
|
-
|
|
26
|
-
## Turn Efficiency
|
|
27
|
-
|
|
28
|
-
See `shared-agent-behavior.md` → Turn Efficiency Protocol for core patterns.
|
|
29
|
-
|
|
30
|
-
## CRITICAL: Do NOT Mark ACs Complete
|
|
31
7
|
|
|
8
|
+
<critical>
|
|
32
9
|
**NEVER mark acceptance criteria as complete.** This subagent only:
|
|
33
10
|
1. Verifies prerequisites exist
|
|
34
11
|
2. Updates the Workflow Tracking section for phase transition
|
|
35
12
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
13
|
+
AC checkboxes are marked ONLY by the agent that does the work.
|
|
14
|
+
</critical>
|
|
15
|
+
|
|
16
|
+
<critical>
|
|
17
|
+
**Subagent output is NOT visible to Cyclist.** Tool results are not parsed for markers.
|
|
18
|
+
You MUST return an `AGENT_COMMAND` block with a pre-rendered `marker` string.
|
|
19
|
+
The calling agent outputs the `marker` verbatim - no parsing or mapping required.
|
|
20
|
+
</critical>
|
|
21
|
+
|
|
22
|
+
<info>
|
|
23
|
+
**From:** SM
|
|
24
|
+
**To:** {NEXT_AGENT} (TEA or Dev)
|
|
25
|
+
**Session:** `.session/{STORY_ID}-session.md`
|
|
26
|
+
</info>
|
|
39
27
|
|
|
40
|
-
|
|
28
|
+
<gate>
|
|
29
|
+
## Handoff Checklist
|
|
41
30
|
|
|
42
|
-
1.
|
|
43
|
-
2.
|
|
44
|
-
3.
|
|
45
|
-
4.
|
|
46
|
-
5.
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
6. Report status summary (do NOT modify acceptance criteria checkboxes)
|
|
31
|
+
1. Session file exists with story context
|
|
32
|
+
2. Acceptance criteria defined (count, don't mark)
|
|
33
|
+
3. Feature branches created
|
|
34
|
+
4. Jira story claimed (if applicable)
|
|
35
|
+
5. Update Workflow Tracking section:
|
|
36
|
+
- `**Phase:**` → `{NEXT_PHASE}`
|
|
37
|
+
- `**Phase Started:**` → `{NOW}`
|
|
38
|
+
- Add Phase History row
|
|
39
|
+
6. Report status summary
|
|
40
|
+
</gate>
|
|
53
41
|
|
|
54
|
-
|
|
42
|
+
## Phase Transition Update
|
|
55
43
|
|
|
56
|
-
Edit
|
|
44
|
+
Edit `## Workflow Tracking`:
|
|
57
45
|
|
|
58
46
|
```markdown
|
|
59
47
|
## Workflow Tracking
|
|
@@ -64,34 +52,94 @@ Edit the `## Workflow Tracking` section:
|
|
|
64
52
|
### Phase History
|
|
65
53
|
| Phase | Started | Ended | Duration |
|
|
66
54
|
|-------|---------|-------|----------|
|
|
67
|
-
|
|
|
55
|
+
| setup | {SM_STARTED} | {NOW} | {DURATION} |
|
|
68
56
|
| {NEXT_PHASE} | {NOW} | - | - |
|
|
69
57
|
```
|
|
70
58
|
|
|
71
|
-
**Duration
|
|
59
|
+
**Duration:** Subtract SM Started from {NOW}, format as `Xm` or `Xh Ym`.
|
|
72
60
|
|
|
73
|
-
##
|
|
61
|
+
## Generate AGENT_COMMAND Block
|
|
74
62
|
|
|
75
|
-
|
|
63
|
+
Use the `handoff-marker.sh` script to generate the complete AGENT_COMMAND block:
|
|
76
64
|
|
|
65
|
+
```bash
|
|
66
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/handoff-marker.sh {NEXT_AGENT}
|
|
77
67
|
```
|
|
78
|
-
<!-- CYCLIST:HANDOFF:/{NEXT_AGENT} -->
|
|
79
|
-
```
|
|
80
68
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
69
|
+
The script handles IS_CYCLIST and USE_TIREPUMP detection automatically.
|
|
70
|
+
Output the script result verbatim.
|
|
71
|
+
|
|
72
|
+
## Output Format
|
|
84
73
|
|
|
85
|
-
|
|
74
|
+
Your output MUST end with an `AGENT_COMMAND` block with a pre-rendered `marker` string.
|
|
75
|
+
The calling agent outputs the `marker` verbatim - no parsing or mapping required.
|
|
86
76
|
|
|
87
|
-
**Example final output:**
|
|
88
77
|
```
|
|
89
78
|
## Handoff Complete
|
|
90
79
|
|
|
91
|
-
Story
|
|
80
|
+
Story {STORY_ID} ready for {NEXT_AGENT} phase.
|
|
92
81
|
- Session file updated
|
|
93
82
|
- Branch verified
|
|
94
83
|
- Jira claimed
|
|
95
84
|
|
|
96
|
-
|
|
85
|
+
---
|
|
86
|
+
AGENT_COMMAND:
|
|
87
|
+
marker: "{MARKER_STRING}"
|
|
88
|
+
fallback: "Run `/{NEXT_AGENT}` to continue"
|
|
89
|
+
---
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Marker String Generation
|
|
93
|
+
|
|
94
|
+
The `handoff-marker.sh` script generates the complete AGENT_COMMAND block including the correct marker:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/handoff-marker.sh {NEXT_AGENT}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Output the script result verbatim.** No manual marker lookup required.
|
|
101
|
+
|
|
102
|
+
### Example Output (Cyclist, no TirePump)
|
|
103
|
+
|
|
97
104
|
```
|
|
105
|
+
## Handoff Complete
|
|
106
|
+
|
|
107
|
+
Story MSSCI-12274 ready for TEA phase.
|
|
108
|
+
- Session file updated with phase transition (setup → test)
|
|
109
|
+
- Branch verified: `feat/MSSCI-12274-image-queue-support`
|
|
110
|
+
- Acceptance criteria confirmed: 7 criteria defined
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
AGENT_COMMAND:
|
|
114
|
+
marker: "<!-- CYCLIST:HANDOFF:/tea -->"
|
|
115
|
+
fallback: "Run `/tea` to continue"
|
|
116
|
+
---
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Example Output (Not Cyclist)
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
## Handoff Complete
|
|
123
|
+
|
|
124
|
+
Story MSSCI-12274 ready for TEA phase.
|
|
125
|
+
- Session file updated with phase transition (setup → test)
|
|
126
|
+
- Branch verified: `feat/MSSCI-12274-image-queue-support`
|
|
127
|
+
- Acceptance criteria confirmed: 7 criteria defined
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
AGENT_COMMAND:
|
|
131
|
+
marker: ""
|
|
132
|
+
fallback: "Run `/tea` to continue"
|
|
133
|
+
---
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Calling Agent Instructions
|
|
137
|
+
|
|
138
|
+
When you receive this subagent's output, parse the `AGENT_COMMAND` block and:
|
|
139
|
+
|
|
140
|
+
1. Output the `marker` string verbatim (if non-empty)
|
|
141
|
+
2. Output the `fallback` message
|
|
142
|
+
|
|
143
|
+
**Simple rule: Output `marker` then `fallback`. That's it.**
|
|
144
|
+
|
|
145
|
+
**The marker MUST appear in the calling agent's direct text output, not in a tool result.**
|