@pennyfarthing/core 7.0.2 → 7.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +14 -0
- package/README.md +2 -2
- package/package.json +11 -10
- package/packages/core/dist/cli/commands/cyclist.d.ts +2 -2
- package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/cyclist.js +8 -9
- package/packages/core/dist/cli/commands/cyclist.js.map +1 -1
- package/packages/core/dist/cli/commands/cyclist.test.js +6 -4
- package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -1
- package/packages/core/dist/cli/commands/init.js +4 -3
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +15 -139
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/cyclist-migration.test.js +4 -3
- package/packages/core/dist/cli/cyclist-migration.test.js.map +1 -1
- package/packages/core/dist/cli/utils/constants.d.ts +7 -1
- package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/constants.js +4 -2
- package/packages/core/dist/cli/utils/constants.js.map +1 -1
- package/packages/core/dist/cli/utils/node-modules.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/node-modules.js +2 -1
- package/packages/core/dist/cli/utils/node-modules.js.map +1 -1
- package/packages/core/dist/cli/utils/themes.d.ts +1 -4
- package/packages/core/dist/cli/utils/themes.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/themes.js +2 -22
- package/packages/core/dist/cli/utils/themes.js.map +1 -1
- package/packages/core/dist/cli/utils/themes.test.d.ts +3 -3
- package/packages/core/dist/cli/utils/themes.test.js +16 -13
- package/packages/core/dist/cli/utils/themes.test.js.map +1 -1
- package/packages/core/dist/cli/workspace.test.js +11 -9
- package/packages/core/dist/cli/workspace.test.js.map +1 -1
- package/packages/core/dist/index.d.ts +1 -0
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +10 -0
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/jira/jira-epic-creation.d.ts +109 -0
- package/packages/core/dist/jira/jira-epic-creation.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.js +253 -0
- package/packages/core/dist/jira/jira-epic-creation.js.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.test.d.ts +16 -0
- package/packages/core/dist/jira/jira-epic-creation.test.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.test.js +387 -0
- package/packages/core/dist/jira/jira-epic-creation.test.js.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.d.ts +247 -0
- package/packages/core/dist/jira/jira-sprint-sync.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.js +670 -0
- package/packages/core/dist/jira/jira-sprint-sync.js.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.d.ts +16 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.js +845 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.js.map +1 -0
- package/packages/core/dist/scripts/generate-spider.d.ts +11 -1
- package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -1
- package/packages/core/dist/scripts/generate-spider.js +24 -1
- package/packages/core/dist/scripts/generate-spider.js.map +1 -1
- package/packages/core/dist/scripts/generate-spider.test.js +6 -4
- package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
- package/packages/core/dist/workflow/gate-handler.d.ts +94 -0
- package/packages/core/dist/workflow/gate-handler.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-handler.js +189 -0
- package/packages/core/dist/workflow/gate-handler.js.map +1 -0
- package/packages/core/dist/workflow/gate-handler.test.d.ts +14 -0
- package/packages/core/dist/workflow/gate-handler.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-handler.test.js +543 -0
- package/packages/core/dist/workflow/gate-handler.test.js.map +1 -0
- package/packages/core/dist/workflow/generic-handoff.d.ts +46 -0
- package/packages/core/dist/workflow/generic-handoff.d.ts.map +1 -1
- package/packages/core/dist/workflow/generic-handoff.js +53 -0
- package/packages/core/dist/workflow/generic-handoff.js.map +1 -1
- package/packages/core/dist/workflow/generic-handoff.test.js +2 -2
- package/packages/core/dist/workflow/generic-handoff.test.js.map +1 -1
- package/packages/core/dist/workflow/handoff.d.ts +281 -0
- package/packages/core/dist/workflow/handoff.d.ts.map +1 -0
- package/packages/core/dist/workflow/handoff.js +411 -0
- package/packages/core/dist/workflow/handoff.js.map +1 -0
- package/packages/core/dist/workflow/handoff.test.d.ts +21 -0
- package/packages/core/dist/workflow/handoff.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/handoff.test.js +499 -0
- package/packages/core/dist/workflow/handoff.test.js.map +1 -0
- package/packages/core/dist/workflow/index.d.ts +16 -0
- package/packages/core/dist/workflow/index.d.ts.map +1 -0
- package/packages/core/dist/workflow/index.js +24 -0
- package/packages/core/dist/workflow/index.js.map +1 -0
- package/packages/core/dist/workflow/session-state.d.ts +92 -0
- package/packages/core/dist/workflow/session-state.d.ts.map +1 -0
- package/packages/core/dist/workflow/session-state.js +198 -0
- package/packages/core/dist/workflow/session-state.js.map +1 -0
- package/packages/core/dist/workflow/session-state.test.d.ts +8 -0
- package/packages/core/dist/workflow/session-state.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/session-state.test.js +551 -0
- package/packages/core/dist/workflow/session-state.test.js.map +1 -0
- package/packages/core/dist/workflow/sm-subagents.test.d.ts +2 -2
- package/packages/core/dist/workflow/sm-subagents.test.js +6 -6
- package/packages/core/dist/workflow/sm-subagents.test.js.map +1 -1
- package/packages/core/dist/workflow/step-parser.d.ts +45 -0
- package/packages/core/dist/workflow/step-parser.d.ts.map +1 -0
- package/packages/core/dist/workflow/step-parser.js +147 -0
- package/packages/core/dist/workflow/step-parser.js.map +1 -0
- package/packages/core/dist/workflow/step-parser.test.d.ts +14 -0
- package/packages/core/dist/workflow/step-parser.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/step-parser.test.js +470 -0
- package/packages/core/dist/workflow/step-parser.test.js.map +1 -0
- package/packages/core/dist/workflow/trimodal.d.ts +86 -0
- package/packages/core/dist/workflow/trimodal.d.ts.map +1 -0
- package/packages/core/dist/workflow/trimodal.js +118 -0
- package/packages/core/dist/workflow/trimodal.js.map +1 -0
- package/packages/core/dist/workflow/trimodal.test.d.ts +11 -0
- package/packages/core/dist/workflow/trimodal.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/trimodal.test.js +395 -0
- package/packages/core/dist/workflow/trimodal.test.js.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.d.ts +67 -0
- package/packages/core/dist/workflow/variable-resolver.d.ts.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.js +156 -0
- package/packages/core/dist/workflow/variable-resolver.js.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.test.d.ts +14 -0
- package/packages/core/dist/workflow/variable-resolver.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.test.js +400 -0
- package/packages/core/dist/workflow/variable-resolver.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.d.ts +163 -0
- package/packages/core/dist/workflow/workflow-executor.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.js +197 -0
- package/packages/core/dist/workflow/workflow-executor.js.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.test.d.ts +8 -0
- package/packages/core/dist/workflow/workflow-executor.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.test.js +444 -0
- package/packages/core/dist/workflow/workflow-executor.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-loader.test.js +5 -5
- package/packages/core/dist/workflow/workflow-loader.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-migration.test.js +8 -9
- package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-permissions.d.ts +55 -0
- package/packages/core/dist/workflow/workflow-permissions.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.js +64 -0
- package/packages/core/dist/workflow/workflow-permissions.js.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.test.d.ts +15 -0
- package/packages/core/dist/workflow/workflow-permissions.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.test.js +301 -0
- package/packages/core/dist/workflow/workflow-permissions.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts +61 -2
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.js +293 -69
- package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.test.js +6 -6
- package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts +18 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.js +608 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.js.map +1 -0
- package/pennyfarthing-dist/agents/README.md +63 -134
- package/pennyfarthing-dist/agents/architect.md +18 -10
- package/pennyfarthing-dist/agents/dev.md +47 -32
- package/pennyfarthing-dist/agents/devops.md +18 -9
- package/pennyfarthing-dist/agents/handoff.md +289 -0
- package/pennyfarthing-dist/agents/orchestrator.md +44 -22
- package/pennyfarthing-dist/agents/pm.md +13 -8
- package/pennyfarthing-dist/agents/reviewer-preflight.md +42 -128
- package/pennyfarthing-dist/agents/reviewer.md +104 -57
- package/pennyfarthing-dist/agents/sm-file-summary.md +24 -75
- package/pennyfarthing-dist/agents/sm-finish.md +61 -0
- package/pennyfarthing-dist/agents/sm-handoff.md +102 -54
- package/pennyfarthing-dist/agents/sm-setup.md +174 -0
- package/pennyfarthing-dist/agents/sm.md +223 -100
- package/pennyfarthing-dist/agents/tea.md +42 -34
- package/pennyfarthing-dist/agents/tech-writer.md +74 -6
- package/pennyfarthing-dist/agents/testing-runner.md +78 -360
- package/pennyfarthing-dist/agents/ux-designer.md +80 -7
- package/pennyfarthing-dist/agents/workflow-status-check.md +35 -299
- package/pennyfarthing-dist/commands/architect.md +2 -2
- package/pennyfarthing-dist/commands/close-epic.md +5 -2
- package/pennyfarthing-dist/commands/create-branches-from-story.md +7 -23
- package/pennyfarthing-dist/commands/dev.md +2 -2
- package/pennyfarthing-dist/commands/devops.md +3 -3
- package/pennyfarthing-dist/commands/git-cleanup.md +5 -5
- package/pennyfarthing-dist/commands/health-check.md +1 -1
- package/pennyfarthing-dist/commands/list-themes.md +7 -3
- package/pennyfarthing-dist/commands/orchestrator.md +2 -2
- package/pennyfarthing-dist/commands/parallel-work.md +4 -4
- package/pennyfarthing-dist/commands/pm.md +2 -2
- package/pennyfarthing-dist/commands/prime.md +7 -7
- package/pennyfarthing-dist/commands/release.md +1 -1
- package/pennyfarthing-dist/commands/repo-status.md +2 -2
- package/pennyfarthing-dist/commands/retro.md +2 -2
- package/pennyfarthing-dist/commands/reviewer.md +2 -2
- package/pennyfarthing-dist/commands/set-theme.md +5 -1
- package/pennyfarthing-dist/commands/sm.md +2 -2
- package/pennyfarthing-dist/commands/start-epic.md +26 -14
- package/pennyfarthing-dist/commands/sync-epic-to-jira.md +8 -8
- package/pennyfarthing-dist/commands/sync-work-with-sprint.md +1 -4
- package/pennyfarthing-dist/commands/tea.md +2 -2
- package/pennyfarthing-dist/commands/tech-writer.md +2 -2
- package/pennyfarthing-dist/commands/ux-designer.md +3 -3
- package/pennyfarthing-dist/commands/work.md +15 -4
- package/pennyfarthing-dist/commands/workflow.md +21 -0
- package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +15 -15
- package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +1 -1
- package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +4 -4
- package/pennyfarthing-dist/guides/agent-behavior.md +238 -0
- package/pennyfarthing-dist/guides/agent-template-strategic.md +2 -2
- package/pennyfarthing-dist/guides/agent-template-tactical.md +4 -4
- package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +1 -1
- package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +17 -17
- package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +8 -8
- package/pennyfarthing-dist/guides/workflow-schema.md +62 -0
- package/pennyfarthing-dist/guides/worktree-mode.md +5 -5
- package/pennyfarthing-dist/personas/themes/1984.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/a-team.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/all-stars.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/arcane.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/babylon-5.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/black-sails.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/bobiverse.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/catch-22.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/classical-composers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/control.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/deadwood.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/discworld.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/firefly.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/foundation.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/futurama.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +2 -2
- package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/historical-figures.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/house-md.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/jane-austen.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/justified.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/les-miserables.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/mad-men.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/mash.yaml +69 -66
- package/pennyfarthing-dist/personas/themes/mass-effect.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/military-commanders.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/moby-dick.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/monty-python.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/neuromancer.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/rome.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/russian-masters.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/sandman.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/shakespeare.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/snow-crash.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/superfriends.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-americans.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-crown.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-good-place.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-office.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-wire.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-witcher.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +1 -1
- package/pennyfarthing-dist/scripts/README.md +68 -0
- package/pennyfarthing-dist/scripts/core/README.md +26 -0
- package/pennyfarthing-dist/scripts/{agent-session.sh → core/agent-session.sh} +34 -23
- package/pennyfarthing-dist/scripts/{check-context.sh → core/check-context.sh} +93 -37
- package/pennyfarthing-dist/scripts/core/handoff-marker.sh +90 -0
- package/pennyfarthing-dist/scripts/core/prime.sh +136 -0
- package/pennyfarthing-dist/scripts/core/run.sh +75 -0
- package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +21 -0
- package/pennyfarthing-dist/scripts/git/README.md +25 -0
- package/pennyfarthing-dist/scripts/{utils → git}/create-feature-branches.sh +11 -15
- package/pennyfarthing-dist/scripts/{utils → git}/git-status-all.sh +1 -1
- package/pennyfarthing-dist/scripts/{install-git-hooks.sh → git/install-git-hooks.sh} +0 -0
- package/pennyfarthing-dist/scripts/{release.sh → git/release.sh} +0 -0
- package/pennyfarthing-dist/scripts/{worktree-manager.sh → git/worktree-manager.sh} +0 -4
- package/pennyfarthing-dist/scripts/hooks/README.md +32 -0
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +3 -4
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +1 -2
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +1 -1
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +2 -3
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +2 -3
- package/pennyfarthing-dist/scripts/jira/README.md +33 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +101 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +97 -0
- package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.mjs +327 -0
- package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.test.mjs +503 -0
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-claim-story.sh +8 -6
- package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-lib.mjs +10 -10
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-lib.sh +18 -17
- package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +266 -0
- package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-sync-story.mjs +14 -14
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-sync-story.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils/jira → jira}/jira-sync.mjs +4 -4
- package/pennyfarthing-dist/scripts/{utils → jira}/jira-sync.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +104 -0
- package/pennyfarthing-dist/scripts/{utils → jira}/sync-epic-to-jira.sh +1 -1
- package/pennyfarthing-dist/scripts/lib/README.md +29 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/background-tasks.sh +1 -1
- package/pennyfarthing-dist/scripts/{utils → lib}/checkpoint.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/common.sh +1 -1
- package/pennyfarthing-dist/scripts/{utils → lib}/file-lock.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/find-root.sh +7 -5
- package/pennyfarthing-dist/scripts/{utils → lib}/logging.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → lib}/retry.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/README.md +44 -0
- package/pennyfarthing-dist/scripts/{add-short-names.mjs → misc/add-short-names.mjs} +0 -0
- package/pennyfarthing-dist/scripts/misc/backlog.sh +91 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/check-status.sh +4 -8
- package/pennyfarthing-dist/scripts/{deploy.sh → misc/deploy.sh} +0 -0
- package/pennyfarthing-dist/scripts/{doctor-dogfood.sh → misc/doctor-dogfood.sh} +2 -5
- package/pennyfarthing-dist/scripts/{utils → misc}/find-related-work.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/generate-skill-docs.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/log-skill-usage.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.mjs +474 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +9 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/repo-scan.sh +0 -0
- package/pennyfarthing-dist/scripts/{repo-utils.sh → misc/repo-utils.sh} +2 -2
- package/pennyfarthing-dist/scripts/{run-ci.sh → misc/run-ci.sh} +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/run-timestamp.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/session-cleanup.sh +0 -0
- package/pennyfarthing-dist/scripts/{utils → misc}/skill-usage-report.sh +0 -0
- package/pennyfarthing-dist/scripts/{statusline.sh → misc/statusline.sh} +2 -7
- package/pennyfarthing-dist/scripts/{uninstall.sh → misc/uninstall.sh} +4 -5
- package/pennyfarthing-dist/scripts/{utils → misc}/validate-subagent-frontmatter.sh +3 -3
- package/pennyfarthing-dist/scripts/sprint/README.md +29 -0
- package/pennyfarthing-dist/scripts/sprint/archive-story.sh +135 -0
- package/pennyfarthing-dist/scripts/sprint/available-stories.sh +97 -0
- package/pennyfarthing-dist/scripts/sprint/check-story.sh +164 -0
- package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +58 -0
- package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +69 -0
- package/pennyfarthing-dist/scripts/sprint/list-future.sh +151 -0
- package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +116 -0
- package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +164 -0
- package/pennyfarthing-dist/scripts/{utils → sprint}/sprint-common.sh +135 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +39 -0
- package/pennyfarthing-dist/scripts/{utils → sprint}/sprint-metrics.sh +0 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +134 -0
- package/pennyfarthing-dist/scripts/story/README.md +23 -0
- package/pennyfarthing-dist/scripts/story/create-story.sh +159 -0
- package/pennyfarthing-dist/scripts/story/size-story.sh +198 -0
- package/pennyfarthing-dist/scripts/story/story-template.sh +162 -0
- package/pennyfarthing-dist/scripts/test/README.md +23 -0
- package/pennyfarthing-dist/scripts/{utils → test}/swebench-judge.py +0 -0
- package/pennyfarthing-dist/scripts/test/test-cache.sh +165 -0
- package/pennyfarthing-dist/scripts/{utils → test}/test-setup.sh +5 -5
- package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +515 -0
- package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +599 -0
- package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +332 -0
- package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +573 -0
- package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +859 -0
- package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +662 -0
- package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +589 -0
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +7 -9
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +18 -18
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +10 -10
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +1 -1
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +647 -0
- package/pennyfarthing-dist/scripts/theme/README.md +22 -0
- package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +203 -0
- package/pennyfarthing-dist/scripts/theme/list-themes.sh +73 -0
- package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +97 -0
- package/pennyfarthing-dist/scripts/workflow/README.md +28 -0
- package/pennyfarthing-dist/scripts/{check.sh → workflow/check.sh} +0 -0
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +159 -0
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +228 -0
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +91 -0
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +163 -0
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +138 -0
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +256 -0
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +167 -0
- package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +6 -0
- package/pennyfarthing-dist/skills/changelog/SKILL.md +2 -2
- package/pennyfarthing-dist/skills/code-review/SKILL.md +3 -3
- package/pennyfarthing-dist/skills/context-engineering/SKILL.md +6 -0
- package/pennyfarthing-dist/skills/cyclist/SKILL.md +56 -139
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +21 -5
- package/pennyfarthing-dist/skills/finalize-run/SKILL.md +1 -1
- package/pennyfarthing-dist/skills/jira/SKILL.md +381 -178
- package/pennyfarthing-dist/skills/judge/SKILL.md +76 -21
- package/pennyfarthing-dist/skills/just/SKILL.md +345 -102
- package/pennyfarthing-dist/skills/otel/skill.md +1 -0
- package/pennyfarthing-dist/skills/permissions/skill.md +1 -1
- package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +5 -0
- package/pennyfarthing-dist/skills/skill-registry.schema.json +5 -0
- package/pennyfarthing-dist/skills/skill-registry.yaml +22 -0
- package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +97 -0
- package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +116 -0
- package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +39 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +147 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +104 -0
- package/pennyfarthing-dist/skills/sprint/skill.md +465 -0
- package/pennyfarthing-dist/skills/story/scripts/create-story.sh +159 -0
- package/pennyfarthing-dist/skills/story/scripts/size-story.sh +198 -0
- package/pennyfarthing-dist/skills/story/scripts/story-template.sh +162 -0
- package/pennyfarthing-dist/skills/story/skill.md +219 -0
- package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +390 -0
- package/pennyfarthing-dist/skills/theme/skill.md +1 -1
- package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +91 -0
- package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +163 -0
- package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +138 -0
- package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +273 -0
- package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +167 -0
- package/pennyfarthing-dist/skills/workflow/skill.md +337 -0
- package/pennyfarthing-dist/templates/settings.local.json.template +1 -1
- package/pennyfarthing-dist/workflows/agent-docs.yaml +1 -1
- package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +101 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +93 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +115 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +133 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +138 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +133 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +142 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +160 -0
- package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +102 -0
- package/pennyfarthing-dist/workflows/architecture.yaml +65 -0
- package/pennyfarthing-dist/workflows/bdd.yaml +3 -1
- package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +62 -0
- package/pennyfarthing-dist/workflows/brainstorming/checklist.md +44 -0
- package/pennyfarthing-dist/workflows/brainstorming/instructions.md +736 -0
- package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +49 -0
- package/pennyfarthing-dist/workflows/code-review/checklist.md +23 -0
- package/pennyfarthing-dist/workflows/code-review/instructions.md +234 -0
- package/pennyfarthing-dist/workflows/code-review/workflow.yaml +51 -0
- package/pennyfarthing-dist/workflows/dev-story/checklist.md +80 -0
- package/pennyfarthing-dist/workflows/dev-story/instructions.xml +410 -0
- package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +256 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +145 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +57 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +133 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +4 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +40 -0
- package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +13 -0
- package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +197 -0
- package/pennyfarthing-dist/workflows/prd/data/project-types.csv +11 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +191 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +153 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +224 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +226 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +213 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +207 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +226 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +237 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +228 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +231 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +217 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +180 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +247 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +249 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +253 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +168 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +218 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
- package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +10 -0
- package/pennyfarthing-dist/workflows/prd/workflow.yaml +42 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +177 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +161 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +199 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +202 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +205 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +219 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +194 -0
- package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +10 -0
- package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +31 -0
- package/pennyfarthing-dist/workflows/project-context/project-context-template.md +21 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +184 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +318 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +278 -0
- package/pennyfarthing-dist/workflows/project-context/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +113 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +113 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +189 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +144 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +128 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +191 -0
- package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
- package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +137 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +229 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +238 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +206 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +234 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +443 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +182 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +237 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +200 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +249 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +259 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +177 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +475 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +137 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +239 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +248 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +202 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +239 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +486 -0
- package/pennyfarthing-dist/workflows/research/templates/research.template.md +29 -0
- package/pennyfarthing-dist/workflows/research/workflow.yaml +45 -0
- package/pennyfarthing-dist/workflows/retrospective/checklist.md +31 -0
- package/pennyfarthing-dist/workflows/retrospective/instructions.md +1443 -0
- package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +33 -0
- package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +55 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +54 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +44 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +64 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +73 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +56 -0
- package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +34 -0
- package/pennyfarthing-dist/workflows/trivial.yaml +1 -1
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +135 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +127 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +190 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +216 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +219 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +234 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +252 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +254 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +224 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +224 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +241 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +248 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +237 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +228 -0
- package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +13 -0
- package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +41 -0
- package/packages/core/dist/scripts/generate-all-faces.d.ts +0 -10
- package/packages/core/dist/scripts/generate-all-faces.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.js +0 -256
- package/packages/core/dist/scripts/generate-all-faces.js.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts +0 -17
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-all-faces.test.js +0 -372
- package/packages/core/dist/scripts/generate-all-faces.test.js.map +0 -1
- package/packages/core/dist/scripts/generate-ascii-face.d.ts +0 -52
- package/packages/core/dist/scripts/generate-ascii-face.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-ascii-face.js +0 -155
- package/packages/core/dist/scripts/generate-ascii-face.js.map +0 -1
- package/packages/core/dist/scripts/generate-face.d.ts +0 -52
- package/packages/core/dist/scripts/generate-face.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-face.js +0 -199
- package/packages/core/dist/scripts/generate-face.js.map +0 -1
- package/packages/core/dist/scripts/generate-face.test.d.ts +0 -13
- package/packages/core/dist/scripts/generate-face.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/generate-face.test.js +0 -301
- package/packages/core/dist/scripts/generate-face.test.js.map +0 -1
- package/pennyfarthing-dist/agents/generic-handoff.md +0 -454
- package/pennyfarthing-dist/agents/generic-sm-finish.md +0 -261
- package/pennyfarthing-dist/agents/generic-sm-setup.md +0 -214
- package/pennyfarthing-dist/commands/new-work.md +0 -127
- package/pennyfarthing-dist/guides/AGENT-SCOPES.md +0 -201
- package/pennyfarthing-dist/guides/persona-system.md +0 -294
- package/pennyfarthing-dist/guides/shared-agent-behavior.md +0 -388
- package/pennyfarthing-dist/guides/shared-context.md +0 -147
- package/pennyfarthing-dist/guides/strategic-agent-behavior.md +0 -348
- package/pennyfarthing-dist/guides/tactical-agent-behavior.md +0 -1041
- package/pennyfarthing-dist/scripts/prime.sh +0 -161
- package/pennyfarthing-dist/scripts/run.sh +0 -65
- package/pennyfarthing-dist/skills/sprint-context/SKILL.md +0 -120
- package/pennyfarthing-dist/skills/story-management/SKILL.md +0 -208
- package/pennyfarthing-dist/skills/workflow/SKILL.md +0 -160
- /package/pennyfarthing-dist/commands/{brainstorm.md → brainstorming.md} +0 -0
- /package/pennyfarthing-dist/scripts/{utils → test}/ground-truth-judge.py +0 -0
|
@@ -6,12 +6,8 @@ Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
|
6
6
|
**Fallback if not loaded:** User advocate, insists technology should help not hinder
|
|
7
7
|
</persona>
|
|
8
8
|
|
|
9
|
-
<status>experimental</status>
|
|
10
|
-
|
|
11
9
|
<role>
|
|
12
|
-
|
|
13
|
-
**Scope:** Wireframes, user flows, component design, accessibility review
|
|
14
|
-
**Blessed Path:** The TDD flow (SM → TEA → Dev → Reviewer) handles story implementation
|
|
10
|
+
UX design, wireframes, user flows, accessibility
|
|
15
11
|
</role>
|
|
16
12
|
|
|
17
13
|
<helpers>
|
|
@@ -49,6 +45,26 @@ Context auto-loaded by `/prime --agent ux-designer`:
|
|
|
49
45
|
- Also see: TailwindCSS, shadcn/ui, `UI/` (React 18)
|
|
50
46
|
</context>
|
|
51
47
|
|
|
48
|
+
<reasoning-mode>
|
|
49
|
+
|
|
50
|
+
**Default:** Quiet mode - follow ReAct pattern internally, show only key decisions
|
|
51
|
+
|
|
52
|
+
**Toggle:** User says "verbose mode" to see explicit reasoning
|
|
53
|
+
|
|
54
|
+
When verbose, I show my thought process:
|
|
55
|
+
```
|
|
56
|
+
THOUGHT: This feature needs a modal for confirmation. Let me consider the user's mental model...
|
|
57
|
+
ACTION: Reviewing existing modal patterns in the codebase
|
|
58
|
+
OBSERVATION: Current modals use shadcn/ui Dialog with consistent header/body/footer structure
|
|
59
|
+
REFLECT: I should design this modal to match existing patterns while adding clear confirmation CTA
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**UX-Designer-Specific Reasoning:**
|
|
63
|
+
- When designing: Think about user goals, mental models, and task flows
|
|
64
|
+
- When reviewing: Focus on consistency, accessibility, and cognitive load
|
|
65
|
+
- When making decisions: Consider existing patterns before introducing new ones
|
|
66
|
+
</reasoning-mode>
|
|
67
|
+
|
|
52
68
|
<on-activation>
|
|
53
69
|
1. Load sprint status from `sprint/current-sprint.yaml`
|
|
54
70
|
2. Check for active work in `.session/*-session.md`
|
|
@@ -57,6 +73,24 @@ Context auto-loaded by `/prime --agent ux-designer`:
|
|
|
57
73
|
5. Load additional docs lazily as needed
|
|
58
74
|
</on-activation>
|
|
59
75
|
|
|
76
|
+
## Workflow Participation
|
|
77
|
+
|
|
78
|
+
**UX Designer is invoked when:** UI/UX design work is needed before implementation
|
|
79
|
+
|
|
80
|
+
**Typical Flow:** PM/SM → **UX Designer** → Dev → Reviewer
|
|
81
|
+
|
|
82
|
+
| Phase | My Actions |
|
|
83
|
+
|-------|------------|
|
|
84
|
+
| **Design** | Create wireframes, user flows, component specs |
|
|
85
|
+
| **Review** | Verify implementation matches design intent |
|
|
86
|
+
|
|
87
|
+
**Design Deliverables Checklist:**
|
|
88
|
+
- [ ] User flow documented
|
|
89
|
+
- [ ] Wireframes/mockups created
|
|
90
|
+
- [ ] Component specs defined
|
|
91
|
+
- [ ] Accessibility requirements noted
|
|
92
|
+
- [ ] Interaction states documented
|
|
93
|
+
|
|
60
94
|
## Key Workflows
|
|
61
95
|
|
|
62
96
|
### 1. Feature Design
|
|
@@ -148,11 +182,50 @@ Context auto-loaded by `/prime --agent ux-designer`:
|
|
|
148
182
|
### To Dev
|
|
149
183
|
**When:** Design is complete
|
|
150
184
|
**Output:** Design specs and mockups
|
|
151
|
-
|
|
185
|
+
|
|
186
|
+
**Structured Handoff Protocol:**
|
|
187
|
+
```markdown
|
|
188
|
+
## Design Handoff: [Feature Name]
|
|
189
|
+
|
|
190
|
+
### Overview
|
|
191
|
+
[Brief description of what was designed and why]
|
|
192
|
+
|
|
193
|
+
### User Flow
|
|
194
|
+
[Mermaid diagram or text description of the flow]
|
|
195
|
+
|
|
196
|
+
### Components
|
|
197
|
+
| Component | Purpose | Location |
|
|
198
|
+
|-----------|---------|----------|
|
|
199
|
+
| [name] | [what it does] | [where it goes] |
|
|
200
|
+
|
|
201
|
+
### Design Specs
|
|
202
|
+
- **Layout:** [grid/flex structure]
|
|
203
|
+
- **Colors:** [from design system]
|
|
204
|
+
- **Typography:** [font sizes, weights]
|
|
205
|
+
- **Spacing:** [margins, padding]
|
|
206
|
+
|
|
207
|
+
### States & Interactions
|
|
208
|
+
- Default: [description]
|
|
209
|
+
- Hover: [description]
|
|
210
|
+
- Active: [description]
|
|
211
|
+
- Disabled: [description]
|
|
212
|
+
- Error: [description]
|
|
213
|
+
|
|
214
|
+
### Accessibility Requirements
|
|
215
|
+
- [ ] ARIA labels defined
|
|
216
|
+
- [ ] Keyboard navigation specified
|
|
217
|
+
- [ ] Color contrast verified (4.5:1 minimum)
|
|
218
|
+
- [ ] Focus indicators designed
|
|
219
|
+
|
|
220
|
+
### Notes for Dev
|
|
221
|
+
[Any implementation considerations, edge cases, or technical constraints]
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Handoff message:** "Dev, the design is ready for [feature]. See the design spec above."
|
|
152
225
|
</handoffs>
|
|
153
226
|
|
|
154
227
|
<exit>
|
|
155
228
|
To exit: "Exit UX Designer" or switch to another agent.
|
|
156
229
|
|
|
157
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
230
|
+
On exit, run: `./scripts/run.sh core/agent-session.sh stop`
|
|
158
231
|
</exit>
|
|
@@ -1,242 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflow-status-check
|
|
3
|
-
description:
|
|
4
|
-
tools: Bash, Read
|
|
3
|
+
description: Determine workflow state using sprint scripts
|
|
4
|
+
tools: Bash, Read
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
|
-
You are a workflow status check assistant. Scan the work state and report.
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
<info>
|
|
9
|
+
Universal entry point telling agents: what work exists, what phase, and whether to activate.
|
|
10
|
+
Uses `/sprint` skill scripts for deterministic output.
|
|
11
|
+
</info>
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
$CLAUDE_PROJECT_DIR (set by SessionStart hook)
|
|
13
|
-
|
|
14
|
-
## Turn Efficiency
|
|
15
|
-
|
|
16
|
-
See `shared-agent-behavior.md` → Turn Efficiency Protocol for core patterns.
|
|
17
|
-
|
|
18
|
-
## Step 1: Scan Session Files
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
# EFFICIENT: List and preview all session files in one command
|
|
22
|
-
ls -la .session/*-session.md 2>/dev/null && for f in .session/*-session.md; do [ -f "$f" ] && head -50 "$f"; done
|
|
23
|
-
```
|
|
13
|
+
---
|
|
24
14
|
|
|
25
|
-
|
|
26
|
-
- Story ID (from `## Story X-Y:` line)
|
|
27
|
-
- Title
|
|
28
|
-
- Phase (from `**Phase:**` line)
|
|
29
|
-
- Status (from `**Status:**` line)
|
|
30
|
-
- Repos (from `**Repos:**` line)
|
|
31
|
-
- Branch (from `**Branch:**` line)
|
|
32
|
-
- Jira key (from `**Jira:**` line)
|
|
33
|
-
- Started date (from `**Started:**` line)
|
|
34
|
-
- Workflow (from `**Workflow:**` line in Workflow Tracking section)
|
|
35
|
-
- Phase Started (from `**Phase Started:**` line - ISO 8601 timestamp)
|
|
15
|
+
## Execution
|
|
36
16
|
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
# Extract workflow name (defaults to "tdd" if not found for backward compatibility)
|
|
40
|
-
WORKFLOW=$(grep "^\*\*Workflow:\*\*" "$SESSION_FILE" | head -1 | sed 's/\*\*Workflow:\*\* //' | xargs)
|
|
41
|
-
[ -z "$WORKFLOW" ] && WORKFLOW="tdd"
|
|
17
|
+
Run the sprint status script and parse output:
|
|
42
18
|
|
|
43
|
-
# Extract phase started timestamp
|
|
44
|
-
PHASE_STARTED=$(grep "^\*\*Phase Started:\*\*" "$SESSION_FILE" | head -1 | sed 's/\*\*Phase Started:\*\* //' | xargs)
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
For worktree detection, check INSIDE the session file:
|
|
48
19
|
```bash
|
|
49
|
-
|
|
50
|
-
grep "^worktree:" "$SESSION_FILE"
|
|
51
|
-
# If found, also extract:
|
|
52
|
-
# - worktree: (the worktree name, e.g., wt-5-3a)
|
|
53
|
-
# - path: (the worktree path)
|
|
54
|
-
# - api_port: (the API port)
|
|
55
|
-
# - ui_port: (the UI port)
|
|
20
|
+
.pennyfarthing/scripts/core/run.sh sprint/sprint-status.sh
|
|
56
21
|
```
|
|
57
22
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
**Before proceeding with git status or state determination, verify epic context exists.**
|
|
23
|
+
Then check for active sessions:
|
|
61
24
|
|
|
62
25
|
```bash
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if [ -z "$EPIC_CONTEXTS" ]; then
|
|
67
|
-
echo "EPIC_CONTEXT_STATUS: MISSING"
|
|
68
|
-
echo "No epic context files found in .session/"
|
|
26
|
+
if ls .session/*-session.md 1>/dev/null 2>&1; then
|
|
27
|
+
for f in .session/*-session.md; do head -30 "$f"; done
|
|
69
28
|
else
|
|
70
|
-
|
|
71
|
-
# List found epic contexts
|
|
72
|
-
for ctx in $EPIC_CONTEXTS; do
|
|
73
|
-
EPIC_ID=$(basename "$ctx" | sed 's/context-epic-\(.*\).md/\1/')
|
|
74
|
-
EPIC_TITLE=$(grep "^# Epic" "$ctx" | head -1 | sed 's/# Epic [0-9]*: //')
|
|
75
|
-
echo " - Epic $EPIC_ID: $EPIC_TITLE"
|
|
76
|
-
done
|
|
29
|
+
echo "No active sessions"
|
|
77
30
|
fi
|
|
78
31
|
```
|
|
79
32
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
## Step 2: Check Git Status
|
|
83
|
-
|
|
84
|
-
Use `repo-scan.sh` for git status across all repos:
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
source $CLAUDE_PROJECT_DIR/scripts/utils/repo-scan.sh
|
|
88
|
-
scan_all_repos_status
|
|
89
|
-
# Returns one line per repo: repo|branch|uncommitted|ahead
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Step 2.5: Detect Drift (Merged but Not Closed)
|
|
93
|
-
|
|
94
|
-
**Check for drifted stories before state determination.** A story is "drifted" when its branch was merged but YAML or Jira still shows status other than `done`.
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
source $CLAUDE_PROJECT_DIR/pennyfarthing-dist/scripts/utils/sprint-common.sh
|
|
98
|
-
drifted=$(detect_drift)
|
|
99
|
-
|
|
100
|
-
if [ -n "$drifted" ]; then
|
|
101
|
-
echo "=== Drifted Stories Detected ==="
|
|
102
|
-
echo "The following stories have merged branches but are not marked 'done':"
|
|
103
|
-
echo "$drifted"
|
|
104
|
-
echo ""
|
|
105
|
-
echo "Each entry shows: story_id:yaml_status:jira_status"
|
|
106
|
-
fi
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
**Drift detection checks both:**
|
|
110
|
-
- **YAML drift**: Sprint YAML shows `in_progress` but branch is merged
|
|
111
|
-
- **Jira drift**: Jira shows status other than "Done" or "Closed" but branch is merged
|
|
112
|
-
|
|
113
|
-
**If drift found:**
|
|
114
|
-
1. Report drifted stories with their YAML and Jira status to the user
|
|
115
|
-
2. Offer auto-reconcile option (y/n) to update both YAML and Jira to done
|
|
116
|
-
3. If user accepts, call `reconcile_drift` for each story which:
|
|
117
|
-
- Updates YAML status to `done`
|
|
118
|
-
- Transitions Jira issue to "Done"
|
|
119
|
-
- Logs reconciliation to `.session/reconciliation.log`
|
|
120
|
-
|
|
121
|
-
**Auto-reconcile prompt:**
|
|
122
|
-
```
|
|
123
|
-
Would you like to auto-reconcile these drifted stories? (y/n)
|
|
124
|
-
This will update YAML status to 'done' and transition Jira to 'Done'.
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## Step 2.6: Check Jira Ownership for In-Progress Stories
|
|
128
|
-
|
|
129
|
-
**CRITICAL for multi-developer coordination.** For any story with `status: in_progress` in the YAML, verify WHO owns it in Jira.
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
# Get current user for comparison
|
|
133
|
-
CURRENT_USER=$(jira me 2>/dev/null || echo "unknown")
|
|
134
|
-
|
|
135
|
-
# For each in_progress story, extract Jira key and check assignment
|
|
136
|
-
# First, find in_progress stories and their Jira keys
|
|
137
|
-
grep -B10 "status: in_progress" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml | grep -E "(id:|jira:)" | paste - - | while read line; do
|
|
138
|
-
STORY_ID=$(echo "$line" | grep -oE 'id: "[^"]+"' | cut -d'"' -f2)
|
|
139
|
-
JIRA_KEY=$(echo "$line" | grep -oE 'MSSCI-[0-9]+')
|
|
140
|
-
|
|
141
|
-
if [ -n "$JIRA_KEY" ]; then
|
|
142
|
-
# Query Jira for assignment
|
|
143
|
-
JIRA_INFO=$(jira issue view "$JIRA_KEY" --raw 2>/dev/null | jq -r '{
|
|
144
|
-
assignee: (.fields.assignee.displayName // "Unassigned"),
|
|
145
|
-
status: .fields.status.name
|
|
146
|
-
}' 2>/dev/null)
|
|
147
|
-
|
|
148
|
-
ASSIGNEE=$(echo "$JIRA_INFO" | jq -r '.assignee')
|
|
149
|
-
echo "OWNERSHIP_CHECK: $STORY_ID | $JIRA_KEY | $ASSIGNEE"
|
|
150
|
-
fi
|
|
151
|
-
done
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
**Ownership Classification:**
|
|
155
|
-
- `Unassigned` → Available for current user to claim
|
|
156
|
-
- Current user's name → YOUR work, can continue
|
|
157
|
-
- Someone else's name → **COLLEAGUE'S WORK - DO NOT OFFER**
|
|
158
|
-
|
|
159
|
-
## Step 2.7: Check Background Tasks
|
|
160
|
-
|
|
161
|
-
**Detect any running background tasks in session files.**
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
source $CLAUDE_PROJECT_DIR/scripts/utils/background-tasks.sh
|
|
165
|
-
|
|
166
|
-
# Check each session file for active background tasks
|
|
167
|
-
for session_file in .session/*-session.md; do
|
|
168
|
-
[ -f "$session_file" ] || continue
|
|
169
|
-
|
|
170
|
-
if bg_task_check "$session_file"; then
|
|
171
|
-
STORY_ID=$(basename "$session_file" | sed 's/-session.md//')
|
|
172
|
-
echo "BACKGROUND_TASKS: $STORY_ID"
|
|
173
|
-
bg_task_list "$session_file"
|
|
174
|
-
fi
|
|
175
|
-
done
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
**If background tasks found:**
|
|
179
|
-
- Report which session has active background tasks
|
|
180
|
-
- Warn that results should be checked before proceeding
|
|
181
|
-
- Include in status output under "Background Tasks" section
|
|
182
|
-
|
|
183
|
-
**Background Task Status Values:**
|
|
184
|
-
- `running` - Task still executing, check with TaskOutput
|
|
185
|
-
- `completed` - Task finished, safe to cleanup
|
|
186
|
-
- `error` - Task failed, may need investigation
|
|
187
|
-
|
|
188
|
-
## Step 3: Determine Workflow State
|
|
189
|
-
|
|
190
|
-
**First, check the sprint YAML for ground truth:**
|
|
191
|
-
```bash
|
|
192
|
-
# What does the YAML actually say?
|
|
193
|
-
grep -E "status: (in_progress|backlog|done)" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml | sort | uniq -c
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
Apply these rules in order:
|
|
197
|
-
- **MISSING_EPIC_CONTEXT**: No epic context files AND no active session files
|
|
198
|
-
- **FINISH_STATE**: Session file has Phase=`approved` OR (Phase=`review` AND Status=`approved`)
|
|
199
|
-
- **NEW_WORK_STATE**: No *-session.md files AND no `status: in_progress` stories owned by current user in YAML
|
|
200
|
-
- **IN_PROGRESS_STATE**: Session file exists with active phase, OR YAML has `status: in_progress` stories owned by current user
|
|
201
|
-
- **COLLEAGUE_IN_PROGRESS**: YAML has `status: in_progress` but Jira shows assigned to someone else
|
|
202
|
-
|
|
203
|
-
**CRITICAL:** The sprint YAML `status:` field is the source of truth for story completion.
|
|
204
|
-
- `status: done` = story is DONE, do not report as in-progress
|
|
205
|
-
- `status: in_progress` = story is being worked - CHECK JIRA FOR OWNER
|
|
206
|
-
- `status: backlog` = story is available for new work
|
|
207
|
-
|
|
208
|
-
**CRITICAL:** Jira assignment is the source of truth for WHO owns in-progress work.
|
|
209
|
-
- If Jira shows assigned to someone other than current user, that story is OFF LIMITS
|
|
210
|
-
- Report colleague-owned stories in output but DO NOT offer them as resumable work
|
|
211
|
-
|
|
212
|
-
**Note:** MISSING_EPIC_CONTEXT takes precedence over NEW_WORK_STATE. User must run `/start-epic` before `/new-work`.
|
|
213
|
-
|
|
214
|
-
## Step 4: Check Readiness
|
|
215
|
-
|
|
216
|
-
For **FINISH_STATE** - check PRs using `repo-scan.sh`:
|
|
217
|
-
```bash
|
|
218
|
-
source $CLAUDE_PROJECT_DIR/scripts/utils/repo-scan.sh
|
|
219
|
-
check_repo_pr "REPO_NAME" "BRANCH_NAME"
|
|
220
|
-
# Returns PR URL or "none"
|
|
221
|
-
```
|
|
33
|
+
---
|
|
222
34
|
|
|
223
|
-
|
|
224
|
-
```bash
|
|
225
|
-
# Count stories by status in current sprint
|
|
226
|
-
echo "=== Sprint Story Status ==="
|
|
227
|
-
grep -E "^\s+status:" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml | sort | uniq -c
|
|
35
|
+
## State Determination
|
|
228
36
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
37
|
+
| State | Condition |
|
|
38
|
+
|-------|-----------|
|
|
39
|
+
| `FINISH_STATE` | Session exists with Phase=approved OR Status=approved |
|
|
40
|
+
| `IN_PROGRESS_STATE` | Session exists with active phase (tea/dev/review) |
|
|
41
|
+
| `NEW_WORK_STATE` | No sessions AND sprint has backlog/ready stories |
|
|
42
|
+
| `EMPTY_BACKLOG_STATE` | No sessions AND sprint has NO backlog/ready stories |
|
|
232
43
|
|
|
233
|
-
|
|
234
|
-
echo "=== Backlog Available ==="
|
|
235
|
-
grep -c "status: backlog" $CLAUDE_PROJECT_DIR/sprint/current-sprint.yaml 2>/dev/null || echo "0"
|
|
236
|
-
```
|
|
44
|
+
**Important:** Sprints are fixed two-week periods (kanban-style). Never suggest closing a sprint early or starting sprint planning when backlog is empty. The correct response to `EMPTY_BACKLOG_STATE` is to suggest promoting stories from `future.yaml`.
|
|
237
45
|
|
|
238
|
-
|
|
239
|
-
Stories with `status: done` are DONE - do not list them as in-progress even if they appear in sprint history.
|
|
46
|
+
---
|
|
240
47
|
|
|
241
48
|
## Output Format
|
|
242
49
|
|
|
@@ -244,89 +51,18 @@ Stories with `status: done` are DONE - do not list them as in-progress even if t
|
|
|
244
51
|
## Workflow Status Report
|
|
245
52
|
|
|
246
53
|
### Detected State
|
|
247
|
-
**{
|
|
248
|
-
|
|
249
|
-
*Note: If colleague work exists, state is still NEW_WORK_STATE (their work doesn't block you).*
|
|
250
|
-
|
|
251
|
-
### Epic Context Status
|
|
252
|
-
| Status | Epic ID | Title |
|
|
253
|
-
|--------|---------|-------|
|
|
254
|
-
| ✓ PRESENT | 1 | Agentic Best Practices Implementation |
|
|
255
|
-
|
|
256
|
-
*If MISSING:*
|
|
257
|
-
| Status | Action Required |
|
|
258
|
-
|--------|-----------------|
|
|
259
|
-
| ✗ MISSING | Run `/start-epic` to generate epic technical context |
|
|
260
|
-
|
|
261
|
-
### Active Work Sessions (Your Work)
|
|
262
|
-
| Story | Title | Workflow | Phase | Phase Started | Status | Repos |
|
|
263
|
-
|-------|-------|----------|-------|---------------|--------|-------|
|
|
264
|
-
| 32-8 | Threat Hunt Summary | tdd | tea | 2026-01-13T14:30:00Z | in-progress | both |
|
|
265
|
-
|
|
266
|
-
### Colleague Work (DO NOT OFFER)
|
|
267
|
-
| Story | Title | Jira | Assignee | Status |
|
|
268
|
-
|-------|-------|------|----------|--------|
|
|
269
|
-
| 7-2 | Job-Fair Role-Selective | MSSCI-11387 | Michael Pursifull | In Progress |
|
|
270
|
-
|
|
271
|
-
*Stories assigned to colleagues in Jira are excluded from work options.*
|
|
272
|
-
|
|
273
|
-
### Background Tasks
|
|
274
|
-
| Story | Task ID | Type | Started | Status |
|
|
275
|
-
|-------|---------|------|---------|--------|
|
|
276
|
-
| 31-14 | abc123 | testing-runner | 14:30 | running |
|
|
277
|
-
|
|
278
|
-
*If any tasks show "running", check results with TaskOutput before proceeding.*
|
|
279
|
-
|
|
280
|
-
### Git State
|
|
281
|
-
| Repo | Type | Branch | Uncommitted | Ahead of Origin |
|
|
282
|
-
|------|------|--------|-------------|-----------------|
|
|
283
|
-
| conductor-api | api | feat/32-8-hunt-summary | 0 files | 0 commits |
|
|
284
|
-
| conductor-ui | ui | feat/32-8-hunt-summary | 0 files | 0 commits |
|
|
54
|
+
**{STATE}**
|
|
285
55
|
|
|
286
|
-
|
|
56
|
+
### Sprint Summary
|
|
57
|
+
[Output from sprint-status.sh]
|
|
287
58
|
|
|
288
|
-
###
|
|
59
|
+
### Active Session
|
|
60
|
+
| Story | Phase | Status | Branch |
|
|
61
|
+
|-------|-------|--------|--------|
|
|
289
62
|
|
|
290
|
-
|
|
291
|
-
-
|
|
292
|
-
-
|
|
293
|
-
-
|
|
294
|
-
|
|
295
|
-
**For NEW_WORK:**
|
|
296
|
-
- Backlog Stories: {N} available
|
|
297
|
-
- Current Sprint: Sprint {N}
|
|
298
|
-
|
|
299
|
-
### Agent Guidance & Phase Flow
|
|
300
|
-
|
|
301
|
-
| Phase | Active Agent | Next → |
|
|
302
|
-
|-------|--------------|--------|
|
|
303
|
-
| MISSING_EPIC | - | Run `/start-epic` |
|
|
304
|
-
| (none)/complete | SM | → TEA |
|
|
305
|
-
| sm | TEA | → Dev |
|
|
306
|
-
| tea | Dev | → Reviewer |
|
|
307
|
-
| dev | Reviewer | → SM |
|
|
308
|
-
| review/approved | SM | Finish |
|
|
309
|
-
|
|
310
|
-
### Multi-Developer Coordination
|
|
311
|
-
|
|
312
|
-
| Scenario | Action |
|
|
313
|
-
|----------|--------|
|
|
314
|
-
| Story in YAML `in_progress` + Jira assigned to YOU | Your work - offer to continue |
|
|
315
|
-
| Story in YAML `in_progress` + Jira assigned to COLLEAGUE | Their work - DO NOT offer, show in "Colleague Work" |
|
|
316
|
-
| Story in YAML `in_progress` + Jira unassigned | Orphaned work - offer to claim or skip |
|
|
317
|
-
| Story in YAML `backlog` + Jira unassigned | Available - offer as new work option |
|
|
318
|
-
|
|
319
|
-
**For {CALLING_AGENT}:** {specific action based on phase and state}
|
|
63
|
+
### Recommended Action
|
|
64
|
+
- FINISH_STATE → Proceed to finish flow
|
|
65
|
+
- IN_PROGRESS_STATE → Report which agent should continue
|
|
66
|
+
- NEW_WORK_STATE → Show available stories
|
|
67
|
+
- EMPTY_BACKLOG_STATE → Suggest promoting stories from future.yaml
|
|
320
68
|
```
|
|
321
|
-
|
|
322
|
-
## Error Recovery
|
|
323
|
-
|
|
324
|
-
On failure: Log → Diagnose → Retry (max 2) → Escalate to calling agent
|
|
325
|
-
|
|
326
|
-
| Failure | Fix |
|
|
327
|
-
|---------|-----|
|
|
328
|
-
| Session unreadable | Report for manual inspection |
|
|
329
|
-
| Git command failed | Use absolute paths |
|
|
330
|
-
| gh CLI failed | User may need `gh auth` |
|
|
331
|
-
|
|
332
|
-
If partial failure, report what worked and mark unknowns. **Never silently fail.**
|
|
@@ -5,7 +5,7 @@ description: System Architect - Technical design and architecture
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/run.sh" agent-session.sh start "architect"
|
|
8
|
+
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "architect"
|
|
9
9
|
```
|
|
10
10
|
This finds the project root and loads your persona. Adopt the character shown in the output.
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ Then load and follow `.pennyfarthing/agents/architect.md`
|
|
|
13
13
|
</agent-activation>
|
|
14
14
|
|
|
15
15
|
<agent-exit>
|
|
16
|
-
On exit: Capture learnings to sidecar, run `agent-session.sh stop`
|
|
16
|
+
On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
|
|
17
17
|
</agent-exit>
|
|
18
18
|
|
|
19
19
|
<purpose>
|
|
@@ -67,15 +67,18 @@ Recalculate and update the summary section:
|
|
|
67
67
|
|
|
68
68
|
### Step 6: Jira Transition (Optional)
|
|
69
69
|
|
|
70
|
-
If epic has `jira_key
|
|
70
|
+
If epic has `jira_key`, use `/jira move` skill:
|
|
71
71
|
```bash
|
|
72
72
|
# Check if Jira CLI available
|
|
73
73
|
if command -v jira &> /dev/null; then
|
|
74
74
|
echo "Transition Jira epic to Done? (y/n)"
|
|
75
|
-
# If yes
|
|
75
|
+
# If yes, use /jira move skill:
|
|
76
|
+
# jira issue move $JIRA_KEY "Done" --project MSSCI
|
|
76
77
|
fi
|
|
77
78
|
```
|
|
78
79
|
|
|
80
|
+
**Note:** Always use `/jira` skill commands - see `.claude/skills/jira/skill.md` for syntax.
|
|
81
|
+
|
|
79
82
|
### Step 7: Archive Context (Optional)
|
|
80
83
|
|
|
81
84
|
If `.session/context-epic-{N}.md` exists:
|
|
@@ -100,16 +100,16 @@ Use this instead of Step 3 if you need to work on multiple stories simultaneousl
|
|
|
100
100
|
cd $CLAUDE_PROJECT_DIR
|
|
101
101
|
|
|
102
102
|
# Create worktree with branches (both API and UI)
|
|
103
|
-
./scripts/run.sh worktree-manager.sh create [story-id] feat/[story-id]-[description]
|
|
103
|
+
./scripts/run.sh git/worktree-manager.sh create [story-id] feat/[story-id]-[description]
|
|
104
104
|
|
|
105
105
|
# Example: Story 5-2
|
|
106
|
-
./scripts/run.sh worktree-manager.sh create 5-2 feat/5-2-csv-import
|
|
106
|
+
./scripts/run.sh git/worktree-manager.sh create 5-2 feat/5-2-csv-import
|
|
107
107
|
|
|
108
108
|
# For API-only work
|
|
109
|
-
./scripts/run.sh worktree-manager.sh create [story-id] feat/[story-id]-[description] api
|
|
109
|
+
./scripts/run.sh git/worktree-manager.sh create [story-id] feat/[story-id]-[description] api
|
|
110
110
|
|
|
111
111
|
# For UI-only work
|
|
112
|
-
./scripts/run.sh worktree-manager.sh create [story-id] feat/[story-id]-[description] ui
|
|
112
|
+
./scripts/run.sh git/worktree-manager.sh create [story-id] feat/[story-id]-[description] ui
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
This creates:
|
|
@@ -119,16 +119,7 @@ This creates:
|
|
|
119
119
|
|
|
120
120
|
**Skip to Step 5b** if using worktrees.
|
|
121
121
|
|
|
122
|
-
### 4.
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
cd $CLAUDE_PROJECT_DIR
|
|
126
|
-
|
|
127
|
-
# Start new work session
|
|
128
|
-
./scripts/run.sh new-work.sh
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
### 5. Document the Work
|
|
122
|
+
### 4. Document the Work
|
|
132
123
|
|
|
133
124
|
Edit `.session/{STORY_ID}-session.md`:
|
|
134
125
|
|
|
@@ -232,7 +223,7 @@ cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/API
|
|
|
232
223
|
cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/UI
|
|
233
224
|
|
|
234
225
|
# Get port configuration for dev servers
|
|
235
|
-
eval $(./scripts/run.sh worktree-manager.sh ports [story-id])
|
|
226
|
+
eval $(./scripts/run.sh git/worktree-manager.sh ports [story-id])
|
|
236
227
|
echo "API: $API_PORT, UI: $UI_PORT"
|
|
237
228
|
```
|
|
238
229
|
|
|
@@ -253,11 +244,7 @@ git checkout main && git pull
|
|
|
253
244
|
git checkout -b feature/AUTH-123-user-authentication
|
|
254
245
|
git push -u origin feature/AUTH-123-user-authentication
|
|
255
246
|
|
|
256
|
-
# 3.
|
|
257
|
-
cd ..
|
|
258
|
-
./scripts/run.sh new-work.sh
|
|
259
|
-
|
|
260
|
-
# 4. Edit session file
|
|
247
|
+
# 3. Edit session file
|
|
261
248
|
# Update .session/{STORY_ID}-session.md with story details
|
|
262
249
|
|
|
263
250
|
# 5. Start working
|
|
@@ -359,9 +346,6 @@ cd ../UI && git checkout main && git pull && \
|
|
|
359
346
|
git checkout -b feature/STORY-ID-description && \
|
|
360
347
|
git push -u origin feature/STORY-ID-description
|
|
361
348
|
|
|
362
|
-
# Create session
|
|
363
|
-
cd .. && ./scripts/run.sh new-work.sh
|
|
364
|
-
|
|
365
349
|
# Edit session
|
|
366
350
|
# Update .session/{STORY_ID}-session.md
|
|
367
351
|
|
|
@@ -5,7 +5,7 @@ description: Developer - Feature implementation and coding
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/run.sh" agent-session.sh start "dev"
|
|
8
|
+
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "dev"
|
|
9
9
|
```
|
|
10
10
|
This finds the project root and loads your persona. Adopt the character shown in the output.
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ Then load and follow `.pennyfarthing/agents/dev.md`
|
|
|
13
13
|
</agent-activation>
|
|
14
14
|
|
|
15
15
|
<agent-exit>
|
|
16
|
-
On exit: Capture learnings to sidecar, run `agent-session.sh stop`
|
|
16
|
+
On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
|
|
17
17
|
</agent-exit>
|
|
18
18
|
|
|
19
19
|
<purpose>
|
|
@@ -5,7 +5,7 @@ description: DevOps Engineer - Infrastructure and deployment automation
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/run.sh" agent-session.sh start "devops"
|
|
8
|
+
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "devops"
|
|
9
9
|
```
|
|
10
10
|
This finds the project root and loads your persona. Adopt the character shown in the output.
|
|
11
11
|
|
|
@@ -13,7 +13,7 @@ Then load and follow `.pennyfarthing/agents/devops.md`
|
|
|
13
13
|
</agent-activation>
|
|
14
14
|
|
|
15
15
|
<agent-exit>
|
|
16
|
-
On exit: Capture learnings to sidecar, run `agent-session.sh stop`
|
|
16
|
+
On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
|
|
17
17
|
</agent-exit>
|
|
18
18
|
|
|
19
19
|
<purpose>
|
|
@@ -55,5 +55,5 @@ Infrastructure and deployment automation specialist who maintains CI/CD pipeline
|
|
|
55
55
|
- **Agent:** `.pennyfarthing/agents/devops.md`
|
|
56
56
|
- **Sidecar:** `.claude/project/agents/devops-sidecar/`
|
|
57
57
|
- **Skills:** `/just`
|
|
58
|
-
- **Context:** `.pennyfarthing/guides/
|
|
58
|
+
- **Context:** `.pennyfarthing/guides/agent-behavior.md`, architecture documentation
|
|
59
59
|
</reference>
|
|
@@ -21,7 +21,7 @@ All changes MUST follow this workflow:
|
|
|
21
21
|
### 1. Gather Current State and Check for Unpushed Commits
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
./scripts/run.sh git-status-all.sh
|
|
24
|
+
./scripts/run.sh git/git-status-all.sh
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
This shows branch, changes, and unpushed commits for all repos.
|
|
@@ -51,7 +51,7 @@ fi
|
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
53
|
echo "=== Worktree Status ==="
|
|
54
|
-
./scripts/run.sh worktree-manager.sh status
|
|
54
|
+
./scripts/run.sh git/worktree-manager.sh status
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
This shows all active worktrees with their branches and uncommitted changes.
|
|
@@ -240,7 +240,7 @@ When running this command, Claude should:
|
|
|
240
240
|
|
|
241
241
|
```bash
|
|
242
242
|
# View what needs cleanup (all repos)
|
|
243
|
-
./scripts/run.sh git-status-all.sh
|
|
243
|
+
./scripts/run.sh git/git-status-all.sh
|
|
244
244
|
|
|
245
245
|
# Create cleanup branch
|
|
246
246
|
git checkout develop && git pull
|
|
@@ -278,7 +278,7 @@ Stale feature branches can accumulate over time. Include branch cleanup as part
|
|
|
278
278
|
```bash
|
|
279
279
|
echo "=== Branch Status ==="
|
|
280
280
|
|
|
281
|
-
./scripts/run.sh check-status.sh
|
|
281
|
+
./scripts/run.sh misc/check-status.sh
|
|
282
282
|
```
|
|
283
283
|
|
|
284
284
|
### Remove Merged Branches
|
|
@@ -322,7 +322,7 @@ done
|
|
|
322
322
|
|
|
323
323
|
```bash
|
|
324
324
|
echo "=== Final State ==="
|
|
325
|
-
./scripts/run.sh git-status-all.sh
|
|
325
|
+
./scripts/run.sh git/git-status-all.sh
|
|
326
326
|
echo ""
|
|
327
327
|
echo "=== Branches ==="
|
|
328
328
|
|