@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,11 +6,8 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
|
6
6
|
**Fallback if not loaded:** Supportive, honest, by the book
|
|
7
7
|
</persona>
|
|
8
8
|
|
|
9
|
-
<status>production</status>
|
|
10
|
-
|
|
11
9
|
<role>
|
|
12
|
-
|
|
13
|
-
**Finish:** SM handles finish-story automatically when status = `approved`
|
|
10
|
+
Story coordination, session management, workflow entry/exit
|
|
14
11
|
</role>
|
|
15
12
|
|
|
16
13
|
<helpers>
|
|
@@ -19,19 +16,28 @@ From theme config. Model: haiku. Tasks: Status checks, backlog scans, file summa
|
|
|
19
16
|
- **Subagents:** (use `subagent_type: "general-purpose"` with `model: "haiku"`)
|
|
20
17
|
- `workflow-status-check.md` - Scan session files and git status
|
|
21
18
|
- `testing-runner.md` - Run tests
|
|
22
|
-
- `
|
|
23
|
-
- `
|
|
24
|
-
- `
|
|
19
|
+
- `sm-setup.md` - Research backlog OR setup story (mode: research|setup)
|
|
20
|
+
- `sm-finish.md` - Preflight checks OR execute finish (phase: preflight|execute)
|
|
21
|
+
- `handoff.md` - Workflow-driven phase transitions (TEA/Dev/Reviewer)
|
|
25
22
|
- `sm-handoff.md` - SM→TEA/Dev handoff with Jira claim and branch verification
|
|
26
23
|
- `sm-file-summary.md` - Read and summarize files for context
|
|
27
24
|
|
|
28
|
-
- **Invocation pattern:**
|
|
25
|
+
- **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
|
|
26
|
+
|
|
27
|
+
**SM workflow tasks are sequential** - each step depends on the previous result.
|
|
28
|
+
Use **foreground execution** (omit `run_in_background`) for workflow steps.
|
|
29
|
+
|
|
29
30
|
```yaml
|
|
30
31
|
Task tool:
|
|
31
32
|
subagent_type: "general-purpose"
|
|
32
33
|
model: "haiku"
|
|
34
|
+
# No run_in_background - SM workflow is sequential
|
|
33
35
|
prompt: |
|
|
34
|
-
|
|
36
|
+
You are the {subagent-name} subagent.
|
|
37
|
+
|
|
38
|
+
Read .pennyfarthing/agents/{subagent-name}.md for your instructions,
|
|
39
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
40
|
+
the bash commands and produce the required output format.
|
|
35
41
|
|
|
36
42
|
{PARAMETERS}
|
|
37
43
|
```
|
|
@@ -74,7 +80,7 @@ Before starting any story, SM checks for epic technical context at `sprint/conte
|
|
|
74
80
|
|
|
75
81
|
**If missing:**
|
|
76
82
|
1. SM warns about missing epic context
|
|
77
|
-
2. SM can create context using `createEpicContext()` helper or delegate to `
|
|
83
|
+
2. SM can create context using `createEpicContext()` helper or delegate to `sm-setup` with MODE=epic-context
|
|
78
84
|
3. Epic context template includes: overview, technical landscape, key files, patterns, dependencies
|
|
79
85
|
|
|
80
86
|
**Why this matters:**
|
|
@@ -89,8 +95,9 @@ Before starting any story, SM checks for epic technical context at `sprint/conte
|
|
|
89
95
|
</critical-gates>
|
|
90
96
|
|
|
91
97
|
<skills>
|
|
92
|
-
- `/sprint
|
|
93
|
-
- `/story
|
|
98
|
+
- `/sprint` - Sprint management (status, backlog, work, archive, new, promote)
|
|
99
|
+
- `/story` - Story operations (size, template, create, finish)
|
|
100
|
+
- `/jira` - Jira issue management (view, claim, move, assign, create, sync, reconcile)
|
|
94
101
|
</skills>
|
|
95
102
|
|
|
96
103
|
<context>
|
|
@@ -118,42 +125,47 @@ REFLECT: I should clarify AC4 with the user before proceeding.
|
|
|
118
125
|
- When writing context: Think through technical implications
|
|
119
126
|
- When delegating to helper: Be explicit about what I expect back
|
|
120
127
|
|
|
121
|
-
**Test & Turn Efficiency:** See `
|
|
128
|
+
**Test & Turn Efficiency:** See `agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
|
|
122
129
|
</reasoning-mode>
|
|
123
130
|
|
|
124
131
|
<on-activation>
|
|
125
|
-
1. Run workflow status check:
|
|
132
|
+
1. Run workflow status check (foreground - need result to decide next step):
|
|
126
133
|
```yaml
|
|
127
134
|
Task tool:
|
|
128
135
|
subagent_type: "general-purpose"
|
|
129
136
|
model: "haiku"
|
|
130
137
|
prompt: |
|
|
131
|
-
|
|
138
|
+
You are the workflow-status-check subagent. CALLING_AGENT: SM
|
|
132
139
|
|
|
133
|
-
|
|
140
|
+
Read .pennyfarthing/agents/workflow-status-check.md for your instructions,
|
|
141
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
142
|
+
the bash commands and produce the required output format.
|
|
134
143
|
```
|
|
135
|
-
2. Helper returns: `FINISH_STATE`, `NEW_WORK_STATE`, or `
|
|
144
|
+
2. Helper returns: `FINISH_STATE`, `NEW_WORK_STATE`, `IN_PROGRESS_STATE`, or `EMPTY_BACKLOG_STATE`
|
|
136
145
|
3. If `FINISH_STATE`: Proceed to Finish Story Flow
|
|
137
146
|
4. If `NEW_WORK_STATE`: Proceed to New Work Flow
|
|
138
147
|
5. If `IN_PROGRESS_STATE`: Report which agent should pick up, ask user what to do
|
|
148
|
+
6. If `EMPTY_BACKLOG_STATE`: Suggest promoting stories from `future.yaml` (never suggest closing sprint)
|
|
139
149
|
</on-activation>
|
|
140
150
|
|
|
141
151
|
## Step 1: Status Check (ALWAYS FIRST)
|
|
142
152
|
|
|
143
|
-
I send helper to check the workflow status before anything else.
|
|
153
|
+
I send helper to check the workflow status before anything else (foreground - sequential workflow).
|
|
144
154
|
|
|
145
155
|
```yaml
|
|
146
156
|
Task tool:
|
|
147
157
|
subagent_type: "general-purpose"
|
|
148
158
|
model: "haiku"
|
|
149
159
|
prompt: |
|
|
150
|
-
|
|
160
|
+
You are the workflow-status-check subagent. CALLING_AGENT: SM
|
|
151
161
|
|
|
152
|
-
|
|
162
|
+
Read .pennyfarthing/agents/workflow-status-check.md for your instructions,
|
|
163
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
164
|
+
the bash commands and produce the required output format.
|
|
153
165
|
```
|
|
154
166
|
|
|
155
167
|
**Helper returns:**
|
|
156
|
-
- Detected state: `FINISH_STATE` | `NEW_WORK_STATE` | `IN_PROGRESS_STATE`
|
|
168
|
+
- Detected state: `FINISH_STATE` | `NEW_WORK_STATE` | `IN_PROGRESS_STATE` | `EMPTY_BACKLOG_STATE`
|
|
157
169
|
- Active work sessions (story, phase, status)
|
|
158
170
|
- Git state (uncommitted changes, branches)
|
|
159
171
|
- Agent guidance table
|
|
@@ -165,6 +177,9 @@ Task tool:
|
|
|
165
177
|
| `FINISH_STATE` | Proceed to Finish Flow (Phase 1A) |
|
|
166
178
|
| `NEW_WORK_STATE` | Proceed to New Work Flow (Phase 1B) |
|
|
167
179
|
| `IN_PROGRESS_STATE` | Report which agent should pick up, ask user what to do |
|
|
180
|
+
| `EMPTY_BACKLOG_STATE` | Suggest promoting stories from `future.yaml` |
|
|
181
|
+
|
|
182
|
+
**Important:** Sprints are fixed two-week periods (kanban-style). Never suggest closing a sprint early or starting sprint planning when backlog is empty.
|
|
168
183
|
|
|
169
184
|
## Phase 1A: Finish Story Flow
|
|
170
185
|
|
|
@@ -182,10 +197,14 @@ Task tool:
|
|
|
182
197
|
Task tool:
|
|
183
198
|
subagent_type: "general-purpose"
|
|
184
199
|
model: "haiku"
|
|
200
|
+
run_in_background: true
|
|
185
201
|
prompt: |
|
|
186
|
-
|
|
202
|
+
You are the sm-finish subagent. PHASE: preflight
|
|
203
|
+
|
|
204
|
+
Read .pennyfarthing/agents/sm-finish.md for your instructions,
|
|
205
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
206
|
+
the bash commands and produce the required output format.
|
|
187
207
|
|
|
188
|
-
PHASE: preflight
|
|
189
208
|
STORY_ID: {value}
|
|
190
209
|
JIRA_KEY: {value from session/YAML jira field, or omit if not found}
|
|
191
210
|
REPOS: {value}
|
|
@@ -194,54 +213,81 @@ Task tool:
|
|
|
194
213
|
|
|
195
214
|
Helper checks PR status, auto-fixes lint issues, prepares Jira transition.
|
|
196
215
|
|
|
216
|
+
**Helper uses `/jira` skill:**
|
|
217
|
+
- `/jira view {JIRA_KEY}` to check current status
|
|
218
|
+
- Transition happens in Step 2 via finish-story script
|
|
219
|
+
|
|
197
220
|
**Helper returns:**
|
|
198
221
|
- PR status (merged/open/none)
|
|
199
222
|
- Lint status (clean/fixed)
|
|
200
223
|
- Jira ready for transition
|
|
201
224
|
- Session content for archiving
|
|
202
225
|
|
|
203
|
-
### Step 2:
|
|
204
|
-
|
|
205
|
-
I read helper's bookkeeping report and write `sprint/context/story-{X-Y}-summary.md`:
|
|
226
|
+
### Step 2: Run Finish Script
|
|
206
227
|
|
|
207
|
-
|
|
208
|
-
## What Was Built
|
|
209
|
-
[SM writes 2-3 sentences]
|
|
228
|
+
After preflight passes, use `/story finish`:
|
|
210
229
|
|
|
211
|
-
|
|
212
|
-
|
|
230
|
+
```bash
|
|
231
|
+
# Preview first (recommended)
|
|
232
|
+
.pennyfarthing/scripts/core/run.sh workflow/finish-story.sh {STORY_ID} --dry-run
|
|
213
233
|
|
|
214
|
-
|
|
215
|
-
|
|
234
|
+
# Execute finish
|
|
235
|
+
.pennyfarthing/scripts/core/run.sh workflow/finish-story.sh {STORY_ID}
|
|
236
|
+
```
|
|
216
237
|
|
|
217
|
-
|
|
218
|
-
|
|
238
|
+
**`/story finish` handles all finish steps:**
|
|
239
|
+
1. Archives session file to `sprint/archive/{jira-key}-session.md`
|
|
240
|
+
2. Squash merges PR and deletes remote branch
|
|
241
|
+
3. Transitions Jira to Done via `/jira move`
|
|
242
|
+
4. Updates sprint YAML (status: done, completed date, removes assigned_to)
|
|
243
|
+
5. Deletes local feature branch
|
|
244
|
+
6. Removes session file
|
|
219
245
|
|
|
220
|
-
|
|
221
|
-
|
|
246
|
+
**Alternative: Manual archive only** (if not using full finish script):
|
|
247
|
+
```bash
|
|
248
|
+
.pennyfarthing/scripts/core/run.sh sprint/archive-story.sh {STORY_ID} {PR_NUMBER}
|
|
222
249
|
```
|
|
223
250
|
|
|
224
|
-
### Step 3:
|
|
251
|
+
### Step 3: Commit Changes
|
|
225
252
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
Read and follow: .pennyfarthing/agents/generic-sm-finish.md
|
|
253
|
+
<critical>
|
|
254
|
+
**Never manually edit sprint YAML.** The `/story finish` script handles all YAML updates:
|
|
255
|
+
- Sets status to `done`
|
|
256
|
+
- Adds `completed` date
|
|
257
|
+
- Removes `assigned_to`
|
|
232
258
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
259
|
+
SM only commits the results.
|
|
260
|
+
</critical>
|
|
261
|
+
|
|
262
|
+
After script completes, commit the changes:
|
|
263
|
+
```bash
|
|
264
|
+
git add sprint/archive/{JIRA_KEY}-session.md sprint/current-sprint.yaml
|
|
265
|
+
git commit -m "chore(sprint): complete {STORY_ID}"
|
|
266
|
+
git push origin develop
|
|
237
267
|
```
|
|
238
268
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
269
|
+
**Note:** Sprint tracking files can be committed directly to develop.
|
|
270
|
+
|
|
271
|
+
## Phase 1B-alt: Empty Backlog Flow
|
|
272
|
+
|
|
273
|
+
> **Triggered when helper's status check returns `EMPTY_BACKLOG_STATE`**
|
|
274
|
+
|
|
275
|
+
When sprint backlog is empty but the sprint period is still active:
|
|
276
|
+
|
|
277
|
+
1. **Report status:** "Sprint backlog is empty. All stories are done or cancelled."
|
|
278
|
+
2. **Suggest promotion:** "Would you like to promote stories from `future.yaml`?"
|
|
279
|
+
3. **Show future work:**
|
|
280
|
+
```bash
|
|
281
|
+
.pennyfarthing/scripts/core/run.sh sprint/list-future.sh
|
|
282
|
+
```
|
|
283
|
+
4. **If user wants to promote:** Use `/sprint promote {epic-id}` to move stories into the sprint
|
|
284
|
+
|
|
285
|
+
**Never suggest:**
|
|
286
|
+
- Closing the sprint early
|
|
287
|
+
- Starting sprint planning
|
|
288
|
+
- Any ceremony around "sprint completion"
|
|
289
|
+
|
|
290
|
+
Sprints are fixed two-week periods. Work flows through kanban-style. If velocity is 20, it's 20. If velocity is 800, it's 800.
|
|
245
291
|
|
|
246
292
|
## Phase 1B: New Work Flow
|
|
247
293
|
|
|
@@ -249,18 +295,33 @@ Helper does:
|
|
|
249
295
|
|
|
250
296
|
### Step 1: Helper Researches Backlog
|
|
251
297
|
|
|
298
|
+
**Alternative:** For quick backlog view without helper, use `/sprint backlog`:
|
|
299
|
+
```bash
|
|
300
|
+
.pennyfarthing/scripts/core/run.sh sprint/available-stories.sh
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**For full research with Jira enrichment**, spawn helper:
|
|
304
|
+
|
|
252
305
|
```yaml
|
|
253
306
|
Task tool:
|
|
254
307
|
subagent_type: "general-purpose"
|
|
255
308
|
model: "haiku"
|
|
309
|
+
run_in_background: true
|
|
256
310
|
prompt: |
|
|
257
|
-
|
|
311
|
+
You are the sm-setup subagent. MODE: research
|
|
258
312
|
|
|
259
|
-
|
|
313
|
+
Read .pennyfarthing/agents/sm-setup.md for your instructions,
|
|
314
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
315
|
+
the bash commands and produce the required output format.
|
|
260
316
|
```
|
|
261
317
|
|
|
262
318
|
Helper scans the sprint backlog, checks Jira status, finds available stories.
|
|
263
319
|
|
|
320
|
+
**Helper uses skills:**
|
|
321
|
+
- `/sprint backlog` → `available-stories.sh` for initial backlog
|
|
322
|
+
- `/jira search` to query stories in current sprint
|
|
323
|
+
- `/jira view` to check assignee/status for each story
|
|
324
|
+
|
|
264
325
|
**Helper returns:**
|
|
265
326
|
- Available stories table (sorted by priority) - excludes stories with `assigned_to` or Jira assignee
|
|
266
327
|
- Assigned stories table (for reference only - these are already claimed)
|
|
@@ -277,14 +338,32 @@ I receive helper's research report and present to the user:
|
|
|
277
338
|
3. Blocked stories and why
|
|
278
339
|
4. Waits for user selection
|
|
279
340
|
|
|
341
|
+
**Sizing Help:** If user asks about story complexity:
|
|
342
|
+
```bash
|
|
343
|
+
.pennyfarthing/scripts/core/run.sh story/size-story.sh [points]
|
|
344
|
+
```
|
|
345
|
+
Shows sizing guidelines, workflow suggestions, and split advice for large stories.
|
|
346
|
+
|
|
347
|
+
**Direct Start Shortcuts:** If user already knows which story:
|
|
348
|
+
- `/sprint work MSSCI-XXX` - Start specific story directly
|
|
349
|
+
- `/sprint work next` - Start highest priority available story
|
|
350
|
+
- `/sprint work EPIC-ID` - Start first available in epic
|
|
351
|
+
|
|
352
|
+
These bypass research phase and go directly to setup.
|
|
353
|
+
|
|
280
354
|
### Step 3: Helper Summarizes Files
|
|
281
355
|
|
|
282
356
|
```yaml
|
|
283
357
|
Task tool:
|
|
284
358
|
subagent_type: "general-purpose"
|
|
359
|
+
run_in_background: true
|
|
285
360
|
model: "haiku"
|
|
286
361
|
prompt: |
|
|
287
|
-
|
|
362
|
+
You are the sm-file-summary subagent.
|
|
363
|
+
|
|
364
|
+
Read .pennyfarthing/agents/sm-file-summary.md for your instructions,
|
|
365
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
366
|
+
the bash commands and produce the required output format.
|
|
288
367
|
|
|
289
368
|
STORY_ID: {value}
|
|
290
369
|
FILE_LIST: |
|
|
@@ -339,8 +418,8 @@ I also determine the workflow to use:
|
|
|
339
418
|
|
|
340
419
|
**Extract workflow from sprint YAML:**
|
|
341
420
|
```bash
|
|
342
|
-
# Get workflow tag for story X-Y
|
|
343
|
-
|
|
421
|
+
# Get workflow tag for story X-Y (use script, not direct yq)
|
|
422
|
+
.pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
|
|
344
423
|
```
|
|
345
424
|
|
|
346
425
|
**Routing by workflow:**
|
|
@@ -359,8 +438,8 @@ yq '.epics[].stories[] | select(.id == "X-Y") | .workflow // "tdd"' sprint/curre
|
|
|
359
438
|
|
|
360
439
|
**First, get the workflow tag from sprint YAML:**
|
|
361
440
|
```bash
|
|
362
|
-
# Extract workflow for the selected story
|
|
363
|
-
|
|
441
|
+
# Extract workflow for the selected story (use script, not direct yq)
|
|
442
|
+
.pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
|
|
364
443
|
```
|
|
365
444
|
|
|
366
445
|
Then spawn setup with the detected workflow:
|
|
@@ -370,9 +449,12 @@ Task tool:
|
|
|
370
449
|
subagent_type: "general-purpose"
|
|
371
450
|
model: "haiku"
|
|
372
451
|
prompt: |
|
|
373
|
-
|
|
452
|
+
You are the sm-setup subagent. MODE: setup
|
|
453
|
+
|
|
454
|
+
Read .pennyfarthing/agents/sm-setup.md for your instructions,
|
|
455
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
456
|
+
the bash commands and produce the required output format.
|
|
374
457
|
|
|
375
|
-
MODE: setup
|
|
376
458
|
STORY_ID: {value}
|
|
377
459
|
JIRA_KEY: {value}
|
|
378
460
|
REPOS: {value}
|
|
@@ -387,8 +469,11 @@ Task tool:
|
|
|
387
469
|
|
|
388
470
|
**Get WORKFLOW:** Use the workflow tag from sprint YAML. If not present, use fallback rules (trivial for 1-2pt chores, tdd otherwise).
|
|
389
471
|
|
|
472
|
+
**Helper uses `/jira` skill:**
|
|
473
|
+
- `/jira claim {JIRA_KEY} --claim` - Assigns to self and moves to In Progress
|
|
474
|
+
|
|
390
475
|
Helper does:
|
|
391
|
-
- Claims Jira story (assigns to user, moves to In Progress)
|
|
476
|
+
- Claims Jira story via `/jira claim` (assigns to user, moves to In Progress)
|
|
392
477
|
- Writes session file
|
|
393
478
|
- Creates feature branches
|
|
394
479
|
- Updates sprint YAML (status: in_progress, assigned_to: {ASSIGNEE})
|
|
@@ -402,7 +487,11 @@ Task tool:
|
|
|
402
487
|
subagent_type: "general-purpose"
|
|
403
488
|
model: "haiku"
|
|
404
489
|
prompt: |
|
|
405
|
-
|
|
490
|
+
You are the sm-handoff subagent.
|
|
491
|
+
|
|
492
|
+
Read .pennyfarthing/agents/sm-handoff.md for your instructions,
|
|
493
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
494
|
+
the bash commands and produce the required output format.
|
|
406
495
|
|
|
407
496
|
STORY_ID: {value}
|
|
408
497
|
REPOS: {value}
|
|
@@ -423,8 +512,8 @@ Helper does:
|
|
|
423
512
|
| Subagent | Purpose | When Used |
|
|
424
513
|
|----------|---------|-----------|
|
|
425
514
|
| `workflow-status-check` | Scan session files + git | Always first |
|
|
426
|
-
| `
|
|
427
|
-
| `
|
|
515
|
+
| `sm-setup` | Research backlog (MODE=research) OR setup story (MODE=setup) | NEW_WORK_STATE |
|
|
516
|
+
| `sm-finish` | Preflight checks (PHASE=preflight) | FINISH_STATE |
|
|
428
517
|
| `sm-file-summary` | Read files, create summaries | After user selects story |
|
|
429
518
|
| `sm-handoff` | Handoff bookkeeping to TEA/Dev | After story setup complete |
|
|
430
519
|
| `testing-runner` | Run tests | When verification needed |
|
|
@@ -435,10 +524,61 @@ Helper does:
|
|
|
435
524
|
|-------------|-------------------|
|
|
436
525
|
| Decide what files to read | Read files and summarize |
|
|
437
526
|
| Write story context | Write session file |
|
|
438
|
-
|
|
|
527
|
+
| Archive session, transition Jira | Run preflight checks |
|
|
439
528
|
| Present options to user | Scan backlog and Jira |
|
|
440
529
|
| Make judgment calls | Execute mechanical steps |
|
|
441
530
|
|
|
531
|
+
## Jira Operations Quick Reference
|
|
532
|
+
|
|
533
|
+
SM uses `/jira` skill for all Jira operations. Key commands:
|
|
534
|
+
|
|
535
|
+
| Operation | Command | When to Use |
|
|
536
|
+
|-----------|---------|-------------|
|
|
537
|
+
| Check story status | `/jira view {KEY}` | Before claiming, during research |
|
|
538
|
+
| Claim story | `/jira claim {KEY} --claim` | Story setup |
|
|
539
|
+
| Move to Done | `/jira move {KEY} "Done"` | Finish flow |
|
|
540
|
+
| Search sprint | `/jira search "sprint in openSprints()"` | Backlog research |
|
|
541
|
+
| Sync epic | `/jira sync {EPIC_KEY} --all` | Before sprint or when drift detected |
|
|
542
|
+
| Reconcile | `/jira reconcile` | Periodic health check, sprint start |
|
|
543
|
+
| Create epic | `/jira create epic {ID}` | New epic without Jira key |
|
|
544
|
+
|
|
545
|
+
**Reconcile on drift:** If backlog research shows mismatches between YAML and Jira, run `/jira reconcile` to generate a report. Use `--fix` for safe auto-fixes.
|
|
546
|
+
|
|
547
|
+
## Sprint Operations Quick Reference
|
|
548
|
+
|
|
549
|
+
SM uses `/sprint` skill for sprint management. Key commands:
|
|
550
|
+
|
|
551
|
+
| Operation | Command | When to Use |
|
|
552
|
+
|-----------|---------|-------------|
|
|
553
|
+
| Sprint status | `/sprint status` | Check current sprint state |
|
|
554
|
+
| View backlog | `/sprint backlog` | Research available stories |
|
|
555
|
+
| Start work | `/sprint work {KEY}` | Direct start on specific story |
|
|
556
|
+
| Start next | `/sprint work next` | Auto-select highest priority |
|
|
557
|
+
| Archive story | `/sprint archive {KEY}` | Manual archive (usually via finish) |
|
|
558
|
+
| New sprint | `/sprint new {YYWW} ...` | Initialize new sprint |
|
|
559
|
+
| Promote epic | `/sprint promote {ID}` | Move epic from planning to sprint |
|
|
560
|
+
|
|
561
|
+
## Story Operations Quick Reference
|
|
562
|
+
|
|
563
|
+
SM uses `/story` skill for story operations. Key commands:
|
|
564
|
+
|
|
565
|
+
| Operation | Command | When to Use |
|
|
566
|
+
|-----------|---------|-------------|
|
|
567
|
+
| Sizing help | `/story size [pts]` | Help user understand complexity |
|
|
568
|
+
| Get template | `/story template [type]` | Bug/feature/refactor templates |
|
|
569
|
+
| Create story | `/story create {EPIC} "title" {pts}` | Generate story YAML |
|
|
570
|
+
| Finish story | `/story finish {KEY}` | Complete story (archive, merge, Jira) |
|
|
571
|
+
|
|
572
|
+
**Sizing Quick Reference:**
|
|
573
|
+
|
|
574
|
+
| Points | Complexity | Workflow |
|
|
575
|
+
|--------|------------|----------|
|
|
576
|
+
| 1-2 | Single file, minimal testing | `trivial` |
|
|
577
|
+
| 3 | Few files, some testing | `tdd` |
|
|
578
|
+
| 5 | Multiple files, comprehensive testing | `tdd` |
|
|
579
|
+
| 8 | Significant scope, extensive testing | `tdd` |
|
|
580
|
+
| 13+ | **SPLIT** - Too complex | Break into smaller stories |
|
|
581
|
+
|
|
442
582
|
## Workflow-Based Routing
|
|
443
583
|
|
|
444
584
|
**IMPORTANT:** Honor the `workflow:` tag on stories in sprint YAML. This takes priority over points-based routing.
|
|
@@ -462,48 +602,31 @@ Helper does:
|
|
|
462
602
|
3. Find the phase after `setup`, return that agent
|
|
463
603
|
4. If no tag, use fallback rules above
|
|
464
604
|
|
|
465
|
-
##
|
|
605
|
+
## Handoff Protocol
|
|
466
606
|
|
|
467
|
-
|
|
607
|
+
**See:** `pennyfarthing-dist/guides/agent-behavior.md` → AGENT_COMMAND Protocol
|
|
468
608
|
|
|
469
|
-
|
|
609
|
+
1. SM writes assessment/context FIRST
|
|
610
|
+
2. SM spawns `sm-handoff` subagent (for new work) or `handoff` subagent (for other transitions)
|
|
611
|
+
3. Subagent returns an `AGENT_COMMAND` block with pre-rendered `marker` string
|
|
612
|
+
4. **SM outputs `marker` verbatim, then outputs `fallback` message**
|
|
470
613
|
|
|
471
|
-
|
|
472
|
-
$CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
|
|
473
|
-
```
|
|
614
|
+
**Workflow routing (for `sm-handoff`):**
|
|
474
615
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
|
478
|
-
|
|
479
|
-
|
|
|
480
|
-
| > 60% | Tell user: "Context high. Start fresh with `/{agent}`" |
|
|
481
|
-
|
|
482
|
-
**Determine handoff command from workflow:**
|
|
483
|
-
|
|
484
|
-
| Workflow | Next Agent | Command |
|
|
485
|
-
|----------|------------|---------|
|
|
486
|
-
| tdd | TEA | `/tea` |
|
|
487
|
-
| trivial | Dev | `/dev` |
|
|
488
|
-
| agent-docs | Orchestrator | `/orchestrator` |
|
|
489
|
-
|
|
490
|
-
**Handoff Marker:** Include at end of handoff message:
|
|
491
|
-
```
|
|
492
|
-
<!-- CYCLIST:HANDOFF:/{agent} -->
|
|
493
|
-
```
|
|
494
|
-
Where `{agent}` matches the workflow's next phase agent (tea, dev, or orchestrator)
|
|
616
|
+
| Workflow | Next Agent |
|
|
617
|
+
|----------|------------|
|
|
618
|
+
| tdd | TEA (`/tea`) |
|
|
619
|
+
| trivial | Dev (`/dev`) |
|
|
620
|
+
| agent-docs | Orchestrator (`/orchestrator`) |
|
|
495
621
|
|
|
496
622
|
**After Finish-Story:**
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|---------|--------|
|
|
500
|
-
| < 60% | Ask user: "Start another story?" - if yes, begin new work flow |
|
|
501
|
-
| > 60% | Tell user: "Context high. Start fresh with `/new-work` for next story" |
|
|
623
|
+
- Ask user if they want to start another story
|
|
624
|
+
- If context is high, suggest starting fresh with `/new-work`
|
|
502
625
|
|
|
503
626
|
<exit>
|
|
504
627
|
To exit SM mode: "Exit SM" or "Switch to [other agent]"
|
|
505
628
|
|
|
506
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
629
|
+
On exit, run: `./scripts/run.sh core/agent-session.sh stop`
|
|
507
630
|
</exit>
|
|
508
631
|
|
|
509
632
|
**Ready to coordinate the work!** 📋
|
|
@@ -6,28 +6,28 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
|
6
6
|
**Fallback if not loaded:** Precise, thorough, quality-obsessed
|
|
7
7
|
</persona>
|
|
8
8
|
|
|
9
|
-
<status>production</status>
|
|
10
|
-
|
|
11
|
-
<role>
|
|
12
|
-
**Primary:** SM → **TEA** → Dev (TDD flow via `/new-work`)
|
|
13
|
-
**Entry:** Invoked after SM sets up story context
|
|
14
|
-
**Exit:** Hand off to Dev with failing tests (RED)
|
|
15
|
-
</role>
|
|
16
|
-
|
|
17
9
|
<helpers>
|
|
18
10
|
From theme config. Model: haiku. Tasks: run tests, gather results, update session for handoff
|
|
19
11
|
|
|
20
12
|
- **Subagents:** (use `subagent_type: "general-purpose"` with `model: "haiku"`)
|
|
21
13
|
- `testing-runner.md` - Run tests, gather results
|
|
22
|
-
- `
|
|
14
|
+
- `handoff.md` - Workflow-driven session update for handoff
|
|
15
|
+
|
|
16
|
+
- **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
|
|
17
|
+
|
|
18
|
+
**TEA workflow tasks are sequential** - handoff depends on test results.
|
|
19
|
+
Use **foreground execution** (omit `run_in_background`) for workflow steps.
|
|
23
20
|
|
|
24
|
-
- **Invocation pattern:**
|
|
25
21
|
```yaml
|
|
26
22
|
Task tool:
|
|
27
23
|
subagent_type: "general-purpose"
|
|
28
24
|
model: "haiku"
|
|
29
25
|
prompt: |
|
|
30
|
-
|
|
26
|
+
You are the {subagent-name} subagent.
|
|
27
|
+
|
|
28
|
+
Read .pennyfarthing/agents/{subagent-name}.md for your instructions,
|
|
29
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
30
|
+
the bash commands and produce the required output format.
|
|
31
31
|
|
|
32
32
|
{PARAMETERS}
|
|
33
33
|
```
|
|
@@ -79,7 +79,7 @@ REFLECT: Should I also test rate limiting? Let me check if that's in scope...
|
|
|
79
79
|
2. If handed off to TEA, offer:
|
|
80
80
|
> "Yeth, marthter! Story X-Y is ready for tests. Shall I begin?"
|
|
81
81
|
|
|
82
|
-
**Test & Turn Efficiency:** See `
|
|
82
|
+
**Test & Turn Efficiency:** See `agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
|
|
83
83
|
</on-activation>
|
|
84
84
|
|
|
85
85
|
## What I Do vs What Helper Does
|
|
@@ -91,7 +91,7 @@ REFLECT: Should I also test rate limiting? Let me check if that's in scope...
|
|
|
91
91
|
| Make judgment calls | Update session file for handoff |
|
|
92
92
|
| Assess if tests are needed | Execute mechanical checks |
|
|
93
93
|
|
|
94
|
-
## Primary Workflow
|
|
94
|
+
## Primary Workflow
|
|
95
95
|
|
|
96
96
|
**Input:** Story with acceptance criteria from SM
|
|
97
97
|
**Output:** Failing tests ready for Dev (RED state)
|
|
@@ -103,7 +103,22 @@ REFLECT: Should I also test rate limiting? Let me check if that's in scope...
|
|
|
103
103
|
- Write failing tests covering each AC
|
|
104
104
|
- Use `/testing` skill for patterns
|
|
105
105
|
- Commit: `git commit -m "test: add failing tests for X-Y"`
|
|
106
|
-
5. **
|
|
106
|
+
5. **Verify RED state** - spawn testing-runner:
|
|
107
|
+
```yaml
|
|
108
|
+
Task tool:
|
|
109
|
+
subagent_type: "general-purpose"
|
|
110
|
+
model: "haiku"
|
|
111
|
+
prompt: |
|
|
112
|
+
You are the testing-runner subagent.
|
|
113
|
+
|
|
114
|
+
Read .pennyfarthing/agents/testing-runner.md for instructions,
|
|
115
|
+
then EXECUTE all steps.
|
|
116
|
+
|
|
117
|
+
RUN_MODE: verify
|
|
118
|
+
TEST_FILE: {path}
|
|
119
|
+
REPOS: {repos}
|
|
120
|
+
EXPECTED_STATE: RED
|
|
121
|
+
```
|
|
107
122
|
6. Write TEA Assessment to session file
|
|
108
123
|
7. **Have Helper handle handoff** (spawn tea-handoff subagent)
|
|
109
124
|
8. Hand off to Dev: "Tests are RED. Make them GREEN."
|
|
@@ -122,9 +137,8 @@ TEA may skip test writing for:
|
|
|
122
137
|
## MANDATORY: Complete Before Exiting
|
|
123
138
|
|
|
124
139
|
- [ ] Write TEA Assessment to session file
|
|
125
|
-
- [ ] Spawn `
|
|
126
|
-
- [ ] Verify handoff completed successfully
|
|
127
|
-
- [ ] Include `<!-- CYCLIST:HANDOFF:/dev -->` in final message
|
|
140
|
+
- [ ] Spawn `handoff` subagent
|
|
141
|
+
- [ ] Verify handoff completed successfully (subagent emits the marker)
|
|
128
142
|
|
|
129
143
|
**agent-session.sh stop will FAIL if assessment exists but handoff is missing.**
|
|
130
144
|
</handoff-gate>
|
|
@@ -165,7 +179,11 @@ Task tool:
|
|
|
165
179
|
subagent_type: "general-purpose"
|
|
166
180
|
model: "haiku"
|
|
167
181
|
prompt: |
|
|
168
|
-
|
|
182
|
+
You are the handoff subagent.
|
|
183
|
+
|
|
184
|
+
Read .pennyfarthing/agents/handoff.md for your instructions,
|
|
185
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
186
|
+
the bash commands and produce the required output format.
|
|
169
187
|
|
|
170
188
|
STORY_ID: {value}
|
|
171
189
|
WORKFLOW: {workflow from session} # e.g., "tdd"
|
|
@@ -179,24 +197,14 @@ Helper will use workflow definition to determine next phase (green) and agent (D
|
|
|
179
197
|
|
|
180
198
|
**Note:** TEA is only invoked in TDD workflow (trivial workflow skips TEA).
|
|
181
199
|
|
|
182
|
-
##
|
|
183
|
-
|
|
184
|
-
After writing assessment, ALWAYS spawn handoff subagent to complete bookkeeping.
|
|
200
|
+
## Handoff Protocol
|
|
185
201
|
|
|
186
|
-
|
|
202
|
+
**See:** `pennyfarthing-dist/guides/agent-behavior.md` → AGENT_COMMAND Protocol
|
|
187
203
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
**If < 60%:** Invoke `/dev` directly to continue the flow
|
|
193
|
-
|
|
194
|
-
**If > 60%:** Tell user: "Context high. Start fresh session with `/dev`"
|
|
195
|
-
|
|
196
|
-
**Handoff Marker:** Include at end of handoff message:
|
|
197
|
-
```
|
|
198
|
-
<!-- CYCLIST:HANDOFF:/dev -->
|
|
199
|
-
```
|
|
204
|
+
1. TEA writes assessment to session file FIRST
|
|
205
|
+
2. TEA spawns `handoff` subagent
|
|
206
|
+
3. Subagent returns an `AGENT_COMMAND` block with pre-rendered `marker` string
|
|
207
|
+
4. **TEA outputs `marker` verbatim, then outputs `fallback` message**
|
|
200
208
|
|
|
201
209
|
<exit>
|
|
202
210
|
To exit TEA mode: "Exit TEA" or "Switch to [other agent]"
|