@pennyfarthing/core 10.4.0 → 11.0.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/README.md +4 -4
- package/package.json +16 -14
- package/packages/core/dist/benchmark/benchmark-integration.d.ts +182 -0
- package/packages/core/dist/benchmark/benchmark-integration.d.ts.map +1 -0
- package/packages/core/dist/benchmark/benchmark-integration.js +710 -0
- package/packages/core/dist/benchmark/benchmark-integration.js.map +1 -0
- package/packages/core/dist/benchmark/benchmark-integration.test.d.ts +6 -0
- package/packages/core/dist/benchmark/benchmark-integration.test.d.ts.map +1 -0
- package/packages/core/dist/benchmark/benchmark-integration.test.js +41 -0
- package/packages/core/dist/benchmark/benchmark-integration.test.js.map +1 -0
- package/packages/core/dist/benchmark/index.d.ts +3 -0
- package/packages/core/dist/benchmark/index.d.ts.map +1 -0
- package/packages/core/dist/benchmark/index.js +5 -0
- package/packages/core/dist/benchmark/index.js.map +1 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.d.ts +150 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.d.ts.map +1 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.js +547 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.js.map +1 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.test.d.ts +6 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.test.d.ts.map +1 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.test.js +35 -0
- package/packages/core/dist/benchmark/job-fair-aggregator.test.js.map +1 -0
- package/packages/core/dist/cli/commands/hook-chaining.test.d.ts +17 -0
- package/packages/core/dist/cli/commands/hook-chaining.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/hook-chaining.test.js +386 -0
- package/packages/core/dist/cli/commands/hook-chaining.test.js.map +1 -0
- package/packages/core/dist/cli/commands/init.d.ts +6 -1
- package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/init.js +83 -30
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/uninstall.js +20 -3
- package/packages/core/dist/cli/commands/uninstall.js.map +1 -1
- package/packages/core/dist/cli/commands/uninstall.test.d.ts +8 -0
- package/packages/core/dist/cli/commands/uninstall.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/uninstall.test.js +120 -0
- package/packages/core/dist/cli/commands/uninstall.test.js.map +1 -0
- package/packages/core/dist/cli/commands/update.js +4 -4
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/cyclist-migration.test.js +2 -1
- package/packages/core/dist/cli/cyclist-migration.test.js.map +1 -1
- package/packages/core/dist/cli/ocean-profiles.test.js +5 -4
- package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
- package/packages/core/dist/cli/theme-maker.test.js +5 -4
- package/packages/core/dist/cli/theme-maker.test.js.map +1 -1
- package/packages/core/dist/cli/utils/008-sprint-shard-migration.test.d.ts +15 -0
- package/packages/core/dist/cli/utils/008-sprint-shard-migration.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/008-sprint-shard-migration.test.js +295 -0
- package/packages/core/dist/cli/utils/008-sprint-shard-migration.test.js.map +1 -0
- package/packages/core/dist/cli/utils/settings-consolidation.test.js +26 -0
- package/packages/core/dist/cli/utils/settings-consolidation.test.js.map +1 -1
- package/packages/core/dist/cli/utils/settings-merge.d.ts +128 -0
- package/packages/core/dist/cli/utils/settings-merge.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/settings-merge.js +303 -0
- package/packages/core/dist/cli/utils/settings-merge.js.map +1 -0
- package/packages/core/dist/cli/utils/settings-merge.test.d.ts +15 -0
- package/packages/core/dist/cli/utils/settings-merge.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/settings-merge.test.js +781 -0
- package/packages/core/dist/cli/utils/settings-merge.test.js.map +1 -0
- package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/settings.js +3 -0
- package/packages/core/dist/cli/utils/settings.js.map +1 -1
- package/packages/core/dist/cli/utils/symlinks.d.ts +6 -16
- package/packages/core/dist/cli/utils/symlinks.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/symlinks.js +100 -171
- package/packages/core/dist/cli/utils/symlinks.js.map +1 -1
- package/packages/core/dist/cli/utils/symlinks.test.d.ts +10 -0
- package/packages/core/dist/cli/utils/symlinks.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/symlinks.test.js +266 -0
- package/packages/core/dist/cli/utils/symlinks.test.js.map +1 -0
- package/packages/core/dist/cli/utils/themes.js +1 -1
- package/packages/core/dist/cli/workspace.test.js +2 -5
- package/packages/core/dist/cli/workspace.test.js.map +1 -1
- package/packages/core/dist/consolidation.test.d.ts +11 -0
- package/packages/core/dist/consolidation.test.d.ts.map +1 -0
- package/packages/core/dist/consolidation.test.js +249 -0
- package/packages/core/dist/consolidation.test.js.map +1 -0
- package/packages/core/dist/index.d.ts +2 -0
- package/packages/core/dist/index.d.ts.map +1 -1
- package/packages/core/dist/index.js +4 -0
- package/packages/core/dist/index.js.map +1 -1
- package/packages/core/dist/plugins/plugin-discovery.js +1 -1
- package/packages/core/dist/plugins/plugin-discovery.js.map +1 -1
- package/packages/core/dist/plugins/plugin-discovery.test.d.ts +1 -1
- package/packages/core/dist/plugins/plugin-discovery.test.js +47 -36
- package/packages/core/dist/plugins/plugin-discovery.test.js.map +1 -1
- package/packages/core/dist/public/css/react.css +1 -0
- package/packages/core/dist/public/js/react/react.js +82 -0
- package/packages/core/dist/scripts/generate-report.test.js +2 -2
- package/packages/core/dist/scripts/generate-spider-report.test.js +2 -2
- package/packages/core/dist/scripts/generate-spider.test.js +2 -1
- package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
- package/packages/core/dist/server/agent-context.d.ts +5 -0
- package/packages/core/dist/server/agent-context.d.ts.map +1 -0
- package/packages/core/dist/server/agent-context.js +5 -0
- package/packages/core/dist/server/agent-context.js.map +1 -0
- package/packages/core/dist/server/agent-evaluation.d.ts +17 -0
- package/packages/core/dist/server/agent-evaluation.d.ts.map +1 -0
- package/packages/core/dist/server/agent-evaluation.js +15 -0
- package/packages/core/dist/server/agent-evaluation.js.map +1 -0
- package/packages/core/dist/server/api/agent-load.d.ts +3 -0
- package/packages/core/dist/server/api/agent-load.d.ts.map +1 -0
- package/packages/core/dist/server/api/agent-load.js +19 -0
- package/packages/core/dist/server/api/agent-load.js.map +1 -0
- package/packages/core/dist/server/api/audit-log.d.ts +3 -0
- package/packages/core/dist/server/api/audit-log.d.ts.map +1 -0
- package/packages/core/dist/server/api/audit-log.js +31 -0
- package/packages/core/dist/server/api/audit-log.js.map +1 -0
- package/packages/core/dist/server/api/background-tasks.d.ts +27 -0
- package/packages/core/dist/server/api/background-tasks.d.ts.map +1 -0
- package/packages/core/dist/server/api/background-tasks.js +56 -0
- package/packages/core/dist/server/api/background-tasks.js.map +1 -0
- package/packages/core/dist/server/api/bell.d.ts +19 -0
- package/packages/core/dist/server/api/bell.d.ts.map +1 -0
- package/packages/core/dist/server/api/bell.js +34 -0
- package/packages/core/dist/server/api/bell.js.map +1 -0
- package/packages/core/dist/server/api/code-markers.d.ts +9 -0
- package/packages/core/dist/server/api/code-markers.d.ts.map +1 -0
- package/packages/core/dist/server/api/code-markers.js +62 -0
- package/packages/core/dist/server/api/code-markers.js.map +1 -0
- package/packages/core/dist/server/api/complexity.d.ts +3 -0
- package/packages/core/dist/server/api/complexity.d.ts.map +1 -0
- package/packages/core/dist/server/api/complexity.js +47 -0
- package/packages/core/dist/server/api/complexity.js.map +1 -0
- package/packages/core/dist/server/api/context.d.ts +38 -0
- package/packages/core/dist/server/api/context.d.ts.map +1 -0
- package/packages/core/dist/server/api/context.js +144 -0
- package/packages/core/dist/server/api/context.js.map +1 -0
- package/packages/core/dist/server/api/dead-code.d.ts +3 -0
- package/packages/core/dist/server/api/dead-code.d.ts.map +1 -0
- package/packages/core/dist/server/api/dead-code.js +70 -0
- package/packages/core/dist/server/api/dead-code.js.map +1 -0
- package/packages/core/dist/server/api/dependencies.d.ts +3 -0
- package/packages/core/dist/server/api/dependencies.d.ts.map +1 -0
- package/packages/core/dist/server/api/dependencies.js +43 -0
- package/packages/core/dist/server/api/dependencies.js.map +1 -0
- package/packages/core/dist/server/api/evaluation.d.ts +3 -0
- package/packages/core/dist/server/api/evaluation.d.ts.map +1 -0
- package/packages/core/dist/server/api/evaluation.js +33 -0
- package/packages/core/dist/server/api/evaluation.js.map +1 -0
- package/packages/core/dist/server/api/file-browser.d.ts +9 -0
- package/packages/core/dist/server/api/file-browser.d.ts.map +1 -0
- package/packages/core/dist/server/api/file-browser.js +133 -0
- package/packages/core/dist/server/api/file-browser.js.map +1 -0
- package/packages/core/dist/server/api/git-fetch-cooldown.test.d.ts +10 -0
- package/packages/core/dist/server/api/git-fetch-cooldown.test.d.ts.map +1 -0
- package/packages/core/dist/server/api/git-fetch-cooldown.test.js +30 -0
- package/packages/core/dist/server/api/git-fetch-cooldown.test.js.map +1 -0
- package/packages/core/dist/server/api/git.d.ts +55 -0
- package/packages/core/dist/server/api/git.d.ts.map +1 -0
- package/packages/core/dist/server/api/git.js +382 -0
- package/packages/core/dist/server/api/git.js.map +1 -0
- package/packages/core/dist/server/api/health-score.d.ts +3 -0
- package/packages/core/dist/server/api/health-score.d.ts.map +1 -0
- package/packages/core/dist/server/api/health-score.js +47 -0
- package/packages/core/dist/server/api/health-score.js.map +1 -0
- package/packages/core/dist/server/api/hook-request.d.ts +41 -0
- package/packages/core/dist/server/api/hook-request.d.ts.map +1 -0
- package/packages/core/dist/server/api/hook-request.js +278 -0
- package/packages/core/dist/server/api/hook-request.js.map +1 -0
- package/packages/core/dist/server/api/hotspots.d.ts +3 -0
- package/packages/core/dist/server/api/hotspots.d.ts.map +1 -0
- package/packages/core/dist/server/api/hotspots.js +62 -0
- package/packages/core/dist/server/api/hotspots.js.map +1 -0
- package/packages/core/dist/server/api/identity.d.ts +17 -0
- package/packages/core/dist/server/api/identity.d.ts.map +1 -0
- package/packages/core/dist/server/api/identity.js +79 -0
- package/packages/core/dist/server/api/identity.js.map +1 -0
- package/packages/core/dist/server/api/index.d.ts +36 -0
- package/packages/core/dist/server/api/index.d.ts.map +1 -0
- package/packages/core/dist/server/api/index.js +47 -0
- package/packages/core/dist/server/api/index.js.map +1 -0
- package/packages/core/dist/server/api/mode.d.ts +24 -0
- package/packages/core/dist/server/api/mode.d.ts.map +1 -0
- package/packages/core/dist/server/api/mode.js +40 -0
- package/packages/core/dist/server/api/mode.js.map +1 -0
- package/packages/core/dist/server/api/otlp.d.ts +3 -0
- package/packages/core/dist/server/api/otlp.d.ts.map +1 -0
- package/packages/core/dist/server/api/otlp.js +40 -0
- package/packages/core/dist/server/api/otlp.js.map +1 -0
- package/packages/core/dist/server/api/permissions.d.ts +16 -0
- package/packages/core/dist/server/api/permissions.d.ts.map +1 -0
- package/packages/core/dist/server/api/permissions.js +67 -0
- package/packages/core/dist/server/api/permissions.js.map +1 -0
- package/packages/core/dist/server/api/persona.d.ts +9 -0
- package/packages/core/dist/server/api/persona.d.ts.map +1 -0
- package/packages/core/dist/server/api/persona.js +68 -0
- package/packages/core/dist/server/api/persona.js.map +1 -0
- package/packages/core/dist/server/api/portrait.d.ts +6 -0
- package/packages/core/dist/server/api/portrait.d.ts.map +1 -0
- package/packages/core/dist/server/api/portrait.js +28 -0
- package/packages/core/dist/server/api/portrait.js.map +1 -0
- package/packages/core/dist/server/api/settings.d.ts +14 -0
- package/packages/core/dist/server/api/settings.d.ts.map +1 -0
- package/packages/core/dist/server/api/settings.js +68 -0
- package/packages/core/dist/server/api/settings.js.map +1 -0
- package/packages/core/dist/server/api/spans.d.ts +3 -0
- package/packages/core/dist/server/api/spans.d.ts.map +1 -0
- package/packages/core/dist/server/api/spans.js +33 -0
- package/packages/core/dist/server/api/spans.js.map +1 -0
- package/packages/core/dist/server/api/stats.d.ts +13 -0
- package/packages/core/dist/server/api/stats.d.ts.map +1 -0
- package/packages/core/dist/server/api/stats.js +85 -0
- package/packages/core/dist/server/api/stats.js.map +1 -0
- package/packages/core/dist/server/api/story.d.ts +3 -0
- package/packages/core/dist/server/api/story.d.ts.map +1 -0
- package/packages/core/dist/server/api/story.js +15 -0
- package/packages/core/dist/server/api/story.js.map +1 -0
- package/packages/core/dist/server/api/telemetry.d.ts +3 -0
- package/packages/core/dist/server/api/telemetry.d.ts.map +1 -0
- package/packages/core/dist/server/api/telemetry.js +30 -0
- package/packages/core/dist/server/api/telemetry.js.map +1 -0
- package/packages/core/dist/server/api/theme-agents.d.ts +10 -0
- package/packages/core/dist/server/api/theme-agents.d.ts.map +1 -0
- package/packages/core/dist/server/api/theme-agents.js +39 -0
- package/packages/core/dist/server/api/theme-agents.js.map +1 -0
- package/packages/core/dist/server/api/todos.d.ts +33 -0
- package/packages/core/dist/server/api/todos.d.ts.map +1 -0
- package/packages/core/dist/server/api/todos.js +44 -0
- package/packages/core/dist/server/api/todos.js.map +1 -0
- package/packages/core/dist/server/api/token-stats.d.ts +8 -0
- package/packages/core/dist/server/api/token-stats.d.ts.map +1 -0
- package/packages/core/dist/server/api/token-stats.js +36 -0
- package/packages/core/dist/server/api/token-stats.js.map +1 -0
- package/packages/core/dist/server/api/welcome.d.ts +22 -0
- package/packages/core/dist/server/api/welcome.d.ts.map +1 -0
- package/packages/core/dist/server/api/welcome.js +35 -0
- package/packages/core/dist/server/api/welcome.js.map +1 -0
- package/packages/core/dist/server/bell-mode.d.ts +7 -0
- package/packages/core/dist/server/bell-mode.d.ts.map +1 -0
- package/packages/core/dist/server/bell-mode.js +7 -0
- package/packages/core/dist/server/bell-mode.js.map +1 -0
- package/packages/core/dist/server/dangerous-path.d.ts +36 -0
- package/packages/core/dist/server/dangerous-path.d.ts.map +1 -0
- package/packages/core/dist/server/dangerous-path.js +159 -0
- package/packages/core/dist/server/dangerous-path.js.map +1 -0
- package/packages/core/dist/server/enriched-span-exporter.d.ts +17 -0
- package/packages/core/dist/server/enriched-span-exporter.d.ts.map +1 -0
- package/packages/core/dist/server/enriched-span-exporter.js +12 -0
- package/packages/core/dist/server/enriched-span-exporter.js.map +1 -0
- package/packages/core/dist/server/env.d.ts +6 -0
- package/packages/core/dist/server/env.d.ts.map +1 -0
- package/packages/core/dist/server/env.js +10 -0
- package/packages/core/dist/server/env.js.map +1 -0
- package/packages/core/dist/server/file-browser.d.ts +17 -0
- package/packages/core/dist/server/file-browser.d.ts.map +1 -0
- package/packages/core/dist/server/file-browser.js +11 -0
- package/packages/core/dist/server/file-browser.js.map +1 -0
- package/packages/core/dist/server/otlp-receiver.d.ts +87 -0
- package/packages/core/dist/server/otlp-receiver.d.ts.map +1 -0
- package/packages/core/dist/server/otlp-receiver.js +106 -0
- package/packages/core/dist/server/otlp-receiver.js.map +1 -0
- package/packages/core/dist/server/parser.d.ts +11 -0
- package/packages/core/dist/server/parser.d.ts.map +1 -0
- package/packages/core/dist/server/parser.js +6 -0
- package/packages/core/dist/server/parser.js.map +1 -0
- package/packages/core/dist/server/paths.d.ts +37 -0
- package/packages/core/dist/server/paths.d.ts.map +1 -0
- package/packages/core/dist/server/paths.js +227 -0
- package/packages/core/dist/server/paths.js.map +1 -0
- package/packages/core/dist/server/pennyfarthing.d.ts +56 -0
- package/packages/core/dist/server/pennyfarthing.d.ts.map +1 -0
- package/packages/core/dist/server/pennyfarthing.js +356 -0
- package/packages/core/dist/server/pennyfarthing.js.map +1 -0
- package/packages/core/dist/server/plugin-loader.d.ts +22 -0
- package/packages/core/dist/server/plugin-loader.d.ts.map +1 -0
- package/packages/core/dist/server/plugin-loader.js +67 -0
- package/packages/core/dist/server/plugin-loader.js.map +1 -0
- package/packages/core/dist/server/prime.d.ts +12 -0
- package/packages/core/dist/server/prime.d.ts.map +1 -0
- package/packages/core/dist/server/prime.js +8 -0
- package/packages/core/dist/server/prime.js.map +1 -0
- package/packages/core/dist/server/server.d.ts +47 -0
- package/packages/core/dist/server/server.d.ts.map +1 -0
- package/packages/core/dist/server/server.js +353 -0
- package/packages/core/dist/server/server.js.map +1 -0
- package/packages/core/dist/server/server.test.d.ts +26 -0
- package/packages/core/dist/server/server.test.d.ts.map +1 -0
- package/packages/core/dist/server/server.test.js +447 -0
- package/packages/core/dist/server/server.test.js.map +1 -0
- package/packages/core/dist/server/settings-store.d.ts +195 -0
- package/packages/core/dist/server/settings-store.d.ts.map +1 -0
- package/packages/core/dist/server/settings-store.js +398 -0
- package/packages/core/dist/server/settings-store.js.map +1 -0
- package/packages/core/dist/server/settings.d.ts +136 -0
- package/packages/core/dist/server/settings.d.ts.map +1 -0
- package/packages/core/dist/server/settings.js +417 -0
- package/packages/core/dist/server/settings.js.map +1 -0
- package/packages/core/dist/server/span-hierarchy.d.ts +5 -0
- package/packages/core/dist/server/span-hierarchy.d.ts.map +1 -0
- package/packages/core/dist/server/span-hierarchy.js +5 -0
- package/packages/core/dist/server/span-hierarchy.js.map +1 -0
- package/packages/core/dist/server/story-context.d.ts +5 -0
- package/packages/core/dist/server/story-context.d.ts.map +1 -0
- package/packages/core/dist/server/story-context.js +5 -0
- package/packages/core/dist/server/story-context.js.map +1 -0
- package/packages/core/dist/server/story-parser.d.ts +74 -0
- package/packages/core/dist/server/story-parser.d.ts.map +1 -0
- package/packages/core/dist/server/story-parser.js +748 -0
- package/packages/core/dist/server/story-parser.js.map +1 -0
- package/packages/core/dist/server/tdd-metrics.d.ts +5 -0
- package/packages/core/dist/server/tdd-metrics.d.ts.map +1 -0
- package/packages/core/dist/server/tdd-metrics.js +5 -0
- package/packages/core/dist/server/tdd-metrics.js.map +1 -0
- package/packages/core/dist/server/ui-build.test.d.ts +19 -0
- package/packages/core/dist/server/ui-build.test.d.ts.map +1 -0
- package/packages/core/dist/server/ui-build.test.js +152 -0
- package/packages/core/dist/server/ui-build.test.js.map +1 -0
- package/packages/core/dist/server/websocket.d.ts +7 -0
- package/packages/core/dist/server/websocket.d.ts.map +1 -0
- package/packages/core/dist/server/websocket.js +8 -0
- package/packages/core/dist/server/websocket.js.map +1 -0
- package/packages/core/dist/shared/browser.d.ts +6 -0
- package/packages/core/dist/shared/browser.d.ts.map +1 -0
- package/packages/core/dist/shared/browser.js +8 -0
- package/packages/core/dist/shared/browser.js.map +1 -0
- package/packages/core/dist/shared/generate-skill-docs.d.ts +35 -0
- package/packages/core/dist/shared/generate-skill-docs.d.ts.map +1 -0
- package/packages/core/dist/shared/generate-skill-docs.js +442 -0
- package/packages/core/dist/shared/generate-skill-docs.js.map +1 -0
- package/packages/core/dist/shared/generate-skill-docs.test.d.ts +13 -0
- package/packages/core/dist/shared/generate-skill-docs.test.d.ts.map +1 -0
- package/packages/core/dist/shared/generate-skill-docs.test.js +519 -0
- package/packages/core/dist/shared/generate-skill-docs.test.js.map +1 -0
- package/packages/core/dist/shared/index.d.ts +11 -0
- package/packages/core/dist/shared/index.d.ts.map +1 -0
- package/packages/core/dist/shared/index.js +13 -0
- package/packages/core/dist/shared/index.js.map +1 -0
- package/packages/core/dist/shared/marker/constants.d.ts +39 -0
- package/packages/core/dist/shared/marker/constants.d.ts.map +1 -0
- package/packages/core/dist/shared/marker/constants.js +46 -0
- package/packages/core/dist/shared/marker/constants.js.map +1 -0
- package/packages/core/dist/shared/marker/continue.test.d.ts +12 -0
- package/packages/core/dist/shared/marker/continue.test.d.ts.map +1 -0
- package/packages/core/dist/shared/marker/continue.test.js +76 -0
- package/packages/core/dist/shared/marker/continue.test.js.map +1 -0
- package/packages/core/dist/shared/marker/detect.d.ts +25 -0
- package/packages/core/dist/shared/marker/detect.d.ts.map +1 -0
- package/packages/core/dist/shared/marker/detect.js +53 -0
- package/packages/core/dist/shared/marker/detect.js.map +1 -0
- package/packages/core/dist/shared/marker/detect.test.d.ts +10 -0
- package/packages/core/dist/shared/marker/detect.test.d.ts.map +1 -0
- package/packages/core/dist/shared/marker/detect.test.js +418 -0
- package/packages/core/dist/shared/marker/detect.test.js.map +1 -0
- package/packages/core/dist/shared/marker/index.d.ts +14 -0
- package/packages/core/dist/shared/marker/index.d.ts.map +1 -0
- package/packages/core/dist/shared/marker/index.js +15 -0
- package/packages/core/dist/shared/marker/index.js.map +1 -0
- package/packages/core/dist/shared/marker/strip.d.ts +26 -0
- package/packages/core/dist/shared/marker/strip.d.ts.map +1 -0
- package/packages/core/dist/shared/marker/strip.js +39 -0
- package/packages/core/dist/shared/marker/strip.js.map +1 -0
- package/packages/core/dist/shared/marker/types.d.ts +23 -0
- package/packages/core/dist/shared/marker/types.d.ts.map +1 -0
- package/packages/core/dist/shared/marker/types.js +7 -0
- package/packages/core/dist/shared/marker/types.js.map +1 -0
- package/packages/core/dist/shared/migrate-theme-schema.test.d.ts +8 -0
- package/packages/core/dist/shared/migrate-theme-schema.test.d.ts.map +1 -0
- package/packages/core/dist/shared/migrate-theme-schema.test.js +100 -0
- package/packages/core/dist/shared/migrate-theme-schema.test.js.map +1 -0
- package/packages/core/dist/shared/portrait-resolver.d.ts +35 -0
- package/packages/core/dist/shared/portrait-resolver.d.ts.map +1 -0
- package/packages/core/dist/shared/portrait-resolver.js +259 -0
- package/packages/core/dist/shared/portrait-resolver.js.map +1 -0
- package/packages/core/dist/shared/portrait-resolver.test.d.ts +2 -0
- package/packages/core/dist/shared/portrait-resolver.test.d.ts.map +1 -0
- package/packages/core/dist/shared/portrait-resolver.test.js +157 -0
- package/packages/core/dist/shared/portrait-resolver.test.js.map +1 -0
- package/packages/core/dist/shared/repos-topology.d.ts +49 -0
- package/packages/core/dist/shared/repos-topology.d.ts.map +1 -0
- package/packages/core/dist/shared/repos-topology.js +101 -0
- package/packages/core/dist/shared/repos-topology.js.map +1 -0
- package/packages/core/dist/shared/repos-topology.test.d.ts +8 -0
- package/packages/core/dist/shared/repos-topology.test.d.ts.map +1 -0
- package/packages/core/dist/shared/repos-topology.test.js +250 -0
- package/packages/core/dist/shared/repos-topology.test.js.map +1 -0
- package/packages/core/dist/shared/skill-search.d.ts +36 -0
- package/packages/core/dist/shared/skill-search.d.ts.map +1 -0
- package/packages/core/dist/shared/skill-search.js +300 -0
- package/packages/core/dist/shared/skill-search.js.map +1 -0
- package/packages/core/dist/shared/skill-search.test.d.ts +16 -0
- package/packages/core/dist/shared/skill-search.test.d.ts.map +1 -0
- package/packages/core/dist/shared/skill-search.test.js +177 -0
- package/packages/core/dist/shared/skill-search.test.js.map +1 -0
- package/packages/core/dist/shared/skill-suggest.d.ts +76 -0
- package/packages/core/dist/shared/skill-suggest.d.ts.map +1 -0
- package/packages/core/dist/shared/skill-suggest.js +256 -0
- package/packages/core/dist/shared/skill-suggest.js.map +1 -0
- package/packages/core/dist/shared/skill-suggest.test.d.ts +12 -0
- package/packages/core/dist/shared/skill-suggest.test.d.ts.map +1 -0
- package/packages/core/dist/shared/skill-suggest.test.js +257 -0
- package/packages/core/dist/shared/skill-suggest.test.js.map +1 -0
- package/packages/core/dist/shared/theme-loader.d.ts +81 -0
- package/packages/core/dist/shared/theme-loader.d.ts.map +1 -0
- package/packages/core/dist/shared/theme-loader.js +491 -0
- package/packages/core/dist/shared/theme-loader.js.map +1 -0
- package/packages/core/dist/shared/theme-loader.test.d.ts +8 -0
- package/packages/core/dist/shared/theme-loader.test.d.ts.map +1 -0
- package/packages/core/dist/shared/theme-loader.test.js +62 -0
- package/packages/core/dist/shared/theme-loader.test.js.map +1 -0
- package/packages/core/dist/workflow/context-watch.test.js +1 -1
- package/packages/core/dist/workflow/context-watch.test.js.map +1 -1
- package/packages/core/dist/workflow/variable-resolver.test.js +1 -1
- package/packages/core/dist/workflow/variable-resolver.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-migration.test.js +4 -3
- package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
- package/pennyfarthing-dist/agents/architect.md +1 -2
- package/pennyfarthing-dist/agents/ba.md +1 -1
- package/pennyfarthing-dist/agents/dev.md +2 -3
- package/pennyfarthing-dist/agents/devops.md +1 -1
- package/pennyfarthing-dist/agents/orchestrator.md +2 -3
- package/pennyfarthing-dist/agents/pm.md +2 -2
- package/pennyfarthing-dist/agents/reviewer.md +2 -2
- package/pennyfarthing-dist/agents/sm-setup.md +7 -7
- package/pennyfarthing-dist/agents/sm.md +19 -18
- package/pennyfarthing-dist/agents/tea.md +3 -2
- package/pennyfarthing-dist/agents/tech-writer.md +1 -1
- package/pennyfarthing-dist/agents/ux-designer.md +0 -1
- package/pennyfarthing-dist/commands/benchmark-control.md +69 -0
- package/pennyfarthing-dist/commands/benchmark.md +485 -0
- package/pennyfarthing-dist/commands/job-fair.md +102 -0
- package/pennyfarthing-dist/commands/{close-epic.md → pf-close-epic.md} +1 -1
- package/pennyfarthing-dist/commands/{new-work.md → pf-new-work.md} +4 -4
- package/pennyfarthing-dist/commands/{party-mode.md → pf-party-mode.md} +15 -2
- package/pennyfarthing-dist/commands/{patch.md → pf-patch.md} +3 -3
- package/pennyfarthing-dist/commands/{release.md → pf-release.md} +17 -10
- package/pennyfarthing-dist/commands/{setup.md → pf-setup.md} +2 -2
- package/pennyfarthing-dist/commands/{sprint.md → pf-sprint.md} +19 -19
- package/pennyfarthing-dist/commands/{standalone.md → pf-standalone.md} +2 -2
- package/pennyfarthing-dist/commands/{workflow.md → pf-workflow.md} +7 -7
- package/pennyfarthing-dist/commands/solo.md +447 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +2 -2
- package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +1 -2
- package/pennyfarthing-dist/guides/agent-template-strategic.md +1 -1
- package/pennyfarthing-dist/guides/agent-template-tactical.md +2 -2
- package/pennyfarthing-dist/guides/bikelane.md +6 -6
- package/pennyfarthing-dist/guides/permission-protocol.md +1 -1
- package/pennyfarthing-dist/guides/scale-levels.md +2 -2
- package/pennyfarthing-dist/guides/skill-schema.md +9 -9
- package/pennyfarthing-dist/guides/xml-tags.md +2 -2
- package/pennyfarthing-dist/personas/themes/dune.yaml +0 -1
- package/pennyfarthing-dist/personas/themes/hogans-heroes.yaml +260 -0
- package/pennyfarthing-dist/personas/themes/monty-python.yaml +312 -0
- package/pennyfarthing-dist/personas/themes/stephen-king.yaml +260 -0
- package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -0
- package/pennyfarthing-dist/scripts/core/check-context.sh +0 -0
- package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -0
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +0 -0
- package/pennyfarthing-dist/scripts/core/prime.sh +0 -0
- package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -0
- package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -0
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -0
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +84 -21
- package/pennyfarthing-dist/scripts/git/release.sh +0 -0
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -0
- package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/dispatcher-template.sh +45 -0
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +27 -2
- 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/question-reflector-check.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -0
- package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +25 -89
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/README.md +1 -1
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/common.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/logging.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/retry.sh +0 -0
- package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -0
- package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -0
- package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -0
- package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -0
- package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +50 -26
- package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +18 -6
- package/pennyfarthing-dist/scripts/sprint/README.md +1 -1
- package/pennyfarthing-dist/scripts/story/README.md +1 -1
- package/pennyfarthing-dist/scripts/story/create-story.sh +0 -0
- package/pennyfarthing-dist/scripts/story/size-story.sh +0 -0
- package/pennyfarthing-dist/scripts/story/story-template.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -0
- package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/README.md +1 -1
- package/pennyfarthing-dist/scripts/workflow/check.py +0 -0
- package/pennyfarthing-dist/scripts/workflow/check.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/complete-step.py +0 -0
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -0
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -0
- package/pennyfarthing-dist/skills/pf-bc/examples.md +83 -0
- package/pennyfarthing-dist/skills/pf-bc/skill.md +51 -0
- package/pennyfarthing-dist/skills/pf-bc/usage.md +113 -0
- package/pennyfarthing-dist/skills/{cyclist → pf-cyclist}/SKILL.md +5 -5
- package/pennyfarthing-dist/skills/pf-finalize-run/SKILL.md +261 -0
- package/pennyfarthing-dist/skills/pf-jira/SKILL.md +61 -0
- package/pennyfarthing-dist/skills/pf-jira/examples.md +163 -0
- package/pennyfarthing-dist/skills/pf-jira/usage.md +213 -0
- package/pennyfarthing-dist/skills/pf-judge/SKILL.md +644 -0
- package/pennyfarthing-dist/skills/{just → pf-just}/SKILL.md +23 -23
- package/pennyfarthing-dist/skills/{permissions → pf-permissions}/skill.md +8 -8
- package/pennyfarthing-dist/skills/pf-persona-benchmark/SKILL.md +187 -0
- package/pennyfarthing-dist/skills/pf-sprint/examples.md +189 -0
- package/pennyfarthing-dist/skills/pf-sprint/skill.md +85 -0
- package/pennyfarthing-dist/skills/pf-sprint/usage.md +293 -0
- package/pennyfarthing-dist/skills/{story → pf-story}/scripts/create-story.sh +0 -0
- package/pennyfarthing-dist/skills/{story → pf-story}/scripts/size-story.sh +0 -0
- package/pennyfarthing-dist/skills/{story → pf-story}/scripts/story-template.sh +0 -0
- package/pennyfarthing-dist/skills/pf-story/skill.md +27 -0
- package/pennyfarthing-dist/skills/{systematic-debugging → pf-systematic-debugging}/SKILL.md +5 -6
- package/pennyfarthing-dist/skills/pf-theme/examples.md +92 -0
- package/pennyfarthing-dist/skills/pf-theme/skill.md +42 -0
- package/pennyfarthing-dist/skills/pf-theme/usage.md +149 -0
- package/pennyfarthing-dist/skills/pf-workflow/examples.md +101 -0
- package/pennyfarthing-dist/skills/{workflow → pf-workflow}/scripts/list-workflows.sh +0 -0
- package/pennyfarthing-dist/skills/{workflow → pf-workflow}/scripts/resume-workflow.sh +0 -0
- package/pennyfarthing-dist/skills/{workflow → pf-workflow}/scripts/show-workflow.sh +0 -0
- package/pennyfarthing-dist/skills/{workflow → pf-workflow}/scripts/start-workflow.sh +0 -0
- package/pennyfarthing-dist/skills/{workflow → pf-workflow}/scripts/workflow-status.sh +0 -0
- package/pennyfarthing-dist/skills/pf-workflow/skill.md +49 -0
- package/pennyfarthing-dist/skills/pf-workflow/usage.md +145 -0
- package/pennyfarthing-dist/skills/skill-registry.yaml +63 -81
- package/pennyfarthing-dist/workflows/architecture/data/domain-complexity.csv +13 -0
- package/pennyfarthing-dist/workflows/architecture/data/project-types.csv +7 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +40 -11
- package/pennyfarthing-dist/workflows/party-mode-roleplay/steps/step-01-agent-loading.md +99 -0
- package/pennyfarthing-dist/workflows/party-mode-roleplay/steps/step-02-discussion.md +130 -0
- package/pennyfarthing-dist/workflows/party-mode-roleplay/steps/step-03-exit.md +100 -0
- package/pennyfarthing-dist/workflows/party-mode-roleplay/workflow.yaml +62 -0
- package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +2 -0
- package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +2 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +16 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-04-claude-md.md +3 -3
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +193 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +148 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +141 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +192 -0
- package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
- package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +35 -0
- package/pennyfarthing-dist/workflows/release/steps/step-01-preflight.md +42 -3
- package/pennyfarthing-dist/workflows/release/steps/step-02-bump.md +10 -3
- package/pennyfarthing-dist/workflows/release/steps/step-03-changelog.md +1 -1
- package/pennyfarthing-dist/workflows/release/steps/step-07-commit.md +13 -4
- package/pennyfarthing-dist/workflows/release/steps/step-08-merge.md +31 -6
- package/pennyfarthing-dist/workflows/release/steps/step-09-push.md +12 -6
- package/pennyfarthing-dist/workflows/release/steps/step-10-publish.md +30 -5
- package/pennyfarthing-dist/workflows/release/steps/step-11-finalize.md +29 -0
- package/pennyfarthing-dist/workflows/release.yaml +7 -0
- package/pennyfarthing_scripts/CLAUDE.md +182 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/session_start_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__init__.py +1 -0
- package/pennyfarthing_scripts/bc/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/cli.py +223 -0
- package/pennyfarthing_scripts/bc/focus.py +333 -0
- package/pennyfarthing_scripts/bikerack/__init__.py +8 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/background_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/base_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/changed_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/diffs_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/git_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/sprint_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/tui.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/ws_client.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/background_panel.py +81 -0
- package/pennyfarthing_scripts/bikerack/base_panel.py +100 -0
- package/pennyfarthing_scripts/bikerack/changed_panel.py +105 -0
- package/pennyfarthing_scripts/bikerack/cli.py +22 -24
- package/pennyfarthing_scripts/bikerack/diffs_panel.py +146 -0
- package/pennyfarthing_scripts/bikerack/git_panel.py +69 -0
- package/pennyfarthing_scripts/bikerack/launcher.py +63 -4
- package/pennyfarthing_scripts/bikerack/sprint_panel.py +72 -0
- package/pennyfarthing_scripts/bikerack/tui.py +193 -0
- package/pennyfarthing_scripts/bikerack/ws_client.py +176 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/cli.py +60 -16
- package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/analyze.py +15 -1
- package/pennyfarthing_scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/cli.py +10 -2
- package/pennyfarthing_scripts/launch/__init__.py +1 -0
- package/pennyfarthing_scripts/launch/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/launch/cli.py +231 -0
- package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/version_sentinel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/version_sentinel.py +0 -1
- package/pennyfarthing_scripts/session_start_hook.py +192 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/archive_epic.py +109 -1
- package/pennyfarthing_scripts/sprint/cli.py +30 -9
- package/pennyfarthing_scripts/sprint/epic_add.py +7 -1
- package/pennyfarthing_scripts/sprint/epic_update.py +148 -0
- package/pennyfarthing_scripts/sprint/loader.py +33 -0
- package/pennyfarthing_scripts/sprint/story_add.py +11 -1
- package/pennyfarthing_scripts/sprint/story_finish.py +14 -10
- package/pennyfarthing_scripts/sprint/story_update.py +7 -0
- package/pennyfarthing_scripts/sprint/validate_cmd.py +2 -1
- package/pennyfarthing_scripts/sprint/yaml_io.py +64 -6
- package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_archive_epic.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bc.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_cli_normalization.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_epic_shard_validation.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_panel.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_topology_loader.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tui_focus.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tui_panel_persistence.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_version_sentinel.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/test_archive_epic.py +185 -0
- package/pennyfarthing_scripts/tests/test_bc.py +490 -0
- package/pennyfarthing_scripts/tests/test_cli_normalization.py +295 -0
- package/pennyfarthing_scripts/tests/test_sprint_panel.py +531 -0
- package/pennyfarthing_scripts/tests/test_tui_focus.py +411 -0
- package/pennyfarthing_scripts/tests/test_tui_panel_persistence.py +411 -0
- package/pennyfarthing_scripts/tests/test_version_sentinel.py +1 -5
- package/pennyfarthing_scripts/tests/test_yaml_io.py +5 -5
- package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/theme/cli.py +25 -2
- package/scripts/README.md +41 -0
- package/packages/core/dist/scripts/benchmark-integration.test.d.ts +0 -13
- package/packages/core/dist/scripts/benchmark-integration.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/benchmark-integration.test.js +0 -680
- package/packages/core/dist/scripts/benchmark-integration.test.js.map +0 -1
- package/packages/core/dist/scripts/debugging-scenarios.test.d.ts +0 -18
- package/packages/core/dist/scripts/debugging-scenarios.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/debugging-scenarios.test.js +0 -317
- package/packages/core/dist/scripts/debugging-scenarios.test.js.map +0 -1
- package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts +0 -14
- package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/job-fair-aggregator.test.js +0 -616
- package/packages/core/dist/scripts/job-fair-aggregator.test.js.map +0 -1
- package/packages/core/dist/scripts/theme-detail.test.d.ts +0 -10
- package/packages/core/dist/scripts/theme-detail.test.js +0 -199
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +0 -392
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +0 -461
- package/pennyfarthing-dist/skills/jira/SKILL.md +0 -207
- package/pennyfarthing-dist/skills/sprint/skill.md +0 -806
- package/pennyfarthing-dist/skills/story/skill.md +0 -27
- package/pennyfarthing-dist/skills/theme/skill.md +0 -356
- package/pennyfarthing-dist/skills/workflow/skill.md +0 -368
- /package/pennyfarthing-dist/commands/{architect.md → pf-architect.md} +0 -0
- /package/pennyfarthing-dist/commands/{ba.md → pf-ba.md} +0 -0
- /package/pennyfarthing-dist/commands/{brainstorming.md → pf-brainstorming.md} +0 -0
- /package/pennyfarthing-dist/commands/{check.md → pf-check.md} +0 -0
- /package/pennyfarthing-dist/commands/{chore.md → pf-chore.md} +0 -0
- /package/pennyfarthing-dist/commands/{continue-session.md → pf-continue-session.md} +0 -0
- /package/pennyfarthing-dist/commands/{create-branches-from-story.md → pf-create-branches-from-story.md} +0 -0
- /package/pennyfarthing-dist/commands/{create-theme.md → pf-create-theme.md} +0 -0
- /package/pennyfarthing-dist/commands/{dev.md → pf-dev.md} +0 -0
- /package/pennyfarthing-dist/commands/{devops.md → pf-devops.md} +0 -0
- /package/pennyfarthing-dist/commands/{fix-blocker.md → pf-fix-blocker.md} +0 -0
- /package/pennyfarthing-dist/commands/{git-cleanup.md → pf-git-cleanup.md} +0 -0
- /package/pennyfarthing-dist/commands/{health-check.md → pf-health-check.md} +0 -0
- /package/pennyfarthing-dist/commands/{help.md → pf-help.md} +0 -0
- /package/pennyfarthing-dist/commands/{list-themes.md → pf-list-themes.md} +0 -0
- /package/pennyfarthing-dist/commands/{orchestrator.md → pf-orchestrator.md} +0 -0
- /package/pennyfarthing-dist/commands/{parallel-work.md → pf-parallel-work.md} +0 -0
- /package/pennyfarthing-dist/commands/{permissions.md → pf-permissions.md} +0 -0
- /package/pennyfarthing-dist/commands/{pm.md → pf-pm.md} +0 -0
- /package/pennyfarthing-dist/commands/{prime.md → pf-prime.md} +0 -0
- /package/pennyfarthing-dist/commands/{repo-status.md → pf-repo-status.md} +0 -0
- /package/pennyfarthing-dist/commands/{retro.md → pf-retro.md} +0 -0
- /package/pennyfarthing-dist/commands/{reviewer.md → pf-reviewer.md} +0 -0
- /package/pennyfarthing-dist/commands/{run-ci.md → pf-run-ci.md} +0 -0
- /package/pennyfarthing-dist/commands/{set-theme.md → pf-set-theme.md} +0 -0
- /package/pennyfarthing-dist/commands/{show-theme.md → pf-show-theme.md} +0 -0
- /package/pennyfarthing-dist/commands/{sm.md → pf-sm.md} +0 -0
- /package/pennyfarthing-dist/commands/{sprint-planning.md → pf-sprint-planning.md} +0 -0
- /package/pennyfarthing-dist/commands/{start-epic.md → pf-start-epic.md} +0 -0
- /package/pennyfarthing-dist/commands/{sync-epic-to-jira.md → pf-sync-epic-to-jira.md} +0 -0
- /package/pennyfarthing-dist/commands/{sync-work-with-sprint.md → pf-sync-work-with-sprint.md} +0 -0
- /package/pennyfarthing-dist/commands/{tea.md → pf-tea.md} +0 -0
- /package/pennyfarthing-dist/commands/{tech-writer.md → pf-tech-writer.md} +0 -0
- /package/pennyfarthing-dist/commands/{theme-maker.md → pf-theme-maker.md} +0 -0
- /package/pennyfarthing-dist/commands/{theme.md → pf-theme.md} +0 -0
- /package/pennyfarthing-dist/commands/{update-domain-docs.md → pf-update-domain-docs.md} +0 -0
- /package/pennyfarthing-dist/commands/{ux-designer.md → pf-ux-designer.md} +0 -0
- /package/pennyfarthing-dist/commands/{work.md → pf-work.md} +0 -0
- /package/pennyfarthing-dist/skills/{agentic-patterns → pf-agentic-patterns}/SKILL.md +0 -0
- /package/pennyfarthing-dist/skills/{changelog → pf-changelog}/SKILL.md +0 -0
- /package/pennyfarthing-dist/skills/{code-review → pf-code-review}/SKILL.md +0 -0
- /package/pennyfarthing-dist/skills/{context-engineering → pf-context-engineering}/SKILL.md +0 -0
- /package/pennyfarthing-dist/skills/{mermaid → pf-mermaid}/SKILL.md +0 -0
- /package/pennyfarthing-dist/skills/{otel → pf-otel}/skill.md +0 -0
- /package/pennyfarthing-dist/skills/{testing → pf-testing}/SKILL.md +0 -0
- /package/pennyfarthing-dist/skills/{testing → pf-testing}/references/troubleshooting.md +0 -0
- /package/pennyfarthing-dist/skills/{theme-creation → pf-theme-creation}/SKILL.md +0 -0
- /package/pennyfarthing-dist/skills/{yq → pf-yq}/SKILL.md +0 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Run a single agent on a scenario with absolute rubric scoring
|
|
3
|
+
argument-hint: <theme:agent> --scenario <name> [--as <role>] [--runs N] [--no-judge]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Solo Benchmark
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Run a single agent on a scenario. This is the CANONICAL agent execution path.
|
|
10
|
+
|
|
11
|
+
**Modes:**
|
|
12
|
+
- **Full (default):** Agent runs → `/judge` evaluates → `/finalize-run` saves
|
|
13
|
+
- **No-judge (`--no-judge`):** Agent runs only, returns raw response (for /duel, /relay)
|
|
14
|
+
</purpose>
|
|
15
|
+
|
|
16
|
+
<architecture>
|
|
17
|
+
```
|
|
18
|
+
/solo theme:agent --scenario X
|
|
19
|
+
│
|
|
20
|
+
├──► Execute agent via CLI
|
|
21
|
+
│ └──► Response + tokens
|
|
22
|
+
│
|
|
23
|
+
├──► /judge --mode solo (if not --no-judge)
|
|
24
|
+
│ └──► Score + verdict
|
|
25
|
+
│
|
|
26
|
+
└──► /finalize-run --type solo
|
|
27
|
+
└──► Validate + save
|
|
28
|
+
```
|
|
29
|
+
</architecture>
|
|
30
|
+
|
|
31
|
+
<usage>
|
|
32
|
+
```
|
|
33
|
+
/solo <contestant> --scenario <name>
|
|
34
|
+
/solo <contestant> --scenario <name> --runs 4
|
|
35
|
+
/solo <contestant> --scenario <name> --no-judge
|
|
36
|
+
/solo <contestant> --as <role> --scenario <name>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Arguments:**
|
|
40
|
+
- `contestant` - `theme:agent` format (e.g., `discworld:reviewer`) OR `theme:character` with `--as`
|
|
41
|
+
- `--scenario` - Scenario from `scenarios/` directory
|
|
42
|
+
- `--as <role>` - Override role (use character's persona for different role's task)
|
|
43
|
+
- `--runs N` - Number of runs (default: 1, max: 20)
|
|
44
|
+
- `--no-judge` - Skip judging, return raw response
|
|
45
|
+
|
|
46
|
+
**Cross-Role Testing with `--as`:**
|
|
47
|
+
|
|
48
|
+
The `--as` flag enables running any persona as any role, useful for research:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
/solo shakespeare:prospero --as dev --scenario django-10554
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
This uses Prospero's persona traits (wise orchestrator, magic metaphors) but gives him a dev task.
|
|
55
|
+
The scenario's role determines what the agent is asked to do; the character determines how they do it.
|
|
56
|
+
</usage>
|
|
57
|
+
|
|
58
|
+
<on-invoke>
|
|
59
|
+
The user invoked this command with: $ARGUMENTS
|
|
60
|
+
|
|
61
|
+
## Step 1: Parse Arguments
|
|
62
|
+
|
|
63
|
+
Extract:
|
|
64
|
+
- `contestant`: `theme:agent` spec (or `theme:character` if using `--as`)
|
|
65
|
+
- `scenario_name`: After `--scenario`
|
|
66
|
+
- `role_override`: After `--as` (optional - for cross-role testing)
|
|
67
|
+
- `runs`: Number (default: 1)
|
|
68
|
+
- `no_judge`: Boolean
|
|
69
|
+
|
|
70
|
+
Validate spec contains `:`, scenario is required, runs is 1-20.
|
|
71
|
+
|
|
72
|
+
**If `--as` is provided:**
|
|
73
|
+
- The second part of the spec is a CHARACTER name, not a role
|
|
74
|
+
- `role_override` becomes the effective role for scenario matching
|
|
75
|
+
- Character persona is extracted by name lookup across all agents in theme
|
|
76
|
+
|
|
77
|
+
## Step 2: Load Scenario
|
|
78
|
+
|
|
79
|
+
```yaml
|
|
80
|
+
Glob tool:
|
|
81
|
+
pattern: "scenarios/**/{scenario_name}.yaml"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Extract: `prompt`, `scenario_title`, `code_content` (if present)
|
|
85
|
+
|
|
86
|
+
## Step 3: Load Persona
|
|
87
|
+
|
|
88
|
+
Read: `pennyfarthing-dist/personas/themes/{theme}.yaml`
|
|
89
|
+
|
|
90
|
+
**Standard mode (no `--as`):**
|
|
91
|
+
- Look up `agents.{agent}` section
|
|
92
|
+
- Extract: `character`, `style`, `expertise`, `catchphrases`, `emoji`
|
|
93
|
+
- `effective_role` = agent name from spec
|
|
94
|
+
|
|
95
|
+
**Cross-role mode (with `--as`):**
|
|
96
|
+
- The spec contains `theme:character_name` (e.g., `shakespeare:prospero`)
|
|
97
|
+
- Search ALL agent sections for one where `character` field matches (case-insensitive, partial match OK)
|
|
98
|
+
- Extract persona traits from that agent's config
|
|
99
|
+
- `effective_role` = the `--as` value (NOT the role the character normally fills)
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
# Pseudocode for cross-role lookup
|
|
103
|
+
if role_override:
|
|
104
|
+
character_query = spec.split(':')[1].lower() # e.g., "prospero"
|
|
105
|
+
for agent_name, agent_config in theme['agents'].items():
|
|
106
|
+
char_name = agent_config.get('character', '').lower()
|
|
107
|
+
if character_query in char_name or char_name.startswith(character_query):
|
|
108
|
+
persona = agent_config
|
|
109
|
+
source_role = agent_name # where character normally lives
|
|
110
|
+
break
|
|
111
|
+
effective_role = role_override # what we're asking them to do
|
|
112
|
+
else:
|
|
113
|
+
agent_name = spec.split(':')[1] # e.g., "dev"
|
|
114
|
+
persona = theme['agents'][agent_name]
|
|
115
|
+
effective_role = agent_name
|
|
116
|
+
source_role = agent_name
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
This enables running Prospero (normally SM) as a dev, or Gus Fring (normally orchestrator) as a reviewer.
|
|
120
|
+
|
|
121
|
+
## Step 3b: Build Agent Prompt
|
|
122
|
+
|
|
123
|
+
Use the Write tool to create the prompt file with this template:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
You are {character}.
|
|
127
|
+
|
|
128
|
+
**Style:** {style}
|
|
129
|
+
**Expertise:** {expertise}
|
|
130
|
+
**Catchphrases:** {catchphrases}
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Challenge
|
|
135
|
+
|
|
136
|
+
{scenario_prompt}
|
|
137
|
+
|
|
138
|
+
{code_content if present}
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
Respond fully in character. Under 500 words.
|
|
143
|
+
|
|
144
|
+
**IMPORTANT:** Provide your complete response directly. Do not attempt to use tools, read files, or make function calls.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Cross-role note:** When using `--as`, the scenario prompt comes from the `effective_role` (e.g., dev tasks),
|
|
148
|
+
but the character/style/expertise come from the character's original role config. This tests whether
|
|
149
|
+
personality traits affect task performance independent of role-specific training.
|
|
150
|
+
|
|
151
|
+
The final instruction is critical - without it, the model may output tool-call syntax even with `--tools ""`, resulting in incomplete responses.
|
|
152
|
+
|
|
153
|
+
## Step 4: Execute Agent via CLI
|
|
154
|
+
|
|
155
|
+
**RECOMMENDED: Use the shell script for reliable execution:**
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
./scripts/solo-runner.sh {theme}:{agent} {scenario} {output_dir}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The shell script handles all escaping, temp files, and JSON parsing correctly.
|
|
162
|
+
Use inline commands only for simple cases or when the script isn't available.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
**CRITICAL: The `--tools ""` flag is MANDATORY.**
|
|
167
|
+
|
|
168
|
+
Without `--tools ""`, agents may use tools internally (Read, Write, Bash, etc.), causing:
|
|
169
|
+
1. Multi-turn conversations (num_turns > 1)
|
|
170
|
+
2. The `.result` field only captures the FINAL message (often just a summary)
|
|
171
|
+
3. Full response content is LOST - judges only see truncated output
|
|
172
|
+
4. Scores are INVALID because judges evaluate incomplete data
|
|
173
|
+
|
|
174
|
+
**Evidence:** Miles Vorkosigan benchmark (2026-01-01) scored 76.69 with tools enabled vs Leo McGarry's 91.03 with `--tools ""`. Miles' runs had num_turns: 5-7 and judges only saw summaries, not full story breakdowns.
|
|
175
|
+
|
|
176
|
+
**CRITICAL: Use PIPE syntax, NOT heredocs.**
|
|
177
|
+
|
|
178
|
+
**NEVER USE HEREDOCS** - Heredoc syntax (`<<'EOF'`, `<<EOF`, `<<'PROMPT'`, etc.) FAILS in subagents.
|
|
179
|
+
The permission system treats heredocs differently and they get auto-denied.
|
|
180
|
+
|
|
181
|
+
**ALWAYS USE PIPE SYNTAX** - This works in both main sessions and subagents:
|
|
182
|
+
- `echo "$PROMPT" | claude -p ...` - WORKS
|
|
183
|
+
- `cat file.txt | claude -p ...` - WORKS
|
|
184
|
+
- `printf '%s' "$PROMPT" | claude -p ...` - WORKS
|
|
185
|
+
- `claude -p ... <<'EOF'` - **FAILS IN SUBAGENTS - DO NOT USE**
|
|
186
|
+
|
|
187
|
+
**CRITICAL: Use FILE REDIRECTION, NOT variable capture.**
|
|
188
|
+
|
|
189
|
+
**NEVER CAPTURE OUTPUT IN VARIABLES** - Command substitution with `$(...)` causes zsh parse errors
|
|
190
|
+
when the JSON output contains parentheses or special characters:
|
|
191
|
+
- `OUTPUT=$(cat file.txt | claude -p ...)` - **FAILS with `parse error near ')'`**
|
|
192
|
+
|
|
193
|
+
**ALWAYS REDIRECT TO FILES** - This avoids shell parsing issues:
|
|
194
|
+
- `cat file.txt | claude -p ... > output.json` - WORKS
|
|
195
|
+
- Then read: `jq -r '.result' output.json` - WORKS
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# Step 1: Capture timestamp to file (avoid variable capture issues)
|
|
199
|
+
date -u +%Y-%m-%dT%H:%M:%SZ > /tmp/timestamp_$$.txt
|
|
200
|
+
|
|
201
|
+
# Step 2: Write prompt to file using Write tool (avoids escaping issues)
|
|
202
|
+
# Use the Write tool to create: /tmp/prompt_$$.txt
|
|
203
|
+
|
|
204
|
+
# Step 3: Execute with file redirection (NOT variable capture)
|
|
205
|
+
cat /tmp/prompt_$$.txt | claude -p --output-format json --tools "" > /tmp/output_$$.json
|
|
206
|
+
|
|
207
|
+
# Step 4: Extract results from files
|
|
208
|
+
TIMESTAMP=$(cat /tmp/timestamp_$$.txt)
|
|
209
|
+
RESPONSE=$(jq -r '.result' /tmp/output_$$.json)
|
|
210
|
+
INPUT_TOKENS=$(jq -r '.usage.input_tokens // 0' /tmp/output_$$.json)
|
|
211
|
+
OUTPUT_TOKENS=$(jq -r '.usage.output_tokens // 0' /tmp/output_$$.json)
|
|
212
|
+
|
|
213
|
+
# Step 5: Cleanup
|
|
214
|
+
rm -f /tmp/timestamp_$$.txt /tmp/prompt_$$.txt /tmp/output_$$.json
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Why file redirection works:** The shell never tries to parse the JSON output.
|
|
218
|
+
It goes directly to a file, then jq reads it safely.
|
|
219
|
+
|
|
220
|
+
## Step 5: Check Mode
|
|
221
|
+
|
|
222
|
+
**If `--no-judge`:** Return raw response and metadata, STOP.
|
|
223
|
+
|
|
224
|
+
```markdown
|
|
225
|
+
## Solo Agent Response
|
|
226
|
+
|
|
227
|
+
**Contestant:** {spec} ({character})
|
|
228
|
+
**Scenario:** {scenario_name}
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
{response}
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"spec": "{spec}",
|
|
239
|
+
"character": "{character}",
|
|
240
|
+
"cli_timestamp": "{TIMESTAMP}",
|
|
241
|
+
"response_length": {length},
|
|
242
|
+
"input_tokens": {INPUT_TOKENS},
|
|
243
|
+
"output_tokens": {OUTPUT_TOKENS}
|
|
244
|
+
}
|
|
245
|
+
```
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**If full mode:** Continue to Step 6.
|
|
249
|
+
|
|
250
|
+
## Step 6: Invoke Judge Skill
|
|
251
|
+
|
|
252
|
+
**Detect SWE-bench scenarios for deterministic evaluation:**
|
|
253
|
+
|
|
254
|
+
Check if the scenario is from SWE-bench by looking at its path or category:
|
|
255
|
+
```python
|
|
256
|
+
is_swebench = (
|
|
257
|
+
'swe-bench' in scenario_path.lower() or
|
|
258
|
+
scenario.get('category') == 'swe-bench' or
|
|
259
|
+
scenario.get('source') == 'swe-bench'
|
|
260
|
+
)
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**If SWE-bench scenario:**
|
|
264
|
+
|
|
265
|
+
Use deterministic Python-based evaluation instead of LLM-as-judge:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
# Save response to temp file for Python judge
|
|
269
|
+
echo '{"result": "{RESPONSE}"}' > /tmp/solo_response_$$.json
|
|
270
|
+
|
|
271
|
+
# Run SWE-bench judge (deterministic scoring against ground truth)
|
|
272
|
+
python3 .pennyfarthing/scripts/test/swebench-judge.py {scenario_name} /tmp/solo_response_$$.json
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
The Python script returns:
|
|
276
|
+
- `total`: Score out of 100
|
|
277
|
+
- `scores`: Breakdown by category (root_cause, fix_quality, completeness, persona)
|
|
278
|
+
- `details`: Specific findings and matches
|
|
279
|
+
|
|
280
|
+
**If standard scenario (non-SWE-bench):**
|
|
281
|
+
|
|
282
|
+
Use LLM-as-judge:
|
|
283
|
+
```
|
|
284
|
+
/judge --mode solo --data {
|
|
285
|
+
"spec": "{spec}",
|
|
286
|
+
"character": "{character}",
|
|
287
|
+
"challenge": "{prompt}",
|
|
288
|
+
"response": "{RESPONSE}"
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Capture: `score`, `judge_timestamp`, `judge_response`, `judge_tokens`
|
|
293
|
+
|
|
294
|
+
## Step 7: Invoke Finalize-Run Skill
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
/finalize-run --type solo --data {
|
|
298
|
+
"timestamp": "{ISO8601}",
|
|
299
|
+
"scenario": {"name": "{scenario_name}", "title": "{title}"},
|
|
300
|
+
"agents": [{
|
|
301
|
+
"spec": "{spec}",
|
|
302
|
+
"cli_timestamp": "{TIMESTAMP}",
|
|
303
|
+
"response_text": "{RESPONSE}",
|
|
304
|
+
"input_tokens": {INPUT_TOKENS},
|
|
305
|
+
"output_tokens": {OUTPUT_TOKENS}
|
|
306
|
+
}],
|
|
307
|
+
"judge": {
|
|
308
|
+
"cli_timestamp": "{judge_timestamp}",
|
|
309
|
+
"response_text": "{judge_response}",
|
|
310
|
+
"input_tokens": {judge_input},
|
|
311
|
+
"output_tokens": {judge_output}
|
|
312
|
+
},
|
|
313
|
+
"scores": {"{spec}": {score}},
|
|
314
|
+
"output_path": "internal/results/solo/{timestamp}-{theme}-{agent}.json"
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
## Step 8: Display Results
|
|
319
|
+
|
|
320
|
+
```markdown
|
|
321
|
+
## Solo Evaluation
|
|
322
|
+
|
|
323
|
+
{judge verdict}
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Efficiency
|
|
328
|
+
|
|
329
|
+
| Metric | Value |
|
|
330
|
+
|--------|-------|
|
|
331
|
+
| Agent Tokens | {agent_total} |
|
|
332
|
+
| Judge Tokens | {judge_total} |
|
|
333
|
+
| Score | {score}/100 |
|
|
334
|
+
| Tokens/Point | {tpp} |
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
✓ Saved to {output_path}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Step 9: Multi-Run Mode (if runs > 1)
|
|
342
|
+
|
|
343
|
+
1. Create output directory (see Step 10 for path logic)
|
|
344
|
+
2. Repeat Steps 4-7 for each run
|
|
345
|
+
3. Save each to `runs/run_{i}.json` and `runs/judge_{i}.json`
|
|
346
|
+
4. Calculate statistics and save summary.yaml (Step 10)
|
|
347
|
+
|
|
348
|
+
## Step 10: Save Summary (ALWAYS - even for n=1)
|
|
349
|
+
|
|
350
|
+
**Output path logic:**
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
if theme == "control":
|
|
354
|
+
base_path = "internal/results/baselines/{scenario}/{effective_role}/"
|
|
355
|
+
elif role_override: # cross-role mode
|
|
356
|
+
# Include character name and effective role for clarity
|
|
357
|
+
base_path = "internal/results/benchmarks/{scenario}/{theme}-{character}-as-{effective_role}/"
|
|
358
|
+
else:
|
|
359
|
+
base_path = "internal/results/benchmarks/{scenario}/{theme}-{effective_role}/"
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**Cross-role example:** `/solo shakespeare:prospero --as dev --scenario django-10554`
|
|
363
|
+
→ saves to `internal/results/benchmarks/django-10554/shakespeare-prospero-as-dev/`
|
|
364
|
+
|
|
365
|
+
**For ALL runs (including n=1):**
|
|
366
|
+
|
|
367
|
+
1. Create directory structure:
|
|
368
|
+
```bash
|
|
369
|
+
mkdir -p "{base_path}/runs"
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
2. Save run files:
|
|
373
|
+
- `runs/run_{i}.json` - Agent response + tokens
|
|
374
|
+
- `runs/judge_{i}.json` - Judge evaluation
|
|
375
|
+
|
|
376
|
+
3. Calculate statistics:
|
|
377
|
+
```python
|
|
378
|
+
scores = [run.score for run in runs]
|
|
379
|
+
mean = sum(scores) / len(scores)
|
|
380
|
+
std_dev = sqrt(sum((s - mean)^2 for s in scores) / len(scores))
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
4. **ALWAYS save summary.yaml:**
|
|
384
|
+
```yaml
|
|
385
|
+
# {theme}:{character} on {scenario} (as {effective_role})
|
|
386
|
+
# Generated: {ISO8601 timestamp}
|
|
387
|
+
|
|
388
|
+
agent:
|
|
389
|
+
theme: {theme}
|
|
390
|
+
character: {character_name}
|
|
391
|
+
effective_role: {effective_role} # role being performed
|
|
392
|
+
source_role: {source_role} # role where character normally lives
|
|
393
|
+
spec: {theme}:{character} # original spec
|
|
394
|
+
cross_role: {true if role_override else false}
|
|
395
|
+
|
|
396
|
+
scenario:
|
|
397
|
+
name: {scenario_name}
|
|
398
|
+
category: {category}
|
|
399
|
+
difficulty: {difficulty}
|
|
400
|
+
|
|
401
|
+
statistics:
|
|
402
|
+
n: {run_count}
|
|
403
|
+
mean: {mean:.2f}
|
|
404
|
+
std_dev: {std_dev:.2f}
|
|
405
|
+
min: {min_score}
|
|
406
|
+
max: {max_score}
|
|
407
|
+
scores: [{score1}, {score2}, ...]
|
|
408
|
+
|
|
409
|
+
efficiency:
|
|
410
|
+
avg_input_tokens: {avg_in}
|
|
411
|
+
avg_output_tokens: {avg_out}
|
|
412
|
+
tokens_per_point: {tpp:.2f}
|
|
413
|
+
|
|
414
|
+
metadata:
|
|
415
|
+
created_at: {ISO8601 timestamp}
|
|
416
|
+
pennyfarthing_version: {version from package.json} # REQUIRED
|
|
417
|
+
model: sonnet
|
|
418
|
+
|
|
419
|
+
# Include baseline comparison if baseline exists and theme != control
|
|
420
|
+
baseline_comparison:
|
|
421
|
+
control_mean: {baseline_mean}
|
|
422
|
+
control_stddev: {baseline_std}
|
|
423
|
+
delta: {mean - baseline_mean:+.2f}
|
|
424
|
+
|
|
425
|
+
runs:
|
|
426
|
+
- run_1.json
|
|
427
|
+
- run_2.json
|
|
428
|
+
# ...
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
5. Display:
|
|
432
|
+
```
|
|
433
|
+
✓ Saved {n} run(s) to {base_path}
|
|
434
|
+
✓ Summary: {base_path}/summary.yaml
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
</on-invoke>
|
|
438
|
+
|
|
439
|
+
<reference>
|
|
440
|
+
- **Judge Skill:** `.claude/project/skills/judge/SKILL.md`
|
|
441
|
+
- **Finalize-Run Skill:** `.claude/project/skills/finalize-run/SKILL.md`
|
|
442
|
+
- **Themes:** `pennyfarthing-dist/personas/themes/*.yaml`
|
|
443
|
+
- **Scenarios:** `scenarios/**/*.yaml`
|
|
444
|
+
- **Baselines:** `internal/results/baselines/{scenario}/{role}/` (control theme)
|
|
445
|
+
- **Benchmarks:** `internal/results/benchmarks/{scenario}/{theme}-{role}/` (all other themes)
|
|
446
|
+
- **Results README:** `internal/results/README.md`
|
|
447
|
+
</reference>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
1. Reviewer approves and merges the PR
|
|
16
16
|
2. SM runs `pf sprint story finish` (archive session, update Jira, clean up)
|
|
17
17
|
|
|
18
|
-
**Never** start new work while stories have open PRs. The merge gate blocks `/sprint work` if open PRs exist.
|
|
18
|
+
**Never** start new work while stories have open PRs. The merge gate blocks `/pf-sprint work` if open PRs exist.
|
|
19
19
|
|
|
20
20
|
**If stuck in incomplete state:**
|
|
21
21
|
- Open PRs? → Run `/reviewer` to complete reviews and merge
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<info>
|
|
30
30
|
**Workflow:** SM → TEA → Dev → Reviewer → SM. Trivial skips TEA.
|
|
31
31
|
|
|
32
|
-
**Skills:** `/sprint`, `/testing`, `/
|
|
32
|
+
**Skills:** `/pf-sprint`, `/pf-testing`, `/pf-jira`, `/pf-just`
|
|
33
33
|
|
|
34
34
|
**Efficiency:** Parallelize reads, batch bash with `&&`, spawn independent subagents together.
|
|
35
35
|
|
|
@@ -56,7 +56,7 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
|
|
|
56
56
|
|
|
57
57
|
<skills>
|
|
58
58
|
**Skills I Use:**
|
|
59
|
-
- `/sprint
|
|
59
|
+
- `/pf-sprint` - Sprint status and backlog
|
|
60
60
|
- `/architecture` - Architecture documentation
|
|
61
61
|
</skills>
|
|
62
62
|
|
|
@@ -57,8 +57,8 @@ From theme config. Model: haiku. Tasks: {What helpers do for this agent}
|
|
|
57
57
|
|
|
58
58
|
<skills>
|
|
59
59
|
**Skills I Use:**
|
|
60
|
-
- `/sprint
|
|
61
|
-
- `/testing` - Test execution patterns
|
|
60
|
+
- `/pf-sprint` - Sprint status and backlog
|
|
61
|
+
- `/pf-testing` - Test execution patterns
|
|
62
62
|
</skills>
|
|
63
63
|
|
|
64
64
|
<context>
|
|
@@ -75,12 +75,12 @@ Workflow state lives in session files (`.session/{story-id}-session.md`):
|
|
|
75
75
|
|
|
76
76
|
| Command | Purpose |
|
|
77
77
|
|---------|---------|
|
|
78
|
-
| `/workflow list` | List all workflows |
|
|
79
|
-
| `/workflow show [name]` | Show workflow details |
|
|
80
|
-
| `/workflow start <name>` | Start a workflow |
|
|
81
|
-
| `/workflow start <name> --mode <mode>` | Start in specific mode |
|
|
82
|
-
| `/workflow resume` | Resume interrupted workflow |
|
|
83
|
-
| `/workflow status` | Show current progress |
|
|
78
|
+
| `/pf-workflow list` | List all workflows |
|
|
79
|
+
| `/pf-workflow show [name]` | Show workflow details |
|
|
80
|
+
| `/pf-workflow start <name>` | Start a workflow |
|
|
81
|
+
| `/pf-workflow start <name> --mode <mode>` | Start in specific mode |
|
|
82
|
+
| `/pf-workflow resume` | Resume interrupted workflow |
|
|
83
|
+
| `/pf-workflow status` | Show current progress |
|
|
84
84
|
|
|
85
85
|
<info>
|
|
86
86
|
**Full docs:** `docs/BIKELANE.md`, `docs/BIKELANE-DIAGRAMS.md`
|
|
@@ -177,7 +177,7 @@ Session files can track active grants:
|
|
|
177
177
|
|
|
178
178
|
## Related Stories
|
|
179
179
|
|
|
180
|
-
- **33-2**: `/permissions` skill for viewing and managing grants
|
|
180
|
+
- **33-2**: `/pf-permissions` skill for viewing and managing grants
|
|
181
181
|
- **33-3**: Cyclist UI for permission prompts
|
|
182
182
|
- **33-4**: Spot permission grants (once/session/always implementation)
|
|
183
183
|
- **33-5**: Workflow permission presets
|
|
@@ -67,7 +67,7 @@ You can always override the detected level:
|
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
69
|
# Explicitly set scale level
|
|
70
|
-
/workflow start prd --scale 3
|
|
70
|
+
/pf-workflow start prd --scale 3
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
Or when asked during workflow initiation, specify your preferred level.
|
|
@@ -108,5 +108,5 @@ info = get_scale_level_info(level)
|
|
|
108
108
|
|
|
109
109
|
## Related
|
|
110
110
|
|
|
111
|
-
- [Workflow Skill](/workflow) - Workflow management commands
|
|
111
|
+
- [Workflow Skill](/pf-workflow) - Workflow management commands
|
|
112
112
|
- [PRD Workflow](../workflows/prd/) - Full PRD stepped workflow
|
|
@@ -240,7 +240,7 @@ When filtered, only shows epics with matching stories.
|
|
|
240
240
|
- `/new-work` is an alias for this command
|
|
241
241
|
Next steps after promote:
|
|
242
242
|
- Review appended YAML in current-sprint.yaml
|
|
243
|
-
- Create Jira epic: `/jira create epic <epic-id>`
|
|
243
|
+
- Create Jira epic: `/pf-jira create epic <epic-id>`
|
|
244
244
|
</when>
|
|
245
245
|
```
|
|
246
246
|
|
|
@@ -287,7 +287,7 @@ Never manually edit sprint YAML. Use the provided commands.
|
|
|
287
287
|
|
|
288
288
|
## Commands
|
|
289
289
|
|
|
290
|
-
### `/sprint story add <epic-id> "<title>" <points>`
|
|
290
|
+
### `/pf-sprint story add <epic-id> "<title>" <points>`
|
|
291
291
|
|
|
292
292
|
Add a new story to an epic.
|
|
293
293
|
|
|
@@ -312,12 +312,12 @@ Confirmation with new story ID and details.
|
|
|
312
312
|
</output>
|
|
313
313
|
|
|
314
314
|
<when>
|
|
315
|
-
After creating, use `/sprint story size` for sizing guidelines.
|
|
315
|
+
After creating, use `/pf-sprint story size` for sizing guidelines.
|
|
316
316
|
</when>
|
|
317
317
|
|
|
318
318
|
---
|
|
319
319
|
|
|
320
|
-
### `/sprint story finish <story-id>`
|
|
320
|
+
### `/pf-sprint story finish <story-id>`
|
|
321
321
|
|
|
322
322
|
Complete a story after PR merge.
|
|
323
323
|
|
|
@@ -359,16 +359,16 @@ d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$
|
|
|
359
359
|
|
|
360
360
|
| Command | Script/CLI |
|
|
361
361
|
|---------|------------|
|
|
362
|
-
| `/sprint story add ...` | `sprint story add` |
|
|
363
|
-
| `/sprint story size` | `sprint story size` |
|
|
364
|
-
| `/sprint story finish <id>` | `sprint story finish` |
|
|
362
|
+
| `/pf-sprint story add ...` | `sprint story add` |
|
|
363
|
+
| `/pf-sprint story size` | `sprint story size` |
|
|
364
|
+
| `/pf-sprint story finish <id>` | `sprint story finish` |
|
|
365
365
|
|
|
366
366
|
## Related Skills
|
|
367
367
|
|
|
368
368
|
| Skill | Purpose |
|
|
369
369
|
|-------|---------|
|
|
370
|
-
| `/sprint` | Sprint management |
|
|
371
|
-
| `/jira` | Jira operations |
|
|
370
|
+
| `/pf-sprint` | Sprint management |
|
|
371
|
+
| `/pf-jira` | Jira operations |
|
|
372
372
|
```
|
|
373
373
|
|
|
374
374
|
---
|
|
@@ -49,7 +49,7 @@ Tags that affect LLM behavior and attention.
|
|
|
49
49
|
```markdown
|
|
50
50
|
<info>
|
|
51
51
|
**Workflow:** SM → TEA → Dev → Reviewer → SM
|
|
52
|
-
**Skills:** `/sprint`, `/jira`, `/testing`
|
|
52
|
+
**Skills:** `/pf-sprint`, `/pf-jira`, `/pf-testing`
|
|
53
53
|
</info>
|
|
54
54
|
```
|
|
55
55
|
|
|
@@ -487,7 +487,7 @@ pf sprint check MSSCI-12038
|
|
|
487
487
|
```markdown
|
|
488
488
|
<when>
|
|
489
489
|
- Starting new development work
|
|
490
|
-
- After promote, create Jira epic with `/jira create epic`
|
|
490
|
+
- After promote, create Jira epic with `/pf-jira create epic`
|
|
491
491
|
</when>
|
|
492
492
|
```
|
|
493
493
|
|