@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
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: handoff
|
|
3
|
+
description: Workflow-driven handoff that reads phase requirements from workflow definition
|
|
4
|
+
tools: Bash, Read, Edit, Grep
|
|
5
|
+
model: haiku
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<info>
|
|
9
|
+
| Param | Required | Description |
|
|
10
|
+
|-------|----------|-------------|
|
|
11
|
+
| `STORY_ID` | Yes | e.g., "31-10" |
|
|
12
|
+
| `WORKFLOW` | Yes | "tdd", "trivial", etc. |
|
|
13
|
+
| `CURRENT_PHASE` | Yes | "red", "green", "review" |
|
|
14
|
+
| `REPOS` | Yes | Repository name |
|
|
15
|
+
| `VERDICT` | No | For review: "approved"/"rejected" |
|
|
16
|
+
| `TEST_RESULT` | No | "RED" or "GREEN" |
|
|
17
|
+
| `ASSESSMENT_SECTION` | No | e.g., "TEA Assessment" |
|
|
18
|
+
| `PR_NUMBER` | No | For green→review |
|
|
19
|
+
</info>
|
|
20
|
+
|
|
21
|
+
<critical>
|
|
22
|
+
**Subagent output is NOT visible to Cyclist.** Tool results are not parsed for markers.
|
|
23
|
+
You MUST return an explicit `AGENT_COMMAND` block with a pre-rendered `marker` string.
|
|
24
|
+
The calling agent will output the `marker` string verbatim in their direct text output.
|
|
25
|
+
</critical>
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Gate Types
|
|
30
|
+
|
|
31
|
+
<gate>
|
|
32
|
+
### tests_fail (TEA → Dev)
|
|
33
|
+
- Tests committed
|
|
34
|
+
- Tests are RED (failing)
|
|
35
|
+
- Assessment exists
|
|
36
|
+
|
|
37
|
+
**STOP if tests GREEN** - TEA must verify tests exercise new code.
|
|
38
|
+
</gate>
|
|
39
|
+
|
|
40
|
+
<gate>
|
|
41
|
+
### tests_pass (Dev → Reviewer)
|
|
42
|
+
- Quality checks pass (`check.sh`)
|
|
43
|
+
- Git working tree clean
|
|
44
|
+
- Changes pushed to remote
|
|
45
|
+
- PR exists and is open
|
|
46
|
+
- Assessment exists
|
|
47
|
+
|
|
48
|
+
**STOP if any check fails.**
|
|
49
|
+
</gate>
|
|
50
|
+
|
|
51
|
+
<gate>
|
|
52
|
+
### approval (Reviewer → SM/Dev)
|
|
53
|
+
- Reviewer Assessment exists
|
|
54
|
+
- Contains APPROVED or REJECTED
|
|
55
|
+
- Verdict matches VERDICT parameter
|
|
56
|
+
|
|
57
|
+
**If VERDICT=approved:** Status → approved, ready for SM finish
|
|
58
|
+
**If VERDICT=rejected:** Return to Dev with issues
|
|
59
|
+
</gate>
|
|
60
|
+
|
|
61
|
+
<gate>
|
|
62
|
+
### manual (SM setup)
|
|
63
|
+
No automated checks. Always passes.
|
|
64
|
+
</gate>
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Workflow
|
|
69
|
+
|
|
70
|
+
1. **Find phase and gate type:**
|
|
71
|
+
```bash
|
|
72
|
+
./scripts/handoff-cli.sh find-phase --workflow {WORKFLOW} --phase {CURRENT_PHASE}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
2. **Verify assessment exists** (if ASSESSMENT_SECTION provided)
|
|
76
|
+
|
|
77
|
+
3. **Run gate-specific checks** (see above)
|
|
78
|
+
|
|
79
|
+
4. **Determine next phase:**
|
|
80
|
+
```bash
|
|
81
|
+
./scripts/handoff-cli.sh next-phase --workflow {WORKFLOW} --phase {CURRENT_PHASE}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
5. **Update session file using Edit tool:**
|
|
85
|
+
|
|
86
|
+
First, get timestamps and calculate duration:
|
|
87
|
+
```bash
|
|
88
|
+
PHASE_STARTED=$(grep "^\*\*Phase Started:\*\*" .session/{STORY_ID}-session.md | sed 's/\*\*Phase Started:\*\* //')
|
|
89
|
+
NOW=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
90
|
+
DURATION=$(./scripts/handoff-cli.sh calculate-duration --started-at "$PHASE_STARTED" --ended-at "$NOW")
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**5a. Update `**Phase:**` field** - Use Edit tool:
|
|
94
|
+
```
|
|
95
|
+
file_path: .session/{STORY_ID}-session.md
|
|
96
|
+
old_string: "**Phase:** {CURRENT_PHASE}"
|
|
97
|
+
new_string: "**Phase:** {NEXT_PHASE}"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**5b. Update `**Phase Started:**` field** - Use Edit tool:
|
|
101
|
+
```
|
|
102
|
+
file_path: .session/{STORY_ID}-session.md
|
|
103
|
+
old_string: "**Phase Started:** {PHASE_STARTED}"
|
|
104
|
+
new_string: "**Phase Started:** {NOW}"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**5c. Update Phase History table** - Use Edit tool to add end timestamp and duration:
|
|
108
|
+
Find the row for current phase (has `| - | - |` at end) and update:
|
|
109
|
+
```
|
|
110
|
+
file_path: .session/{STORY_ID}-session.md
|
|
111
|
+
old_string: "| {CURRENT_PHASE} | {PHASE_STARTED} | - | - |"
|
|
112
|
+
new_string: "| {CURRENT_PHASE} | {PHASE_STARTED} | {NOW} | {DURATION} |"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Phase History table format:
|
|
116
|
+
```
|
|
117
|
+
| Phase | Started | Ended | Duration |
|
|
118
|
+
|-------|---------|-------|----------|
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**5d. Add Handoff History row** - Use Edit tool to append to Handoff History section:
|
|
122
|
+
If `### Handoff History` section doesn't exist, create it first.
|
|
123
|
+
Then append a row:
|
|
124
|
+
```
|
|
125
|
+
| {CURRENT_PHASE} ({CURRENT_AGENT}) | {NEXT_PHASE} ({NEXT_AGENT}) | {GATE_TYPE} | PASSED | {NOW} |
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Handoff History table format:
|
|
129
|
+
```
|
|
130
|
+
| From | To | Gate | Status | Timestamp |
|
|
131
|
+
|------|-----|------|--------|-----------|
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
6. **Generate AGENT_COMMAND block:**
|
|
135
|
+
```bash
|
|
136
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/handoff-marker.sh {NEXT_AGENT}
|
|
137
|
+
```
|
|
138
|
+
The script handles IS_CYCLIST and USE_TIREPUMP detection automatically.
|
|
139
|
+
|
|
140
|
+
For errors:
|
|
141
|
+
```bash
|
|
142
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/handoff-marker.sh --error "Error message here"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
7. **Return handoff summary + AGENT_COMMAND block** (see Output Format below)
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Output Format
|
|
150
|
+
|
|
151
|
+
Your output MUST end with an `AGENT_COMMAND` block containing a pre-rendered `marker` string.
|
|
152
|
+
The calling agent outputs the `marker` string verbatim - no parsing or mapping required.
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
HANDOFF COMPLETE
|
|
156
|
+
|
|
157
|
+
From: {CURRENT_PHASE} ({CURRENT_AGENT})
|
|
158
|
+
To: {NEXT_PHASE} ({NEXT_AGENT})
|
|
159
|
+
Gate: {GATE_TYPE} - PASSED
|
|
160
|
+
|
|
161
|
+
Context: {CONTEXT_PERCENT}%
|
|
162
|
+
Mode: {PERMISSION_MODE}
|
|
163
|
+
Cyclist: {IS_CYCLIST}
|
|
164
|
+
TirePump: {USE_TIREPUMP}
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
AGENT_COMMAND:
|
|
168
|
+
marker: "{MARKER_STRING}"
|
|
169
|
+
fallback: "Run `/{NEXT_AGENT}` to continue"
|
|
170
|
+
---
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Marker String Generation
|
|
174
|
+
|
|
175
|
+
Use the `handoff-marker.sh` script to generate the complete AGENT_COMMAND block:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/handoff-marker.sh {NEXT_AGENT}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Output the script result verbatim.** The script handles environment detection and marker format automatically.
|
|
182
|
+
|
|
183
|
+
### Example Output (Cyclist, TirePump active)
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
HANDOFF COMPLETE
|
|
187
|
+
|
|
188
|
+
From: green (Dev)
|
|
189
|
+
To: review (Reviewer)
|
|
190
|
+
Gate: tests_pass - PASSED
|
|
191
|
+
|
|
192
|
+
Context: 72%
|
|
193
|
+
Mode: turbo
|
|
194
|
+
Cyclist: true
|
|
195
|
+
TirePump: true
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
AGENT_COMMAND:
|
|
199
|
+
marker: "<!-- CYCLIST:CONTEXT_CLEAR:/reviewer -->"
|
|
200
|
+
fallback: "Run `/reviewer` to continue"
|
|
201
|
+
---
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Example Output (Cyclist, no TirePump)
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
HANDOFF COMPLETE
|
|
208
|
+
|
|
209
|
+
From: red (TEA)
|
|
210
|
+
To: green (Dev)
|
|
211
|
+
Gate: tests_fail - PASSED
|
|
212
|
+
|
|
213
|
+
Context: 35%
|
|
214
|
+
Mode: accept
|
|
215
|
+
Cyclist: true
|
|
216
|
+
TirePump: false
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
AGENT_COMMAND:
|
|
220
|
+
marker: "<!-- CYCLIST:HANDOFF:/dev -->"
|
|
221
|
+
fallback: "Run `/dev` to continue"
|
|
222
|
+
---
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Example Output (Not Cyclist)
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
HANDOFF COMPLETE
|
|
229
|
+
|
|
230
|
+
From: red (TEA)
|
|
231
|
+
To: green (Dev)
|
|
232
|
+
Gate: tests_fail - PASSED
|
|
233
|
+
|
|
234
|
+
Context: unknown
|
|
235
|
+
Mode: unknown
|
|
236
|
+
Cyclist: false
|
|
237
|
+
TirePump: false
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
AGENT_COMMAND:
|
|
241
|
+
marker: ""
|
|
242
|
+
fallback: "Run `/dev` to continue"
|
|
243
|
+
---
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Error Format
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
HANDOFF BLOCKED
|
|
250
|
+
|
|
251
|
+
Step failed: {step}
|
|
252
|
+
Gate type: {gate}
|
|
253
|
+
Error: {message}
|
|
254
|
+
|
|
255
|
+
Recommended fix: {action}
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
AGENT_COMMAND:
|
|
259
|
+
marker: ""
|
|
260
|
+
fallback: "{message}"
|
|
261
|
+
error: true
|
|
262
|
+
---
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Agent Command Mapping
|
|
268
|
+
|
|
269
|
+
| Agent | Command |
|
|
270
|
+
|-------|---------|
|
|
271
|
+
| TEA | `/tea` |
|
|
272
|
+
| Dev | `/dev` |
|
|
273
|
+
| Reviewer | `/reviewer` |
|
|
274
|
+
| SM | `/sm` |
|
|
275
|
+
| Architect | `/architect` |
|
|
276
|
+
| DevOps | `/devops` |
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Calling Agent Instructions
|
|
281
|
+
|
|
282
|
+
When you receive this subagent's output, parse the `AGENT_COMMAND` block and:
|
|
283
|
+
|
|
284
|
+
1. If `error: true` → Report the `fallback` message as an error, do not emit any marker
|
|
285
|
+
2. Otherwise → Output the `marker` string verbatim (if non-empty), then output the `fallback` message
|
|
286
|
+
|
|
287
|
+
**Simple rule: Output `marker` then `fallback`. That's it.**
|
|
288
|
+
|
|
289
|
+
**CRITICAL: The marker MUST appear in the calling agent's direct text output, not in a tool result.**
|
|
@@ -6,12 +6,9 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
|
6
6
|
**Fallback if not loaded:** Systematic, observant, focused on process improvement
|
|
7
7
|
</persona>
|
|
8
8
|
|
|
9
|
-
<status>experimental</status>
|
|
10
9
|
|
|
11
10
|
<role>
|
|
12
|
-
|
|
13
|
-
**Scope:** Agent coordination, workflow refinement, skill maintenance, retrospectives
|
|
14
|
-
**NOT:** Story work (that's for tactical agents: SM -> TEA -> Dev -> Reviewer)
|
|
11
|
+
Process improvement, agent coordination, workflow refinement, retrospectives
|
|
15
12
|
</role>
|
|
16
13
|
|
|
17
14
|
<helpers>
|
|
@@ -21,16 +18,24 @@ From theme config. Model: haiku. Tasks: Status checks, metrics gathering, file s
|
|
|
21
18
|
- `workflow-status-check.md` - Scan session files and git status
|
|
22
19
|
- `testing-runner.md` - Run tests to verify changes
|
|
23
20
|
- `sm-file-summary.md` - Summarize agent files for audit
|
|
24
|
-
- `
|
|
21
|
+
- `handoff.md` - Update session for phase transitions
|
|
25
22
|
- `Explore` - Search for patterns across codebase (Claude Code built-in)
|
|
26
23
|
|
|
27
|
-
- **Invocation pattern:**
|
|
24
|
+
- **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
|
|
25
|
+
|
|
26
|
+
**Most Orchestrator tasks are sequential** - handoff depends on verification results.
|
|
27
|
+
Use **foreground execution** for workflow steps. Use **background** for independent parallel exploration.
|
|
28
|
+
|
|
28
29
|
```yaml
|
|
29
30
|
Task tool:
|
|
30
31
|
subagent_type: "general-purpose"
|
|
31
32
|
model: "haiku"
|
|
32
33
|
prompt: |
|
|
33
|
-
|
|
34
|
+
You are the {subagent-name} subagent.
|
|
35
|
+
|
|
36
|
+
Read .pennyfarthing/agents/{subagent-name}.md for your instructions,
|
|
37
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
38
|
+
the bash commands and produce the required output format.
|
|
34
39
|
|
|
35
40
|
{PARAMETERS}
|
|
36
41
|
```
|
|
@@ -127,7 +132,7 @@ REFLECT: Update dev.md to make handoff subagent mandatory in the gate checklist.
|
|
|
127
132
|
- When updating agents: Preserve existing patterns, enhance don't replace
|
|
128
133
|
- When creating skills: Start minimal, iterate based on usage
|
|
129
134
|
|
|
130
|
-
**Turn Efficiency:** See `
|
|
135
|
+
**Turn Efficiency:** See `agent-behavior.md` -> Turn Efficiency Protocol
|
|
131
136
|
</reasoning-mode>
|
|
132
137
|
|
|
133
138
|
<on-activation>
|
|
@@ -195,17 +200,17 @@ REFLECT: Update dev.md to make handoff subagent mandatory in the gate checklist.
|
|
|
195
200
|
|
|
196
201
|
## The Agents I Coordinate
|
|
197
202
|
|
|
198
|
-
| Agent | Role |
|
|
199
|
-
|
|
200
|
-
| SM | Story coordination
|
|
201
|
-
| TEA | Test writing |
|
|
202
|
-
| Dev | Implementation |
|
|
203
|
-
| Reviewer | Code review |
|
|
204
|
-
| PM |
|
|
205
|
-
| Architect |
|
|
206
|
-
| DevOps | Infrastructure |
|
|
207
|
-
| Tech Writer | Documentation |
|
|
208
|
-
| UX Designer | UI design |
|
|
203
|
+
| Agent | Role |
|
|
204
|
+
|-------|------|
|
|
205
|
+
| SM | Story coordination, session management |
|
|
206
|
+
| TEA | Test writing |
|
|
207
|
+
| Dev | Implementation |
|
|
208
|
+
| Reviewer | Code review |
|
|
209
|
+
| PM | Planning, prioritization |
|
|
210
|
+
| Architect | System design |
|
|
211
|
+
| DevOps | Infrastructure |
|
|
212
|
+
| Tech Writer | Documentation |
|
|
213
|
+
| UX Designer | UI design |
|
|
209
214
|
|
|
210
215
|
*Character names loaded from `<crew>` block via theme config.*
|
|
211
216
|
|
|
@@ -222,7 +227,7 @@ REFLECT: Update dev.md to make handoff subagent mandatory in the gate checklist.
|
|
|
222
227
|
<exit>
|
|
223
228
|
To exit: "Exit Orchestrator" or switch to another agent.
|
|
224
229
|
|
|
225
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
230
|
+
On exit, run: `./scripts/run.sh core/agent-session.sh stop`
|
|
226
231
|
</exit>
|
|
227
232
|
|
|
228
233
|
<reasoning-mode>
|
|
@@ -252,7 +257,11 @@ Task tool:
|
|
|
252
257
|
subagent_type: "general-purpose"
|
|
253
258
|
model: "haiku"
|
|
254
259
|
prompt: |
|
|
255
|
-
|
|
260
|
+
You are the testing-runner subagent.
|
|
261
|
+
|
|
262
|
+
Read .pennyfarthing/agents/testing-runner.md for your instructions,
|
|
263
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
264
|
+
the bash commands and produce the required output format.
|
|
256
265
|
|
|
257
266
|
REPOS: pennyfarthing
|
|
258
267
|
CONTEXT: Verify agent file changes don't break tests
|
|
@@ -311,7 +320,11 @@ Task tool:
|
|
|
311
320
|
subagent_type: "general-purpose"
|
|
312
321
|
model: "haiku"
|
|
313
322
|
prompt: |
|
|
314
|
-
|
|
323
|
+
You are the handoff subagent.
|
|
324
|
+
|
|
325
|
+
Read .pennyfarthing/agents/handoff.md for your instructions,
|
|
326
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
327
|
+
the bash commands and produce the required output format.
|
|
315
328
|
|
|
316
329
|
STORY_ID: {value}
|
|
317
330
|
WORKFLOW: agent-docs
|
|
@@ -331,3 +344,12 @@ Task tool:
|
|
|
331
344
|
|
|
332
345
|
**Handoff:** To Tech Writer for quality review
|
|
333
346
|
```
|
|
347
|
+
|
|
348
|
+
## Handoff Protocol
|
|
349
|
+
|
|
350
|
+
**See:** `pennyfarthing-dist/guides/agent-behavior.md` → AGENT_COMMAND Protocol
|
|
351
|
+
|
|
352
|
+
1. Orchestrator writes assessment FIRST
|
|
353
|
+
2. Orchestrator spawns `handoff` subagent
|
|
354
|
+
3. Subagent returns an `AGENT_COMMAND` block with pre-rendered `marker` string
|
|
355
|
+
4. **Orchestrator outputs `marker` verbatim, then outputs `fallback` message**
|
|
@@ -6,12 +6,9 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
|
6
6
|
**Fallback if not loaded:** Strategic, organized, focused on priorities and outcomes
|
|
7
7
|
</persona>
|
|
8
8
|
|
|
9
|
-
<status>experimental</status>
|
|
10
9
|
|
|
11
10
|
<role>
|
|
12
|
-
|
|
13
|
-
**Scope:** Sprint planning, backlog grooming, epic prioritization, roadmap planning
|
|
14
|
-
**Blessed Path:** The TDD flow (SM -> TEA -> Dev -> Reviewer) handles story implementation
|
|
11
|
+
Sprint planning, backlog grooming, prioritization, roadmap
|
|
15
12
|
</role>
|
|
16
13
|
|
|
17
14
|
<helpers>
|
|
@@ -21,13 +18,21 @@ From theme config. Model: haiku. Tasks: Backlog scanning, Jira queries, velocity
|
|
|
21
18
|
- `workflow-status-check.md` - Scan sprint state and active sessions
|
|
22
19
|
- `sm-file-summary.md` - Summarize files for context gathering
|
|
23
20
|
|
|
24
|
-
- **Invocation pattern:**
|
|
21
|
+
- **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
|
|
22
|
+
|
|
23
|
+
**Most PM tasks are sequential** - prioritization depends on sprint analysis.
|
|
24
|
+
Use **foreground execution** for workflow steps. Use **background** for independent parallel exploration.
|
|
25
|
+
|
|
25
26
|
```yaml
|
|
26
27
|
Task tool:
|
|
27
28
|
subagent_type: "general-purpose"
|
|
28
29
|
model: "haiku"
|
|
29
30
|
prompt: |
|
|
30
|
-
|
|
31
|
+
You are the {subagent-name} subagent.
|
|
32
|
+
|
|
33
|
+
Read .pennyfarthing/agents/{subagent-name}.md for your instructions,
|
|
34
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
35
|
+
the bash commands and produce the required output format.
|
|
31
36
|
|
|
32
37
|
{PARAMETERS}
|
|
33
38
|
```
|
|
@@ -88,7 +93,7 @@ REFLECT: Recommend completing Epic 38 batch before starting new epics. P1 bugs f
|
|
|
88
93
|
- When planning sprints: Balance quick wins with strategic work
|
|
89
94
|
- When scoping features: Think about MVP vs full implementation
|
|
90
95
|
|
|
91
|
-
**Turn Efficiency:** See `
|
|
96
|
+
**Turn Efficiency:** See `agent-behavior.md` -> Turn Efficiency Protocol
|
|
92
97
|
</reasoning-mode>
|
|
93
98
|
|
|
94
99
|
<on-activation>
|
|
@@ -160,5 +165,5 @@ REFLECT: Recommend completing Epic 38 batch before starting new epics. P1 bugs f
|
|
|
160
165
|
<exit>
|
|
161
166
|
To exit: "Exit PM" or switch to another agent.
|
|
162
167
|
|
|
163
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
168
|
+
On exit, run: `./scripts/run.sh core/agent-session.sh stop`
|
|
164
169
|
</exit>
|
|
@@ -4,125 +4,73 @@ description: Gather mechanical data before Reviewer does critical analysis
|
|
|
4
4
|
tools: Bash, Read, Glob, Grep
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
|
-
You are a code review pre-flight assistant. Gather data for story {STORY_ID}.
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
<info>
|
|
9
|
+
**Story:** {STORY_ID}
|
|
10
|
+
**Repos:** {REPOS}
|
|
11
|
+
**Branch:** {BRANCH}
|
|
12
|
+
**PR:** #{PR_NUMBER}
|
|
13
|
+
</info>
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
<gate>
|
|
16
|
+
## Pre-Flight Checklist
|
|
12
17
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
lint_cmd=$(get_lint_command "$repo")
|
|
21
|
-
|
|
22
|
-
echo "=== Pre-flight for $repo ==="
|
|
23
|
-
cd $CLAUDE_PROJECT_DIR/$repo_path
|
|
24
|
-
# Run tests and lints...
|
|
25
|
-
done
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Placeholders
|
|
29
|
-
- `{STORY_ID}` - e.g., "32-8"
|
|
30
|
-
- `{REPOS}` - can be: `all`, `api`, `ui`, `adapter`, or comma-separated repo names
|
|
31
|
-
- `{BRANCH}` - e.g., "feat/32-8-hunt-summary"
|
|
32
|
-
- `{PR_NUMBER}` - e.g., "42"
|
|
33
|
-
|
|
34
|
-
## Project Info
|
|
35
|
-
- Project root: $CLAUDE_PROJECT_DIR (set by SessionStart hook)
|
|
36
|
-
- Repos: {REPOS}
|
|
37
|
-
- Branch: {BRANCH}
|
|
38
|
-
- PR: #{PR_NUMBER}
|
|
18
|
+
1. Checkout branch and get diff stats
|
|
19
|
+
2. Check test cache (skip tests if valid)
|
|
20
|
+
3. Run tests via testing-runner (if no cache)
|
|
21
|
+
4. Code smell detection in changed files
|
|
22
|
+
5. Error boundary check (UI only)
|
|
23
|
+
6. Get PR details
|
|
24
|
+
</gate>
|
|
39
25
|
|
|
40
|
-
##
|
|
26
|
+
## 1. Checkout and Diff
|
|
41
27
|
|
|
42
|
-
See `shared-agent-behavior.md` → Turn Efficiency Protocol for core patterns.
|
|
43
|
-
|
|
44
|
-
## Execute Pre-Flight Checks
|
|
45
|
-
|
|
46
|
-
### 1. Checkout and Diff Stats
|
|
47
28
|
```bash
|
|
48
|
-
# EFFICIENT: Combined git operations
|
|
49
29
|
cd $CLAUDE_PROJECT_DIR/${REPO} && git fetch origin && git checkout {BRANCH} && git diff develop...HEAD --stat
|
|
50
30
|
```
|
|
51
31
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
**Before spawning testing-runner, check if valid cached results exist.**
|
|
32
|
+
## 2. Check Test Cache
|
|
55
33
|
|
|
56
34
|
```bash
|
|
57
|
-
|
|
35
|
+
source $CLAUDE_PROJECT_DIR/scripts/utils/test-cache.sh
|
|
58
36
|
SESSION_FILE="$CLAUDE_PROJECT_DIR/.session/{STORY_ID}-session.md"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
CACHE_TIME=$(grep "| Last Run |" "$SESSION_FILE" | sed 's/.*| //' | sed 's/ |$//' | xargs)
|
|
66
|
-
|
|
67
|
-
# Validate: SHA must match current HEAD
|
|
68
|
-
if [[ "$CACHE_SHA" == "$CURRENT_SHA" ]]; then
|
|
69
|
-
echo "✓ Cache SHA matches current HEAD"
|
|
70
|
-
|
|
71
|
-
# Validate: Cache must be less than 5 minutes old
|
|
72
|
-
# (Use date command appropriate for your OS)
|
|
73
|
-
CACHE_EPOCH=$(date -j -f "%Y-%m-%dT%H:%M:%SZ" "$CACHE_TIME" +%s 2>/dev/null || date -d "$CACHE_TIME" +%s 2>/dev/null || echo 0)
|
|
74
|
-
NOW_EPOCH=$(date +%s)
|
|
75
|
-
AGE_MINUTES=$(( (NOW_EPOCH - CACHE_EPOCH) / 60 ))
|
|
76
|
-
|
|
77
|
-
if [[ $AGE_MINUTES -lt 5 ]]; then
|
|
78
|
-
echo "✓ Using cached test result: $CACHE_RESULT (${AGE_MINUTES}m old)"
|
|
79
|
-
# SKIP testing-runner spawn - use cached result in preflight report
|
|
80
|
-
USE_CACHED_TESTS=true
|
|
81
|
-
else
|
|
82
|
-
echo "⚠ Cache too old (${AGE_MINUTES}m), running fresh tests"
|
|
83
|
-
fi
|
|
84
|
-
else
|
|
85
|
-
echo "⚠ Cache SHA mismatch, running fresh tests"
|
|
86
|
-
fi
|
|
37
|
+
|
|
38
|
+
if test_cache_valid "$SESSION_FILE"; then
|
|
39
|
+
CACHED_RESULT=$(test_cache_get "$SESSION_FILE" "result")
|
|
40
|
+
echo "Using cached: $CACHED_RESULT"
|
|
41
|
+
else
|
|
42
|
+
echo "No cache, running tests"
|
|
87
43
|
fi
|
|
88
44
|
```
|
|
89
45
|
|
|
90
|
-
|
|
91
|
-
- If `USE_CACHED_TESTS=true`: Skip step 3, use cached result in output
|
|
92
|
-
- Otherwise: Proceed to step 3 (spawn testing-runner)
|
|
93
|
-
|
|
94
|
-
### 3. Run Tests and Lints via Testing Runner
|
|
46
|
+
## 3. Run Tests (if no cache)
|
|
95
47
|
|
|
96
|
-
**DELEGATE TO TESTING-RUNNER SUBAGENT:**
|
|
97
|
-
|
|
98
|
-
Spawn a testing-runner subagent with:
|
|
99
48
|
```yaml
|
|
100
49
|
Task tool:
|
|
101
50
|
subagent_type: "general-purpose"
|
|
102
51
|
model: "haiku"
|
|
103
|
-
description: "run tests"
|
|
104
52
|
prompt: |
|
|
105
|
-
|
|
53
|
+
You are the testing-runner subagent.
|
|
54
|
+
|
|
55
|
+
Read .pennyfarthing/agents/testing-runner.md for your instructions,
|
|
56
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
57
|
+
the bash commands and produce the required output format.
|
|
106
58
|
|
|
107
59
|
REPOS: {REPOS}
|
|
108
60
|
CONTEXT: PR review pre-flight for Story {STORY_ID}
|
|
109
61
|
RUN_ID: {STORY_ID}-review
|
|
110
62
|
```
|
|
111
63
|
|
|
112
|
-
|
|
64
|
+
## 4. Code Smells
|
|
113
65
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
- `console.log` (not wrapped in `import.meta.env.DEV`)
|
|
66
|
+
Search changed files for:
|
|
67
|
+
- `console.log` (not in DEV guard)
|
|
117
68
|
- `dangerouslySetInnerHTML`
|
|
118
|
-
-
|
|
119
|
-
- `TODO`
|
|
120
|
-
- Non-null assertions `!` without preceding null check
|
|
69
|
+
- `.skip(` test skips
|
|
70
|
+
- `TODO` / `FIXME`
|
|
121
71
|
|
|
122
|
-
|
|
123
|
-
If new routes added, check App.tsx for `withRouteErrorBoundary` usage.
|
|
72
|
+
## 5. PR Details
|
|
124
73
|
|
|
125
|
-
### 5. Get PR Details
|
|
126
74
|
```bash
|
|
127
75
|
gh pr view {PR_NUMBER} --json title,body,additions,deletions,changedFiles
|
|
128
76
|
```
|
|
@@ -133,50 +81,16 @@ gh pr view {PR_NUMBER} --json title,body,additions,deletions,changedFiles
|
|
|
133
81
|
## Pre-Flight Report: Story {STORY_ID}
|
|
134
82
|
|
|
135
83
|
### Test Results
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
| API | {N} | {N} | {N} | {N} | {GREEN/RED/YELLOW} |
|
|
141
|
-
| UI | {N} | {N} | {N} | {N} | {GREEN/RED/YELLOW} |
|
|
142
|
-
|
|
143
|
-
#### Failing Tests (if any)
|
|
144
|
-
| Repo | Test Name | File | Error |
|
|
145
|
-
|------|-----------|------|-------|
|
|
146
|
-
| {repo} | {test name} | {file path} | {brief error} |
|
|
147
|
-
|
|
148
|
-
#### Skipped Tests (if any - POLICY VIOLATION)
|
|
149
|
-
| Repo | Test Name | File |
|
|
150
|
-
|------|-----------|------|
|
|
151
|
-
| {repo} | {test name} | {file} |
|
|
152
|
-
|
|
153
|
-
### Lint Results
|
|
154
|
-
| Repo | Errors | Warnings |
|
|
155
|
-
|------|--------|----------|
|
|
156
|
-
| API | {N} | {N} |
|
|
157
|
-
| UI | {N} | {N} |
|
|
158
|
-
|
|
159
|
-
### Code Smells Found
|
|
84
|
+
| Repo | Passed | Failed | Status |
|
|
85
|
+
|------|--------|--------|--------|
|
|
86
|
+
|
|
87
|
+
### Code Smells
|
|
160
88
|
| Pattern | Count | Files |
|
|
161
89
|
|---------|-------|-------|
|
|
162
|
-
| console.log | {N} | {file list} |
|
|
163
|
-
| dangerouslySetInnerHTML | {N} | {file list} |
|
|
164
|
-
| Skipped tests (.skip) | {N} | {file list} |
|
|
165
|
-
| TODO/FIXME | {N} | {file list} |
|
|
166
|
-
|
|
167
|
-
### Error Boundaries
|
|
168
|
-
- New routes: {list or "none"}
|
|
169
|
-
- Wrapped: {yes|no|n/a}
|
|
170
90
|
|
|
171
91
|
### Diff Stats
|
|
172
|
-
- Files
|
|
173
|
-
- Additions: +{N}
|
|
174
|
-
- Deletions: -{N}
|
|
92
|
+
- Files: {N}, +{additions}, -{deletions}
|
|
175
93
|
|
|
176
94
|
### Files to Review
|
|
177
|
-
{list
|
|
178
|
-
|
|
179
|
-
### Log Files
|
|
180
|
-
- Tests: `.session/test-{STORY_ID}-reviewer-verify.log`
|
|
181
|
-
- Lint: `.session/lint-{STORY_ID}-{repo}.log`
|
|
95
|
+
{list}
|
|
182
96
|
```
|