@pennyfarthing/core 7.5.0 → 7.6.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/LICENSE +14 -0
- package/README.md +301 -0
- package/package.json +31 -36
- package/packages/core/dist/bmad/context-reader.d.ts +71 -0
- package/packages/core/dist/bmad/context-reader.d.ts.map +1 -0
- package/packages/core/dist/bmad/context-reader.js +369 -0
- package/packages/core/dist/bmad/context-reader.js.map +1 -0
- package/packages/core/dist/bmad/context-reader.test.d.ts +71 -0
- package/packages/core/dist/bmad/context-reader.test.d.ts.map +1 -0
- package/packages/core/dist/bmad/context-reader.test.js +878 -0
- package/packages/core/dist/bmad/context-reader.test.js.map +1 -0
- package/packages/core/dist/bmad/epics-parser.d.ts +61 -0
- package/packages/core/dist/bmad/epics-parser.d.ts.map +1 -0
- package/packages/core/dist/bmad/epics-parser.js +331 -0
- package/packages/core/dist/bmad/epics-parser.js.map +1 -0
- package/packages/core/dist/bmad/epics-parser.test.d.ts +7 -0
- package/packages/core/dist/bmad/epics-parser.test.d.ts.map +1 -0
- package/packages/core/dist/bmad/epics-parser.test.js +449 -0
- package/packages/core/dist/bmad/epics-parser.test.js.map +1 -0
- package/packages/core/dist/bmad/index.d.ts +11 -0
- package/packages/core/dist/bmad/index.d.ts.map +1 -0
- package/packages/core/dist/bmad/index.js +24 -0
- package/packages/core/dist/bmad/index.js.map +1 -0
- package/packages/core/dist/bmad/status-sync.d.ts +173 -0
- package/packages/core/dist/bmad/status-sync.d.ts.map +1 -0
- package/packages/core/dist/bmad/status-sync.js +463 -0
- package/packages/core/dist/bmad/status-sync.js.map +1 -0
- package/packages/core/dist/bmad/status-sync.test.d.ts +7 -0
- package/packages/core/dist/bmad/status-sync.test.d.ts.map +1 -0
- package/packages/core/dist/bmad/status-sync.test.js +702 -0
- package/packages/core/dist/bmad/status-sync.test.js.map +1 -0
- package/packages/core/dist/bmad/story-exporter.d.ts +55 -0
- package/packages/core/dist/bmad/story-exporter.d.ts.map +1 -0
- package/packages/core/dist/bmad/story-exporter.js +170 -0
- package/packages/core/dist/bmad/story-exporter.js.map +1 -0
- package/packages/core/dist/bmad/story-exporter.test.d.ts +51 -0
- package/packages/core/dist/bmad/story-exporter.test.d.ts.map +1 -0
- package/packages/core/dist/bmad/story-exporter.test.js +603 -0
- package/packages/core/dist/bmad/story-exporter.test.js.map +1 -0
- package/packages/core/dist/bmad/story-parser.d.ts +44 -0
- package/packages/core/dist/bmad/story-parser.d.ts.map +1 -0
- package/packages/core/dist/bmad/story-parser.js +307 -0
- package/packages/core/dist/bmad/story-parser.js.map +1 -0
- package/packages/core/dist/bmad/story-parser.test.d.ts +44 -0
- package/packages/core/dist/bmad/story-parser.test.d.ts.map +1 -0
- package/packages/core/dist/bmad/story-parser.test.js +693 -0
- package/packages/core/dist/bmad/story-parser.test.js.map +1 -0
- package/packages/core/dist/cli/commands/command.d.ts +28 -0
- package/packages/core/dist/cli/commands/command.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/command.js +399 -0
- package/packages/core/dist/cli/commands/command.js.map +1 -0
- package/packages/core/dist/cli/commands/cyclist.d.ts +46 -0
- package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/cyclist.js +196 -0
- package/packages/core/dist/cli/commands/cyclist.js.map +1 -0
- package/packages/core/dist/cli/commands/cyclist.test.d.ts +13 -0
- package/packages/core/dist/cli/commands/cyclist.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/cyclist.test.js +245 -0
- package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -0
- package/packages/core/dist/cli/commands/doctor-legacy.test.d.ts +13 -0
- package/packages/core/dist/cli/commands/doctor-legacy.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/doctor-legacy.test.js +207 -0
- package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -0
- package/packages/core/dist/cli/commands/doctor.d.ts +25 -0
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/doctor.js +780 -0
- package/packages/core/dist/cli/commands/doctor.js.map +1 -0
- package/packages/core/dist/cli/commands/init.d.ts +8 -0
- package/packages/core/dist/cli/commands/init.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/init.js +515 -0
- package/packages/core/dist/cli/commands/init.js.map +1 -0
- package/packages/core/dist/cli/commands/skill.d.ts +28 -0
- package/packages/core/dist/cli/commands/skill.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/skill.js +416 -0
- package/packages/core/dist/cli/commands/skill.js.map +1 -0
- package/packages/core/dist/cli/commands/theme.d.ts +21 -0
- package/packages/core/dist/cli/commands/theme.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/theme.js +201 -0
- package/packages/core/dist/cli/commands/theme.js.map +1 -0
- package/packages/core/dist/cli/commands/uninstall.d.ts +8 -0
- package/packages/core/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/uninstall.js +237 -0
- package/packages/core/dist/cli/commands/uninstall.js.map +1 -0
- package/packages/core/dist/cli/commands/update.d.ts +9 -0
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/update.js +390 -0
- package/packages/core/dist/cli/commands/update.js.map +1 -0
- package/packages/core/dist/cli/commands/version.d.ts +2 -0
- package/packages/core/dist/cli/commands/version.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/version.js +28 -0
- package/packages/core/dist/cli/commands/version.js.map +1 -0
- package/packages/core/dist/cli/customization.test.d.ts +12 -0
- package/packages/core/dist/cli/customization.test.d.ts.map +1 -0
- package/packages/core/dist/cli/customization.test.js +84 -0
- package/packages/core/dist/cli/customization.test.js.map +1 -0
- package/packages/core/dist/cli/cyclist-migration.test.d.ts +16 -0
- package/packages/core/dist/cli/cyclist-migration.test.d.ts.map +1 -0
- package/packages/core/dist/cli/cyclist-migration.test.js +225 -0
- package/packages/core/dist/cli/cyclist-migration.test.js.map +1 -0
- package/packages/core/dist/cli/index.d.ts +3 -0
- package/packages/core/dist/cli/index.d.ts.map +1 -0
- package/packages/core/dist/cli/index.js +174 -0
- package/packages/core/dist/cli/index.js.map +1 -0
- package/packages/core/dist/cli/ocean-profiles.test.d.ts +13 -0
- package/packages/core/dist/cli/ocean-profiles.test.d.ts.map +1 -0
- package/packages/core/dist/cli/ocean-profiles.test.js +134 -0
- package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -0
- package/packages/core/dist/cli/theme-maker.test.d.ts +11 -0
- package/packages/core/dist/cli/theme-maker.test.d.ts.map +1 -0
- package/packages/core/dist/cli/theme-maker.test.js +356 -0
- package/packages/core/dist/cli/theme-maker.test.js.map +1 -0
- package/packages/core/dist/cli/utils/constants.d.ts +66 -0
- package/packages/core/dist/cli/utils/constants.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/constants.js +54 -0
- package/packages/core/dist/cli/utils/constants.js.map +1 -0
- package/{dist → packages/core/dist}/cli/utils/files.d.ts +1 -0
- package/packages/core/dist/cli/utils/files.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/files.js +162 -0
- package/packages/core/dist/cli/utils/files.js.map +1 -0
- package/packages/core/dist/cli/utils/logger.d.ts +26 -0
- package/packages/core/dist/cli/utils/logger.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/logger.js +88 -0
- package/packages/core/dist/cli/utils/logger.js.map +1 -0
- package/{dist → packages/core/dist}/cli/utils/manifest.d.ts +1 -0
- package/packages/core/dist/cli/utils/manifest.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/manifest.js +90 -0
- package/packages/core/dist/cli/utils/manifest.js.map +1 -0
- package/packages/core/dist/cli/utils/node-modules.d.ts +6 -0
- package/packages/core/dist/cli/utils/node-modules.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/node-modules.js +32 -0
- package/packages/core/dist/cli/utils/node-modules.js.map +1 -0
- package/packages/core/dist/cli/utils/prompts.d.ts +34 -0
- package/packages/core/dist/cli/utils/prompts.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/prompts.js +93 -0
- package/packages/core/dist/cli/utils/prompts.js.map +1 -0
- package/packages/core/dist/cli/utils/symlinks.d.ts +44 -0
- package/packages/core/dist/cli/utils/symlinks.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/symlinks.js +327 -0
- package/packages/core/dist/cli/utils/symlinks.js.map +1 -0
- package/packages/core/dist/cli/utils/themes.d.ts +101 -0
- package/packages/core/dist/cli/utils/themes.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/themes.js +382 -0
- package/packages/core/dist/cli/utils/themes.js.map +1 -0
- package/packages/core/dist/cli/utils/themes.test.d.ts +12 -0
- package/packages/core/dist/cli/utils/themes.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/themes.test.js +147 -0
- package/packages/core/dist/cli/utils/themes.test.js.map +1 -0
- package/{dist → packages/core/dist}/cli/utils/version.d.ts +1 -0
- package/packages/core/dist/cli/utils/version.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/version.js +64 -0
- package/packages/core/dist/cli/utils/version.js.map +1 -0
- package/packages/core/dist/cli/workspace.test.d.ts +8 -0
- package/packages/core/dist/cli/workspace.test.d.ts.map +1 -0
- package/packages/core/dist/cli/workspace.test.js +156 -0
- package/packages/core/dist/cli/workspace.test.js.map +1 -0
- package/{dist → packages/core/dist}/index.d.ts +1 -0
- package/packages/core/dist/index.d.ts.map +1 -0
- package/packages/core/dist/index.js +20 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.d.ts +109 -0
- package/packages/core/dist/jira/jira-epic-creation.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.js +253 -0
- package/packages/core/dist/jira/jira-epic-creation.js.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.test.d.ts +16 -0
- package/packages/core/dist/jira/jira-epic-creation.test.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-epic-creation.test.js +387 -0
- package/packages/core/dist/jira/jira-epic-creation.test.js.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.d.ts +247 -0
- package/packages/core/dist/jira/jira-sprint-sync.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.js +670 -0
- package/packages/core/dist/jira/jira-sprint-sync.js.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.d.ts +16 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.d.ts.map +1 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.js +845 -0
- package/packages/core/dist/jira/jira-sprint-sync.test.js.map +1 -0
- package/{dist → packages/core/dist}/permissions/index.d.ts +1 -0
- package/packages/core/dist/permissions/index.d.ts.map +1 -0
- package/packages/core/dist/permissions/index.js +13 -0
- package/packages/core/dist/permissions/index.js.map +1 -0
- package/{dist → packages/core/dist}/permissions/permission-schema.d.ts +1 -0
- package/packages/core/dist/permissions/permission-schema.d.ts.map +1 -0
- package/{dist → packages/core/dist}/permissions/permission-schema.js +9 -13
- package/packages/core/dist/permissions/permission-schema.js.map +1 -0
- package/packages/core/dist/permissions/permission-schema.test.d.ts +40 -0
- package/packages/core/dist/permissions/permission-schema.test.d.ts.map +1 -0
- package/packages/core/dist/permissions/permission-schema.test.js +367 -0
- package/packages/core/dist/permissions/permission-schema.test.js.map +1 -0
- package/packages/core/dist/scripts/add-ocean-profiles.d.ts +9 -0
- package/packages/core/dist/scripts/add-ocean-profiles.d.ts.map +1 -0
- package/packages/core/dist/scripts/add-ocean-profiles.js +695 -0
- package/packages/core/dist/scripts/add-ocean-profiles.js.map +1 -0
- package/packages/core/dist/scripts/benchmark-integration.d.ts +182 -0
- package/packages/core/dist/scripts/benchmark-integration.d.ts.map +1 -0
- package/packages/core/dist/scripts/benchmark-integration.js +691 -0
- package/packages/core/dist/scripts/benchmark-integration.js.map +1 -0
- package/packages/core/dist/scripts/benchmark-integration.test.d.ts +13 -0
- package/packages/core/dist/scripts/benchmark-integration.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/benchmark-integration.test.js +680 -0
- package/packages/core/dist/scripts/benchmark-integration.test.js.map +1 -0
- package/packages/core/dist/scripts/debugging-scenarios.test.d.ts +18 -0
- package/packages/core/dist/scripts/debugging-scenarios.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/debugging-scenarios.test.js +317 -0
- package/packages/core/dist/scripts/debugging-scenarios.test.js.map +1 -0
- package/packages/core/dist/scripts/generate-all-spiders.d.ts +10 -0
- package/packages/core/dist/scripts/generate-all-spiders.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-all-spiders.js +306 -0
- package/packages/core/dist/scripts/generate-all-spiders.js.map +1 -0
- package/packages/core/dist/scripts/generate-report.d.ts +65 -0
- package/packages/core/dist/scripts/generate-report.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-report.js +378 -0
- package/packages/core/dist/scripts/generate-report.js.map +1 -0
- package/packages/core/dist/scripts/generate-report.test.d.ts +13 -0
- package/packages/core/dist/scripts/generate-report.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-report.test.js +363 -0
- package/packages/core/dist/scripts/generate-report.test.js.map +1 -0
- package/packages/core/dist/scripts/generate-spider-report.d.ts +65 -0
- package/packages/core/dist/scripts/generate-spider-report.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-spider-report.js +366 -0
- package/packages/core/dist/scripts/generate-spider-report.js.map +1 -0
- package/packages/core/dist/scripts/generate-spider-report.test.d.ts +13 -0
- package/packages/core/dist/scripts/generate-spider-report.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-spider-report.test.js +367 -0
- package/packages/core/dist/scripts/generate-spider-report.test.js.map +1 -0
- package/packages/core/dist/scripts/generate-spider.d.ts +47 -0
- package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-spider.js +338 -0
- package/packages/core/dist/scripts/generate-spider.js.map +1 -0
- package/packages/core/dist/scripts/generate-spider.test.d.ts +14 -0
- package/packages/core/dist/scripts/generate-spider.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-spider.test.js +271 -0
- package/packages/core/dist/scripts/generate-spider.test.js.map +1 -0
- package/{dist → packages/core/dist}/scripts/job-fair-aggregator.d.ts +1 -0
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts.map +1 -0
- package/packages/core/dist/scripts/job-fair-aggregator.js +547 -0
- package/packages/core/dist/scripts/job-fair-aggregator.js.map +1 -0
- package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts +14 -0
- package/packages/core/dist/scripts/job-fair-aggregator.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/job-fair-aggregator.test.js +616 -0
- package/packages/core/dist/scripts/job-fair-aggregator.test.js.map +1 -0
- package/packages/core/dist/scripts/run-ci.test.d.ts +20 -0
- package/packages/core/dist/scripts/run-ci.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/run-ci.test.js +127 -0
- package/packages/core/dist/scripts/run-ci.test.js.map +1 -0
- package/packages/core/dist/scripts/theme-detail.test.d.ts +10 -0
- package/packages/core/dist/scripts/theme-detail.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/theme-detail.test.js +199 -0
- package/packages/core/dist/scripts/theme-detail.test.js.map +1 -0
- package/packages/core/dist/scripts/validate-ocean-profiles.d.ts +9 -0
- package/packages/core/dist/scripts/validate-ocean-profiles.d.ts.map +1 -0
- package/packages/core/dist/scripts/validate-ocean-profiles.js +130 -0
- package/packages/core/dist/scripts/validate-ocean-profiles.js.map +1 -0
- package/packages/core/dist/workflow/gate-handler.d.ts +94 -0
- package/packages/core/dist/workflow/gate-handler.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-handler.js +189 -0
- package/packages/core/dist/workflow/gate-handler.js.map +1 -0
- package/packages/core/dist/workflow/gate-handler.test.d.ts +14 -0
- package/packages/core/dist/workflow/gate-handler.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-handler.test.js +543 -0
- package/packages/core/dist/workflow/gate-handler.test.js.map +1 -0
- package/packages/core/dist/workflow/generic-sm-finish.d.ts +89 -0
- package/packages/core/dist/workflow/generic-sm-finish.d.ts.map +1 -0
- package/packages/core/dist/workflow/generic-sm-finish.js +157 -0
- package/packages/core/dist/workflow/generic-sm-finish.js.map +1 -0
- package/packages/core/dist/workflow/generic-sm-setup.d.ts +138 -0
- package/packages/core/dist/workflow/generic-sm-setup.d.ts.map +1 -0
- package/packages/core/dist/workflow/generic-sm-setup.js +382 -0
- package/packages/core/dist/workflow/generic-sm-setup.js.map +1 -0
- package/packages/core/dist/workflow/handoff.d.ts +281 -0
- package/packages/core/dist/workflow/handoff.d.ts.map +1 -0
- package/packages/core/dist/workflow/handoff.js +411 -0
- package/packages/core/dist/workflow/handoff.js.map +1 -0
- package/packages/core/dist/workflow/handoff.test.d.ts +21 -0
- package/packages/core/dist/workflow/handoff.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/handoff.test.js +499 -0
- package/packages/core/dist/workflow/handoff.test.js.map +1 -0
- package/{dist → packages/core/dist}/workflow/index.d.ts +1 -0
- package/packages/core/dist/workflow/index.d.ts.map +1 -0
- package/packages/core/dist/workflow/index.js +24 -0
- package/packages/core/dist/workflow/index.js.map +1 -0
- package/packages/core/dist/workflow/session-state.d.ts +92 -0
- package/packages/core/dist/workflow/session-state.d.ts.map +1 -0
- package/packages/core/dist/workflow/session-state.js +198 -0
- package/packages/core/dist/workflow/session-state.js.map +1 -0
- package/packages/core/dist/workflow/session-state.test.d.ts +8 -0
- package/packages/core/dist/workflow/session-state.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/session-state.test.js +551 -0
- package/packages/core/dist/workflow/session-state.test.js.map +1 -0
- package/packages/core/dist/workflow/sm-subagents.test.d.ts +23 -0
- package/packages/core/dist/workflow/sm-subagents.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/sm-subagents.test.js +727 -0
- package/packages/core/dist/workflow/sm-subagents.test.js.map +1 -0
- package/packages/core/dist/workflow/step-parser.d.ts +45 -0
- package/packages/core/dist/workflow/step-parser.d.ts.map +1 -0
- package/packages/core/dist/workflow/step-parser.js +147 -0
- package/packages/core/dist/workflow/step-parser.js.map +1 -0
- package/packages/core/dist/workflow/step-parser.test.d.ts +14 -0
- package/packages/core/dist/workflow/step-parser.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/step-parser.test.js +470 -0
- package/packages/core/dist/workflow/step-parser.test.js.map +1 -0
- package/packages/core/dist/workflow/story-workflow-routing.test.d.ts +17 -0
- package/packages/core/dist/workflow/story-workflow-routing.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/story-workflow-routing.test.js +559 -0
- package/packages/core/dist/workflow/story-workflow-routing.test.js.map +1 -0
- package/packages/core/dist/workflow/test-cache.d.ts +131 -0
- package/packages/core/dist/workflow/test-cache.d.ts.map +1 -0
- package/packages/core/dist/workflow/test-cache.js +226 -0
- package/packages/core/dist/workflow/test-cache.js.map +1 -0
- package/packages/core/dist/workflow/test-cache.test.d.ts +17 -0
- package/packages/core/dist/workflow/test-cache.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/test-cache.test.js +438 -0
- package/packages/core/dist/workflow/test-cache.test.js.map +1 -0
- package/packages/core/dist/workflow/trimodal.d.ts +86 -0
- package/packages/core/dist/workflow/trimodal.d.ts.map +1 -0
- package/packages/core/dist/workflow/trimodal.js +118 -0
- package/packages/core/dist/workflow/trimodal.js.map +1 -0
- package/packages/core/dist/workflow/trimodal.test.d.ts +11 -0
- package/packages/core/dist/workflow/trimodal.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/trimodal.test.js +395 -0
- package/packages/core/dist/workflow/trimodal.test.js.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.d.ts +67 -0
- package/packages/core/dist/workflow/variable-resolver.d.ts.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.js +156 -0
- package/packages/core/dist/workflow/variable-resolver.js.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.test.d.ts +14 -0
- package/packages/core/dist/workflow/variable-resolver.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/variable-resolver.test.js +400 -0
- package/packages/core/dist/workflow/variable-resolver.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.d.ts +163 -0
- package/packages/core/dist/workflow/workflow-executor.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.js +197 -0
- package/packages/core/dist/workflow/workflow-executor.js.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.test.d.ts +8 -0
- package/packages/core/dist/workflow/workflow-executor.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-executor.test.js +444 -0
- package/packages/core/dist/workflow/workflow-executor.test.js.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-loader.d.ts +1 -0
- package/packages/core/dist/workflow/workflow-loader.d.ts.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-loader.js +34 -40
- package/packages/core/dist/workflow/workflow-loader.js.map +1 -0
- package/packages/core/dist/workflow/workflow-loader.test.d.ts +15 -0
- package/packages/core/dist/workflow/workflow-loader.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-loader.test.js +354 -0
- package/packages/core/dist/workflow/workflow-loader.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-migration.test.d.ts +17 -0
- package/packages/core/dist/workflow/workflow-migration.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-migration.test.js +371 -0
- package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-permissions.d.ts +1 -0
- package/packages/core/dist/workflow/workflow-permissions.d.ts.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-permissions.js +8 -14
- package/packages/core/dist/workflow/workflow-permissions.js.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.test.d.ts +15 -0
- package/packages/core/dist/workflow/workflow-permissions.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-permissions.test.js +301 -0
- package/packages/core/dist/workflow/workflow-permissions.test.js.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-router.d.ts +1 -0
- package/packages/core/dist/workflow/workflow-router.d.ts.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-router.js +51 -70
- package/packages/core/dist/workflow/workflow-router.js.map +1 -0
- package/packages/core/dist/workflow/workflow-router.test.d.ts +20 -0
- package/packages/core/dist/workflow/workflow-router.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-router.test.js +607 -0
- package/packages/core/dist/workflow/workflow-router.test.js.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-schema.d.ts +1 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -0
- package/{dist → packages/core/dist}/workflow/workflow-schema.js +59 -62
- package/packages/core/dist/workflow/workflow-schema.js.map +1 -0
- package/packages/core/dist/workflow/workflow-schema.test.d.ts +45 -0
- package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-schema.test.js +512 -0
- package/packages/core/dist/workflow/workflow-schema.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts +18 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.js +608 -0
- package/packages/core/dist/workflow/workflow-stepped-schema.test.js.map +1 -0
- package/pennyfarthing-dist/agents/README.md +340 -0
- package/pennyfarthing-dist/agents/architect.md +193 -0
- package/pennyfarthing-dist/agents/dev.md +259 -0
- package/pennyfarthing-dist/agents/devops.md +206 -0
- package/pennyfarthing-dist/agents/handoff.md +212 -0
- package/pennyfarthing-dist/agents/orchestrator.md +355 -0
- package/pennyfarthing-dist/agents/pm.md +169 -0
- package/pennyfarthing-dist/agents/reviewer-preflight.md +96 -0
- package/pennyfarthing-dist/agents/reviewer.md +377 -0
- package/pennyfarthing-dist/agents/sm-file-summary.md +58 -0
- package/pennyfarthing-dist/agents/sm-finish.md +61 -0
- package/pennyfarthing-dist/agents/sm-handoff.md +122 -0
- package/pennyfarthing-dist/agents/sm-setup.md +174 -0
- package/pennyfarthing-dist/agents/sm.md +649 -0
- package/pennyfarthing-dist/agents/tea.md +230 -0
- package/pennyfarthing-dist/agents/tech-writer.md +216 -0
- package/pennyfarthing-dist/agents/testing-runner.md +141 -0
- package/pennyfarthing-dist/agents/ux-designer.md +231 -0
- package/pennyfarthing-dist/agents/workflow-status-check.md +68 -0
- package/pennyfarthing-dist/commands/architect.md +7 -0
- package/pennyfarthing-dist/commands/benchmark-control.md +69 -0
- package/pennyfarthing-dist/commands/benchmark.md +467 -0
- package/pennyfarthing-dist/commands/brainstorming.md +91 -0
- package/pennyfarthing-dist/commands/check.md +156 -0
- package/pennyfarthing-dist/commands/chore.md +178 -0
- package/pennyfarthing-dist/commands/close-epic.md +139 -0
- package/pennyfarthing-dist/commands/continue-session.md +184 -0
- package/pennyfarthing-dist/commands/create-branches-from-story.md +358 -0
- package/pennyfarthing-dist/commands/create-theme.md +29 -0
- package/pennyfarthing-dist/commands/dev.md +7 -0
- package/pennyfarthing-dist/commands/devops.md +7 -0
- package/pennyfarthing-dist/commands/git-cleanup.md +340 -0
- package/pennyfarthing-dist/commands/health-check.md +141 -0
- package/pennyfarthing-dist/commands/help.md +264 -0
- package/pennyfarthing-dist/commands/job-fair.md +102 -0
- package/pennyfarthing-dist/commands/list-themes.md +21 -0
- package/pennyfarthing-dist/commands/orchestrator.md +7 -0
- package/pennyfarthing-dist/commands/parallel-work.md +71 -0
- package/pennyfarthing-dist/commands/party-mode.md +67 -0
- package/pennyfarthing-dist/commands/permissions.md +193 -0
- package/pennyfarthing-dist/commands/pm.md +7 -0
- package/pennyfarthing-dist/commands/prime.md +140 -0
- package/pennyfarthing-dist/commands/release.md +58 -0
- package/pennyfarthing-dist/commands/repo-status.md +49 -0
- package/pennyfarthing-dist/commands/retro.md +200 -0
- package/pennyfarthing-dist/commands/reviewer.md +7 -0
- package/pennyfarthing-dist/commands/run-ci.md +116 -0
- package/pennyfarthing-dist/commands/set-theme.md +56 -0
- package/pennyfarthing-dist/commands/show-theme.md +21 -0
- package/pennyfarthing-dist/commands/sm.md +7 -0
- package/pennyfarthing-dist/commands/solo.md +411 -0
- package/pennyfarthing-dist/commands/sprint-planning.md +109 -0
- package/pennyfarthing-dist/commands/sprint.md +133 -0
- package/pennyfarthing-dist/commands/standalone.md +194 -0
- package/pennyfarthing-dist/commands/start-epic.md +168 -0
- package/pennyfarthing-dist/commands/sync-epic-to-jira.md +184 -0
- package/pennyfarthing-dist/commands/sync-work-with-sprint.md +373 -0
- package/pennyfarthing-dist/commands/tea.md +7 -0
- package/pennyfarthing-dist/commands/tech-writer.md +7 -0
- package/pennyfarthing-dist/commands/theme-maker.md +676 -0
- package/pennyfarthing-dist/commands/update-domain-docs.md +83 -0
- package/pennyfarthing-dist/commands/ux-designer.md +7 -0
- package/pennyfarthing-dist/commands/work.md +122 -0
- package/pennyfarthing-dist/commands/workflow.md +21 -0
- package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +480 -0
- package/pennyfarthing-dist/guides/HOOKS.md +230 -0
- package/pennyfarthing-dist/guides/PROMPT-PATTERNS.md +338 -0
- package/pennyfarthing-dist/guides/SESSION-ARTIFACTS.md +193 -0
- package/pennyfarthing-dist/guides/XML-TAGS.md +156 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +264 -0
- package/pennyfarthing-dist/guides/agent-template-strategic.md +148 -0
- package/pennyfarthing-dist/guides/agent-template-tactical.md +162 -0
- package/pennyfarthing-dist/guides/measurement-framework.md +210 -0
- package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +746 -0
- package/pennyfarthing-dist/guides/patterns/fan-out-fan-in-pattern.md +574 -0
- package/pennyfarthing-dist/guides/patterns/helper-delegation-pattern.md +488 -0
- package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +402 -0
- package/pennyfarthing-dist/guides/permission-protocol.md +188 -0
- package/pennyfarthing-dist/guides/persona-loading.md +46 -0
- package/pennyfarthing-dist/guides/workflow-schema.md +257 -0
- package/pennyfarthing-dist/guides/worktree-mode.md +113 -0
- package/pennyfarthing-dist/output-styles/teaching.md +33 -0
- package/pennyfarthing-dist/output-styles/terse.md +20 -0
- package/pennyfarthing-dist/output-styles/verbose.md +28 -0
- package/pennyfarthing-dist/personas/themes/1984.yaml +312 -0
- package/pennyfarthing-dist/personas/themes/a-team.yaml +337 -0
- package/pennyfarthing-dist/personas/themes/agatha-christie.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +330 -0
- package/pennyfarthing-dist/personas/themes/all-stars.yaml +332 -0
- package/pennyfarthing-dist/personas/themes/ancient-philosophers.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +306 -0
- package/pennyfarthing-dist/personas/themes/arcane.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/arthurian-mythos.yaml +331 -0
- package/pennyfarthing-dist/personas/themes/avatar-the-last-airbender.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/babylon-5.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/black-sails.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +295 -0
- package/pennyfarthing-dist/personas/themes/bobiverse.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +327 -0
- package/pennyfarthing-dist/personas/themes/catch-22.yaml +316 -0
- package/pennyfarthing-dist/personas/themes/classical-composers.yaml +310 -0
- package/pennyfarthing-dist/personas/themes/control.yaml +197 -0
- package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +323 -0
- package/pennyfarthing-dist/personas/themes/deadwood.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/dickens.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/discworld.yaml +332 -0
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +290 -0
- package/pennyfarthing-dist/personas/themes/don-quixote.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/dune.yaml +307 -0
- package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/fargo.yaml +330 -0
- package/pennyfarthing-dist/personas/themes/film-auteurs.yaml +312 -0
- package/pennyfarthing-dist/personas/themes/firefly.yaml +328 -0
- package/pennyfarthing-dist/personas/themes/foundation.yaml +290 -0
- package/pennyfarthing-dist/personas/themes/futurama.yaml +321 -0
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +290 -0
- package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +373 -0
- package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +308 -0
- package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +308 -0
- package/pennyfarthing-dist/personas/themes/greek-mythology.yaml +330 -0
- package/pennyfarthing-dist/personas/themes/hannibal.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +324 -0
- package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +291 -0
- package/pennyfarthing-dist/personas/themes/historical-figures.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +331 -0
- package/pennyfarthing-dist/personas/themes/house-md.yaml +321 -0
- package/pennyfarthing-dist/personas/themes/imperial-radch.yaml +289 -0
- package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/jane-austen.yaml +287 -0
- package/pennyfarthing-dist/personas/themes/jazz-legends.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/justified.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +349 -0
- package/pennyfarthing-dist/personas/themes/les-miserables.yaml +299 -0
- package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +334 -0
- package/pennyfarthing-dist/personas/themes/lovecraft-mythos.yaml +334 -0
- package/pennyfarthing-dist/personas/themes/mad-max.yaml +355 -0
- package/pennyfarthing-dist/personas/themes/mad-men.yaml +289 -0
- package/pennyfarthing-dist/personas/themes/marvel-mcu.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/mash.yaml +337 -0
- package/pennyfarthing-dist/personas/themes/mass-effect.yaml +289 -0
- package/pennyfarthing-dist/personas/themes/military-commanders.yaml +306 -0
- package/pennyfarthing-dist/personas/themes/moby-dick.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/monty-python.yaml +303 -0
- package/pennyfarthing-dist/personas/themes/neuromancer.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/norse-mythology.yaml +329 -0
- package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +372 -0
- package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +298 -0
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +350 -0
- package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/rome.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/russian-masters.yaml +318 -0
- package/pennyfarthing-dist/personas/themes/sandman.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/shakespeare.yaml +301 -0
- package/pennyfarthing-dist/personas/themes/sherlock-holmes.yaml +289 -0
- package/pennyfarthing-dist/personas/themes/snow-crash.yaml +288 -0
- package/pennyfarthing-dist/personas/themes/software-pioneers.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +366 -0
- package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +334 -0
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +303 -0
- package/pennyfarthing-dist/personas/themes/succession.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/superfriends.yaml +338 -0
- package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +366 -0
- package/pennyfarthing-dist/personas/themes/the-americans.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/the-crown.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +343 -0
- package/pennyfarthing-dist/personas/themes/the-good-place.yaml +322 -0
- package/pennyfarthing-dist/personas/themes/the-matrix.yaml +353 -0
- package/pennyfarthing-dist/personas/themes/the-odyssey.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/the-office.yaml +330 -0
- package/pennyfarthing-dist/personas/themes/the-simpsons.yaml +308 -0
- package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/the-wire.yaml +311 -0
- package/pennyfarthing-dist/personas/themes/the-witcher.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/twin-peaks.yaml +302 -0
- package/pennyfarthing-dist/personas/themes/vorkosigan-saga.yaml +300 -0
- package/pennyfarthing-dist/personas/themes/watchmen.yaml +291 -0
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +291 -0
- package/pennyfarthing-dist/personas/themes/world-explorers.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +307 -0
- package/pennyfarthing-dist/personas/themes/x-files.yaml +302 -0
- package/pennyfarthing-dist/scripts/README.md +68 -0
- package/pennyfarthing-dist/scripts/core/README.md +26 -0
- package/pennyfarthing-dist/scripts/core/agent-session.sh +378 -0
- package/pennyfarthing-dist/scripts/core/check-context.sh +260 -0
- package/pennyfarthing-dist/scripts/core/handoff-marker.sh +90 -0
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +95 -0
- package/pennyfarthing-dist/scripts/core/prime.sh +136 -0
- package/pennyfarthing-dist/scripts/core/run.sh +75 -0
- package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +21 -0
- package/pennyfarthing-dist/scripts/git/README.md +25 -0
- package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +226 -0
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +127 -0
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +91 -0
- package/pennyfarthing-dist/scripts/git/release.sh +199 -0
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +494 -0
- package/pennyfarthing-dist/scripts/health/drift-detection.sh +162 -0
- package/pennyfarthing-dist/scripts/hooks/README.md +32 -0
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +87 -0
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +60 -0
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +65 -0
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +35 -0
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +166 -0
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +50 -0
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +71 -0
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +54 -0
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +97 -0
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +58 -0
- package/pennyfarthing-dist/scripts/jira/README.md +33 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +101 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +97 -0
- package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.mjs +327 -0
- package/pennyfarthing-dist/scripts/jira/jira-bidirectional-sync.test.mjs +503 -0
- package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +164 -0
- package/pennyfarthing-dist/scripts/jira/jira-lib.mjs +443 -0
- package/pennyfarthing-dist/scripts/jira/jira-lib.sh +464 -0
- package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +266 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync-story.mjs +208 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +8 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync.mjs +198 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync.sh +8 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +104 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +16 -0
- package/pennyfarthing-dist/scripts/lib/README.md +29 -0
- package/pennyfarthing-dist/scripts/lib/background-tasks.sh +177 -0
- package/pennyfarthing-dist/scripts/lib/checkpoint.sh +136 -0
- package/pennyfarthing-dist/scripts/lib/common.sh +157 -0
- package/pennyfarthing-dist/scripts/lib/file-lock.sh +269 -0
- package/pennyfarthing-dist/scripts/lib/find-root.sh +35 -0
- package/pennyfarthing-dist/scripts/lib/logging.sh +186 -0
- package/pennyfarthing-dist/scripts/lib/retry.sh +76 -0
- package/pennyfarthing-dist/scripts/misc/README.md +44 -0
- package/pennyfarthing-dist/scripts/misc/add-short-names.mjs +264 -0
- package/pennyfarthing-dist/scripts/misc/backlog.sh +91 -0
- package/pennyfarthing-dist/scripts/misc/check-status.sh +247 -0
- package/pennyfarthing-dist/scripts/misc/deploy.sh +284 -0
- package/pennyfarthing-dist/scripts/misc/doctor-dogfood.sh +392 -0
- package/pennyfarthing-dist/scripts/misc/find-related-work.sh +231 -0
- package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +110 -0
- package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +74 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.mjs +474 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +9 -0
- package/pennyfarthing-dist/scripts/misc/repo-scan.sh +141 -0
- package/pennyfarthing-dist/scripts/misc/repo-utils.sh +778 -0
- package/pennyfarthing-dist/scripts/misc/run-ci.sh +219 -0
- package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +7 -0
- package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +319 -0
- package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +193 -0
- package/pennyfarthing-dist/scripts/misc/statusline.sh +252 -0
- package/pennyfarthing-dist/scripts/misc/uninstall.sh +270 -0
- package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +160 -0
- package/pennyfarthing-dist/scripts/sprint/README.md +29 -0
- package/pennyfarthing-dist/scripts/sprint/archive-story.sh +135 -0
- package/pennyfarthing-dist/scripts/sprint/available-stories.sh +97 -0
- package/pennyfarthing-dist/scripts/sprint/check-story.sh +164 -0
- package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +58 -0
- package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +69 -0
- package/pennyfarthing-dist/scripts/sprint/import-epic-to-future.mjs +377 -0
- package/pennyfarthing-dist/scripts/sprint/import-epic-to-future.sh +9 -0
- package/pennyfarthing-dist/scripts/sprint/list-future.sh +151 -0
- package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +116 -0
- package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +164 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +421 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +39 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +241 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +134 -0
- package/pennyfarthing-dist/scripts/story/README.md +23 -0
- package/pennyfarthing-dist/scripts/story/create-story.sh +159 -0
- package/pennyfarthing-dist/scripts/story/size-story.sh +198 -0
- package/pennyfarthing-dist/scripts/story/story-template.sh +162 -0
- package/pennyfarthing-dist/scripts/test/README.md +23 -0
- package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +289 -0
- package/pennyfarthing-dist/scripts/test/swebench-judge.py +400 -0
- package/pennyfarthing-dist/scripts/test/test-cache.sh +165 -0
- package/pennyfarthing-dist/scripts/test/test-setup.sh +337 -0
- package/pennyfarthing-dist/scripts/tests/check.test.sh +582 -0
- package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +515 -0
- package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +599 -0
- package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +332 -0
- package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +573 -0
- package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +859 -0
- package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +662 -0
- package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +589 -0
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +105 -0
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +597 -0
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +514 -0
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +517 -0
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +331 -0
- package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +647 -0
- package/pennyfarthing-dist/scripts/theme/README.md +22 -0
- package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.js +492 -0
- package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +11 -0
- package/pennyfarthing-dist/scripts/theme/list-themes.sh +73 -0
- package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +97 -0
- package/pennyfarthing-dist/scripts/workflow/README.md +28 -0
- package/pennyfarthing-dist/scripts/workflow/check.sh +497 -0
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +159 -0
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +228 -0
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +124 -0
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +40 -0
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +163 -0
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +138 -0
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +256 -0
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +167 -0
- package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +242 -0
- package/pennyfarthing-dist/skills/changelog/SKILL.md +367 -0
- package/pennyfarthing-dist/skills/code-review/SKILL.md +168 -0
- package/pennyfarthing-dist/skills/context-engineering/SKILL.md +274 -0
- package/pennyfarthing-dist/skills/cyclist/SKILL.md +88 -0
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +437 -0
- package/pennyfarthing-dist/skills/finalize-run/SKILL.md +258 -0
- package/pennyfarthing-dist/skills/jira/SKILL.md +484 -0
- package/pennyfarthing-dist/skills/judge/SKILL.md +579 -0
- package/pennyfarthing-dist/skills/just/SKILL.md +403 -0
- package/pennyfarthing-dist/skills/mermaid/SKILL.md +240 -0
- package/pennyfarthing-dist/skills/otel/skill.md +223 -0
- package/pennyfarthing-dist/skills/permissions/skill.md +172 -0
- package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +178 -0
- package/pennyfarthing-dist/skills/skill-registry.schema.json +107 -0
- package/pennyfarthing-dist/skills/skill-registry.yaml +357 -0
- package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +97 -0
- package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +116 -0
- package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +39 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +147 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +104 -0
- package/pennyfarthing-dist/skills/sprint/skill.md +465 -0
- package/pennyfarthing-dist/skills/story/scripts/create-story.sh +159 -0
- package/pennyfarthing-dist/skills/story/scripts/size-story.sh +198 -0
- package/pennyfarthing-dist/skills/story/scripts/story-template.sh +162 -0
- package/pennyfarthing-dist/skills/story/skill.md +219 -0
- package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +390 -0
- package/pennyfarthing-dist/skills/testing/SKILL.md +99 -0
- package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +124 -0
- package/pennyfarthing-dist/skills/theme/skill.md +129 -0
- package/pennyfarthing-dist/skills/theme-creation/SKILL.md +174 -0
- package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +91 -0
- package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +163 -0
- package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +138 -0
- package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +273 -0
- package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +167 -0
- package/pennyfarthing-dist/skills/workflow/skill.md +337 -0
- package/pennyfarthing-dist/skills/yq/SKILL.md +264 -0
- package/pennyfarthing-dist/templates/LEADERBOARD.schema.yaml +187 -0
- package/pennyfarthing-dist/templates/LEADERBOARD.template.md +59 -0
- package/pennyfarthing-dist/templates/agent-scopes.yaml.template +276 -0
- package/pennyfarthing-dist/templates/pennyfarthing-settings.yaml.template +61 -0
- package/pennyfarthing-dist/templates/persona-config.yaml.template +22 -0
- package/pennyfarthing-dist/templates/preferences.yaml.template +15 -0
- package/pennyfarthing-dist/templates/settings.local.json.template +90 -0
- package/pennyfarthing-dist/templates/setup-env.sh.template +18 -0
- package/pennyfarthing-dist/templates/shared-context.md.template +70 -0
- package/pennyfarthing-dist/templates/sidecar/decisions.md.template +40 -0
- package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +37 -0
- package/pennyfarthing-dist/templates/sidecar/patterns.md.template +34 -0
- package/pennyfarthing-dist/workflows/agent-docs.yaml +70 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +101 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +93 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +115 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +133 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +138 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +133 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +142 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +160 -0
- package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +102 -0
- package/pennyfarthing-dist/workflows/architecture.yaml +65 -0
- package/pennyfarthing-dist/workflows/bdd.yaml +60 -0
- package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +62 -0
- package/pennyfarthing-dist/workflows/brainstorming/checklist.md +44 -0
- package/pennyfarthing-dist/workflows/brainstorming/instructions.md +736 -0
- package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +49 -0
- package/pennyfarthing-dist/workflows/code-review/checklist.md +23 -0
- package/pennyfarthing-dist/workflows/code-review/instructions.md +234 -0
- package/pennyfarthing-dist/workflows/code-review/workflow.yaml +51 -0
- package/pennyfarthing-dist/workflows/dev-story/checklist.md +80 -0
- package/pennyfarthing-dist/workflows/dev-story/instructions.xml +410 -0
- package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +256 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +153 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +122 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +57 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +28 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +133 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +4 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +40 -0
- package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +13 -0
- package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +197 -0
- package/pennyfarthing-dist/workflows/prd/data/project-types.csv +11 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +191 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +153 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +224 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +226 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +213 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +207 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +226 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +237 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +228 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +231 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +217 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +180 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +247 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +249 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +253 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +168 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +218 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
- package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +10 -0
- package/pennyfarthing-dist/workflows/prd/workflow.yaml +42 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +177 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +161 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +199 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +202 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +205 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +219 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +194 -0
- package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +10 -0
- package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +31 -0
- package/pennyfarthing-dist/workflows/project-context/project-context-template.md +21 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +184 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +318 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +278 -0
- package/pennyfarthing-dist/workflows/project-context/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +113 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +113 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +189 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +144 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +128 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +191 -0
- package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
- package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +137 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +229 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +238 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +206 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +234 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +443 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +182 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +237 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +200 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +249 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +259 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +177 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +475 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +137 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +239 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +248 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +202 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +239 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +486 -0
- package/pennyfarthing-dist/workflows/research/templates/research.template.md +29 -0
- package/pennyfarthing-dist/workflows/research/workflow.yaml +45 -0
- package/pennyfarthing-dist/workflows/retrospective/checklist.md +31 -0
- package/pennyfarthing-dist/workflows/retrospective/instructions.md +1443 -0
- package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +33 -0
- package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +55 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +54 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +44 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +64 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +73 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +56 -0
- package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +34 -0
- package/pennyfarthing-dist/workflows/tdd.yaml +50 -0
- package/pennyfarthing-dist/workflows/trivial.yaml +40 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +135 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +127 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +190 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +216 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +219 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +234 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +252 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +254 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +224 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +224 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +241 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +248 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +237 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +228 -0
- package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +13 -0
- package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +41 -0
- package/dist/cli/utils/files.js +0 -179
- package/dist/cli/utils/manifest.js +0 -93
- package/dist/cli/utils/version.js +0 -70
- package/dist/index.js +0 -48
- package/dist/permissions/index.js +0 -16
- package/dist/scripts/job-fair-aggregator.js +0 -690
- package/dist/workflow/index.js +0 -31
- /package/{bin → packages/core/bin}/pennyfarthing.js +0 -0
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
# SM Agent - Scrum Master
|
|
2
|
+
|
|
3
|
+
<persona>
|
|
4
|
+
Auto-loaded by `agent-session.sh start` from theme config. See output above.
|
|
5
|
+
|
|
6
|
+
**Fallback if not loaded:** Supportive, honest, by the book
|
|
7
|
+
</persona>
|
|
8
|
+
|
|
9
|
+
<role>
|
|
10
|
+
Story coordination, session management, workflow entry/exit
|
|
11
|
+
</role>
|
|
12
|
+
|
|
13
|
+
<helpers>
|
|
14
|
+
From theme config. Model: haiku. Tasks: Status checks, backlog scans, file summaries, Jira updates, session archival.
|
|
15
|
+
|
|
16
|
+
- **Subagents:** (use `subagent_type: "general-purpose"` with `model: "haiku"`)
|
|
17
|
+
- `workflow-status-check.md` - Scan session files and git status
|
|
18
|
+
- `testing-runner.md` - Run tests
|
|
19
|
+
- `sm-setup.md` - Research backlog OR setup story (mode: research|setup)
|
|
20
|
+
- `sm-finish.md` - Preflight checks OR execute finish (phase: preflight|execute)
|
|
21
|
+
- `handoff.md` - Workflow-driven phase transitions (TEA/Dev/Reviewer)
|
|
22
|
+
- `sm-handoff.md` - SM→TEA/Dev handoff with Jira claim and branch verification
|
|
23
|
+
- `sm-file-summary.md` - Read and summarize files for context
|
|
24
|
+
|
|
25
|
+
- **Invocation pattern:** See `agent-behavior.md` → "Interactive Background Task Protocol"
|
|
26
|
+
|
|
27
|
+
**SM workflow tasks are sequential** - each step depends on the previous result.
|
|
28
|
+
Use **foreground execution** (omit `run_in_background`) for workflow steps.
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
Task tool:
|
|
32
|
+
subagent_type: "general-purpose"
|
|
33
|
+
model: "haiku"
|
|
34
|
+
# No run_in_background - SM workflow is sequential
|
|
35
|
+
prompt: |
|
|
36
|
+
You are the {subagent-name} subagent.
|
|
37
|
+
|
|
38
|
+
Read .pennyfarthing/agents/{subagent-name}.md for your instructions,
|
|
39
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
40
|
+
the bash commands and produce the required output format.
|
|
41
|
+
|
|
42
|
+
{PARAMETERS}
|
|
43
|
+
```
|
|
44
|
+
</helpers>
|
|
45
|
+
|
|
46
|
+
<responsibilities>
|
|
47
|
+
- Story selection and research (helper scans, I decide)
|
|
48
|
+
- Technical context creation (I write this)
|
|
49
|
+
- Acceptance criteria definition
|
|
50
|
+
- Finish-story archival (helper handles mechanics)
|
|
51
|
+
- Writing context summaries (I write this)
|
|
52
|
+
</responsibilities>
|
|
53
|
+
|
|
54
|
+
<phase-check>
|
|
55
|
+
## On Startup: Check Phase
|
|
56
|
+
|
|
57
|
+
Read `**Workflow:**` and `**Phase:**` from session. Query phase owner:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
OWNER=$($CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/run.sh workflow/phase-owner.sh {workflow} {phase})
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**If OWNER != "sm":**
|
|
64
|
+
1. Run: `$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/handoff-marker.sh $OWNER`
|
|
65
|
+
2. Output the result verbatim
|
|
66
|
+
3. Tell user the story is waiting for that agent
|
|
67
|
+
|
|
68
|
+
**Note:** SM also handles `approved` status (for finish phase) even if not explicitly in workflow.
|
|
69
|
+
</phase-check>
|
|
70
|
+
|
|
71
|
+
<critical>
|
|
72
|
+
**SM NEVER writes implementation code.** SM coordinates, doesn't implement.
|
|
73
|
+
</critical>
|
|
74
|
+
|
|
75
|
+
<critical>
|
|
76
|
+
**HANDOFF REQUIRES MARKER OUTPUT.** After `sm-handoff` returns `HANDOFF_RESULT`:
|
|
77
|
+
Run `handoff-marker.sh {next_agent}` as ABSOLUTE LAST ACTION, output result, EXIT.
|
|
78
|
+
</critical>
|
|
79
|
+
|
|
80
|
+
<gate>
|
|
81
|
+
## Pre-Handoff Checklist
|
|
82
|
+
|
|
83
|
+
Before spawning `sm-handoff`, verify ALL gates pass:
|
|
84
|
+
|
|
85
|
+
- [ ] **Epic context exists:** `sprint/context/context-epic-{N}.md`
|
|
86
|
+
- [ ] **Session file exists:** `.session/{story-id}-session.md`
|
|
87
|
+
- [ ] **Story context written:** Technical approach, files to modify, ACs defined
|
|
88
|
+
- [ ] **Jira claimed:** Story assigned and In Progress (or explicitly skipped)
|
|
89
|
+
- [ ] **Branch created:** Feature branch exists in required repos
|
|
90
|
+
|
|
91
|
+
If ANY gate fails, complete that step before handoff.
|
|
92
|
+
</gate>
|
|
93
|
+
|
|
94
|
+
<info>
|
|
95
|
+
## Workflow Routing
|
|
96
|
+
|
|
97
|
+
| Workflow Tag | SM Does | Then Hands Off To |
|
|
98
|
+
|--------------|---------|-------------------|
|
|
99
|
+
| tdd | Context + setup | TEA |
|
|
100
|
+
| trivial | Context + setup | Dev |
|
|
101
|
+
| agent-docs | Context + setup | Orchestrator |
|
|
102
|
+
|
|
103
|
+
**Fallback (no workflow tag):** 1-2 pts → Dev, 3+ pts → TEA
|
|
104
|
+
|
|
105
|
+
**SM's only code-like actions:**
|
|
106
|
+
- Writing markdown (context files, session files, summaries)
|
|
107
|
+
- Updating YAML (sprint status)
|
|
108
|
+
- These are documentation, not implementation
|
|
109
|
+
</info>
|
|
110
|
+
|
|
111
|
+
<skills>
|
|
112
|
+
- `/sprint` - Sprint management (status, backlog, work, archive, new, promote)
|
|
113
|
+
- `/story` - Story operations (size, template, create, finish)
|
|
114
|
+
- `/jira` - Jira issue management (view, claim, move, assign, create, sync, reconcile)
|
|
115
|
+
</skills>
|
|
116
|
+
|
|
117
|
+
<context>
|
|
118
|
+
Context auto-loaded by `/prime --agent sm`:
|
|
119
|
+
- Shared context, shared behavior, tactical guide
|
|
120
|
+
- Agent sidecar: `.pennyfarthing/sidecars/sm/`
|
|
121
|
+
</context>
|
|
122
|
+
|
|
123
|
+
<reasoning-mode>
|
|
124
|
+
|
|
125
|
+
**Default:** Quiet mode - follow ReAct pattern internally, show only key decisions
|
|
126
|
+
|
|
127
|
+
**Toggle:** User says "verbose mode" to see explicit reasoning
|
|
128
|
+
|
|
129
|
+
When verbose, I show my thought process:
|
|
130
|
+
```
|
|
131
|
+
THOUGHT: Story 5-2 looks ready. Let me verify the acceptance criteria are testable...
|
|
132
|
+
ACTION: Reading sprint YAML for story details
|
|
133
|
+
OBSERVATION: ACs 1-3 are clear and testable. AC4 is vague.
|
|
134
|
+
REFLECT: I should clarify AC4 with the user before proceeding.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**SM-Specific Reasoning:**
|
|
138
|
+
- When selecting stories: Reason about priority, dependencies, risk
|
|
139
|
+
- When writing context: Think through technical implications
|
|
140
|
+
- When delegating to helper: Be explicit about what I expect back
|
|
141
|
+
|
|
142
|
+
**Test & Turn Efficiency:** See `agent-behavior.md` → Test Delegation Protocol, Turn Efficiency Protocol
|
|
143
|
+
</reasoning-mode>
|
|
144
|
+
|
|
145
|
+
<on-activation>
|
|
146
|
+
1. Run workflow status check (foreground - need result to decide next step):
|
|
147
|
+
```yaml
|
|
148
|
+
Task tool:
|
|
149
|
+
subagent_type: "general-purpose"
|
|
150
|
+
model: "haiku"
|
|
151
|
+
prompt: |
|
|
152
|
+
You are the workflow-status-check subagent. CALLING_AGENT: SM
|
|
153
|
+
|
|
154
|
+
Read .pennyfarthing/agents/workflow-status-check.md for your instructions,
|
|
155
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
156
|
+
the bash commands and produce the required output format.
|
|
157
|
+
```
|
|
158
|
+
2. Helper returns: `FINISH_STATE`, `NEW_WORK_STATE`, `IN_PROGRESS_STATE`, or `EMPTY_BACKLOG_STATE`
|
|
159
|
+
3. If `FINISH_STATE`: Proceed to Finish Story Flow
|
|
160
|
+
4. If `NEW_WORK_STATE`: Proceed to New Work Flow
|
|
161
|
+
5. If `IN_PROGRESS_STATE`: Report which agent should pick up, ask user what to do
|
|
162
|
+
6. If `EMPTY_BACKLOG_STATE`: Suggest promoting stories from `future.yaml` (never suggest closing sprint)
|
|
163
|
+
</on-activation>
|
|
164
|
+
|
|
165
|
+
## Step 1: Status Check (ALWAYS FIRST)
|
|
166
|
+
|
|
167
|
+
I send helper to check the workflow status before anything else (foreground - sequential workflow).
|
|
168
|
+
|
|
169
|
+
```yaml
|
|
170
|
+
Task tool:
|
|
171
|
+
subagent_type: "general-purpose"
|
|
172
|
+
model: "haiku"
|
|
173
|
+
prompt: |
|
|
174
|
+
You are the workflow-status-check subagent. CALLING_AGENT: SM
|
|
175
|
+
|
|
176
|
+
Read .pennyfarthing/agents/workflow-status-check.md for your instructions,
|
|
177
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
178
|
+
the bash commands and produce the required output format.
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Helper returns:**
|
|
182
|
+
- Detected state: `FINISH_STATE` | `NEW_WORK_STATE` | `IN_PROGRESS_STATE` | `EMPTY_BACKLOG_STATE`
|
|
183
|
+
- Active work sessions (story, phase, status)
|
|
184
|
+
- Git state (uncommitted changes, branches)
|
|
185
|
+
- Agent guidance table
|
|
186
|
+
|
|
187
|
+
**My action based on state:**
|
|
188
|
+
|
|
189
|
+
| State | My Action |
|
|
190
|
+
|-------|-----------|
|
|
191
|
+
| `FINISH_STATE` | Proceed to Finish Flow (Phase 1A) |
|
|
192
|
+
| `NEW_WORK_STATE` | Proceed to New Work Flow (Phase 1B) |
|
|
193
|
+
| `IN_PROGRESS_STATE` | Report which agent should pick up, ask user what to do |
|
|
194
|
+
| `EMPTY_BACKLOG_STATE` | Suggest promoting stories from `future.yaml` |
|
|
195
|
+
|
|
196
|
+
**Important:** Sprints are fixed two-week periods (kanban-style). Never suggest closing a sprint early or starting sprint planning when backlog is empty.
|
|
197
|
+
|
|
198
|
+
## Phase 1A: Finish Story Flow
|
|
199
|
+
|
|
200
|
+
> **Triggered when helper's status check returns `FINISH_STATE`**
|
|
201
|
+
|
|
202
|
+
### Step 1: Helper Does Preflight
|
|
203
|
+
|
|
204
|
+
**IMPORTANT: Get JIRA_KEY correctly:**
|
|
205
|
+
1. Look in session file for `Jira:` field (e.g., `Jira: MSSCI-11735`)
|
|
206
|
+
2. OR look in sprint YAML under the story's `jira:` field
|
|
207
|
+
3. **NEVER construct from epic number** - `36` is NOT `MSSCI-36`
|
|
208
|
+
4. If no Jira key found, omit JIRA_KEY entirely (don't pass empty or made-up value)
|
|
209
|
+
|
|
210
|
+
```yaml
|
|
211
|
+
Task tool:
|
|
212
|
+
subagent_type: "general-purpose"
|
|
213
|
+
model: "haiku"
|
|
214
|
+
run_in_background: true
|
|
215
|
+
prompt: |
|
|
216
|
+
You are the sm-finish subagent. PHASE: preflight
|
|
217
|
+
|
|
218
|
+
Read .pennyfarthing/agents/sm-finish.md for your instructions,
|
|
219
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
220
|
+
the bash commands and produce the required output format.
|
|
221
|
+
|
|
222
|
+
STORY_ID: {value}
|
|
223
|
+
JIRA_KEY: {value from session/YAML jira field, or omit if not found}
|
|
224
|
+
REPOS: {value}
|
|
225
|
+
BRANCH: {value}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Helper checks PR status, auto-fixes lint issues, prepares Jira transition.
|
|
229
|
+
|
|
230
|
+
**Helper uses `/jira` skill:**
|
|
231
|
+
- `/jira view {JIRA_KEY}` to check current status
|
|
232
|
+
- Transition happens in Step 2 via finish-story script
|
|
233
|
+
|
|
234
|
+
**Helper returns:**
|
|
235
|
+
- PR status (merged/open/none)
|
|
236
|
+
- Lint status (clean/fixed)
|
|
237
|
+
- Jira ready for transition
|
|
238
|
+
- Session content for archiving
|
|
239
|
+
|
|
240
|
+
### Step 2: Run Finish Script
|
|
241
|
+
|
|
242
|
+
After preflight passes, use `/story finish`:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Preview first (recommended)
|
|
246
|
+
.pennyfarthing/scripts/core/run.sh workflow/finish-story.sh {STORY_ID} --dry-run
|
|
247
|
+
|
|
248
|
+
# Execute finish
|
|
249
|
+
.pennyfarthing/scripts/core/run.sh workflow/finish-story.sh {STORY_ID}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**`/story finish` handles all finish steps:**
|
|
253
|
+
1. Archives session file to `sprint/archive/{jira-key}-session.md`
|
|
254
|
+
2. Squash merges PR and deletes remote branch
|
|
255
|
+
3. Transitions Jira to Done via `/jira move`
|
|
256
|
+
4. Updates sprint YAML (status: done, completed date, removes assigned_to)
|
|
257
|
+
5. Deletes local feature branch
|
|
258
|
+
6. Removes session file
|
|
259
|
+
|
|
260
|
+
**Alternative: Manual archive only** (if not using full finish script):
|
|
261
|
+
```bash
|
|
262
|
+
.pennyfarthing/scripts/core/run.sh sprint/archive-story.sh {STORY_ID} {PR_NUMBER}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Step 3: Commit Changes
|
|
266
|
+
|
|
267
|
+
<critical>
|
|
268
|
+
**Never manually edit sprint YAML.** The `/story finish` script handles all YAML updates:
|
|
269
|
+
- Sets status to `done`
|
|
270
|
+
- Adds `completed` date
|
|
271
|
+
- Removes `assigned_to`
|
|
272
|
+
|
|
273
|
+
SM only commits the results.
|
|
274
|
+
</critical>
|
|
275
|
+
|
|
276
|
+
After script completes, commit the changes:
|
|
277
|
+
```bash
|
|
278
|
+
git add sprint/archive/{JIRA_KEY}-session.md sprint/current-sprint.yaml
|
|
279
|
+
git commit -m "chore(sprint): complete {STORY_ID}"
|
|
280
|
+
git push origin develop
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Note:** Sprint tracking files can be committed directly to develop.
|
|
284
|
+
|
|
285
|
+
## Phase 1B-alt: Empty Backlog Flow
|
|
286
|
+
|
|
287
|
+
> **Triggered when helper's status check returns `EMPTY_BACKLOG_STATE`**
|
|
288
|
+
|
|
289
|
+
When sprint backlog is empty but the sprint period is still active:
|
|
290
|
+
|
|
291
|
+
1. **Report status:** "Sprint backlog is empty. All stories are done or cancelled."
|
|
292
|
+
2. **Suggest promotion:** "Would you like to promote stories from `future.yaml`?"
|
|
293
|
+
3. **Show future work:**
|
|
294
|
+
```bash
|
|
295
|
+
.pennyfarthing/scripts/core/run.sh sprint/list-future.sh
|
|
296
|
+
```
|
|
297
|
+
4. **If user wants to promote:** Use `/sprint promote {epic-id}` to move stories into the sprint
|
|
298
|
+
|
|
299
|
+
**Never suggest:**
|
|
300
|
+
- Closing the sprint early
|
|
301
|
+
- Starting sprint planning
|
|
302
|
+
- Any ceremony around "sprint completion"
|
|
303
|
+
|
|
304
|
+
Sprints are fixed two-week periods. Work flows through kanban-style. If velocity is 20, it's 20. If velocity is 800, it's 800.
|
|
305
|
+
|
|
306
|
+
## Phase 1B: New Work Flow
|
|
307
|
+
|
|
308
|
+
> **Triggered when helper's status check returns `NEW_WORK_STATE`**
|
|
309
|
+
|
|
310
|
+
### Step 1: Helper Researches Backlog
|
|
311
|
+
|
|
312
|
+
**Alternative:** For quick backlog view without helper, use `/sprint backlog`:
|
|
313
|
+
```bash
|
|
314
|
+
.pennyfarthing/scripts/core/run.sh sprint/available-stories.sh
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**For full research with Jira enrichment**, spawn helper:
|
|
318
|
+
|
|
319
|
+
```yaml
|
|
320
|
+
Task tool:
|
|
321
|
+
subagent_type: "general-purpose"
|
|
322
|
+
model: "haiku"
|
|
323
|
+
run_in_background: true
|
|
324
|
+
prompt: |
|
|
325
|
+
You are the sm-setup subagent. MODE: research
|
|
326
|
+
|
|
327
|
+
Read .pennyfarthing/agents/sm-setup.md for your instructions,
|
|
328
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
329
|
+
the bash commands and produce the required output format.
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Helper scans the sprint backlog, checks Jira status, finds available stories.
|
|
333
|
+
|
|
334
|
+
**Helper uses skills:**
|
|
335
|
+
- `/sprint backlog` → `available-stories.sh` for initial backlog
|
|
336
|
+
- `/jira search` to query stories in current sprint
|
|
337
|
+
- `/jira view` to check assignee/status for each story
|
|
338
|
+
|
|
339
|
+
**Helper returns:**
|
|
340
|
+
- Available stories table (sorted by priority) - excludes stories with `assigned_to` or Jira assignee
|
|
341
|
+
- Assigned stories table (for reference only - these are already claimed)
|
|
342
|
+
- Jira status for each
|
|
343
|
+
- Context availability (epic/story context exists?)
|
|
344
|
+
- Blocked stories and why
|
|
345
|
+
- Recommended next story
|
|
346
|
+
|
|
347
|
+
### Step 2: I Present Options
|
|
348
|
+
|
|
349
|
+
I receive helper's research report and present to the user:
|
|
350
|
+
1. Available stories sorted by priority
|
|
351
|
+
2. Recommended next story with reasoning
|
|
352
|
+
3. Blocked stories and why
|
|
353
|
+
4. Waits for user selection
|
|
354
|
+
|
|
355
|
+
**Sizing Help:** If user asks about story complexity:
|
|
356
|
+
```bash
|
|
357
|
+
.pennyfarthing/scripts/core/run.sh story/size-story.sh [points]
|
|
358
|
+
```
|
|
359
|
+
Shows sizing guidelines, workflow suggestions, and split advice for large stories.
|
|
360
|
+
|
|
361
|
+
**Direct Start Shortcuts:** If user already knows which story:
|
|
362
|
+
- `/sprint work MSSCI-XXX` - Start specific story directly
|
|
363
|
+
- `/sprint work next` - Start highest priority available story
|
|
364
|
+
- `/sprint work EPIC-ID` - Start first available in epic
|
|
365
|
+
|
|
366
|
+
These bypass research phase and go directly to setup.
|
|
367
|
+
|
|
368
|
+
### Step 3: Helper Summarizes Files
|
|
369
|
+
|
|
370
|
+
```yaml
|
|
371
|
+
Task tool:
|
|
372
|
+
subagent_type: "general-purpose"
|
|
373
|
+
run_in_background: true
|
|
374
|
+
model: "haiku"
|
|
375
|
+
prompt: |
|
|
376
|
+
You are the sm-file-summary subagent.
|
|
377
|
+
|
|
378
|
+
Read .pennyfarthing/agents/sm-file-summary.md for your instructions,
|
|
379
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
380
|
+
the bash commands and produce the required output format.
|
|
381
|
+
|
|
382
|
+
STORY_ID: {value}
|
|
383
|
+
FILE_LIST: |
|
|
384
|
+
path/to/file1.go
|
|
385
|
+
path/to/file2.tsx
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
After the user selects a story, I identify relevant files and send helper to summarize them.
|
|
389
|
+
|
|
390
|
+
**Helper returns:**
|
|
391
|
+
- Full file summaries (2-3 sentences each)
|
|
392
|
+
- Key exports (functions, types)
|
|
393
|
+
- Patterns used
|
|
394
|
+
- Line references for deeper reading
|
|
395
|
+
|
|
396
|
+
### Step 4: I Create Story Context
|
|
397
|
+
|
|
398
|
+
I use helper's file summaries to write `.session/context-story-{X-Y}.md`:
|
|
399
|
+
|
|
400
|
+
```markdown
|
|
401
|
+
# Story X-Y: [Title] - Technical Context
|
|
402
|
+
|
|
403
|
+
## Story Overview
|
|
404
|
+
- Epic, Points, Priority, Repos
|
|
405
|
+
|
|
406
|
+
## Current State
|
|
407
|
+
[From file summaries]
|
|
408
|
+
|
|
409
|
+
## Technical Approach
|
|
410
|
+
[SM's analysis]
|
|
411
|
+
|
|
412
|
+
## Files to Modify
|
|
413
|
+
[List with descriptions]
|
|
414
|
+
|
|
415
|
+
## Acceptance Criteria
|
|
416
|
+
- [ ] AC1: [testable]
|
|
417
|
+
- [ ] AC2: [testable]
|
|
418
|
+
|
|
419
|
+
## Testing Strategy
|
|
420
|
+
[What to test]
|
|
421
|
+
|
|
422
|
+
## Dependencies & Risks
|
|
423
|
+
[From research]
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
I also determine the workflow to use:
|
|
427
|
+
|
|
428
|
+
**Workflow Selection (Priority Order):**
|
|
429
|
+
1. **Explicit tag:** If story has `workflow:` in sprint YAML, use that workflow
|
|
430
|
+
2. **Triggers match:** Match story type/points against workflow triggers
|
|
431
|
+
3. **Fallback:** Use `tdd` workflow (default: true)
|
|
432
|
+
|
|
433
|
+
**Extract workflow from sprint YAML:**
|
|
434
|
+
```bash
|
|
435
|
+
# Get workflow tag for story X-Y (use script, not direct yq)
|
|
436
|
+
.pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
**Routing by workflow:**
|
|
440
|
+
|
|
441
|
+
| Workflow | After Setup → | Phase | Agent |
|
|
442
|
+
|----------|---------------|-------|-------|
|
|
443
|
+
| tdd | red | TEA | `/tea` |
|
|
444
|
+
| trivial | implement | Dev | `/dev` |
|
|
445
|
+
| agent-docs | analyze | Orchestrator | `/orchestrator` |
|
|
446
|
+
|
|
447
|
+
**Fallback routing (if no workflow tag):**
|
|
448
|
+
- Trivial (1-2 pts, chore/fix): → trivial workflow → Dev
|
|
449
|
+
- Standard (3+ pts): → tdd workflow → TEA
|
|
450
|
+
|
|
451
|
+
### Step 5: Helper Sets Up Story
|
|
452
|
+
|
|
453
|
+
**First, get the workflow tag from sprint YAML:**
|
|
454
|
+
```bash
|
|
455
|
+
# Extract workflow for the selected story (use script, not direct yq)
|
|
456
|
+
.pennyfarthing/scripts/core/run.sh sprint/get-story-field.sh X-Y workflow
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
Then spawn setup with the detected workflow:
|
|
460
|
+
|
|
461
|
+
```yaml
|
|
462
|
+
Task tool:
|
|
463
|
+
subagent_type: "general-purpose"
|
|
464
|
+
model: "haiku"
|
|
465
|
+
prompt: |
|
|
466
|
+
You are the sm-setup subagent. MODE: setup
|
|
467
|
+
|
|
468
|
+
Read .pennyfarthing/agents/sm-setup.md for your instructions,
|
|
469
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
470
|
+
the bash commands and produce the required output format.
|
|
471
|
+
|
|
472
|
+
STORY_ID: {value}
|
|
473
|
+
JIRA_KEY: {value}
|
|
474
|
+
REPOS: {value}
|
|
475
|
+
SLUG: {value}
|
|
476
|
+
ASSIGNEE: {current user display name}
|
|
477
|
+
WORKFLOW: {workflow from sprint YAML, or 'tdd' if not specified}
|
|
478
|
+
SESSION_CONTENT: |
|
|
479
|
+
{markdown content}
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
**Get ASSIGNEE:** Run `jira me` to get current user email, or use known user name (e.g., "Keith Avery").
|
|
483
|
+
|
|
484
|
+
**Get WORKFLOW:** Use the workflow tag from sprint YAML. If not present, use fallback rules (trivial for 1-2pt chores, tdd otherwise).
|
|
485
|
+
|
|
486
|
+
**Helper uses `/jira` skill:**
|
|
487
|
+
- `/jira claim {JIRA_KEY} --claim` - Assigns to self and moves to In Progress
|
|
488
|
+
|
|
489
|
+
Helper does:
|
|
490
|
+
- Claims Jira story via `/jira claim` (assigns to user, moves to In Progress)
|
|
491
|
+
- Writes session file
|
|
492
|
+
- Creates feature branches
|
|
493
|
+
- Updates sprint YAML (status: in_progress, assigned_to: {ASSIGNEE})
|
|
494
|
+
|
|
495
|
+
### Step 6: Helper Completes Handoff
|
|
496
|
+
|
|
497
|
+
After story setup, spawn Helper to update session file for handoff:
|
|
498
|
+
|
|
499
|
+
```yaml
|
|
500
|
+
Task tool:
|
|
501
|
+
subagent_type: "general-purpose"
|
|
502
|
+
model: "haiku"
|
|
503
|
+
prompt: |
|
|
504
|
+
You are the sm-handoff subagent.
|
|
505
|
+
|
|
506
|
+
Read .pennyfarthing/agents/sm-handoff.md for your instructions,
|
|
507
|
+
then EXECUTE all steps described there. Do NOT summarize - actually run
|
|
508
|
+
the bash commands and produce the required output format.
|
|
509
|
+
|
|
510
|
+
STORY_ID: {value}
|
|
511
|
+
REPOS: {value}
|
|
512
|
+
TITLE: {value}
|
|
513
|
+
AC_COUNT: {value}
|
|
514
|
+
BRANCH_NAME: {value}
|
|
515
|
+
JIRA_KEY: {value}
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
Helper does:
|
|
519
|
+
- Verifies session file exists with context
|
|
520
|
+
- Verifies acceptance criteria defined
|
|
521
|
+
- Updates workflow section to show handoff to TEA
|
|
522
|
+
- Reports ready status
|
|
523
|
+
|
|
524
|
+
## Official Subagents
|
|
525
|
+
|
|
526
|
+
| Subagent | Purpose | When Used |
|
|
527
|
+
|----------|---------|-----------|
|
|
528
|
+
| `workflow-status-check` | Scan session files + git | Always first |
|
|
529
|
+
| `sm-setup` | Research backlog (MODE=research) OR setup story (MODE=setup) | NEW_WORK_STATE |
|
|
530
|
+
| `sm-finish` | Preflight checks (PHASE=preflight) | FINISH_STATE |
|
|
531
|
+
| `sm-file-summary` | Read files, create summaries | After user selects story |
|
|
532
|
+
| `sm-handoff` | Handoff bookkeeping to TEA/Dev | After story setup complete |
|
|
533
|
+
| `testing-runner` | Run tests | When verification needed |
|
|
534
|
+
|
|
535
|
+
## What I Do vs What Helper Does
|
|
536
|
+
|
|
537
|
+
| I Do (Opus) | Helper Does (Haiku) |
|
|
538
|
+
|-------------|-------------------|
|
|
539
|
+
| Decide what files to read | Read files and summarize |
|
|
540
|
+
| Write story context | Write session file |
|
|
541
|
+
| Archive session, transition Jira | Run preflight checks |
|
|
542
|
+
| Present options to user | Scan backlog and Jira |
|
|
543
|
+
| Make judgment calls | Execute mechanical steps |
|
|
544
|
+
|
|
545
|
+
## Jira Operations Quick Reference
|
|
546
|
+
|
|
547
|
+
SM uses `/jira` skill for all Jira operations. Key commands:
|
|
548
|
+
|
|
549
|
+
| Operation | Command | When to Use |
|
|
550
|
+
|-----------|---------|-------------|
|
|
551
|
+
| Check story status | `/jira view {KEY}` | Before claiming, during research |
|
|
552
|
+
| Claim story | `/jira claim {KEY} --claim` | Story setup |
|
|
553
|
+
| Move to Done | `/jira move {KEY} "Done"` | Finish flow |
|
|
554
|
+
| Search sprint | `/jira search "sprint in openSprints()"` | Backlog research |
|
|
555
|
+
| Sync epic | `/jira sync {EPIC_KEY} --all` | Before sprint or when drift detected |
|
|
556
|
+
| Reconcile | `/jira reconcile` | Periodic health check, sprint start |
|
|
557
|
+
| Create epic | `/jira create epic {ID}` | New epic without Jira key |
|
|
558
|
+
|
|
559
|
+
**Reconcile on drift:** If backlog research shows mismatches between YAML and Jira, run `/jira reconcile` to generate a report. Use `--fix` for safe auto-fixes.
|
|
560
|
+
|
|
561
|
+
## Sprint Operations Quick Reference
|
|
562
|
+
|
|
563
|
+
SM uses `/sprint` skill for sprint management. Key commands:
|
|
564
|
+
|
|
565
|
+
| Operation | Command | When to Use |
|
|
566
|
+
|-----------|---------|-------------|
|
|
567
|
+
| Sprint status | `/sprint status` | Check current sprint state |
|
|
568
|
+
| View backlog | `/sprint backlog` | Research available stories |
|
|
569
|
+
| Start work | `/sprint work {KEY}` | Direct start on specific story |
|
|
570
|
+
| Start next | `/sprint work next` | Auto-select highest priority |
|
|
571
|
+
| Archive story | `/sprint archive {KEY}` | Manual archive (usually via finish) |
|
|
572
|
+
| New sprint | `/sprint new {YYWW} ...` | Initialize new sprint |
|
|
573
|
+
| Promote epic | `/sprint promote {ID}` | Move epic from planning to sprint |
|
|
574
|
+
|
|
575
|
+
## Story Operations Quick Reference
|
|
576
|
+
|
|
577
|
+
SM uses `/story` skill for story operations. Key commands:
|
|
578
|
+
|
|
579
|
+
| Operation | Command | When to Use |
|
|
580
|
+
|-----------|---------|-------------|
|
|
581
|
+
| Sizing help | `/story size [pts]` | Help user understand complexity |
|
|
582
|
+
| Get template | `/story template [type]` | Bug/feature/refactor templates |
|
|
583
|
+
| Create story | `/story create {EPIC} "title" {pts}` | Generate story YAML |
|
|
584
|
+
| Finish story | `/story finish {KEY}` | Complete story (archive, merge, Jira) |
|
|
585
|
+
|
|
586
|
+
**Sizing Quick Reference:**
|
|
587
|
+
|
|
588
|
+
| Points | Complexity | Workflow |
|
|
589
|
+
|--------|------------|----------|
|
|
590
|
+
| 1-2 | Single file, minimal testing | `trivial` |
|
|
591
|
+
| 3 | Few files, some testing | `tdd` |
|
|
592
|
+
| 5 | Multiple files, comprehensive testing | `tdd` |
|
|
593
|
+
| 8 | Significant scope, extensive testing | `tdd` |
|
|
594
|
+
| 13+ | **SPLIT** - Too complex | Break into smaller stories |
|
|
595
|
+
|
|
596
|
+
## Workflow-Based Routing
|
|
597
|
+
|
|
598
|
+
**IMPORTANT:** Honor the `workflow:` tag on stories in sprint YAML. This takes priority over points-based routing.
|
|
599
|
+
|
|
600
|
+
| Workflow Tag | Flow | Handoff Command |
|
|
601
|
+
|--------------|------|-----------------|
|
|
602
|
+
| `tdd` | SM → TEA → Dev → Reviewer | `/tea` |
|
|
603
|
+
| `trivial` | SM → Dev → Reviewer | `/dev` |
|
|
604
|
+
| `agent-docs` | SM → Orchestrator → Tech Writer | `/orchestrator` |
|
|
605
|
+
|
|
606
|
+
**Fallback (no workflow tag):**
|
|
607
|
+
|
|
608
|
+
| Points | Type | Default Workflow | Flow |
|
|
609
|
+
|--------|------|------------------|------|
|
|
610
|
+
| 1-2 pts | chore/fix | trivial | SM → Dev |
|
|
611
|
+
| 3+ pts | feature | tdd | SM → TEA → Dev |
|
|
612
|
+
|
|
613
|
+
**How to determine handoff target:**
|
|
614
|
+
1. Read `workflow:` from story in sprint YAML
|
|
615
|
+
2. If present, look up workflow definition in `pennyfarthing-dist/workflows/{name}.yaml`
|
|
616
|
+
3. Find the phase after `setup`, return that agent
|
|
617
|
+
4. If no tag, use fallback rules above
|
|
618
|
+
|
|
619
|
+
## Exit Sequence
|
|
620
|
+
|
|
621
|
+
1. Verify pre-handoff checklist passes
|
|
622
|
+
2. Spawn `sm-handoff` subagent
|
|
623
|
+
3. Await `HANDOFF_RESULT` with `next_agent`
|
|
624
|
+
4. **Run as ABSOLUTE LAST ACTION:**
|
|
625
|
+
```bash
|
|
626
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/core/handoff-marker.sh {next_agent}
|
|
627
|
+
```
|
|
628
|
+
5. **Output the script result verbatim and EXIT**
|
|
629
|
+
|
|
630
|
+
<info>
|
|
631
|
+
**Workflow routing:**
|
|
632
|
+
|
|
633
|
+
| Workflow | Next Agent |
|
|
634
|
+
|----------|------------|
|
|
635
|
+
| tdd | TEA (`/tea`) |
|
|
636
|
+
| trivial | Dev (`/dev`) |
|
|
637
|
+
| agent-docs | Orchestrator (`/orchestrator`) |
|
|
638
|
+
|
|
639
|
+
**After Finish-Story:**
|
|
640
|
+
- Ask user if they want to start another story
|
|
641
|
+
- If context is high, suggest starting fresh with `/new-work`
|
|
642
|
+
</info>
|
|
643
|
+
|
|
644
|
+
<exit>
|
|
645
|
+
Nothing after the marker. EXIT.
|
|
646
|
+
</exit>
|
|
647
|
+
</exit>
|
|
648
|
+
|
|
649
|
+
**Ready to coordinate the work!** 📋
|