@pennyfarthing/core 7.0.2 → 7.4.0
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/{packages/core/dist → dist}/cli/commands/cyclist.d.ts +2 -2
- package/{packages/core/dist → dist}/cli/commands/cyclist.d.ts.map +1 -1
- package/{packages/core/dist → dist}/cli/commands/cyclist.js +8 -9
- package/dist/cli/commands/cyclist.js.map +1 -0
- package/{packages/core/dist → dist}/cli/commands/cyclist.test.js +6 -4
- package/dist/cli/commands/cyclist.test.js.map +1 -0
- package/{packages/core/dist → dist}/cli/commands/update.d.ts.map +1 -1
- package/{packages/core/dist → dist}/cli/commands/update.js +9 -136
- package/dist/cli/commands/update.js.map +1 -0
- package/{packages/core/dist → dist}/cli/cyclist-migration.test.js +4 -3
- package/{packages/core/dist → dist}/cli/cyclist-migration.test.js.map +1 -1
- package/{packages/core/dist → dist}/cli/utils/constants.d.ts +7 -1
- package/dist/cli/utils/constants.d.ts.map +1 -0
- package/{packages/core/dist → dist}/cli/utils/constants.js +4 -2
- package/{packages/core/dist → dist}/cli/utils/constants.js.map +1 -1
- package/{packages/core/dist → dist}/cli/utils/themes.d.ts +1 -4
- package/{packages/core/dist → dist}/cli/utils/themes.d.ts.map +1 -1
- package/{packages/core/dist → dist}/cli/utils/themes.js +2 -22
- package/dist/cli/utils/themes.js.map +1 -0
- package/dist/cli/utils/themes.test.d.ts +12 -0
- package/{packages/core/dist → dist}/cli/utils/themes.test.js +16 -13
- package/dist/cli/utils/themes.test.js.map +1 -0
- package/{packages/core/dist → dist}/cli/workspace.test.js +5 -8
- package/{packages/core/dist → dist}/cli/workspace.test.js.map +1 -1
- package/{packages/core/dist → dist}/index.d.ts +1 -0
- package/{packages/core/dist → dist}/index.d.ts.map +1 -1
- package/{packages/core/dist → dist}/index.js +10 -0
- package/{packages/core/dist → dist}/index.js.map +1 -1
- package/dist/jira/jira-epic-creation.d.ts +109 -0
- package/dist/jira/jira-epic-creation.d.ts.map +1 -0
- package/dist/jira/jira-epic-creation.js +253 -0
- package/dist/jira/jira-epic-creation.js.map +1 -0
- package/dist/jira/jira-epic-creation.test.d.ts +16 -0
- package/dist/jira/jira-epic-creation.test.d.ts.map +1 -0
- package/dist/jira/jira-epic-creation.test.js +387 -0
- package/dist/jira/jira-epic-creation.test.js.map +1 -0
- package/dist/jira/jira-sprint-sync.d.ts +247 -0
- package/dist/jira/jira-sprint-sync.d.ts.map +1 -0
- package/dist/jira/jira-sprint-sync.js +670 -0
- package/dist/jira/jira-sprint-sync.js.map +1 -0
- package/dist/jira/jira-sprint-sync.test.d.ts +16 -0
- package/dist/jira/jira-sprint-sync.test.d.ts.map +1 -0
- package/dist/jira/jira-sprint-sync.test.js +845 -0
- package/dist/jira/jira-sprint-sync.test.js.map +1 -0
- package/{packages/core/dist → dist}/scripts/generate-spider.d.ts +11 -1
- package/{packages/core/dist → dist}/scripts/generate-spider.d.ts.map +1 -1
- package/{packages/core/dist → dist}/scripts/generate-spider.js +24 -1
- package/dist/scripts/generate-spider.js.map +1 -0
- package/{packages/core/dist → dist}/scripts/generate-spider.test.js +6 -4
- package/dist/scripts/generate-spider.test.js.map +1 -0
- package/dist/workflow/gate-handler.d.ts +94 -0
- package/dist/workflow/gate-handler.d.ts.map +1 -0
- package/dist/workflow/gate-handler.js +189 -0
- package/dist/workflow/gate-handler.js.map +1 -0
- package/dist/workflow/gate-handler.test.d.ts +14 -0
- package/dist/workflow/gate-handler.test.d.ts.map +1 -0
- package/dist/workflow/gate-handler.test.js +543 -0
- package/dist/workflow/gate-handler.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/generic-handoff.d.ts +46 -0
- package/{packages/core/dist → dist}/workflow/generic-handoff.d.ts.map +1 -1
- package/{packages/core/dist → dist}/workflow/generic-handoff.js +53 -0
- package/{packages/core/dist → dist}/workflow/generic-handoff.js.map +1 -1
- package/{packages/core/dist → dist}/workflow/generic-handoff.test.js +2 -2
- package/{packages/core/dist → dist}/workflow/generic-handoff.test.js.map +1 -1
- package/dist/workflow/index.d.ts +16 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +24 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/session-state.d.ts +92 -0
- package/dist/workflow/session-state.d.ts.map +1 -0
- package/dist/workflow/session-state.js +198 -0
- package/dist/workflow/session-state.js.map +1 -0
- package/dist/workflow/session-state.test.d.ts +8 -0
- package/dist/workflow/session-state.test.d.ts.map +1 -0
- package/dist/workflow/session-state.test.js +551 -0
- package/dist/workflow/session-state.test.js.map +1 -0
- package/dist/workflow/step-parser.d.ts +45 -0
- package/dist/workflow/step-parser.d.ts.map +1 -0
- package/dist/workflow/step-parser.js +147 -0
- package/dist/workflow/step-parser.js.map +1 -0
- package/dist/workflow/step-parser.test.d.ts +14 -0
- package/dist/workflow/step-parser.test.d.ts.map +1 -0
- package/dist/workflow/step-parser.test.js +470 -0
- package/dist/workflow/step-parser.test.js.map +1 -0
- package/dist/workflow/trimodal.d.ts +86 -0
- package/dist/workflow/trimodal.d.ts.map +1 -0
- package/dist/workflow/trimodal.js +118 -0
- package/dist/workflow/trimodal.js.map +1 -0
- package/dist/workflow/trimodal.test.d.ts +11 -0
- package/dist/workflow/trimodal.test.d.ts.map +1 -0
- package/dist/workflow/trimodal.test.js +395 -0
- package/dist/workflow/trimodal.test.js.map +1 -0
- package/dist/workflow/variable-resolver.d.ts +67 -0
- package/dist/workflow/variable-resolver.d.ts.map +1 -0
- package/dist/workflow/variable-resolver.js +156 -0
- package/dist/workflow/variable-resolver.js.map +1 -0
- package/dist/workflow/variable-resolver.test.d.ts +14 -0
- package/dist/workflow/variable-resolver.test.d.ts.map +1 -0
- package/dist/workflow/variable-resolver.test.js +400 -0
- package/dist/workflow/variable-resolver.test.js.map +1 -0
- package/dist/workflow/workflow-executor.d.ts +163 -0
- package/dist/workflow/workflow-executor.d.ts.map +1 -0
- package/dist/workflow/workflow-executor.js +197 -0
- package/dist/workflow/workflow-executor.js.map +1 -0
- package/dist/workflow/workflow-executor.test.d.ts +8 -0
- package/dist/workflow/workflow-executor.test.d.ts.map +1 -0
- package/dist/workflow/workflow-executor.test.js +444 -0
- package/dist/workflow/workflow-executor.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-loader.test.js +5 -5
- package/dist/workflow/workflow-loader.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-migration.test.js +8 -9
- package/{packages/core/dist → dist}/workflow/workflow-migration.test.js.map +1 -1
- package/dist/workflow/workflow-permissions.d.ts +55 -0
- package/dist/workflow/workflow-permissions.d.ts.map +1 -0
- package/dist/workflow/workflow-permissions.js +64 -0
- package/dist/workflow/workflow-permissions.js.map +1 -0
- package/dist/workflow/workflow-permissions.test.d.ts +15 -0
- package/dist/workflow/workflow-permissions.test.d.ts.map +1 -0
- package/dist/workflow/workflow-permissions.test.js +301 -0
- package/dist/workflow/workflow-permissions.test.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-schema.d.ts +61 -2
- package/dist/workflow/workflow-schema.d.ts.map +1 -0
- package/dist/workflow/workflow-schema.js +454 -0
- package/dist/workflow/workflow-schema.js.map +1 -0
- package/{packages/core/dist → dist}/workflow/workflow-schema.test.js +6 -6
- package/{packages/core/dist → dist}/workflow/workflow-schema.test.js.map +1 -1
- package/dist/workflow/workflow-stepped-schema.test.d.ts +18 -0
- package/dist/workflow/workflow-stepped-schema.test.d.ts.map +1 -0
- package/dist/workflow/workflow-stepped-schema.test.js +608 -0
- package/dist/workflow/workflow-stepped-schema.test.js.map +1 -0
- package/package.json +38 -32
- package/README.md +0 -301
- package/packages/core/dist/cli/commands/cyclist.js.map +0 -1
- package/packages/core/dist/cli/commands/cyclist.test.js.map +0 -1
- package/packages/core/dist/cli/commands/update.js.map +0 -1
- package/packages/core/dist/cli/utils/constants.d.ts.map +0 -1
- package/packages/core/dist/cli/utils/themes.js.map +0 -1
- package/packages/core/dist/cli/utils/themes.test.d.ts +0 -12
- package/packages/core/dist/cli/utils/themes.test.js.map +0 -1
- 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/packages/core/dist/scripts/generate-spider.js.map +0 -1
- package/packages/core/dist/scripts/generate-spider.test.js.map +0 -1
- package/packages/core/dist/workflow/workflow-loader.test.js.map +0 -1
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +0 -1
- package/packages/core/dist/workflow/workflow-schema.js +0 -230
- package/packages/core/dist/workflow/workflow-schema.js.map +0 -1
- package/pennyfarthing-dist/agents/README.md +0 -411
- package/pennyfarthing-dist/agents/architect.md +0 -185
- package/pennyfarthing-dist/agents/dev.md +0 -239
- package/pennyfarthing-dist/agents/devops.md +0 -197
- 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/agents/orchestrator.md +0 -333
- package/pennyfarthing-dist/agents/pm.md +0 -164
- package/pennyfarthing-dist/agents/reviewer-preflight.md +0 -182
- package/pennyfarthing-dist/agents/reviewer.md +0 -335
- package/pennyfarthing-dist/agents/sm-file-summary.md +0 -109
- package/pennyfarthing-dist/agents/sm-handoff.md +0 -97
- package/pennyfarthing-dist/agents/sm.md +0 -509
- package/pennyfarthing-dist/agents/tea.md +0 -205
- package/pennyfarthing-dist/agents/tech-writer.md +0 -148
- package/pennyfarthing-dist/agents/testing-runner.md +0 -423
- package/pennyfarthing-dist/agents/ux-designer.md +0 -158
- package/pennyfarthing-dist/agents/workflow-status-check.md +0 -332
- package/pennyfarthing-dist/commands/architect.md +0 -62
- package/pennyfarthing-dist/commands/benchmark-control.md +0 -69
- package/pennyfarthing-dist/commands/benchmark.md +0 -467
- package/pennyfarthing-dist/commands/brainstorm.md +0 -91
- package/pennyfarthing-dist/commands/check.md +0 -156
- package/pennyfarthing-dist/commands/chore.md +0 -178
- package/pennyfarthing-dist/commands/close-epic.md +0 -136
- package/pennyfarthing-dist/commands/continue-session.md +0 -184
- package/pennyfarthing-dist/commands/create-branches-from-story.md +0 -374
- package/pennyfarthing-dist/commands/create-theme.md +0 -29
- package/pennyfarthing-dist/commands/dev.md +0 -60
- package/pennyfarthing-dist/commands/devops.md +0 -59
- package/pennyfarthing-dist/commands/git-cleanup.md +0 -340
- package/pennyfarthing-dist/commands/health-check.md +0 -108
- package/pennyfarthing-dist/commands/help.md +0 -264
- package/pennyfarthing-dist/commands/job-fair.md +0 -102
- package/pennyfarthing-dist/commands/list-themes.md +0 -17
- package/pennyfarthing-dist/commands/new-work.md +0 -127
- package/pennyfarthing-dist/commands/orchestrator.md +0 -56
- package/pennyfarthing-dist/commands/parallel-work.md +0 -71
- package/pennyfarthing-dist/commands/party-mode.md +0 -67
- package/pennyfarthing-dist/commands/permissions.md +0 -193
- package/pennyfarthing-dist/commands/pm.md +0 -60
- package/pennyfarthing-dist/commands/prime.md +0 -140
- package/pennyfarthing-dist/commands/release.md +0 -58
- package/pennyfarthing-dist/commands/repo-status.md +0 -49
- package/pennyfarthing-dist/commands/retro.md +0 -200
- package/pennyfarthing-dist/commands/reviewer.md +0 -64
- package/pennyfarthing-dist/commands/run-ci.md +0 -116
- package/pennyfarthing-dist/commands/set-theme.md +0 -52
- package/pennyfarthing-dist/commands/show-theme.md +0 -21
- package/pennyfarthing-dist/commands/sm.md +0 -70
- package/pennyfarthing-dist/commands/solo.md +0 -411
- package/pennyfarthing-dist/commands/sprint-planning.md +0 -109
- package/pennyfarthing-dist/commands/start-epic.md +0 -156
- package/pennyfarthing-dist/commands/sync-epic-to-jira.md +0 -184
- package/pennyfarthing-dist/commands/sync-work-with-sprint.md +0 -376
- package/pennyfarthing-dist/commands/tea.md +0 -63
- package/pennyfarthing-dist/commands/tech-writer.md +0 -53
- package/pennyfarthing-dist/commands/theme-maker.md +0 -671
- package/pennyfarthing-dist/commands/update-domain-docs.md +0 -83
- package/pennyfarthing-dist/commands/ux-designer.md +0 -62
- package/pennyfarthing-dist/commands/work.md +0 -111
- package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +0 -480
- package/pennyfarthing-dist/guides/AGENT-SCOPES.md +0 -201
- package/pennyfarthing-dist/guides/HOOKS.md +0 -230
- package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +0 -338
- package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +0 -193
- package/pennyfarthing-dist/guides/agent-template-strategic.md +0 -148
- package/pennyfarthing-dist/guides/agent-template-tactical.md +0 -162
- package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +0 -746
- package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +0 -574
- package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +0 -488
- package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +0 -402
- package/pennyfarthing-dist/guides/permission-protocol.md +0 -188
- package/pennyfarthing-dist/guides/persona-loading.md +0 -46
- 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/guides/workflow-schema.md +0 -195
- package/pennyfarthing-dist/guides/worktree-mode.md +0 -113
- package/pennyfarthing-dist/output-styles/teaching.md +0 -33
- package/pennyfarthing-dist/output-styles/terse.md +0 -20
- package/pennyfarthing-dist/output-styles/verbose.md +0 -28
- package/pennyfarthing-dist/personas/themes/1984.yaml +0 -312
- package/pennyfarthing-dist/personas/themes/a-team.yaml +0 -207
- package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/all-stars.yaml +0 -332
- package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +0 -306
- package/pennyfarthing-dist/personas/themes/arcane.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +0 -331
- package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/babylon-5.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/black-sails.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +0 -295
- package/pennyfarthing-dist/personas/themes/bobiverse.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +0 -327
- package/pennyfarthing-dist/personas/themes/catch-22.yaml +0 -316
- package/pennyfarthing-dist/personas/themes/classical-composers.yaml +0 -310
- package/pennyfarthing-dist/personas/themes/control.yaml +0 -197
- package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +0 -323
- package/pennyfarthing-dist/personas/themes/deadwood.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/dickens.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/discworld.yaml +0 -332
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +0 -290
- package/pennyfarthing-dist/personas/themes/don-quixote.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/dune.yaml +0 -307
- package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/fargo.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/film-auteurs.yaml +0 -312
- package/pennyfarthing-dist/personas/themes/firefly.yaml +0 -328
- package/pennyfarthing-dist/personas/themes/foundation.yaml +0 -290
- package/pennyfarthing-dist/personas/themes/futurama.yaml +0 -321
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +0 -290
- package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +0 -243
- package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +0 -308
- package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +0 -308
- package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/hannibal.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +0 -324
- package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +0 -291
- package/pennyfarthing-dist/personas/themes/historical-figures.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +0 -331
- package/pennyfarthing-dist/personas/themes/house-md.yaml +0 -321
- package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/jane-austen.yaml +0 -287
- package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/justified.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +0 -219
- package/pennyfarthing-dist/personas/themes/les-miserables.yaml +0 -299
- package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +0 -334
- package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +0 -334
- package/pennyfarthing-dist/personas/themes/mad-max.yaml +0 -355
- package/pennyfarthing-dist/personas/themes/mad-men.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/mash.yaml +0 -334
- package/pennyfarthing-dist/personas/themes/mass-effect.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/military-commanders.yaml +0 -306
- package/pennyfarthing-dist/personas/themes/moby-dick.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/monty-python.yaml +0 -303
- package/pennyfarthing-dist/personas/themes/neuromancer.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +0 -329
- package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +0 -242
- package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +0 -298
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +0 -220
- package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/rome.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/russian-masters.yaml +0 -318
- package/pennyfarthing-dist/personas/themes/sandman.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/shakespeare.yaml +0 -301
- package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +0 -289
- package/pennyfarthing-dist/personas/themes/snow-crash.yaml +0 -288
- package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -230
- package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +0 -210
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +0 -303
- package/pennyfarthing-dist/personas/themes/succession.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/superfriends.yaml +0 -208
- package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +0 -236
- package/pennyfarthing-dist/personas/themes/the-americans.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-crown.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +0 -213
- package/pennyfarthing-dist/personas/themes/the-good-place.yaml +0 -322
- package/pennyfarthing-dist/personas/themes/the-matrix.yaml +0 -353
- package/pennyfarthing-dist/personas/themes/the-odyssey.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-office.yaml +0 -330
- package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +0 -308
- package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/the-wire.yaml +0 -311
- package/pennyfarthing-dist/personas/themes/the-witcher.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/twin-peaks.yaml +0 -302
- package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +0 -300
- package/pennyfarthing-dist/personas/themes/watchmen.yaml +0 -291
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +0 -291
- package/pennyfarthing-dist/personas/themes/world-explorers.yaml +0 -320
- package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +0 -307
- package/pennyfarthing-dist/personas/themes/x-files.yaml +0 -302
- package/pennyfarthing-dist/scripts/add-short-names.mjs +0 -264
- package/pennyfarthing-dist/scripts/agent-session.sh +0 -367
- package/pennyfarthing-dist/scripts/check-context.sh +0 -187
- package/pennyfarthing-dist/scripts/check.sh +0 -497
- package/pennyfarthing-dist/scripts/deploy.sh +0 -284
- package/pennyfarthing-dist/scripts/doctor-dogfood.sh +0 -395
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -61
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -66
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -35
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -166
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -50
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -71
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -54
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -98
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -59
- package/pennyfarthing-dist/scripts/install-git-hooks.sh +0 -91
- package/pennyfarthing-dist/scripts/prime.sh +0 -161
- package/pennyfarthing-dist/scripts/release.sh +0 -198
- package/pennyfarthing-dist/scripts/repo-utils.sh +0 -778
- package/pennyfarthing-dist/scripts/run-ci.sh +0 -219
- package/pennyfarthing-dist/scripts/run.sh +0 -65
- package/pennyfarthing-dist/scripts/statusline.sh +0 -264
- package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -582
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -107
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -597
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -514
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -517
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -331
- package/pennyfarthing-dist/scripts/uninstall.sh +0 -271
- package/pennyfarthing-dist/scripts/utils/background-tasks.sh +0 -177
- package/pennyfarthing-dist/scripts/utils/check-status.sh +0 -251
- package/pennyfarthing-dist/scripts/utils/checkpoint.sh +0 -136
- package/pennyfarthing-dist/scripts/utils/common.sh +0 -157
- package/pennyfarthing-dist/scripts/utils/create-feature-branches.sh +0 -230
- package/pennyfarthing-dist/scripts/utils/file-lock.sh +0 -269
- package/pennyfarthing-dist/scripts/utils/find-related-work.sh +0 -231
- package/pennyfarthing-dist/scripts/utils/find-root.sh +0 -33
- package/pennyfarthing-dist/scripts/utils/generate-skill-docs.sh +0 -110
- package/pennyfarthing-dist/scripts/utils/git-status-all.sh +0 -127
- package/pennyfarthing-dist/scripts/utils/ground-truth-judge.py +0 -289
- package/pennyfarthing-dist/scripts/utils/jira/jira-lib.mjs +0 -443
- package/pennyfarthing-dist/scripts/utils/jira/jira-sync-story.mjs +0 -208
- package/pennyfarthing-dist/scripts/utils/jira/jira-sync.mjs +0 -198
- package/pennyfarthing-dist/scripts/utils/jira-claim-story.sh +0 -162
- package/pennyfarthing-dist/scripts/utils/jira-lib.sh +0 -463
- package/pennyfarthing-dist/scripts/utils/jira-sync-story.sh +0 -8
- package/pennyfarthing-dist/scripts/utils/jira-sync.sh +0 -8
- package/pennyfarthing-dist/scripts/utils/log-skill-usage.sh +0 -74
- package/pennyfarthing-dist/scripts/utils/logging.sh +0 -186
- package/pennyfarthing-dist/scripts/utils/repo-scan.sh +0 -141
- package/pennyfarthing-dist/scripts/utils/retry.sh +0 -76
- package/pennyfarthing-dist/scripts/utils/run-timestamp.sh +0 -7
- package/pennyfarthing-dist/scripts/utils/session-cleanup.sh +0 -319
- package/pennyfarthing-dist/scripts/utils/skill-usage-report.sh +0 -193
- package/pennyfarthing-dist/scripts/utils/sprint-common.sh +0 -286
- package/pennyfarthing-dist/scripts/utils/sprint-metrics.sh +0 -241
- package/pennyfarthing-dist/scripts/utils/swebench-judge.py +0 -400
- package/pennyfarthing-dist/scripts/utils/sync-epic-to-jira.sh +0 -16
- package/pennyfarthing-dist/scripts/utils/test-setup.sh +0 -337
- package/pennyfarthing-dist/scripts/utils/validate-subagent-frontmatter.sh +0 -160
- package/pennyfarthing-dist/scripts/worktree-manager.sh +0 -498
- package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +0 -236
- package/pennyfarthing-dist/skills/changelog/SKILL.md +0 -367
- package/pennyfarthing-dist/skills/code-review/SKILL.md +0 -168
- package/pennyfarthing-dist/skills/context-engineering/SKILL.md +0 -268
- package/pennyfarthing-dist/skills/cyclist/SKILL.md +0 -171
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -421
- package/pennyfarthing-dist/skills/finalize-run/SKILL.md +0 -258
- package/pennyfarthing-dist/skills/jira/SKILL.md +0 -281
- package/pennyfarthing-dist/skills/judge/SKILL.md +0 -524
- package/pennyfarthing-dist/skills/just/SKILL.md +0 -160
- package/pennyfarthing-dist/skills/mermaid/SKILL.md +0 -240
- package/pennyfarthing-dist/skills/otel/skill.md +0 -222
- package/pennyfarthing-dist/skills/permissions/skill.md +0 -172
- package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +0 -173
- package/pennyfarthing-dist/skills/skill-registry.schema.json +0 -102
- package/pennyfarthing-dist/skills/skill-registry.yaml +0 -335
- package/pennyfarthing-dist/skills/sprint-context/SKILL.md +0 -120
- package/pennyfarthing-dist/skills/story-management/SKILL.md +0 -208
- package/pennyfarthing-dist/skills/testing/SKILL.md +0 -99
- package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +0 -124
- package/pennyfarthing-dist/skills/theme/skill.md +0 -129
- package/pennyfarthing-dist/skills/theme-creation/SKILL.md +0 -169
- package/pennyfarthing-dist/skills/workflow/SKILL.md +0 -160
- package/pennyfarthing-dist/skills/yq/SKILL.md +0 -264
- package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +0 -187
- package/pennyfarthing-dist/templates/LEADERBOARD.template.md +0 -59
- package/pennyfarthing-dist/templates/agent-scopes.yaml.template +0 -276
- package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +0 -61
- package/pennyfarthing-dist/templates/persona-config.yaml.template +0 -22
- package/pennyfarthing-dist/templates/preferences.yaml.template +0 -15
- package/pennyfarthing-dist/templates/settings.local.json.template +0 -90
- package/pennyfarthing-dist/templates/setup-env.sh.template +0 -18
- package/pennyfarthing-dist/templates/shared-context.md.template +0 -70
- package/pennyfarthing-dist/templates/sidecar/decisions.md.template +0 -40
- package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +0 -37
- package/pennyfarthing-dist/templates/sidecar/patterns.md.template +0 -34
- package/pennyfarthing-dist/workflows/agent-docs.yaml +0 -70
- package/pennyfarthing-dist/workflows/bdd.yaml +0 -58
- package/pennyfarthing-dist/workflows/tdd.yaml +0 -50
- package/pennyfarthing-dist/workflows/trivial.yaml +0 -40
- /package/{packages/core/bin → bin}/pennyfarthing.js +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.js +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/context-reader.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.js +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/epics-parser.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/index.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/index.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/index.js +0 -0
- /package/{packages/core/dist → dist}/bmad/index.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.js +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/status-sync.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-exporter.test.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.js.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.js +0 -0
- /package/{packages/core/dist → dist}/bmad/story-parser.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/command.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/cyclist.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/doctor.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/init.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/skill.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/theme.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/uninstall.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/update.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.js +0 -0
- /package/{packages/core/dist → dist}/cli/commands/version.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.js +0 -0
- /package/{packages/core/dist → dist}/cli/customization.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/cyclist-migration.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/index.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/index.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/index.js +0 -0
- /package/{packages/core/dist → dist}/cli/index.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js +0 -0
- /package/{packages/core/dist → dist}/cli/ocean-profiles.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.js +0 -0
- /package/{packages/core/dist → dist}/cli/theme-maker.test.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/files.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/logger.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/manifest.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/node-modules.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/prompts.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/symlinks.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/themes.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.js +0 -0
- /package/{packages/core/dist → dist}/cli/utils/version.js.map +0 -0
- /package/{packages/core/dist → dist}/cli/workspace.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/cli/workspace.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/index.d.ts +0 -0
- /package/{packages/core/dist → dist}/permissions/index.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/index.js +0 -0
- /package/{packages/core/dist → dist}/permissions/index.js.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.js +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.js.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.js +0 -0
- /package/{packages/core/dist → dist}/permissions/permission-schema.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js +0 -0
- /package/{packages/core/dist → dist}/scripts/add-ocean-profiles.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.js +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/benchmark-integration.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/debugging-scenarios.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-all-spiders.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-report.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider-report.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/generate-spider.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/job-fair-aggregator.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/run-ci.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.js +0 -0
- /package/{packages/core/dist → dist}/scripts/theme-detail.test.js.map +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js +0 -0
- /package/{packages/core/dist → dist}/scripts/validate-ocean-profiles.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-handoff.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-handoff.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-finish.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js +0 -0
- /package/{packages/core/dist → dist}/workflow/generic-sm-setup.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/sm-subagents.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/story-workflow-routing.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.js +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/test-cache.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.js +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-loader.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-migration.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.js +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.d.ts.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.js +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-router.test.js.map +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts +0 -0
- /package/{packages/core/dist → dist}/workflow/workflow-schema.test.d.ts.map +0 -0
|
@@ -1,423 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: testing-runner
|
|
3
|
-
description: Config-driven test runner for any project structure
|
|
4
|
-
tools: Bash, Read, Glob, Grep
|
|
5
|
-
model: haiku
|
|
6
|
-
---
|
|
7
|
-
You are a testing runner. Run tests and report structured results.
|
|
8
|
-
|
|
9
|
-
## Configuration
|
|
10
|
-
|
|
11
|
-
All test configuration is read from `.claude/project/repos.yaml`:
|
|
12
|
-
- Test commands per repo
|
|
13
|
-
- Environment variables per repo
|
|
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
|
|
43
|
-
|
|
44
|
-
**Optional:**
|
|
45
|
-
- `FILTER` - Global filter applied to all repos (if no per-repo filter)
|
|
46
|
-
- `FILTERS` - Per-repo filters (YAML map format)
|
|
47
|
-
- `STORY_ID` - Story ID for cache writing (if set, writes cache to session file)
|
|
48
|
-
- `SKIP_CACHE_WRITE` - Set to `true` to skip writing cache (for filtered runs)
|
|
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:**
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
source $CLAUDE_PROJECT_DIR/scripts/utils/background-tasks.sh
|
|
109
|
-
SESSION_FILE="$CLAUDE_PROJECT_DIR/.session/${STORY_ID}-session.md"
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
**Pattern:**
|
|
113
|
-
1. Spawn testing-runner with `run_in_background: true`
|
|
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
|
|
129
|
-
|
|
130
|
-
Example with per-repo filters:
|
|
131
|
-
```yaml
|
|
132
|
-
REPOS: api, ui
|
|
133
|
-
FILTERS:
|
|
134
|
-
api: TestUserLogin
|
|
135
|
-
ui: "user login component"
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
## Project Info
|
|
139
|
-
- Project root: $CLAUDE_PROJECT_DIR
|
|
140
|
-
- Repos to test: {REPOS}
|
|
141
|
-
- Context: {CONTEXT}
|
|
142
|
-
- Run ID: {RUN_ID}
|
|
143
|
-
|
|
144
|
-
## Setup
|
|
145
|
-
|
|
146
|
-
```bash
|
|
147
|
-
source $CLAUDE_PROJECT_DIR/scripts/repo-utils.sh
|
|
148
|
-
source $CLAUDE_PROJECT_DIR/scripts/utils/test-setup.sh
|
|
149
|
-
|
|
150
|
-
RUN_ID="${RUN_ID:-$(generate_run_id)}"
|
|
151
|
-
echo "Run ID: $RUN_ID"
|
|
152
|
-
|
|
153
|
-
# Start containers if configured
|
|
154
|
-
ensure_test_containers
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
## Execute Tests
|
|
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:
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
# Run only tests matching pattern
|
|
194
|
-
$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
|
-
$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
|
-
```
|
|
203
|
-
|
|
204
|
-
The filter is passed to the underlying test runner:
|
|
205
|
-
- Go: `-run "PATTERN"`
|
|
206
|
-
- Node (jest/vitest): `-t "PATTERN"`
|
|
207
|
-
- justfile: `just test PATTERN`
|
|
208
|
-
|
|
209
|
-
### Running multiple repos
|
|
210
|
-
|
|
211
|
-
To run checks across multiple repos, call check.sh multiple times:
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
# Run all checks in both repos
|
|
215
|
-
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --repo api
|
|
216
|
-
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/check.sh --repo ui
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
Or use the legacy per-repo approach below for complex filtering scenarios.
|
|
220
|
-
|
|
221
|
-
### Legacy: per-repo filtered tests
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
source $CLAUDE_PROJECT_DIR/scripts/repo-utils.sh
|
|
225
|
-
|
|
226
|
-
for repo in $(get_repos "$REPOS"); do
|
|
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
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
## Check Skip Violations
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
# Check specific repo
|
|
271
|
-
VIOLATIONS=$(check_skip_violations "repo-name")
|
|
272
|
-
if [ "$VIOLATIONS" -gt 0 ]; then
|
|
273
|
-
echo "POLICY VIOLATION: $VIOLATIONS skipped tests found"
|
|
274
|
-
show_skip_violations "repo-name"
|
|
275
|
-
fi
|
|
276
|
-
|
|
277
|
-
# Check all repos
|
|
278
|
-
TOTAL=$(check_all_skip_violations)
|
|
279
|
-
```
|
|
280
|
-
|
|
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
|
-
## Output Format
|
|
291
|
-
|
|
292
|
-
```markdown
|
|
293
|
-
## Test Results: {CONTEXT}
|
|
294
|
-
|
|
295
|
-
### Run Info
|
|
296
|
-
- **Run ID:** {RUN_ID}
|
|
297
|
-
- **Timestamp:** {current time}
|
|
298
|
-
|
|
299
|
-
### Summary
|
|
300
|
-
| Repo | Total | Passed | Failed | Skipped | Status |
|
|
301
|
-
|------|-------|--------|--------|---------|--------|
|
|
302
|
-
| {repo} | {N} | {N} | {N} | {N} | {GREEN/RED/YELLOW} |
|
|
303
|
-
|
|
304
|
-
### Overall Status: {GREEN / RED / YELLOW}
|
|
305
|
-
|
|
306
|
-
- **GREEN:** All tests pass, no skipped tests
|
|
307
|
-
- **YELLOW:** All tests pass, but skipped tests exist
|
|
308
|
-
- **RED:** One or more tests failing
|
|
309
|
-
|
|
310
|
-
### Failing Tests (if any)
|
|
311
|
-
| Repo | Test Name | File | Error Summary |
|
|
312
|
-
|------|-----------|------|---------------|
|
|
313
|
-
|
|
314
|
-
### Skip Violations (if any)
|
|
315
|
-
| Repo | Count | Action |
|
|
316
|
-
|------|-------|--------|
|
|
317
|
-
|
|
318
|
-
### Log Files
|
|
319
|
-
Listed per repo tested.
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
## Write Test Cache to Session File
|
|
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
|
|
392
|
-
|
|
393
|
-
```bash
|
|
394
|
-
cleanup_test_logs
|
|
395
|
-
```
|
|
396
|
-
|
|
397
|
-
## Adding New Project Types
|
|
398
|
-
|
|
399
|
-
To add support for a new project:
|
|
400
|
-
|
|
401
|
-
1. Add repo to `.claude/project/repos.yaml`:
|
|
402
|
-
```yaml
|
|
403
|
-
repos:
|
|
404
|
-
my-new-repo:
|
|
405
|
-
path: my-new-repo
|
|
406
|
-
type: service
|
|
407
|
-
language: python
|
|
408
|
-
test_command: "pytest"
|
|
409
|
-
test_env:
|
|
410
|
-
DATABASE_URL: "sqlite:///test.db"
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
2. Add skip patterns for the language (if not already defined):
|
|
414
|
-
```yaml
|
|
415
|
-
testing:
|
|
416
|
-
skip_patterns_by_language:
|
|
417
|
-
python:
|
|
418
|
-
patterns: ['@pytest\.mark\.skip', 'pytest\.skip']
|
|
419
|
-
exceptions: ['CI only']
|
|
420
|
-
file_pattern: "test_*.py"
|
|
421
|
-
```
|
|
422
|
-
|
|
423
|
-
No code changes required - everything is config-driven.
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
# UX Designer Agent - UX Designer
|
|
2
|
-
|
|
3
|
-
<persona>
|
|
4
|
-
Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
5
|
-
|
|
6
|
-
**Fallback if not loaded:** User advocate, insists technology should help not hinder
|
|
7
|
-
</persona>
|
|
8
|
-
|
|
9
|
-
<status>experimental</status>
|
|
10
|
-
|
|
11
|
-
<role>
|
|
12
|
-
**Primary:** User experience design and UI patterns outside the TDD flow
|
|
13
|
-
**Scope:** Wireframes, user flows, component design, accessibility review
|
|
14
|
-
**Blessed Path:** The TDD flow (SM → TEA → Dev → Reviewer) handles story implementation
|
|
15
|
-
</role>
|
|
16
|
-
|
|
17
|
-
<helpers>
|
|
18
|
-
From theme config. Model: haiku. Tasks: UI scanning, pattern analysis
|
|
19
|
-
</helpers>
|
|
20
|
-
|
|
21
|
-
<responsibilities>
|
|
22
|
-
- UI/UX design and wireframes
|
|
23
|
-
- User flow design
|
|
24
|
-
- Design system maintenance
|
|
25
|
-
- Component design
|
|
26
|
-
- Accessibility (a11y) compliance
|
|
27
|
-
- User research and feedback
|
|
28
|
-
- Visual design and branding
|
|
29
|
-
</responsibilities>
|
|
30
|
-
|
|
31
|
-
<skills>
|
|
32
|
-
- `/dev-patterns` - UI implementation patterns
|
|
33
|
-
</skills>
|
|
34
|
-
|
|
35
|
-
<constraints>
|
|
36
|
-
**The UX Designer does NOT write code.** Limited to:
|
|
37
|
-
- Reading and analyzing existing UI code to understand current patterns
|
|
38
|
-
- Creating design specifications and documentation
|
|
39
|
-
- Designing wireframes, user flows, and component specs
|
|
40
|
-
- Reviewing UI for consistency and accessibility issues
|
|
41
|
-
|
|
42
|
-
**Handoff to Dev for all code changes.**
|
|
43
|
-
</constraints>
|
|
44
|
-
|
|
45
|
-
<context>
|
|
46
|
-
Context auto-loaded by `/prime --agent ux-designer`:
|
|
47
|
-
- Shared context, shared behavior
|
|
48
|
-
- Agent sidecar: `.pennyfarthing/sidecars/ux-designer/`
|
|
49
|
-
- Also see: TailwindCSS, shadcn/ui, `UI/` (React 18)
|
|
50
|
-
</context>
|
|
51
|
-
|
|
52
|
-
<on-activation>
|
|
53
|
-
1. Load sprint status from `sprint/current-sprint.yaml`
|
|
54
|
-
2. Check for active work in `.session/*-session.md`
|
|
55
|
-
3. Review feature requirements and user needs
|
|
56
|
-
4. Assess design needs (wireframes, flows, components)
|
|
57
|
-
5. Load additional docs lazily as needed
|
|
58
|
-
</on-activation>
|
|
59
|
-
|
|
60
|
-
## Key Workflows
|
|
61
|
-
|
|
62
|
-
### 1. Feature Design
|
|
63
|
-
|
|
64
|
-
**Input:** User story with requirements
|
|
65
|
-
**Output:** UI design with specifications
|
|
66
|
-
|
|
67
|
-
**Steps:**
|
|
68
|
-
1. Understand user needs and goals
|
|
69
|
-
2. Sketch user flows
|
|
70
|
-
3. Create wireframes
|
|
71
|
-
4. Design high-fidelity mockups
|
|
72
|
-
5. Define component specs
|
|
73
|
-
6. Document interactions and states
|
|
74
|
-
7. Hand off to Dev
|
|
75
|
-
|
|
76
|
-
### 2. Component Design
|
|
77
|
-
|
|
78
|
-
**Input:** Need for new UI component
|
|
79
|
-
**Output:** Component design and specs
|
|
80
|
-
|
|
81
|
-
**Design Specs:**
|
|
82
|
-
```markdown
|
|
83
|
-
## Component Name
|
|
84
|
-
|
|
85
|
-
### Purpose
|
|
86
|
-
[What it does]
|
|
87
|
-
|
|
88
|
-
### Variants
|
|
89
|
-
- Default
|
|
90
|
-
- Active
|
|
91
|
-
- Disabled
|
|
92
|
-
- Error
|
|
93
|
-
|
|
94
|
-
### Props
|
|
95
|
-
- prop1: type - description
|
|
96
|
-
- prop2: type - description
|
|
97
|
-
|
|
98
|
-
### Accessibility
|
|
99
|
-
- ARIA labels
|
|
100
|
-
- Keyboard navigation
|
|
101
|
-
- Screen reader support
|
|
102
|
-
|
|
103
|
-
### Examples
|
|
104
|
-
[Visual examples or code]
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### 3. User Flow Design
|
|
108
|
-
|
|
109
|
-
**Input:** Feature or workflow
|
|
110
|
-
**Output:** User flow diagram
|
|
111
|
-
|
|
112
|
-
**Format:**
|
|
113
|
-
```
|
|
114
|
-
[Entry Point] → [Action 1] → [Decision] → [Action 2] → [Outcome]
|
|
115
|
-
↓
|
|
116
|
-
[Alt Path]
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
## Design Principles
|
|
120
|
-
|
|
121
|
-
### 1. User-Centered
|
|
122
|
-
- Design for SOC analysts and administrators
|
|
123
|
-
- Prioritize efficiency and clarity
|
|
124
|
-
- Minimize cognitive load
|
|
125
|
-
|
|
126
|
-
### 2. Consistent
|
|
127
|
-
- Follow design system
|
|
128
|
-
- Use established patterns
|
|
129
|
-
- Maintain visual consistency
|
|
130
|
-
|
|
131
|
-
### 3. Accessible
|
|
132
|
-
- WCAG 2.1 AA compliance
|
|
133
|
-
- Keyboard navigation
|
|
134
|
-
- Screen reader support
|
|
135
|
-
- Color contrast
|
|
136
|
-
|
|
137
|
-
### 4. Responsive
|
|
138
|
-
- Mobile-first approach
|
|
139
|
-
- Tablet and desktop layouts
|
|
140
|
-
- Flexible components
|
|
141
|
-
|
|
142
|
-
<handoffs>
|
|
143
|
-
### From PM/SM
|
|
144
|
-
**When:** Feature needs UI design
|
|
145
|
-
**Input:** User story and requirements
|
|
146
|
-
**Action:** Design user interface
|
|
147
|
-
|
|
148
|
-
### To Dev
|
|
149
|
-
**When:** Design is complete
|
|
150
|
-
**Output:** Design specs and mockups
|
|
151
|
-
**Handoff:** "Dev, here's the UI design for [feature]"
|
|
152
|
-
</handoffs>
|
|
153
|
-
|
|
154
|
-
<exit>
|
|
155
|
-
To exit: "Exit UX Designer" or switch to another agent.
|
|
156
|
-
|
|
157
|
-
On exit, run: `./scripts/run.sh agent-session.sh stop`
|
|
158
|
-
</exit>
|