@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,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-01-understand'
|
|
3
|
+
description: 'Analyze the requirement delta between current state and what user wants to build'
|
|
4
|
+
|
|
5
|
+
nextStepFile: './step-02-investigate.md'
|
|
6
|
+
skipToStepFile: './step-03-generate.md'
|
|
7
|
+
templateFile: '../tech-spec-template.md'
|
|
8
|
+
wipFile: '{implementation_artifacts}/tech-spec-wip.md'
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<purpose>Define the technical requirement delta and scope through conversational discovery. Perform surface-level code scans to verify the delta. Reserve deep investigation for Step 2.</purpose>
|
|
12
|
+
|
|
13
|
+
<instructions>Check for WIP, greet user, orient scan of codebase, ask informed questions, capture core understanding, initialize WIP file, present checkpoint menu.</instructions>
|
|
14
|
+
|
|
15
|
+
<output>Initialized WIP file at {wipFile} with problem statement, solution, scope, and stepsCompleted: [1].</output>
|
|
16
|
+
|
|
17
|
+
# Step 1: Analyze Requirement Delta
|
|
18
|
+
|
|
19
|
+
**Progress: Step 1 of 4** - Next: Deep Investigation
|
|
20
|
+
|
|
21
|
+
## RULES:
|
|
22
|
+
|
|
23
|
+
- MUST NOT skip steps.
|
|
24
|
+
- MUST NOT optimize sequence.
|
|
25
|
+
- MUST follow exact instructions.
|
|
26
|
+
- MUST NOT look ahead to future steps.
|
|
27
|
+
|
|
28
|
+
## CONTEXT:
|
|
29
|
+
|
|
30
|
+
- Variables from `workflow.yaml` are available in memory.
|
|
31
|
+
- Focus: Define the technical requirement delta and scope.
|
|
32
|
+
- Investigation: Perform surface-level code scans ONLY to verify the delta. Reserve deep dives into implementation consequences for Step 2.
|
|
33
|
+
- Objective: Establish a verifiable delta between current state and target state.
|
|
34
|
+
|
|
35
|
+
## SEQUENCE OF INSTRUCTIONS
|
|
36
|
+
|
|
37
|
+
### 0. Check for Work in Progress
|
|
38
|
+
|
|
39
|
+
a) **Before anything else, check if `{wipFile}` exists:**
|
|
40
|
+
|
|
41
|
+
b) **IF WIP FILE EXISTS:**
|
|
42
|
+
|
|
43
|
+
1. Read the frontmatter and extract: `title`, `slug`, `stepsCompleted`
|
|
44
|
+
2. Calculate progress: `lastStep = max(stepsCompleted)`
|
|
45
|
+
3. Present to user:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Found a tech-spec in progress:
|
|
49
|
+
|
|
50
|
+
**{title}** - Step {lastStep} of 4 complete
|
|
51
|
+
|
|
52
|
+
Is this what you're here to continue?
|
|
53
|
+
|
|
54
|
+
[Y] Yes, pick up where I left off
|
|
55
|
+
[N] No, archive it and start something new
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
4. **HALT and wait for user selection.**
|
|
59
|
+
|
|
60
|
+
a) **Menu Handling:**
|
|
61
|
+
|
|
62
|
+
- **[Y] Continue existing:**
|
|
63
|
+
- Jump directly to the appropriate step based on `stepsCompleted`:
|
|
64
|
+
- `[1]` → Load `{nextStepFile}` (Step 2)
|
|
65
|
+
- `[1, 2]` → Load `{skipToStepFile}` (Step 3)
|
|
66
|
+
- `[1, 2, 3]` → Load `./step-04-review.md` (Step 4)
|
|
67
|
+
- **[N] Archive and start fresh:**
|
|
68
|
+
- Rename `{wipFile}` to `{implementation_artifacts}/tech-spec-{slug}-archived-{date}.md`
|
|
69
|
+
|
|
70
|
+
### 1. Greet and Ask for Initial Request
|
|
71
|
+
|
|
72
|
+
a) **Greet the user briefly:**
|
|
73
|
+
|
|
74
|
+
"What are we building today?"
|
|
75
|
+
|
|
76
|
+
b) **Get their initial description.** Don't ask detailed questions yet - just understand enough to know where to look.
|
|
77
|
+
|
|
78
|
+
### 2. Quick Orient Scan
|
|
79
|
+
|
|
80
|
+
a) **Before asking detailed questions, do a rapid scan to understand the landscape:**
|
|
81
|
+
|
|
82
|
+
b) **Check for existing context docs:**
|
|
83
|
+
|
|
84
|
+
- Check `{implementation_artifacts}` and `{planning_artifacts}` for planning documents (PRD, architecture, epics, research)
|
|
85
|
+
- Check for `**/project-context.md` - if it exists, skim for patterns and conventions
|
|
86
|
+
- Check for any existing stories or specs related to user's request
|
|
87
|
+
|
|
88
|
+
c) **If user mentioned specific code/features, do a quick scan:**
|
|
89
|
+
|
|
90
|
+
- Search for relevant files/classes/functions they mentioned
|
|
91
|
+
- Skim the structure (don't deep-dive yet - that's Step 2)
|
|
92
|
+
- Note: tech stack, obvious patterns, file locations
|
|
93
|
+
|
|
94
|
+
d) **Build mental model:**
|
|
95
|
+
|
|
96
|
+
- What's the likely landscape for this feature?
|
|
97
|
+
- What's the likely scope based on what you found?
|
|
98
|
+
- What questions do you NOW have, informed by the code?
|
|
99
|
+
|
|
100
|
+
**This scan should take < 30 seconds. Just enough to ask smart questions.**
|
|
101
|
+
|
|
102
|
+
### 3. Ask Informed Questions
|
|
103
|
+
|
|
104
|
+
a) **Now ask clarifying questions - but make them INFORMED by what you found:**
|
|
105
|
+
|
|
106
|
+
Instead of generic questions like "What's the scope?", ask specific ones like:
|
|
107
|
+
- "`AuthService` handles validation in the controller - should the new field follow that pattern or move it to a dedicated validator?"
|
|
108
|
+
- "`NavigationSidebar` component uses local state for the 'collapsed' toggle - should we stick with that or move it to the global store?"
|
|
109
|
+
- "The epics doc mentions X - is this related?"
|
|
110
|
+
|
|
111
|
+
b) **If no existing code is found:**
|
|
112
|
+
|
|
113
|
+
- Ask about intended architecture, patterns, constraints
|
|
114
|
+
- Ask what similar systems they'd like to emulate
|
|
115
|
+
|
|
116
|
+
### 4. Capture Core Understanding
|
|
117
|
+
|
|
118
|
+
a) **From the conversation, extract and confirm:**
|
|
119
|
+
|
|
120
|
+
- **Title**: A clear, concise name for this work
|
|
121
|
+
- **Slug**: URL-safe version of title (lowercase, hyphens, no spaces)
|
|
122
|
+
- **Problem Statement**: What problem are we solving?
|
|
123
|
+
- **Solution**: High-level approach (1-2 sentences)
|
|
124
|
+
- **In Scope**: What's included
|
|
125
|
+
- **Out of Scope**: What's explicitly NOT included
|
|
126
|
+
|
|
127
|
+
b) **Ask the user to confirm the captured understanding before proceeding.**
|
|
128
|
+
|
|
129
|
+
### 5. Initialize WIP File
|
|
130
|
+
|
|
131
|
+
a) **Create the tech-spec WIP file:**
|
|
132
|
+
|
|
133
|
+
1. Copy template from `{templateFile}`
|
|
134
|
+
2. Write to `{wipFile}`
|
|
135
|
+
3. Update frontmatter with captured values:
|
|
136
|
+
```yaml
|
|
137
|
+
---
|
|
138
|
+
title: '{title}'
|
|
139
|
+
slug: '{slug}'
|
|
140
|
+
created: '{date}'
|
|
141
|
+
status: 'in-progress'
|
|
142
|
+
stepsCompleted: [1]
|
|
143
|
+
tech_stack: []
|
|
144
|
+
files_to_modify: []
|
|
145
|
+
code_patterns: []
|
|
146
|
+
test_patterns: []
|
|
147
|
+
---
|
|
148
|
+
```
|
|
149
|
+
4. Fill in Overview section with Problem Statement, Solution, and Scope
|
|
150
|
+
5. Fill in Context for Development section with any technical preferences or constraints gathered during informed discovery.
|
|
151
|
+
6. Write the file
|
|
152
|
+
|
|
153
|
+
b) **Report to user:**
|
|
154
|
+
|
|
155
|
+
"Created: `{wipFile}`
|
|
156
|
+
|
|
157
|
+
**Captured:**
|
|
158
|
+
|
|
159
|
+
- Title: {title}
|
|
160
|
+
- Problem: {problem_statement_summary}
|
|
161
|
+
- Scope: {scope_summary}"
|
|
162
|
+
|
|
163
|
+
### 6. Present Checkpoint Menu
|
|
164
|
+
|
|
165
|
+
a) **Display menu:**
|
|
166
|
+
|
|
167
|
+
Display: "**Select:** [P] Party Mode [C] Continue to Deep Investigation (Step 2 of 4)"
|
|
168
|
+
|
|
169
|
+
b) **HALT and wait for user selection.**
|
|
170
|
+
|
|
171
|
+
#### Menu Handling Logic:
|
|
172
|
+
|
|
173
|
+
- IF P: Execute party mode with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
|
|
174
|
+
- IF C: Verify `{wipFile}` has `stepsCompleted: [1]`, then read fully and follow: `{nextStepFile}`
|
|
175
|
+
- IF Any other comments or queries: respond helpfully then redisplay menu
|
|
176
|
+
|
|
177
|
+
#### EXECUTION RULES:
|
|
178
|
+
|
|
179
|
+
- ALWAYS halt and wait for user input after presenting menu
|
|
180
|
+
- ONLY proceed to next step when user selects 'C'
|
|
181
|
+
- After P execution, return to this menu
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## REQUIRED OUTPUTS:
|
|
186
|
+
|
|
187
|
+
- MUST initialize WIP file with captured metadata.
|
|
188
|
+
|
|
189
|
+
## VERIFICATION CHECKLIST:
|
|
190
|
+
|
|
191
|
+
- [ ] WIP check performed FIRST before any greeting.
|
|
192
|
+
- [ ] `{wipFile}` created with correct frontmatter, Overview, Context for Development, and `stepsCompleted: [1]`.
|
|
193
|
+
- [ ] User selected [C] to continue.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-02-investigate'
|
|
3
|
+
description: 'Map technical constraints and anchor points within the codebase'
|
|
4
|
+
|
|
5
|
+
nextStepFile: './step-03-generate.md'
|
|
6
|
+
wipFile: '{implementation_artifacts}/tech-spec-wip.md'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<purpose>Map the problem statement to specific anchor points in the codebase. Identify exact files to touch, classes/patterns to extend, and technical constraints.</purpose>
|
|
10
|
+
|
|
11
|
+
<instructions>Load WIP state, investigate codebase deeply, document technical context (stack, patterns, files, tests), update WIP file, present checkpoint menu.</instructions>
|
|
12
|
+
|
|
13
|
+
<output>Updated WIP file with technical context, files_to_modify, code_patterns, test_patterns, and stepsCompleted: [1, 2].</output>
|
|
14
|
+
|
|
15
|
+
# Step 2: Map Technical Constraints & Anchor Points
|
|
16
|
+
|
|
17
|
+
**Progress: Step 2 of 4** - Next: Generate Plan
|
|
18
|
+
|
|
19
|
+
## RULES:
|
|
20
|
+
|
|
21
|
+
- MUST NOT skip steps.
|
|
22
|
+
- MUST NOT optimize sequence.
|
|
23
|
+
- MUST follow exact instructions.
|
|
24
|
+
- MUST NOT generate the full spec yet (that's Step 3).
|
|
25
|
+
|
|
26
|
+
## CONTEXT:
|
|
27
|
+
|
|
28
|
+
- Requires `{wipFile}` from Step 1 with the "Problem Statement" defined.
|
|
29
|
+
- Focus: Map the problem statement to specific anchor points in the codebase.
|
|
30
|
+
- Output: Exact files to touch, classes/patterns to extend, and technical constraints identified.
|
|
31
|
+
- Objective: Provide the implementation-ready ground truth for the plan.
|
|
32
|
+
|
|
33
|
+
## SEQUENCE OF INSTRUCTIONS
|
|
34
|
+
|
|
35
|
+
### 1. Load Current State
|
|
36
|
+
|
|
37
|
+
**Read `{wipFile}` and extract:**
|
|
38
|
+
|
|
39
|
+
- Problem statement and scope from Overview section
|
|
40
|
+
- Any context gathered in Step 1
|
|
41
|
+
|
|
42
|
+
### 2. Execute Investigation Path
|
|
43
|
+
|
|
44
|
+
**Universal Code Investigation:**
|
|
45
|
+
|
|
46
|
+
_Isolate deep exploration in sub-agents/tasks where available. Return distilled summaries only to prevent context snowballing._
|
|
47
|
+
|
|
48
|
+
a) **Build on Step 1's Quick Scan**
|
|
49
|
+
|
|
50
|
+
Review what was found in Step 1's orient scan. Then ask:
|
|
51
|
+
|
|
52
|
+
"Based on my quick look, I see [files/patterns found]. Are there other files or directories I should investigate deeply?"
|
|
53
|
+
|
|
54
|
+
b) **Read and Analyze Code**
|
|
55
|
+
|
|
56
|
+
For each file/directory provided:
|
|
57
|
+
|
|
58
|
+
- Read the complete file(s)
|
|
59
|
+
- Identify patterns, conventions, coding style
|
|
60
|
+
- Note dependencies and imports
|
|
61
|
+
- Find related test files
|
|
62
|
+
|
|
63
|
+
**If NO relevant code is found (Clean Slate):**
|
|
64
|
+
|
|
65
|
+
- Identify the target directory where the feature should live.
|
|
66
|
+
- Scan parent directories for architectural context.
|
|
67
|
+
- Identify standard project utilities or boilerplate that SHOULD be used.
|
|
68
|
+
- Document this as "Confirmed Clean Slate" - establishing that no legacy constraints exist.
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
c) **Document Technical Context**
|
|
72
|
+
|
|
73
|
+
Capture and confirm with user:
|
|
74
|
+
|
|
75
|
+
- **Tech Stack**: Languages, frameworks, libraries
|
|
76
|
+
- **Code Patterns**: Architecture patterns, naming conventions, file structure
|
|
77
|
+
- **Files to Modify/Create**: Specific files that will need changes or new files to be created
|
|
78
|
+
- **Test Patterns**: How tests are structured, test frameworks used
|
|
79
|
+
|
|
80
|
+
d) **Look for project-context.md**
|
|
81
|
+
|
|
82
|
+
If `**/project-context.md` exists and wasn't loaded in Step 1:
|
|
83
|
+
|
|
84
|
+
- Load it now
|
|
85
|
+
- Extract patterns and conventions
|
|
86
|
+
- Note any rules that must be followed
|
|
87
|
+
|
|
88
|
+
### 3. Update WIP File
|
|
89
|
+
|
|
90
|
+
**Update `{wipFile}` frontmatter:**
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
---
|
|
94
|
+
# ... existing frontmatter ...
|
|
95
|
+
stepsCompleted: [1, 2]
|
|
96
|
+
tech_stack: ['{captured_tech_stack}']
|
|
97
|
+
files_to_modify: ['{captured_files}']
|
|
98
|
+
code_patterns: ['{captured_patterns}']
|
|
99
|
+
test_patterns: ['{captured_test_patterns}']
|
|
100
|
+
---
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Update the Context for Development section:**
|
|
104
|
+
|
|
105
|
+
Fill in:
|
|
106
|
+
|
|
107
|
+
- Codebase Patterns (from investigation)
|
|
108
|
+
- Files to Reference table (files reviewed)
|
|
109
|
+
- Technical Decisions (any decisions made during investigation)
|
|
110
|
+
|
|
111
|
+
**Report to user:**
|
|
112
|
+
|
|
113
|
+
"**Context Gathered:**
|
|
114
|
+
|
|
115
|
+
- Tech Stack: {tech_stack_summary}
|
|
116
|
+
- Files to Modify: {files_count} files identified
|
|
117
|
+
- Patterns: {patterns_summary}
|
|
118
|
+
- Tests: {test_patterns_summary}"
|
|
119
|
+
|
|
120
|
+
### 4. Present Checkpoint Menu
|
|
121
|
+
|
|
122
|
+
Display: "**Select:** [P] Party Mode [C] Continue to Generate Spec (Step 3 of 4)"
|
|
123
|
+
|
|
124
|
+
**HALT and wait for user selection.**
|
|
125
|
+
|
|
126
|
+
#### Menu Handling Logic:
|
|
127
|
+
|
|
128
|
+
- IF P: Execute party mode with current tech-spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update WIP file then redisplay menu, if no keep original then redisplay menu
|
|
129
|
+
- IF C: Verify frontmatter updated with `stepsCompleted: [1, 2]`, then read fully and follow: `{nextStepFile}`
|
|
130
|
+
- IF Any other comments or queries: respond helpfully then redisplay menu
|
|
131
|
+
|
|
132
|
+
#### EXECUTION RULES:
|
|
133
|
+
|
|
134
|
+
- ALWAYS halt and wait for user input after presenting menu
|
|
135
|
+
- ONLY proceed to next step when user selects 'C'
|
|
136
|
+
- After P execution, return to this menu
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## REQUIRED OUTPUTS:
|
|
141
|
+
|
|
142
|
+
- MUST document technical context (stack, patterns, files identified).
|
|
143
|
+
- MUST update `{wipFile}` with functional context.
|
|
144
|
+
|
|
145
|
+
## VERIFICATION CHECKLIST:
|
|
146
|
+
|
|
147
|
+
- [ ] Technical mapping performed and documented.
|
|
148
|
+
- [ ] `stepsCompleted: [1, 2]` set in frontmatter.
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-03-generate'
|
|
3
|
+
description: 'Build the implementation plan based on the technical mapping of constraints'
|
|
4
|
+
|
|
5
|
+
nextStepFile: './step-04-review.md'
|
|
6
|
+
wipFile: '{implementation_artifacts}/tech-spec-wip.md'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<purpose>Create the implementation sequence that addresses the requirement delta using the captured technical context. Produce actionable, ordered tasks with acceptance criteria.</purpose>
|
|
10
|
+
|
|
11
|
+
<instructions>Load WIP state, generate implementation tasks ordered by dependency, create Given/When/Then acceptance criteria, fill remaining sections (dependencies, testing, notes), write complete spec, proceed to review.</instructions>
|
|
12
|
+
|
|
13
|
+
<output>Complete tech-spec with implementation plan, acceptance criteria, and status set to 'review'. stepsCompleted: [1, 2, 3].</output>
|
|
14
|
+
|
|
15
|
+
# Step 3: Generate Implementation Plan
|
|
16
|
+
|
|
17
|
+
**Progress: Step 3 of 4** - Next: Review & Finalize
|
|
18
|
+
|
|
19
|
+
## RULES:
|
|
20
|
+
|
|
21
|
+
- MUST NOT skip steps.
|
|
22
|
+
- MUST NOT optimize sequence.
|
|
23
|
+
- MUST follow exact instructions.
|
|
24
|
+
- MUST NOT implement anything - just document.
|
|
25
|
+
|
|
26
|
+
## CONTEXT:
|
|
27
|
+
|
|
28
|
+
- Requires `{wipFile}` with defined "Overview" and "Context for Development" sections.
|
|
29
|
+
- Focus: Create the implementation sequence that addresses the requirement delta using the captured technical context.
|
|
30
|
+
- Output: Implementation-ready tasks with specific files and instructions.
|
|
31
|
+
|
|
32
|
+
## READY FOR DEVELOPMENT STANDARD:
|
|
33
|
+
|
|
34
|
+
A specification is considered "Ready for Development" ONLY if it meets the following:
|
|
35
|
+
|
|
36
|
+
- **Actionable**: Every task has a clear file path and specific action.
|
|
37
|
+
- **Logical**: Tasks are ordered by dependency (lowest level first).
|
|
38
|
+
- **Testable**: All ACs follow Given/When/Then and cover happy path and edge cases.
|
|
39
|
+
- **Complete**: All investigation results from Step 2 are inlined; no placeholders or "TBD".
|
|
40
|
+
- **Self-Contained**: A fresh agent can implement the feature without reading the workflow history.
|
|
41
|
+
|
|
42
|
+
## SEQUENCE OF INSTRUCTIONS
|
|
43
|
+
|
|
44
|
+
### 1. Load Current State
|
|
45
|
+
|
|
46
|
+
**Read `{wipFile}` completely and extract:**
|
|
47
|
+
|
|
48
|
+
- All frontmatter values
|
|
49
|
+
- Overview section (Problem, Solution, Scope)
|
|
50
|
+
- Context for Development section (Patterns, Files, Decisions)
|
|
51
|
+
|
|
52
|
+
### 2. Generate Implementation Plan
|
|
53
|
+
|
|
54
|
+
Generate specific implementation tasks:
|
|
55
|
+
|
|
56
|
+
a) **Task Breakdown**
|
|
57
|
+
|
|
58
|
+
- Each task should be a discrete, completable unit of work
|
|
59
|
+
- Tasks should be ordered logically (dependencies first)
|
|
60
|
+
- Include the specific files to modify in each task
|
|
61
|
+
- Be explicit about what changes to make
|
|
62
|
+
|
|
63
|
+
b) **Task Format**
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
- [ ] Task N: Clear action description
|
|
67
|
+
- File: `path/to/file.ext`
|
|
68
|
+
- Action: Specific change to make
|
|
69
|
+
- Notes: Any implementation details
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 3. Generate Acceptance Criteria
|
|
73
|
+
|
|
74
|
+
**Create testable acceptance criteria:**
|
|
75
|
+
|
|
76
|
+
Each AC should follow Given/When/Then format:
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
- [ ] AC N: Given [precondition], when [action], then [expected result]
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Ensure ACs cover:**
|
|
83
|
+
|
|
84
|
+
- Happy path functionality
|
|
85
|
+
- Error handling
|
|
86
|
+
- Edge cases (if relevant)
|
|
87
|
+
- Integration points (if relevant)
|
|
88
|
+
|
|
89
|
+
### 4. Complete Additional Context
|
|
90
|
+
|
|
91
|
+
**Fill in remaining sections:**
|
|
92
|
+
|
|
93
|
+
a) **Dependencies**
|
|
94
|
+
|
|
95
|
+
- External libraries or services needed
|
|
96
|
+
- Other tasks or features this depends on
|
|
97
|
+
- API or data dependencies
|
|
98
|
+
|
|
99
|
+
b) **Testing Strategy**
|
|
100
|
+
|
|
101
|
+
- Unit tests needed
|
|
102
|
+
- Integration tests needed
|
|
103
|
+
- Manual testing steps
|
|
104
|
+
|
|
105
|
+
c) **Notes**
|
|
106
|
+
|
|
107
|
+
- High-risk items from pre-mortem analysis
|
|
108
|
+
- Known limitations
|
|
109
|
+
- Future considerations (out of scope but worth noting)
|
|
110
|
+
|
|
111
|
+
### 5. Write Complete Spec
|
|
112
|
+
|
|
113
|
+
a) **Update `{wipFile}` with all generated content:**
|
|
114
|
+
|
|
115
|
+
- Ensure all template sections are filled in
|
|
116
|
+
- No placeholder text remaining
|
|
117
|
+
- All frontmatter values current
|
|
118
|
+
- Update status to 'review' (NOT 'ready-for-dev' - that happens after user review in Step 4)
|
|
119
|
+
|
|
120
|
+
b) **Update frontmatter:**
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
---
|
|
124
|
+
# ... existing values ...
|
|
125
|
+
status: 'review'
|
|
126
|
+
stepsCompleted: [1, 2, 3]
|
|
127
|
+
---
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
c) **Read fully and follow: `{nextStepFile}` (Step 4)**
|
|
131
|
+
|
|
132
|
+
## REQUIRED OUTPUTS:
|
|
133
|
+
|
|
134
|
+
- Tasks MUST be specific, actionable, ordered logically, with files to modify.
|
|
135
|
+
- ACs MUST be testable, using Given/When/Then format.
|
|
136
|
+
- Status MUST be updated to 'review'.
|
|
137
|
+
|
|
138
|
+
## VERIFICATION CHECKLIST:
|
|
139
|
+
|
|
140
|
+
- [ ] `stepsCompleted: [1, 2, 3]` set in frontmatter.
|
|
141
|
+
- [ ] Spec meets the **READY FOR DEVELOPMENT** standard.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'step-04-review'
|
|
3
|
+
description: 'Review and finalize the tech-spec'
|
|
4
|
+
|
|
5
|
+
wipFile: '{implementation_artifacts}/tech-spec-wip.md'
|
|
6
|
+
quick_dev_workflow: '{project_root}/.pennyfarthing/workflows/quick-dev/workflow.yaml'
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
<purpose>Present complete spec for user review, iterate on feedback, finalize to ready-for-dev status, and provide clear next-step guidance.</purpose>
|
|
10
|
+
|
|
11
|
+
<instructions>Present complete spec, handle review feedback, finalize when approved (rename file, update status), present final menu with adversarial review and dev options.</instructions>
|
|
12
|
+
|
|
13
|
+
<output>Finalized tech-spec at {implementation_artifacts}/tech-spec-{slug}.md with status 'ready-for-dev' and stepsCompleted: [1, 2, 3, 4].</output>
|
|
14
|
+
|
|
15
|
+
# Step 4: Review & Finalize
|
|
16
|
+
|
|
17
|
+
**Progress: Step 4 of 4** - Final Step
|
|
18
|
+
|
|
19
|
+
## RULES:
|
|
20
|
+
|
|
21
|
+
- MUST NOT skip steps.
|
|
22
|
+
- MUST NOT optimize sequence.
|
|
23
|
+
- MUST follow exact instructions.
|
|
24
|
+
|
|
25
|
+
## CONTEXT:
|
|
26
|
+
|
|
27
|
+
- Requires `{wipFile}` from Step 3.
|
|
28
|
+
- MUST present COMPLETE spec content. Iterate until user is satisfied.
|
|
29
|
+
|
|
30
|
+
## READY FOR DEVELOPMENT STANDARD:
|
|
31
|
+
|
|
32
|
+
A specification is considered "Ready for Development" ONLY if it meets the following:
|
|
33
|
+
|
|
34
|
+
- **Actionable**: Every task has a clear file path and specific action.
|
|
35
|
+
- **Logical**: Tasks are ordered by dependency (lowest level first).
|
|
36
|
+
- **Testable**: All ACs follow Given/When/Then and cover happy path and edge cases.
|
|
37
|
+
- **Complete**: All investigation results from Step 2 are inlined; no placeholders or "TBD".
|
|
38
|
+
- **Self-Contained**: A fresh agent can implement the feature without reading the workflow history.
|
|
39
|
+
|
|
40
|
+
## SEQUENCE OF INSTRUCTIONS
|
|
41
|
+
|
|
42
|
+
### 1. Load and Present Complete Spec
|
|
43
|
+
|
|
44
|
+
**Read `{wipFile}` completely and extract `slug` from frontmatter for later use.**
|
|
45
|
+
|
|
46
|
+
**Present to user:**
|
|
47
|
+
|
|
48
|
+
"Here's your complete tech-spec. Please review:"
|
|
49
|
+
|
|
50
|
+
[Display the complete spec content - all sections]
|
|
51
|
+
|
|
52
|
+
"**Quick Summary:**
|
|
53
|
+
|
|
54
|
+
- {task_count} tasks to implement
|
|
55
|
+
- {ac_count} acceptance criteria to verify
|
|
56
|
+
- {files_count} files to modify"
|
|
57
|
+
|
|
58
|
+
**Present review menu:**
|
|
59
|
+
|
|
60
|
+
Display: "**Select:** [C] Continue [E] Edit [Q] Questions [P] Party Mode"
|
|
61
|
+
|
|
62
|
+
**HALT and wait for user selection.**
|
|
63
|
+
|
|
64
|
+
#### Menu Handling Logic:
|
|
65
|
+
|
|
66
|
+
- IF C: Proceed to Section 3 (Finalize the Spec)
|
|
67
|
+
- IF E: Proceed to Section 2 (Handle Review Feedback), then return here and redisplay menu
|
|
68
|
+
- IF Q: Answer questions, then redisplay this menu
|
|
69
|
+
- IF P: Execute party mode with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
|
|
70
|
+
- IF Any other comments or queries: respond helpfully then redisplay menu
|
|
71
|
+
|
|
72
|
+
#### EXECUTION RULES:
|
|
73
|
+
|
|
74
|
+
- ALWAYS halt and wait for user input after presenting menu
|
|
75
|
+
- ONLY proceed to finalize when user selects 'C'
|
|
76
|
+
- After other menu items execution, return to this menu
|
|
77
|
+
|
|
78
|
+
### 2. Handle Review Feedback
|
|
79
|
+
|
|
80
|
+
a) **If user requests changes:**
|
|
81
|
+
|
|
82
|
+
- Make the requested edits to `{wipFile}`
|
|
83
|
+
- Re-present the affected sections
|
|
84
|
+
- Ask if there are more changes
|
|
85
|
+
- Loop until user is satisfied
|
|
86
|
+
|
|
87
|
+
b) **If the spec does NOT meet the "Ready for Development" standard:**
|
|
88
|
+
|
|
89
|
+
- Point out the missing/weak sections (e.g., non-actionable tasks, missing ACs).
|
|
90
|
+
- Propose specific improvements to reach the standard.
|
|
91
|
+
- Make the edits once the user agrees.
|
|
92
|
+
|
|
93
|
+
c) **If user has questions:**
|
|
94
|
+
|
|
95
|
+
- Answer questions about the spec
|
|
96
|
+
- Clarify any confusing sections
|
|
97
|
+
- Make clarifying edits if needed
|
|
98
|
+
|
|
99
|
+
### 3. Finalize the Spec
|
|
100
|
+
|
|
101
|
+
**When user confirms the spec is good AND it meets the "Ready for Development" standard:**
|
|
102
|
+
|
|
103
|
+
a) Update `{wipFile}` frontmatter:
|
|
104
|
+
|
|
105
|
+
```yaml
|
|
106
|
+
---
|
|
107
|
+
# ... existing values ...
|
|
108
|
+
status: 'ready-for-dev'
|
|
109
|
+
stepsCompleted: [1, 2, 3, 4]
|
|
110
|
+
---
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
b) **Rename WIP file to final filename:**
|
|
114
|
+
- Using the `slug` extracted in Section 1
|
|
115
|
+
- Rename `{wipFile}` → `{implementation_artifacts}/tech-spec-{slug}.md`
|
|
116
|
+
- Store this as `finalFile` for use in menus below
|
|
117
|
+
|
|
118
|
+
### 4. Present Final Menu
|
|
119
|
+
|
|
120
|
+
a) **Display completion message and menu:**
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
**Tech-Spec Complete!**
|
|
124
|
+
|
|
125
|
+
Saved to: {finalFile}
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
**Next Steps:**
|
|
130
|
+
|
|
131
|
+
[R] Adversarial Review - critique of the spec (recommended)
|
|
132
|
+
[B] Begin Development - start implementing now (not recommended)
|
|
133
|
+
[D] Done - exit workflow
|
|
134
|
+
[P] Party Mode - get expert feedback before dev
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
Once you are fully satisfied with the spec (ideally after **Adversarial Review**),
|
|
139
|
+
it is recommended to run implementation in a FRESH CONTEXT for best results.
|
|
140
|
+
|
|
141
|
+
Copy this prompt to start dev:
|
|
142
|
+
|
|
143
|
+
quick-dev {finalFile}
|
|
144
|
+
|
|
145
|
+
This ensures the dev agent has clean context focused solely on implementation.
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
b) **HALT and wait for user selection.**
|
|
149
|
+
|
|
150
|
+
#### Menu Handling Logic:
|
|
151
|
+
|
|
152
|
+
- IF R: Execute adversarial review — review the spec critically, looking for gaps, ambiguities, missing edge cases, untestable requirements, and implementation risks. Present findings numbered (F1, F2, ...) ordered by severity with columns: ID, Severity, Validity, Description. Return to this menu.
|
|
153
|
+
- IF B: Read the entire workflow file at `{quick_dev_workflow}` and follow the instructions with the final spec file (warn: fresh context is better)
|
|
154
|
+
- IF D: Exit workflow - display final confirmation and path to spec
|
|
155
|
+
- IF P: Execute party mode with current spec content, process collaborative insights, ask user "Accept changes? (y/n)", if yes update spec then redisplay menu, if no keep original then redisplay menu
|
|
156
|
+
- IF Any other comments or queries: respond helpfully then redisplay menu
|
|
157
|
+
|
|
158
|
+
#### EXECUTION RULES:
|
|
159
|
+
|
|
160
|
+
- ALWAYS halt and wait for user input after presenting menu
|
|
161
|
+
- After P or R execution, return to this menu
|
|
162
|
+
|
|
163
|
+
### 5. Exit Workflow
|
|
164
|
+
|
|
165
|
+
**When user selects [D]:**
|
|
166
|
+
|
|
167
|
+
"**All done!** Your tech-spec is ready at:
|
|
168
|
+
|
|
169
|
+
`{finalFile}`
|
|
170
|
+
|
|
171
|
+
When you're ready to implement, run:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
quick-dev {finalFile}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Ship it!"
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## REQUIRED OUTPUTS:
|
|
182
|
+
|
|
183
|
+
- MUST update status to 'ready-for-dev'.
|
|
184
|
+
- MUST rename file to `tech-spec-{slug}.md`.
|
|
185
|
+
- MUST provide clear next-step guidance and recommend fresh context for dev.
|
|
186
|
+
|
|
187
|
+
## VERIFICATION CHECKLIST:
|
|
188
|
+
|
|
189
|
+
- [ ] Complete spec presented for review.
|
|
190
|
+
- [ ] Requested changes implemented.
|
|
191
|
+
- [ ] Spec verified against **READY FOR DEVELOPMENT** standard.
|
|
192
|
+
- [ ] `stepsCompleted: [1, 2, 3, 4]` set and file renamed.
|