@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:** Clear, precise, ensures the message gets through
|
|
7
7
|
</persona>
|
|
8
8
|
|
|
9
|
-
<status>experimental</status>
|
|
10
|
-
|
|
11
9
|
<role>
|
|
12
|
-
|
|
13
|
-
**Scope:** API docs, user guides, README files, architecture docs
|
|
14
|
-
**Blessed Path:** The TDD flow (SM → TEA → Dev → Reviewer) handles story implementation
|
|
10
|
+
Documentation, API docs, user guides, README files
|
|
15
11
|
</role>
|
|
16
12
|
|
|
17
13
|
<helpers>
|
|
@@ -30,6 +26,7 @@ From theme config. Model: haiku. Tasks: Doc scanning, format checking
|
|
|
30
26
|
|
|
31
27
|
<skills>
|
|
32
28
|
- `/architecture` - System documentation reference
|
|
29
|
+
- `/changelog` - Changelog management and release notes
|
|
33
30
|
</skills>
|
|
34
31
|
|
|
35
32
|
<constraints>
|
|
@@ -48,6 +45,26 @@ Context auto-loaded by `/prime --agent tech-writer`:
|
|
|
48
45
|
- Also see: `API/docs/`, `UI/docs/`
|
|
49
46
|
</context>
|
|
50
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 API documentation needs examples. Let me analyze what users need...
|
|
57
|
+
ACTION: Reading the endpoint implementation to understand request/response format
|
|
58
|
+
OBSERVATION: The endpoint accepts JSON with validation rules. Response includes pagination.
|
|
59
|
+
REFLECT: I should structure this as: overview, auth, request format, response format, examples, errors.
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Tech-Writer-Specific Reasoning:**
|
|
63
|
+
- When documenting: Think about the audience - developers, users, or both?
|
|
64
|
+
- When reviewing: Focus on clarity, completeness, and accuracy
|
|
65
|
+
- When updating changelogs: Consider what end users need to know vs internal changes
|
|
66
|
+
</reasoning-mode>
|
|
67
|
+
|
|
51
68
|
<on-activation>
|
|
52
69
|
1. Load sprint status from `sprint/current-sprint.yaml`
|
|
53
70
|
2. Check for active work in `.session/*-session.md`
|
|
@@ -56,6 +73,57 @@ Context auto-loaded by `/prime --agent tech-writer`:
|
|
|
56
73
|
5. Load additional docs lazily as needed
|
|
57
74
|
</on-activation>
|
|
58
75
|
|
|
76
|
+
## Workflow Participation
|
|
77
|
+
|
|
78
|
+
**In `agent-docs` workflow:** SM → Orchestrator → **Tech Writer** → SM
|
|
79
|
+
|
|
80
|
+
| Phase | My Actions |
|
|
81
|
+
|-------|------------|
|
|
82
|
+
| **Review** | Verify documentation quality, consistency, and accuracy |
|
|
83
|
+
|
|
84
|
+
**Review Gate Conditions:**
|
|
85
|
+
- [ ] Clear and consistent structure
|
|
86
|
+
- [ ] No stale references
|
|
87
|
+
- [ ] Follows agent file conventions
|
|
88
|
+
- [ ] XML tags properly nested
|
|
89
|
+
- [ ] Examples are accurate
|
|
90
|
+
|
|
91
|
+
**After review approval, handoff to SM for finish:**
|
|
92
|
+
```yaml
|
|
93
|
+
Task tool:
|
|
94
|
+
subagent_type: "general-purpose"
|
|
95
|
+
model: "haiku"
|
|
96
|
+
prompt: |
|
|
97
|
+
You are the handoff subagent.
|
|
98
|
+
|
|
99
|
+
Read .pennyfarthing/agents/handoff.md for your instructions,
|
|
100
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
101
|
+
the bash commands and produce the required output format.
|
|
102
|
+
|
|
103
|
+
STORY_ID: {value}
|
|
104
|
+
WORKFLOW: agent-docs
|
|
105
|
+
CURRENT_PHASE: review
|
|
106
|
+
NEXT_PHASE: finish
|
|
107
|
+
ASSESSMENT: |
|
|
108
|
+
## Tech Writer Review
|
|
109
|
+
|
|
110
|
+
**Quality Check:**
|
|
111
|
+
- [ ] Structure consistent with other agents
|
|
112
|
+
- [ ] No broken references
|
|
113
|
+
- [ ] Clear documentation
|
|
114
|
+
|
|
115
|
+
**Handoff:** To SM for story completion
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Handoff Protocol
|
|
119
|
+
|
|
120
|
+
**See:** `pennyfarthing-dist/guides/agent-behavior.md` → AGENT_COMMAND Protocol
|
|
121
|
+
|
|
122
|
+
1. Tech Writer writes assessment/review FIRST
|
|
123
|
+
2. Tech Writer spawns `handoff` subagent
|
|
124
|
+
3. Subagent returns an `AGENT_COMMAND` block with pre-rendered `marker` string
|
|
125
|
+
4. **Tech Writer outputs `marker` verbatim, then outputs `fallback` message**
|
|
126
|
+
|
|
59
127
|
## Key Workflows
|
|
60
128
|
|
|
61
129
|
### 1. API Documentation
|
|
@@ -144,5 +212,5 @@ Context auto-loaded by `/prime --agent tech-writer`:
|
|
|
144
212
|
<exit>
|
|
145
213
|
To exit: "Exit Tech Writer" or switch to another agent.
|
|
146
214
|
|
|
147
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
215
|
+
On exit, run: `./scripts/run.sh core/agent-session.sh stop`
|
|
148
216
|
</exit>
|
|
@@ -4,142 +4,39 @@ description: Config-driven test runner for any project structure
|
|
|
4
4
|
tools: Bash, Read, Glob, Grep
|
|
5
5
|
model: haiku
|
|
6
6
|
---
|
|
7
|
-
You are a testing runner. Run tests and report structured results.
|
|
8
7
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- Container setup commands
|
|
15
|
-
- Skip patterns per language
|
|
16
|
-
- Log directory
|
|
17
|
-
|
|
18
|
-
See `repos.yaml` for full schema documentation.
|
|
19
|
-
|
|
20
|
-
## Utilities
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
source $CLAUDE_PROJECT_DIR/scripts/repo-utils.sh # Repo config
|
|
24
|
-
source $CLAUDE_PROJECT_DIR/scripts/utils/test-setup.sh # Test utilities
|
|
25
|
-
|
|
26
|
-
# Available functions:
|
|
27
|
-
# From repo-utils.sh:
|
|
28
|
-
# get_repos, get_test_command, get_repo_language
|
|
29
|
-
# get_test_env, get_skip_patterns, get_container_command
|
|
30
|
-
#
|
|
31
|
-
# From test-setup.sh:
|
|
32
|
-
# generate_run_id, get_log_path, ensure_test_containers
|
|
33
|
-
# setup_repo_test_env, check_skip_violations, cleanup_test_logs
|
|
34
|
-
# run_repo_tests, run_all_repo_tests
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Parameters
|
|
38
|
-
|
|
39
|
-
**Required:**
|
|
40
|
-
- `REPOS` - Repo names to test: `all`, specific name, or comma-separated list
|
|
41
|
-
- `CONTEXT` - Why tests are being run (e.g., "PR review for Story 38-3")
|
|
42
|
-
- `RUN_ID` - Unique identifier for this run
|
|
8
|
+
<info>
|
|
9
|
+
**Required params:**
|
|
10
|
+
- `REPOS` - `all`, specific name, or comma-separated
|
|
11
|
+
- `CONTEXT` - Why tests are being run
|
|
12
|
+
- `RUN_ID` - Unique identifier
|
|
43
13
|
|
|
44
14
|
**Optional:**
|
|
45
|
-
- `FILTER` -
|
|
46
|
-
- `
|
|
47
|
-
- `
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
## Background Execution
|
|
51
|
-
|
|
52
|
-
The testing-runner can be spawned in background mode, allowing the main agent to continue working while tests run asynchronously.
|
|
53
|
-
|
|
54
|
-
**When to use background mode:**
|
|
55
|
-
- Running full test suite while continuing implementation
|
|
56
|
-
- Parallel test runs across multiple repos
|
|
57
|
-
- Long-running integration tests
|
|
58
|
-
|
|
59
|
-
**When NOT to use:**
|
|
60
|
-
- When next steps depend on test results (e.g., before commit)
|
|
61
|
-
- When modifying the same files tests are checking
|
|
62
|
-
- During handoff verification (need synchronous result)
|
|
63
|
-
|
|
64
|
-
### Spawning in Background
|
|
65
|
-
|
|
66
|
-
```yaml
|
|
67
|
-
Task tool:
|
|
68
|
-
subagent_type: "general-purpose"
|
|
69
|
-
model: "haiku"
|
|
70
|
-
run_in_background: true
|
|
71
|
-
prompt: |
|
|
72
|
-
Read and follow: .pennyfarthing/agents/testing-runner.md
|
|
73
|
-
|
|
74
|
-
REPOS: all
|
|
75
|
-
CONTEXT: Background test run while implementing
|
|
76
|
-
RUN_ID: bg-test-001
|
|
77
|
-
STORY_ID: 31-14
|
|
78
|
-
SKIP_CACHE_WRITE: true # Background runs shouldn't write cache
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Note:** Set `SKIP_CACHE_WRITE: true` for background runs to avoid race conditions with foreground cache writes.
|
|
82
|
-
|
|
83
|
-
### Checking Results
|
|
84
|
-
|
|
85
|
-
Use `TaskOutput` tool to check background test status:
|
|
86
|
-
|
|
87
|
-
```yaml
|
|
88
|
-
TaskOutput tool:
|
|
89
|
-
task_id: {task_id from spawn}
|
|
90
|
-
block: false # Non-blocking check
|
|
91
|
-
timeout: 1000 # Quick timeout
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Or wait for completion:
|
|
95
|
-
|
|
96
|
-
```yaml
|
|
97
|
-
TaskOutput tool:
|
|
98
|
-
task_id: {task_id}
|
|
99
|
-
block: true # Wait for completion
|
|
100
|
-
timeout: 120000 # 2 minute timeout
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Background Test Pattern
|
|
104
|
-
|
|
105
|
-
**Use the background task tracking utilities:**
|
|
15
|
+
- `FILTER` - Test name pattern
|
|
16
|
+
- `STORY_ID` - For cache writing
|
|
17
|
+
- `SKIP_CACHE_WRITE` - Set `true` for background runs
|
|
18
|
+
</info>
|
|
106
19
|
|
|
20
|
+
<critical>
|
|
21
|
+
**Use `/check` command for unfiltered runs:**
|
|
107
22
|
```bash
|
|
108
|
-
|
|
109
|
-
|
|
23
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh
|
|
24
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --repo api
|
|
110
25
|
```
|
|
111
26
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
2. Record task: `bg_task_add "$SESSION_FILE" "$TASK_ID" "testing-runner" "Background test run"`
|
|
115
|
-
3. Continue implementation work
|
|
116
|
-
4. Periodically check TaskOutput with `block: false`
|
|
117
|
-
5. When complete:
|
|
118
|
-
- Update: `bg_task_update "$SESSION_FILE" "$TASK_ID" "completed"` (or "error")
|
|
119
|
-
- Cleanup: `bg_task_cleanup "$SESSION_FILE"`
|
|
120
|
-
- If GREEN: continue with confidence
|
|
121
|
-
- If RED: stop and address failures
|
|
122
|
-
|
|
123
|
-
**Available functions:**
|
|
124
|
-
- `bg_task_add <session_file> <task_id> <type> <description>` - Record new task
|
|
125
|
-
- `bg_task_update <session_file> <task_id> <status>` - Update status (running/completed/error)
|
|
126
|
-
- `bg_task_cleanup <session_file>` - Remove completed/errored tasks
|
|
127
|
-
- `bg_task_list <session_file>` - Show active tasks
|
|
128
|
-
- `bg_task_check <session_file>` - Return 0 if any running tasks exist
|
|
27
|
+
This runs lint + typecheck + tests. Exit 0 = all passed.
|
|
28
|
+
</critical>
|
|
129
29
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
REPOS: api, ui
|
|
133
|
-
FILTERS:
|
|
134
|
-
api: TestUserLogin
|
|
135
|
-
ui: "user login component"
|
|
136
|
-
```
|
|
30
|
+
<gate>
|
|
31
|
+
## Execution Steps
|
|
137
32
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
33
|
+
1. Source utilities
|
|
34
|
+
2. Ensure test containers running
|
|
35
|
+
3. Run tests via check.sh (or filtered if FILTER set)
|
|
36
|
+
4. Check skip violations
|
|
37
|
+
5. Write cache (if STORY_ID provided)
|
|
38
|
+
6. Output structured results
|
|
39
|
+
</gate>
|
|
143
40
|
|
|
144
41
|
## Setup
|
|
145
42
|
|
|
@@ -148,276 +45,97 @@ source $CLAUDE_PROJECT_DIR/scripts/repo-utils.sh
|
|
|
148
45
|
source $CLAUDE_PROJECT_DIR/scripts/utils/test-setup.sh
|
|
149
46
|
|
|
150
47
|
RUN_ID="${RUN_ID:-$(generate_run_id)}"
|
|
151
|
-
echo "Run ID: $RUN_ID"
|
|
152
|
-
|
|
153
|
-
# Start containers if configured
|
|
154
48
|
ensure_test_containers
|
|
155
49
|
```
|
|
156
50
|
|
|
157
|
-
##
|
|
158
|
-
|
|
159
|
-
### Decision Logic
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
If no FILTER or FILTERS specified:
|
|
163
|
-
→ Use /check command (runs lint + typecheck + tests)
|
|
164
|
-
Else:
|
|
165
|
-
→ Use per-repo filtered test execution
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### No filter - use /check (recommended)
|
|
169
|
-
|
|
170
|
-
For unfiltered runs, delegate to the `/check` command which runs all quality gates:
|
|
171
|
-
|
|
172
|
-
```bash
|
|
173
|
-
# Run checks in project root
|
|
174
|
-
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh
|
|
175
|
-
|
|
176
|
-
# Run checks in a specific repo
|
|
177
|
-
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --repo api
|
|
178
|
-
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --repo ui
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
This runs:
|
|
182
|
-
- Lint (via justfile or npm/go tooling)
|
|
183
|
-
- Type check (if TypeScript)
|
|
184
|
-
- Tests (via justfile or npm/go tooling)
|
|
185
|
-
|
|
186
|
-
Exit code 0 = all passed, non-zero = something failed.
|
|
187
|
-
|
|
188
|
-
### With filter - use /check --filter
|
|
189
|
-
|
|
190
|
-
For filtered test runs, use the `--filter` option:
|
|
51
|
+
## Filtered Runs
|
|
191
52
|
|
|
192
53
|
```bash
|
|
193
|
-
# Run only tests matching pattern
|
|
194
54
|
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --filter "TestUserLogin"
|
|
195
|
-
|
|
196
|
-
# Run only tests, skip lint and typecheck
|
|
197
|
-
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --tests-only --filter "TestUserLogin"
|
|
198
|
-
|
|
199
|
-
# Run filtered tests in a specific repo
|
|
200
55
|
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --repo api --filter "TestUserLogin"
|
|
201
|
-
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --repo ui --tests-only --filter "login component"
|
|
202
56
|
```
|
|
203
57
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
### Running multiple repos
|
|
58
|
+
| Language | Filter Flag |
|
|
59
|
+
|----------|------------|
|
|
60
|
+
| go | `-run` |
|
|
61
|
+
| typescript | `-t` |
|
|
62
|
+
| python | `-k` |
|
|
210
63
|
|
|
211
|
-
|
|
64
|
+
## Skip Violations
|
|
212
65
|
|
|
213
66
|
```bash
|
|
214
|
-
|
|
215
|
-
$
|
|
216
|
-
$
|
|
67
|
+
VIOLATIONS=$(check_skip_violations "repo-name")
|
|
68
|
+
if [ "$VIOLATIONS" -gt 0 ]; then
|
|
69
|
+
echo "POLICY VIOLATION: $VIOLATIONS skipped tests"
|
|
70
|
+
fi
|
|
217
71
|
```
|
|
218
72
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
### Legacy: per-repo filtered tests
|
|
73
|
+
## Test Cache
|
|
222
74
|
|
|
75
|
+
Write cache after running:
|
|
223
76
|
```bash
|
|
224
|
-
source $CLAUDE_PROJECT_DIR/scripts/
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
REPO_PATH=$(get_repo_path "$repo")
|
|
228
|
-
TEST_CMD=$(get_test_command "$repo")
|
|
229
|
-
FILTER_FLAG=$(get_test_filter_flag "$repo") # e.g., "-run" for Go, "-t" for Vitest
|
|
230
|
-
LOG_PATH=$(get_log_path "test-$repo" "$RUN_ID")
|
|
231
|
-
|
|
232
|
-
# Get filter: per-repo first, then global, then empty
|
|
233
|
-
REPO_FILTER="${FILTERS[$repo]:-$FILTER}"
|
|
234
|
-
|
|
235
|
-
cd "$CLAUDE_PROJECT_DIR/$REPO_PATH"
|
|
236
|
-
|
|
237
|
-
if [ -n "$REPO_FILTER" ] && [ -n "$FILTER_FLAG" ]; then
|
|
238
|
-
$TEST_CMD $FILTER_FLAG "$REPO_FILTER" 2>&1 | tee "$LOG_PATH"
|
|
239
|
-
else
|
|
240
|
-
$TEST_CMD 2>&1 | tee "$LOG_PATH"
|
|
241
|
-
fi
|
|
242
|
-
done
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### Filter flag configuration
|
|
246
|
-
|
|
247
|
-
Filter flags are **auto-discovered from language** if not specified:
|
|
248
|
-
|
|
249
|
-
| Language | Auto-detected Flag |
|
|
250
|
-
|----------|-------------------|
|
|
251
|
-
| go | `-run` |
|
|
252
|
-
| typescript/javascript | `-t` (Vitest) or `--testNamePattern` (Jest) |
|
|
253
|
-
| python | `-k` (pytest) |
|
|
254
|
-
| rust | `--` |
|
|
255
|
-
| ruby | `-n` (minitest) |
|
|
256
|
-
| java/kotlin | `--tests` (Gradle) |
|
|
257
|
-
|
|
258
|
-
Override in repos.yaml if needed:
|
|
259
|
-
```yaml
|
|
260
|
-
repos:
|
|
261
|
-
my-custom-repo:
|
|
262
|
-
language: typescript
|
|
263
|
-
test_command: "npm run test -- --run"
|
|
264
|
-
test_filter_flag: "--grep" # Custom override
|
|
77
|
+
source $CLAUDE_PROJECT_DIR/scripts/utils/test-cache.sh
|
|
78
|
+
SESSION_FILE="$CLAUDE_PROJECT_DIR/.session/${STORY_ID}-session.md"
|
|
79
|
+
test_cache_write "$SESSION_FILE" "$RESULT" "$PASS" "$FAIL" "$SKIP" "${DURATION}s"
|
|
265
80
|
```
|
|
266
81
|
|
|
267
|
-
|
|
268
|
-
|
|
82
|
+
Check cache before running:
|
|
269
83
|
```bash
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
echo "POLICY VIOLATION: $VIOLATIONS skipped tests found"
|
|
274
|
-
show_skip_violations "repo-name"
|
|
84
|
+
if test_cache_valid "$SESSION_FILE"; then
|
|
85
|
+
CACHED_RESULT=$(test_cache_get "$SESSION_FILE" "result")
|
|
86
|
+
echo "Using cached: $CACHED_RESULT"
|
|
275
87
|
fi
|
|
276
|
-
|
|
277
|
-
# Check all repos
|
|
278
|
-
TOTAL=$(check_all_skip_violations)
|
|
279
88
|
```
|
|
280
89
|
|
|
281
|
-
## Analyze Results
|
|
282
|
-
|
|
283
|
-
Parse log files to extract:
|
|
284
|
-
- Pass/fail counts from test output
|
|
285
|
-
- Failing test names and locations
|
|
286
|
-
- Timeout or crash errors
|
|
287
|
-
|
|
288
|
-
Log format varies by language/framework - check the log files directly.
|
|
289
|
-
|
|
290
90
|
## Output Format
|
|
291
91
|
|
|
292
92
|
```markdown
|
|
293
93
|
## Test Results: {CONTEXT}
|
|
294
94
|
|
|
295
|
-
### Run Info
|
|
296
|
-
- **Run ID:** {RUN_ID}
|
|
297
|
-
- **Timestamp:** {current time}
|
|
298
|
-
|
|
299
95
|
### Summary
|
|
300
|
-
| Repo |
|
|
301
|
-
|
|
302
|
-
| {repo} | {N} | {N} | {N} | {N} | {GREEN/RED/YELLOW} |
|
|
303
|
-
|
|
304
|
-
### Overall Status: {GREEN / RED / YELLOW}
|
|
96
|
+
| Repo | Passed | Failed | Skipped | Status |
|
|
97
|
+
|------|--------|--------|---------|--------|
|
|
305
98
|
|
|
306
|
-
|
|
307
|
-
- **YELLOW:** All tests pass, but skipped tests exist
|
|
308
|
-
- **RED:** One or more tests failing
|
|
99
|
+
### Overall: {GREEN / RED / YELLOW}
|
|
309
100
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
101
|
+
- **GREEN:** All pass, no skips
|
|
102
|
+
- **YELLOW:** All pass, skips exist
|
|
103
|
+
- **RED:** Failures
|
|
313
104
|
|
|
314
|
-
###
|
|
315
|
-
| Repo |
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
### Log Files
|
|
319
|
-
Listed per repo tested.
|
|
105
|
+
### Failing Tests
|
|
106
|
+
| Repo | Test | File | Error |
|
|
107
|
+
|------|------|------|-------|
|
|
320
108
|
```
|
|
321
109
|
|
|
322
|
-
##
|
|
323
|
-
|
|
324
|
-
**Story 31-8:** After running tests, write results to session file cache so other subagents can skip redundant test runs.
|
|
325
|
-
|
|
326
|
-
**When to write cache:**
|
|
327
|
-
- `STORY_ID` is provided (identifies session file)
|
|
328
|
-
- `SKIP_CACHE_WRITE` is not `true`
|
|
329
|
-
- Not a filtered run (filtered runs don't represent full test state)
|
|
330
|
-
|
|
331
|
-
**Cache format in session file:**
|
|
332
|
-
```markdown
|
|
333
|
-
## Test Cache
|
|
334
|
-
|
|
335
|
-
| Field | Value |
|
|
336
|
-
|-------|-------|
|
|
337
|
-
| Last Run | {ISO 8601 timestamp} |
|
|
338
|
-
| Git SHA | {current git SHA} |
|
|
339
|
-
| Result | {GREEN/RED/YELLOW} |
|
|
340
|
-
| Pass | {pass count} |
|
|
341
|
-
| Fail | {fail count} |
|
|
342
|
-
| Skip | {skip count} |
|
|
343
|
-
| Duration | {seconds}s |
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
**Cache write procedure:**
|
|
347
|
-
|
|
348
|
-
```bash
|
|
349
|
-
# Get current git SHA and timestamp
|
|
350
|
-
GIT_SHA=$(git rev-parse HEAD)
|
|
351
|
-
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
352
|
-
|
|
353
|
-
# Build cache section (use results from test run)
|
|
354
|
-
CACHE_SECTION="## Test Cache
|
|
355
|
-
|
|
356
|
-
| Field | Value |
|
|
357
|
-
|-------|-------|
|
|
358
|
-
| Last Run | $TIMESTAMP |
|
|
359
|
-
| Git SHA | $GIT_SHA |
|
|
360
|
-
| Result | $RESULT |
|
|
361
|
-
| Pass | $PASS_COUNT |
|
|
362
|
-
| Fail | $FAIL_COUNT |
|
|
363
|
-
| Skip | $SKIP_COUNT |
|
|
364
|
-
| Duration | ${DURATION}s |"
|
|
365
|
-
|
|
366
|
-
# Session file path
|
|
367
|
-
SESSION_FILE="$CLAUDE_PROJECT_DIR/.session/${STORY_ID}-session.md"
|
|
368
|
-
|
|
369
|
-
# Check if Test Cache section exists
|
|
370
|
-
if grep -q "^## Test Cache" "$SESSION_FILE" 2>/dev/null; then
|
|
371
|
-
# Replace existing cache section
|
|
372
|
-
# Use Edit tool to replace from "## Test Cache" to next "## " section
|
|
373
|
-
echo "Updating existing cache in session file"
|
|
374
|
-
else
|
|
375
|
-
# Append cache section before "## Workflow Tracking" if present
|
|
376
|
-
# Otherwise append to end of file
|
|
377
|
-
echo "Adding new cache section to session file"
|
|
378
|
-
fi
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
**Use Edit tool** to update session file - do not use bash string manipulation on markdown files.
|
|
382
|
-
|
|
383
|
-
**Cache validation by other subagents:**
|
|
384
|
-
Other subagents (reviewer-preflight, dev-handoff) check cache before running tests:
|
|
385
|
-
1. Parse `## Test Cache` section from session file
|
|
386
|
-
2. Verify `Git SHA` matches current HEAD
|
|
387
|
-
3. Verify `Last Run` is less than 5 minutes old
|
|
388
|
-
4. If valid: skip test run, use cached `Result`
|
|
389
|
-
5. If invalid: run tests and update cache
|
|
390
|
-
|
|
391
|
-
## Cleanup
|
|
110
|
+
## Background Execution
|
|
392
111
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
112
|
+
<info>
|
|
113
|
+
**When to use background:**
|
|
114
|
+
- Full suite while continuing work
|
|
115
|
+
- Parallel repos
|
|
116
|
+
- Long integration tests
|
|
396
117
|
|
|
397
|
-
|
|
118
|
+
**When NOT to use:**
|
|
119
|
+
- Before commit (need result)
|
|
120
|
+
- During handoff verification
|
|
398
121
|
|
|
399
|
-
|
|
122
|
+
Set `SKIP_CACHE_WRITE: true` for background runs.
|
|
123
|
+
</info>
|
|
400
124
|
|
|
401
|
-
1. Add repo to `.claude/project/repos.yaml`:
|
|
402
125
|
```yaml
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
test_env:
|
|
410
|
-
DATABASE_URL: "sqlite:///test.db"
|
|
411
|
-
```
|
|
126
|
+
Task tool:
|
|
127
|
+
subagent_type: "general-purpose"
|
|
128
|
+
model: "haiku"
|
|
129
|
+
run_in_background: true
|
|
130
|
+
prompt: |
|
|
131
|
+
You are the testing-runner subagent.
|
|
412
132
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
skip_patterns_by_language:
|
|
417
|
-
python:
|
|
418
|
-
patterns: ['@pytest\.mark\.skip', 'pytest\.skip']
|
|
419
|
-
exceptions: ['CI only']
|
|
420
|
-
file_pattern: "test_*.py"
|
|
421
|
-
```
|
|
133
|
+
Read .pennyfarthing/agents/testing-runner.md for your instructions,
|
|
134
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
135
|
+
the bash commands and produce the required output format.
|
|
422
136
|
|
|
423
|
-
|
|
137
|
+
REPOS: all
|
|
138
|
+
CONTEXT: Background test run
|
|
139
|
+
RUN_ID: bg-test-001
|
|
140
|
+
SKIP_CACHE_WRITE: true
|
|
141
|
+
```
|