@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,238 @@
|
|
|
1
|
+
# Agent Behavior Guide
|
|
2
|
+
|
|
3
|
+
**For all Pennyfarthing agents.**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Critical Protocols
|
|
8
|
+
|
|
9
|
+
<critical>
|
|
10
|
+
**Reflector markers:** Subagent output is NOT visible to Cyclist. After handoff subagent returns `AGENT_COMMAND`, output the `marker` string verbatim. See `<agent-command-protocol>` below.
|
|
11
|
+
</critical>
|
|
12
|
+
|
|
13
|
+
<critical>
|
|
14
|
+
**Absolute paths:** `cd $CLAUDE_PROJECT_DIR && just test` - never relative `cd`.
|
|
15
|
+
Multi-repo: `cd $CLAUDE_PROJECT_DIR/$(get_repo_path "$repo")` after sourcing `scripts/repo-utils.sh`.
|
|
16
|
+
</critical>
|
|
17
|
+
|
|
18
|
+
<critical>
|
|
19
|
+
**Session file:** `.session/{story-id}-session.md` - extract `**Phase:**` (whose turn), `**Workflow:**`, `**Repos:**`, `**Feature Branch:**`.
|
|
20
|
+
</critical>
|
|
21
|
+
|
|
22
|
+
<critical>
|
|
23
|
+
**Handoff Action:** When `handoff` returns `AGENT_COMMAND`, output `marker` verbatim then `fallback`. Don't ask permission.
|
|
24
|
+
</critical>
|
|
25
|
+
|
|
26
|
+
<critical>
|
|
27
|
+
**Test delegation:** Never run tests directly. Always use `testing-runner` subagent.
|
|
28
|
+
</critical>
|
|
29
|
+
|
|
30
|
+
<critical>
|
|
31
|
+
**Sidecar memory:** Capture learnings BEFORE spawning handoff subagent. Don't wait until exit.
|
|
32
|
+
</critical>
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Reference
|
|
37
|
+
|
|
38
|
+
<info>
|
|
39
|
+
**Workflow:** SM → TEA → Dev → Reviewer → SM (finish). Trivial (1-2 pts) skips TEA.
|
|
40
|
+
|
|
41
|
+
**Confidence:** HIGH=proceed, MEDIUM=ask before risky, LOW=always ask.
|
|
42
|
+
|
|
43
|
+
**Skills:** `/sprint-context`, `/testing`, `/dev-patterns`, `/jira`, `/just`
|
|
44
|
+
|
|
45
|
+
**Reflector:** HTML comments parsed by Cyclist UI (see below).
|
|
46
|
+
|
|
47
|
+
**Turn efficiency:** Parallelize reads, batch bash with `&&`, spawn independent subagents together.
|
|
48
|
+
|
|
49
|
+
**Background tasks:** Don't block unless result needed. Cyclist notifies on completion.
|
|
50
|
+
|
|
51
|
+
**Sidecar location:** `.pennyfarthing/sidecars/{agent}/` with `patterns.md`, `gotchas.md`, `decisions.md`.
|
|
52
|
+
|
|
53
|
+
**Subagent skills:** Include skill paths in prompts - subagents don't auto-load skills.
|
|
54
|
+
|
|
55
|
+
**Worktree:** Get path from session: `WORKTREE_PATH=$(grep "^path:" "$SESSION_FILE" | cut -d' ' -f2)`
|
|
56
|
+
|
|
57
|
+
**Dogfooding:** Write to `pennyfarthing-dist/` not `.claude/` (symlink permission issue).
|
|
58
|
+
</info>
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Project Context
|
|
63
|
+
|
|
64
|
+
<info>
|
|
65
|
+
**Project:** Pennyfarthing - Claude Code agent orchestration (pnpm monorepo, TypeScript)
|
|
66
|
+
|
|
67
|
+
**Key paths:**
|
|
68
|
+
- `pennyfarthing-dist/` - agents, commands, skills, guides, personas
|
|
69
|
+
- `sprint/current-sprint.yaml` - active sprint
|
|
70
|
+
- `.session/` - active work sessions
|
|
71
|
+
|
|
72
|
+
**Git:** Branch from `develop`, PR to `develop`, release merges to `main`.
|
|
73
|
+
|
|
74
|
+
**Commit:** `<type>(<scope>): <subject>` + `Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>`
|
|
75
|
+
|
|
76
|
+
**Build:** `npm run build`, `npm test`, `npm run lint`
|
|
77
|
+
</info>
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Sprint YAML and Jira Interaction Rules
|
|
82
|
+
|
|
83
|
+
<critical>
|
|
84
|
+
**Never directly edit sprint YAML.** All sprint YAML modifications MUST go through dedicated scripts.
|
|
85
|
+
</critical>
|
|
86
|
+
|
|
87
|
+
<info>
|
|
88
|
+
**Rule 1:** Use `/sprint` skill for sprint operations
|
|
89
|
+
- `/sprint status` - View sprint
|
|
90
|
+
- `/sprint backlog` - View available stories
|
|
91
|
+
- `/sprint work` - Start a story
|
|
92
|
+
- `/sprint archive` - Archive completed story
|
|
93
|
+
|
|
94
|
+
**Rule 2:** Use `/story` skill for story operations
|
|
95
|
+
- `/story finish` - Complete story (handles YAML, Jira, merge, archive)
|
|
96
|
+
- `/story create` - Add new story to sprint
|
|
97
|
+
|
|
98
|
+
**Rule 3:** Use `/jira` skill for all Jira operations
|
|
99
|
+
- `/jira claim` - Assign and move to In Progress
|
|
100
|
+
- `/jira move` - Transition status
|
|
101
|
+
- `/jira view` - Check status
|
|
102
|
+
- `/jira sync` - Sync YAML ↔ Jira
|
|
103
|
+
|
|
104
|
+
**Rule 4:** All sprint YAML access goes through scripts
|
|
105
|
+
```bash
|
|
106
|
+
# GOOD: Use scripts for ALL operations
|
|
107
|
+
.pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
|
|
108
|
+
.pennyfarthing/scripts/core/run.sh sprint/get-epic-field.sh 35 jira
|
|
109
|
+
.pennyfarthing/scripts/core/run.sh sprint/check-story.sh X-Y
|
|
110
|
+
|
|
111
|
+
# BAD: Direct yq queries (even read-only)
|
|
112
|
+
yq '.epics[].stories[] | ...' sprint/current-sprint.yaml
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Script Responsibilities:**
|
|
116
|
+
| Operation | Script | Skill |
|
|
117
|
+
|-----------|--------|-------|
|
|
118
|
+
| Get story field | `get-story-field.sh` | - |
|
|
119
|
+
| Get epic field | `get-epic-field.sh` | - |
|
|
120
|
+
| Check story/epic | `check-story.sh` | `/sprint work` |
|
|
121
|
+
| Start story | `jira-claim-story.sh` | `/jira claim` |
|
|
122
|
+
| Finish story | `finish-story.sh` | `/story finish` |
|
|
123
|
+
| Archive story | `archive-story.sh --apply` | `/sprint archive` |
|
|
124
|
+
| Sync to Jira | `sync-epic-jira.sh` | `/jira sync` |
|
|
125
|
+
| Create epic | `create-jira-epic.sh` | `/jira create epic` |
|
|
126
|
+
</info>
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
## Persona System
|
|
132
|
+
|
|
133
|
+
<info>
|
|
134
|
+
**Config:** `.pennyfarthing/config.local.yaml` with `theme:` field.
|
|
135
|
+
|
|
136
|
+
**many themes available:** `/list-themes` to browse, `/show-theme <name>` for details, `/set-theme <name>` to change.
|
|
137
|
+
|
|
138
|
+
**Categories:** TV Series, Film, Literature, Anime, Games, History/Mythology.
|
|
139
|
+
|
|
140
|
+
**Attributes:** `verbosity` (low/medium/high), `formality` (formal/casual/playful), `humor` (enabled/disabled/subtle).
|
|
141
|
+
|
|
142
|
+
**Per-agent override:**
|
|
143
|
+
```yaml
|
|
144
|
+
overrides:
|
|
145
|
+
reviewer:
|
|
146
|
+
theme: discworld # Keep Granny even in Star Trek mode
|
|
147
|
+
```
|
|
148
|
+
</info>
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Reflector
|
|
153
|
+
|
|
154
|
+
<info>
|
|
155
|
+
HTML comments that agents emit to signal Cyclist UI. Format: `<!-- CYCLIST:TYPE:value -->`
|
|
156
|
+
|
|
157
|
+
| Type | Value | Cyclist Action |
|
|
158
|
+
|------|-------|----------------|
|
|
159
|
+
| `HANDOFF` | `/agent` | Shows "Continue with /agent" button |
|
|
160
|
+
| `CONTEXT_CLEAR` | `/agent` | Clears session, reloads with agent |
|
|
161
|
+
| `QUESTION` | `yesno` | Shows yes/no dialog |
|
|
162
|
+
| `CHOICES` | `1,2,3` | Shows choice buttons |
|
|
163
|
+
|
|
164
|
+
**Examples:**
|
|
165
|
+
```
|
|
166
|
+
<!-- CYCLIST:HANDOFF:/tea -->
|
|
167
|
+
<!-- CYCLIST:CONTEXT_CLEAR:/dev -->
|
|
168
|
+
<!-- CYCLIST:QUESTION:yesno -->
|
|
169
|
+
<!-- CYCLIST:CHOICES:option1,option2,option3 -->
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**When to use:**
|
|
173
|
+
- `HANDOFF` - End of phase (TEA→Dev, Dev→Reviewer)
|
|
174
|
+
- `CONTEXT_CLEAR` - Context >80% at handoff
|
|
175
|
+
- `QUESTION`/`CHOICES` - User input needed mid-work
|
|
176
|
+
</info>
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
<agent-command-protocol>
|
|
181
|
+
## AGENT_COMMAND Protocol
|
|
182
|
+
|
|
183
|
+
<critical>
|
|
184
|
+
**Subagent output is NOT visible to Cyclist.** Tool results are not parsed for markers.
|
|
185
|
+
Handoff subagents return an `AGENT_COMMAND` block with a pre-rendered `marker` string.
|
|
186
|
+
The **calling agent** outputs the `marker` verbatim - no parsing or mapping required.
|
|
187
|
+
</critical>
|
|
188
|
+
|
|
189
|
+
### How It Works
|
|
190
|
+
|
|
191
|
+
1. Agent writes assessment to session file FIRST
|
|
192
|
+
2. Agent spawns `handoff` subagent
|
|
193
|
+
3. Subagent runs `handoff-marker.sh {next-agent}` to generate `AGENT_COMMAND` block
|
|
194
|
+
4. Subagent returns the block with pre-rendered `marker` string
|
|
195
|
+
5. **Agent outputs `marker` verbatim, then outputs `fallback` message**
|
|
196
|
+
|
|
197
|
+
**Single Source of Truth:** The `handoff-marker.sh` script is the authoritative source for marker format. It handles environment detection (IS_CYCLIST, USE_TIREPUMP) automatically.
|
|
198
|
+
|
|
199
|
+
### AGENT_COMMAND Format
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
---
|
|
203
|
+
AGENT_COMMAND:
|
|
204
|
+
marker: "{PRE_RENDERED_MARKER_STRING}"
|
|
205
|
+
fallback: "Run `/{agent}` to continue"
|
|
206
|
+
---
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
The `marker` field contains the exact string to output (or empty string if no marker needed).
|
|
210
|
+
The `fallback` field contains human-readable instructions.
|
|
211
|
+
|
|
212
|
+
### Agent Action
|
|
213
|
+
|
|
214
|
+
**Simple rule: Output `marker` then `fallback`. That's it.**
|
|
215
|
+
|
|
216
|
+
1. If `error: true` → Report the `fallback` message as an error
|
|
217
|
+
2. Otherwise → Output `marker` verbatim (if non-empty), then output `fallback`
|
|
218
|
+
|
|
219
|
+
### Example
|
|
220
|
+
|
|
221
|
+
Subagent returns:
|
|
222
|
+
```
|
|
223
|
+
---
|
|
224
|
+
AGENT_COMMAND:
|
|
225
|
+
marker: "<!-- CYCLIST:HANDOFF:/dev -->"
|
|
226
|
+
fallback: "Run `/dev` to continue"
|
|
227
|
+
---
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Agent outputs in their direct text (not a tool call):
|
|
231
|
+
```
|
|
232
|
+
<!-- CYCLIST:HANDOFF:/dev -->
|
|
233
|
+
|
|
234
|
+
Run `/dev` to continue
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**CRITICAL:** The marker MUST appear in the agent's direct text output, not in a tool result.
|
|
238
|
+
</agent-command-protocol>
|
|
@@ -67,7 +67,7 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
|
|
|
67
67
|
</constraints>
|
|
68
68
|
|
|
69
69
|
<context>
|
|
70
|
-
**See:** `.pennyfarthing/guides/
|
|
70
|
+
**See:** `.pennyfarthing/guides/agent-behavior.md` for project info and git strategy.
|
|
71
71
|
**Work Directory:** {Where this agent's artifacts live}
|
|
72
72
|
</context>
|
|
73
73
|
|
|
@@ -105,7 +105,7 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
|
|
|
105
105
|
<exit>
|
|
106
106
|
To exit: "Exit {Agent}" or "Switch to [other agent]"
|
|
107
107
|
|
|
108
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
108
|
+
On exit, run: `./scripts/run.sh core/agent-session.sh stop`
|
|
109
109
|
</exit>
|
|
110
110
|
```
|
|
111
111
|
|
|
@@ -62,8 +62,8 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
|
|
|
62
62
|
</skills>
|
|
63
63
|
|
|
64
64
|
<context>
|
|
65
|
-
**See:** `.pennyfarthing/guides/
|
|
66
|
-
**See:** `.pennyfarthing/guides/
|
|
65
|
+
**See:** `.pennyfarthing/guides/agent-behavior.md` for shared tactical agent behavior.
|
|
66
|
+
**See:** `.pennyfarthing/guides/agent-behavior.md` for project info and git strategy.
|
|
67
67
|
</context>
|
|
68
68
|
|
|
69
69
|
<reasoning-mode>
|
|
@@ -122,14 +122,14 @@ After completing work:
|
|
|
122
122
|
|
|
123
123
|
1. Write assessment to session file
|
|
124
124
|
2. Spawn handoff helper (`.pennyfarthing/agents/{agent}-handoff.md`)
|
|
125
|
-
3. Check context: `eval $(./scripts/run.sh check-context.sh)`
|
|
125
|
+
3. Check context: `eval $(./scripts/run.sh core/check-context.sh)`
|
|
126
126
|
4. If `HANDOFF_MODE=auto`: Use Skill tool to invoke next agent
|
|
127
127
|
5. If `HANDOFF_MODE=ask`: Tell user to start fresh session
|
|
128
128
|
|
|
129
129
|
<exit>
|
|
130
130
|
To exit: "Exit {Agent}" or "Switch to [other agent]"
|
|
131
131
|
|
|
132
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
132
|
+
On exit, run: `./scripts/run.sh core/agent-session.sh stop`
|
|
133
133
|
</exit>
|
|
134
134
|
```
|
|
135
135
|
|
|
@@ -388,7 +388,7 @@ After gate passage, check context usage before invoking next agent:
|
|
|
388
388
|
|
|
389
389
|
```bash
|
|
390
390
|
# Check context usage
|
|
391
|
-
$CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
|
|
391
|
+
$CLAUDE_PROJECT_DIR/scripts/core/check-context.sh --human
|
|
392
392
|
|
|
393
393
|
# Routing decision:
|
|
394
394
|
# If < 60%: Invoke next agent directly in this session
|
|
@@ -31,10 +31,10 @@ Opus Agent (strategic)
|
|
|
31
31
|
└── Delegates mechanical work via Task tool
|
|
32
32
|
│
|
|
33
33
|
├── workflow-status-check (state detection)
|
|
34
|
-
├──
|
|
35
|
-
├──
|
|
34
|
+
├── sm-setup (research backlog or setup story)
|
|
35
|
+
├── sm-finish (preflight checks or execute finish)
|
|
36
36
|
├── sm-handoff (SM→TEA/Dev with Jira/branch verification)
|
|
37
|
-
├──
|
|
37
|
+
├── handoff (TEA/Dev/Reviewer phase transitions)
|
|
38
38
|
├── reviewer-preflight (test/lint data gathering)
|
|
39
39
|
└── testing-runner (test execution)
|
|
40
40
|
```
|
|
@@ -89,15 +89,15 @@ The key insight: **Make critical behaviors AUTOMATIC via subagent delegation** r
|
|
|
89
89
|
├───────────────────┼────────────────────────┼────────────────────────────┤
|
|
90
90
|
│ State Detection │ workflow-status-check │ Scan files, report state │
|
|
91
91
|
├───────────────────┼────────────────────────┼────────────────────────────┤
|
|
92
|
-
│ Setup/Init │
|
|
92
|
+
│ Setup/Init │ sm-setup │ Research or setup (MODE) │
|
|
93
93
|
│ │ sm-handoff │ SM→TEA/Dev with Jira/branch│
|
|
94
94
|
├───────────────────┼────────────────────────┼────────────────────────────┤
|
|
95
|
-
│ Phase Handoff │
|
|
95
|
+
│ Phase Handoff │ handoff │ TEA/Dev/Reviewer transitions│
|
|
96
96
|
├───────────────────┼────────────────────────┼────────────────────────────┤
|
|
97
97
|
│ Verification │ reviewer-preflight │ Gather facts before review │
|
|
98
98
|
│ │ testing-runner │ Execute tests, report │
|
|
99
99
|
├───────────────────┼────────────────────────┼────────────────────────────┤
|
|
100
|
-
│ Finish/Cleanup │
|
|
100
|
+
│ Finish/Cleanup │ sm-finish │ Preflight or execute (PHASE)│
|
|
101
101
|
└─────────────────────────────────────────────────────────────────────────┘
|
|
102
102
|
```
|
|
103
103
|
|
|
@@ -282,11 +282,11 @@ The Opus agent reads this report and decides next steps—it doesn't re-execute
|
|
|
282
282
|
| Scenario | Subagent | Why |
|
|
283
283
|
|----------|----------|-----|
|
|
284
284
|
| Determining workflow state | `workflow-status-check` | Scanning files is mechanical |
|
|
285
|
-
| Creating branches/sessions | `
|
|
285
|
+
| Creating branches/sessions | `sm-setup MODE=setup` | Git operations are deterministic |
|
|
286
286
|
| Verifying test state | `testing-runner` | Test execution is mechanical |
|
|
287
|
-
| Updating session files | `
|
|
287
|
+
| Updating session files | `handoff` | State updates must be reliable |
|
|
288
288
|
| Gathering review data | `reviewer-preflight` | Fact-finding, not judgment |
|
|
289
|
-
| Sprint file updates | `
|
|
289
|
+
| Sprint file updates | `sm-finish` | Archiving is mechanical |
|
|
290
290
|
|
|
291
291
|
### Don't Delegate When:
|
|
292
292
|
|
|
@@ -318,7 +318,7 @@ Is the task...
|
|
|
318
318
|
|
|
319
319
|
### Subagent Retry Pattern
|
|
320
320
|
|
|
321
|
-
From `agents/
|
|
321
|
+
From `agents/sm-setup.md` (Error Recovery section):
|
|
322
322
|
|
|
323
323
|
```
|
|
324
324
|
1. Log the failure: Note which step failed and why
|
|
@@ -345,9 +345,9 @@ Recommended fix: [what calling agent should do]
|
|
|
345
345
|
|
|
346
346
|
| Failure | Subagent | Fix |
|
|
347
347
|
|---------|----------|-----|
|
|
348
|
-
| Jira claim failed |
|
|
349
|
-
| Tests all GREEN |
|
|
350
|
-
| PR not found |
|
|
348
|
+
| Jira claim failed | sm-setup | Choose different story |
|
|
349
|
+
| Tests all GREEN | handoff | TEA must verify tests are correct |
|
|
350
|
+
| PR not found | handoff | Verify PR was created |
|
|
351
351
|
| Session file missing | any handoff | Check path, may need recreation |
|
|
352
352
|
| Git command failed | any | Check for uncommitted changes |
|
|
353
353
|
|
|
@@ -373,7 +373,7 @@ Burns context, may skip steps, prone to errors.
|
|
|
373
373
|
**Correct:**
|
|
374
374
|
```yaml
|
|
375
375
|
Task tool:
|
|
376
|
-
subagent_type: "
|
|
376
|
+
subagent_type: "sm-setup"
|
|
377
377
|
prompt: |
|
|
378
378
|
MODE: setup
|
|
379
379
|
STORY_ID: 5-2
|
|
@@ -464,10 +464,10 @@ If edit fails:
|
|
|
464
464
|
|
|
465
465
|
### Subagent Definitions
|
|
466
466
|
- State Detection: `agents/workflow-status-check.md`
|
|
467
|
-
- SM Setup/Research: `agents/
|
|
468
|
-
- SM Finish: `agents/
|
|
467
|
+
- SM Setup/Research: `agents/sm-setup.md`
|
|
468
|
+
- SM Finish: `agents/sm-finish.md`
|
|
469
469
|
- SM Handoff: `agents/sm-handoff.md`
|
|
470
|
-
- Phase Transitions: `agents/
|
|
470
|
+
- Phase Transitions: `agents/handoff.md`
|
|
471
471
|
- Reviewer Preflight: `agents/reviewer-preflight.md`
|
|
472
472
|
- Testing Runner: `agents/testing-runner.md`
|
|
473
473
|
|
|
@@ -142,13 +142,13 @@ The session file (`.session/{story-id}-session.md`) tracks state:
|
|
|
142
142
|
|
|
143
143
|
| From | To | Trigger | Subagent |
|
|
144
144
|
|------|-----|---------|----------|
|
|
145
|
-
| setup | red | Story setup complete | `
|
|
146
|
-
| setup | implement | 1-2 pt story (skip TEA) | `
|
|
147
|
-
| red | green | Tests written, failing | `
|
|
148
|
-
| green | review | PR created, tests pass | `
|
|
149
|
-
| review | implement | Issues found | `
|
|
150
|
-
| review | approved | No blocking issues | `
|
|
151
|
-
| approved | done | Story archived | `
|
|
145
|
+
| setup | red | Story setup complete | `sm-setup MODE=setup` + `sm-handoff` |
|
|
146
|
+
| setup | implement | 1-2 pt story (skip TEA) | `sm-setup MODE=setup` + `sm-handoff` |
|
|
147
|
+
| red | green | Tests written, failing | `handoff CURRENT_PHASE=red` |
|
|
148
|
+
| green | review | PR created, tests pass | `handoff CURRENT_PHASE=green` |
|
|
149
|
+
| review | implement | Issues found | `handoff VERDICT=rejected` |
|
|
150
|
+
| review | approved | No blocking issues | `handoff VERDICT=approved` |
|
|
151
|
+
| approved | done | Story archived | `sm-finish PHASE=execute` |
|
|
152
152
|
|
|
153
153
|
### Agent Responsibilities
|
|
154
154
|
|
|
@@ -301,7 +301,7 @@ User runs /new-work → workflow-status-check detects no epic context
|
|
|
301
301
|
Each agent checks context usage after completing work:
|
|
302
302
|
|
|
303
303
|
```bash
|
|
304
|
-
$CLAUDE_PROJECT_DIR/scripts/check-context.sh --human
|
|
304
|
+
$CLAUDE_PROJECT_DIR/scripts/core/check-context.sh --human
|
|
305
305
|
```
|
|
306
306
|
|
|
307
307
|
| Context | Action |
|
|
@@ -34,6 +34,11 @@ workflow:
|
|
|
34
34
|
min: number # Optional: minimum points
|
|
35
35
|
max: number # Optional: maximum points
|
|
36
36
|
default: boolean # Optional: use as fallback workflow
|
|
37
|
+
|
|
38
|
+
permissions: # Optional: required permissions for this workflow
|
|
39
|
+
- tool: string # Required: tool name (Bash, Read, WebFetch, etc.)
|
|
40
|
+
scope: string # Required: scope pattern (e.g., "npm test", "*.github.com")
|
|
41
|
+
reason: string # Required: human-readable reason for the permission
|
|
37
42
|
```
|
|
38
43
|
|
|
39
44
|
## Required Fields
|
|
@@ -55,6 +60,7 @@ workflow:
|
|
|
55
60
|
| `phases[].output` | Array of outputs for next phases |
|
|
56
61
|
| `phases[].gate` | Conditions to proceed to next phase |
|
|
57
62
|
| `workflow.triggers` | Rules for automatic workflow selection |
|
|
63
|
+
| `workflow.permissions` | Array of permission presets required by the workflow |
|
|
58
64
|
|
|
59
65
|
## Gate Types
|
|
60
66
|
|
|
@@ -65,6 +71,61 @@ workflow:
|
|
|
65
71
|
| `approval` | Requires reviewer approval |
|
|
66
72
|
| `manual` | Manual confirmation required |
|
|
67
73
|
|
|
74
|
+
## Permission Presets
|
|
75
|
+
|
|
76
|
+
Workflows can declare required permissions that are checked at workflow start. If any permissions are missing, the user is prompted to grant them before proceeding.
|
|
77
|
+
|
|
78
|
+
### Permission Fields
|
|
79
|
+
|
|
80
|
+
| Field | Required | Description |
|
|
81
|
+
|-------|----------|-------------|
|
|
82
|
+
| `tool` | Yes | Tool name: `Bash`, `Read`, `Write`, `Edit`, `WebFetch`, `WebSearch`, `Glob`, `Grep`, `Task` |
|
|
83
|
+
| `scope` | Yes | Scope pattern for the permission (e.g., `"npm test"`, `"*.github.com"`, `"src/**/*"`) |
|
|
84
|
+
| `reason` | Yes | Human-readable explanation shown when prompting user |
|
|
85
|
+
|
|
86
|
+
### Permission Checking
|
|
87
|
+
|
|
88
|
+
On workflow start:
|
|
89
|
+
1. System reads workflow's `permissions` array
|
|
90
|
+
2. Compares against cached grants in `.claude/settings.local.json`
|
|
91
|
+
3. For each missing permission, prompts user with the `reason`
|
|
92
|
+
4. Granted permissions are cached for the session
|
|
93
|
+
|
|
94
|
+
### Example: TDD Workflow with Permissions
|
|
95
|
+
|
|
96
|
+
```yaml
|
|
97
|
+
workflow:
|
|
98
|
+
name: tdd-with-permissions
|
|
99
|
+
description: TDD workflow with pre-declared permissions
|
|
100
|
+
version: "1.0.0"
|
|
101
|
+
|
|
102
|
+
permissions:
|
|
103
|
+
- tool: Bash
|
|
104
|
+
scope: "npm test|npm run build"
|
|
105
|
+
reason: "TDD workflow requires running tests and builds"
|
|
106
|
+
- tool: Read
|
|
107
|
+
scope: "src/**/*"
|
|
108
|
+
reason: "Need to read source files for implementation"
|
|
109
|
+
|
|
110
|
+
phases:
|
|
111
|
+
- name: setup
|
|
112
|
+
agent: sm
|
|
113
|
+
- name: red
|
|
114
|
+
agent: tea
|
|
115
|
+
gate:
|
|
116
|
+
type: tests_fail
|
|
117
|
+
- name: green
|
|
118
|
+
agent: dev
|
|
119
|
+
gate:
|
|
120
|
+
type: tests_pass
|
|
121
|
+
- name: review
|
|
122
|
+
agent: reviewer
|
|
123
|
+
gate:
|
|
124
|
+
type: approval
|
|
125
|
+
- name: finish
|
|
126
|
+
agent: sm
|
|
127
|
+
```
|
|
128
|
+
|
|
68
129
|
## Examples
|
|
69
130
|
|
|
70
131
|
### TDD Workflow
|
|
@@ -193,3 +254,4 @@ Error: workflow.triggers.points min (10) cannot be greater than max (5)
|
|
|
193
254
|
- Story 31-2: Workflow loader and validator
|
|
194
255
|
- Story 31-3: Story-to-workflow routing engine
|
|
195
256
|
- Story 31-5: /workflow skill for listing and switching
|
|
257
|
+
- Story MSSCI-11710: Permission presets by workflow
|
|
@@ -34,8 +34,8 @@ Worktree info is stored INSIDE the session file, not in the filename.
|
|
|
34
34
|
```
|
|
35
35
|
worktrees/
|
|
36
36
|
└── wt-5-3a/
|
|
37
|
-
├──
|
|
38
|
-
└──
|
|
37
|
+
├── Pennyfarthing-api/ # API repo worktree
|
|
38
|
+
└── Pennyfarthing-ui/ # UI repo worktree
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
### Session File Format
|
|
@@ -86,8 +86,8 @@ Ports are stored in the session file and passed to agents.
|
|
|
86
86
|
| Command | Purpose |
|
|
87
87
|
|---------|---------|
|
|
88
88
|
| `/parallel-work` | Start a new parallel work session |
|
|
89
|
-
| `./scripts/run.sh worktree-manager.sh list` | Show active worktrees |
|
|
90
|
-
| `./scripts/run.sh worktree-manager.sh remove <name>` | Clean up a worktree |
|
|
89
|
+
| `./scripts/run.sh git/worktree-manager.sh list` | Show active worktrees |
|
|
90
|
+
| `./scripts/run.sh git/worktree-manager.sh remove <name>` | Clean up a worktree |
|
|
91
91
|
|
|
92
92
|
## TDD Flow in Worktrees
|
|
93
93
|
|
|
@@ -104,7 +104,7 @@ Agents use worktree paths from session file for all operations.
|
|
|
104
104
|
When story is complete, SM archives the session and the worktree can be removed:
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
./scripts/run.sh worktree-manager.sh remove wt-5-3a
|
|
107
|
+
./scripts/run.sh git/worktree-manager.sh remove wt-5-3a
|
|
108
108
|
```
|
|
109
109
|
|
|
110
110
|
This removes:
|
|
@@ -13,7 +13,7 @@ theme:
|
|
|
13
13
|
default_humor: enabled
|
|
14
14
|
user_title: Client
|
|
15
15
|
portrait_style: ", 1980s action TV, bold primary colors, explosion orange background, vintage VHS aesthetic"
|
|
16
|
-
tier:
|
|
16
|
+
tier: B
|
|
17
17
|
agents:
|
|
18
18
|
orchestrator:
|
|
19
19
|
character: Colonel John "Hannibal" Smith
|