@pennyfarthing/core 6.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/README.md +293 -0
- package/package.json +58 -0
- package/packages/core/bin/pennyfarthing.js +14 -0
- 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 +191 -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 +243 -0
- package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -0
- package/packages/core/dist/cli/commands/doctor.d.ts +9 -0
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/doctor.js +652 -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 +524 -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 +545 -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 +224 -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 +60 -0
- package/packages/core/dist/cli/utils/constants.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/constants.js +52 -0
- package/packages/core/dist/cli/utils/constants.js.map +1 -0
- package/packages/core/dist/cli/utils/files.d.ts +71 -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/packages/core/dist/cli/utils/manifest.d.ts +47 -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 +22 -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 +29 -0
- package/packages/core/dist/cli/utils/symlinks.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/symlinks.js +181 -0
- package/packages/core/dist/cli/utils/symlinks.js.map +1 -0
- package/packages/core/dist/cli/utils/themes.d.ts +104 -0
- package/packages/core/dist/cli/utils/themes.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/themes.js +393 -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 +144 -0
- package/packages/core/dist/cli/utils/themes.test.js.map +1 -0
- package/packages/core/dist/cli/utils/version.d.ts +10 -0
- package/packages/core/dist/cli/utils/version.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/version.js +63 -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 +154 -0
- package/packages/core/dist/cli/workspace.test.js.map +1 -0
- package/packages/core/dist/index.d.ts +6 -0
- package/packages/core/dist/index.d.ts.map +1 -0
- package/packages/core/dist/index.js +10 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/permissions/index.d.ts +9 -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/packages/core/dist/permissions/permission-schema.d.ts +89 -0
- package/packages/core/dist/permissions/permission-schema.d.ts.map +1 -0
- package/packages/core/dist/permissions/permission-schema.js +120 -0
- 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-faces.d.ts +10 -0
- package/packages/core/dist/scripts/generate-all-faces.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-all-faces.js +256 -0
- package/packages/core/dist/scripts/generate-all-faces.js.map +1 -0
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts +17 -0
- package/packages/core/dist/scripts/generate-all-faces.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-all-faces.test.js +372 -0
- package/packages/core/dist/scripts/generate-all-faces.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-ascii-face.d.ts +52 -0
- package/packages/core/dist/scripts/generate-ascii-face.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-ascii-face.js +155 -0
- package/packages/core/dist/scripts/generate-ascii-face.js.map +1 -0
- package/packages/core/dist/scripts/generate-face.d.ts +52 -0
- package/packages/core/dist/scripts/generate-face.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-face.js +199 -0
- package/packages/core/dist/scripts/generate-face.js.map +1 -0
- package/packages/core/dist/scripts/generate-face.test.d.ts +13 -0
- package/packages/core/dist/scripts/generate-face.test.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-face.test.js +301 -0
- package/packages/core/dist/scripts/generate-face.test.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 +37 -0
- package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -0
- package/packages/core/dist/scripts/generate-spider.js +315 -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 +269 -0
- package/packages/core/dist/scripts/generate-spider.test.js.map +1 -0
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts +150 -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/generic-handoff.d.ts +235 -0
- package/packages/core/dist/workflow/generic-handoff.d.ts.map +1 -0
- package/packages/core/dist/workflow/generic-handoff.js +358 -0
- package/packages/core/dist/workflow/generic-handoff.js.map +1 -0
- package/packages/core/dist/workflow/generic-handoff.test.d.ts +21 -0
- package/packages/core/dist/workflow/generic-handoff.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/generic-handoff.test.js +499 -0
- package/packages/core/dist/workflow/generic-handoff.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/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/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/workflow-loader.d.ts +76 -0
- package/packages/core/dist/workflow/workflow-loader.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-loader.js +133 -0
- 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 +372 -0
- package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-router.d.ts +55 -0
- package/packages/core/dist/workflow/workflow-router.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-router.js +245 -0
- 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/packages/core/dist/workflow/workflow-schema.d.ts +98 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-schema.js +230 -0
- 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/pennyfarthing-dist/agents/README.md +397 -0
- package/pennyfarthing-dist/agents/architect.md +171 -0
- package/pennyfarthing-dist/agents/dev.md +225 -0
- package/pennyfarthing-dist/agents/devops.md +183 -0
- package/pennyfarthing-dist/agents/generic-handoff.md +451 -0
- package/pennyfarthing-dist/agents/generic-sm-finish.md +261 -0
- package/pennyfarthing-dist/agents/generic-sm-setup.md +214 -0
- package/pennyfarthing-dist/agents/orchestrator.md +316 -0
- package/pennyfarthing-dist/agents/pm.md +153 -0
- package/pennyfarthing-dist/agents/reviewer-preflight.md +224 -0
- package/pennyfarthing-dist/agents/reviewer.md +315 -0
- package/pennyfarthing-dist/agents/sm-file-summary.md +109 -0
- package/pennyfarthing-dist/agents/sm-handoff.md +97 -0
- package/pennyfarthing-dist/agents/sm.md +480 -0
- package/pennyfarthing-dist/agents/tea.md +191 -0
- package/pennyfarthing-dist/agents/tech-writer.md +148 -0
- package/pennyfarthing-dist/agents/testing-runner.md +420 -0
- package/pennyfarthing-dist/agents/ux-designer.md +158 -0
- package/pennyfarthing-dist/agents/workflow-status-check.md +332 -0
- package/pennyfarthing-dist/commands/architect.md +62 -0
- package/pennyfarthing-dist/commands/benchmark-control.md +69 -0
- package/pennyfarthing-dist/commands/benchmark.md +467 -0
- package/pennyfarthing-dist/commands/brainstorm.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 +136 -0
- package/pennyfarthing-dist/commands/continue-session.md +184 -0
- package/pennyfarthing-dist/commands/create-branches-from-story.md +374 -0
- package/pennyfarthing-dist/commands/create-theme.md +29 -0
- package/pennyfarthing-dist/commands/dev.md +60 -0
- package/pennyfarthing-dist/commands/devops.md +59 -0
- package/pennyfarthing-dist/commands/git-cleanup.md +340 -0
- package/pennyfarthing-dist/commands/health-check.md +108 -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 +17 -0
- package/pennyfarthing-dist/commands/new-work.md +127 -0
- package/pennyfarthing-dist/commands/orchestrator.md +56 -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 +60 -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 +64 -0
- package/pennyfarthing-dist/commands/run-ci.md +116 -0
- package/pennyfarthing-dist/commands/set-theme.md +52 -0
- package/pennyfarthing-dist/commands/show-theme.md +21 -0
- package/pennyfarthing-dist/commands/sm.md +70 -0
- package/pennyfarthing-dist/commands/solo.md +411 -0
- package/pennyfarthing-dist/commands/sprint-planning.md +109 -0
- package/pennyfarthing-dist/commands/start-epic.md +156 -0
- package/pennyfarthing-dist/commands/sync-epic-to-jira.md +184 -0
- package/pennyfarthing-dist/commands/sync-work-with-sprint.md +376 -0
- package/pennyfarthing-dist/commands/tea.md +63 -0
- package/pennyfarthing-dist/commands/tech-writer.md +53 -0
- package/pennyfarthing-dist/commands/theme-maker.md +671 -0
- package/pennyfarthing-dist/commands/update-domain-docs.md +83 -0
- package/pennyfarthing-dist/commands/ux-designer.md +62 -0
- package/pennyfarthing-dist/commands/work.md +111 -0
- package/pennyfarthing-dist/guides/AGENT-COORDINATION.md +480 -0
- package/pennyfarthing-dist/guides/AGENT-SCOPES.md +201 -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/agent-template-strategic.md +148 -0
- package/pennyfarthing-dist/guides/agent-template-tactical.md +162 -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/persona-system.md +294 -0
- package/pennyfarthing-dist/guides/shared-agent-behavior.md +388 -0
- package/pennyfarthing-dist/guides/shared-context.md +147 -0
- package/pennyfarthing-dist/guides/strategic-agent-behavior.md +348 -0
- package/pennyfarthing-dist/guides/tactical-agent-behavior.md +1041 -0
- package/pennyfarthing-dist/guides/workflow-schema.md +195 -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 +207 -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 +243 -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 +219 -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 +334 -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 +242 -0
- package/pennyfarthing-dist/personas/themes/peaky-blinders.yaml +298 -0
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +220 -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 +230 -0
- package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +210 -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 +208 -0
- package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +236 -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 +213 -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/add-short-names.mjs +264 -0
- package/pennyfarthing-dist/scripts/agent-session.sh +367 -0
- package/pennyfarthing-dist/scripts/check-context.sh +187 -0
- package/pennyfarthing-dist/scripts/check.sh +497 -0
- package/pennyfarthing-dist/scripts/deploy.sh +284 -0
- package/pennyfarthing-dist/scripts/doctor-dogfood.sh +360 -0
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +61 -0
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +66 -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 +98 -0
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +59 -0
- package/pennyfarthing-dist/scripts/install-git-hooks.sh +91 -0
- package/pennyfarthing-dist/scripts/prime.sh +161 -0
- package/pennyfarthing-dist/scripts/release.sh +198 -0
- package/pennyfarthing-dist/scripts/repo-utils.sh +778 -0
- package/pennyfarthing-dist/scripts/run-ci.sh +219 -0
- package/pennyfarthing-dist/scripts/run.sh +65 -0
- package/pennyfarthing-dist/scripts/statusline.sh +264 -0
- package/pennyfarthing-dist/scripts/tests/check.test.sh +582 -0
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +107 -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/uninstall.sh +271 -0
- package/pennyfarthing-dist/scripts/utils/background-tasks.sh +177 -0
- package/pennyfarthing-dist/scripts/utils/check-status.sh +251 -0
- package/pennyfarthing-dist/scripts/utils/checkpoint.sh +136 -0
- package/pennyfarthing-dist/scripts/utils/common.sh +157 -0
- package/pennyfarthing-dist/scripts/utils/create-feature-branches.sh +230 -0
- package/pennyfarthing-dist/scripts/utils/file-lock.sh +269 -0
- package/pennyfarthing-dist/scripts/utils/find-related-work.sh +231 -0
- package/pennyfarthing-dist/scripts/utils/find-root.sh +33 -0
- package/pennyfarthing-dist/scripts/utils/generate-skill-docs.sh +110 -0
- package/pennyfarthing-dist/scripts/utils/git-status-all.sh +127 -0
- package/pennyfarthing-dist/scripts/utils/ground-truth-judge.py +289 -0
- package/pennyfarthing-dist/scripts/utils/jira/jira-lib.mjs +443 -0
- package/pennyfarthing-dist/scripts/utils/jira/jira-sync-story.mjs +208 -0
- package/pennyfarthing-dist/scripts/utils/jira/jira-sync.mjs +198 -0
- package/pennyfarthing-dist/scripts/utils/jira-claim-story.sh +162 -0
- package/pennyfarthing-dist/scripts/utils/jira-lib.sh +463 -0
- package/pennyfarthing-dist/scripts/utils/jira-sync-story.sh +8 -0
- package/pennyfarthing-dist/scripts/utils/jira-sync.sh +8 -0
- package/pennyfarthing-dist/scripts/utils/log-skill-usage.sh +74 -0
- package/pennyfarthing-dist/scripts/utils/logging.sh +186 -0
- package/pennyfarthing-dist/scripts/utils/repo-scan.sh +141 -0
- package/pennyfarthing-dist/scripts/utils/retry.sh +76 -0
- package/pennyfarthing-dist/scripts/utils/run-timestamp.sh +7 -0
- package/pennyfarthing-dist/scripts/utils/session-cleanup.sh +319 -0
- package/pennyfarthing-dist/scripts/utils/skill-usage-report.sh +193 -0
- package/pennyfarthing-dist/scripts/utils/sprint-common.sh +286 -0
- package/pennyfarthing-dist/scripts/utils/sprint-metrics.sh +241 -0
- package/pennyfarthing-dist/scripts/utils/swebench-judge.py +400 -0
- package/pennyfarthing-dist/scripts/utils/sync-epic-to-jira.sh +16 -0
- package/pennyfarthing-dist/scripts/utils/test-setup.sh +337 -0
- package/pennyfarthing-dist/scripts/utils/validate-subagent-frontmatter.sh +160 -0
- package/pennyfarthing-dist/scripts/worktree-manager.sh +498 -0
- package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +236 -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 +268 -0
- package/pennyfarthing-dist/skills/cyclist/SKILL.md +117 -0
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +421 -0
- package/pennyfarthing-dist/skills/finalize-run/SKILL.md +258 -0
- package/pennyfarthing-dist/skills/jira/SKILL.md +281 -0
- package/pennyfarthing-dist/skills/judge/SKILL.md +524 -0
- package/pennyfarthing-dist/skills/just/SKILL.md +160 -0
- package/pennyfarthing-dist/skills/mermaid/SKILL.md +240 -0
- package/pennyfarthing-dist/skills/otel/skill.md +222 -0
- package/pennyfarthing-dist/skills/permissions/skill.md +172 -0
- package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +173 -0
- package/pennyfarthing-dist/skills/skill-registry.schema.json +102 -0
- package/pennyfarthing-dist/skills/skill-registry.yaml +335 -0
- package/pennyfarthing-dist/skills/sprint-context/SKILL.md +120 -0
- package/pennyfarthing-dist/skills/story-management/SKILL.md +208 -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 +169 -0
- package/pennyfarthing-dist/skills/workflow/SKILL.md +160 -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/bdd.yaml +58 -0
- package/pennyfarthing-dist/workflows/tdd.yaml +50 -0
- package/pennyfarthing-dist/workflows/trivial.yaml +40 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: theme-creation
|
|
3
|
+
description: Create custom persona themes for Pennyfarthing. Use when users want to create, generate, or customize agent personas/themes, especially with AI-driven generation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Theme Creation Skill
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill covers creating custom persona themes for Pennyfarthing agents. Themes define how each agent (SM, TEA, Dev, Reviewer, etc.) presents themselves with character names, styles, quotes, and personality traits.
|
|
11
|
+
|
|
12
|
+
## When to Use This Skill
|
|
13
|
+
|
|
14
|
+
**Invoke `/theme-maker` when the user:**
|
|
15
|
+
- Asks to "create a theme" or "make a theme"
|
|
16
|
+
- Wants "AI-driven theme generation"
|
|
17
|
+
- Says "generate personas" or "generate characters"
|
|
18
|
+
- Mentions a fictional universe and wants agents based on it
|
|
19
|
+
- Asks for "custom personas" or "themed agents"
|
|
20
|
+
- Wants to "customize agent characters"
|
|
21
|
+
- Mentions any fictional universe + "theme" (e.g., "Star Wars theme", "pirates theme")
|
|
22
|
+
|
|
23
|
+
**Trigger phrases:**
|
|
24
|
+
- "create a [X] theme"
|
|
25
|
+
- "make a theme based on [X]"
|
|
26
|
+
- "generate [X] personas"
|
|
27
|
+
- "I want [X] themed agents"
|
|
28
|
+
- "AI-driven theme generation"
|
|
29
|
+
- "custom theme for [universe]"
|
|
30
|
+
|
|
31
|
+
## Available Commands
|
|
32
|
+
|
|
33
|
+
| Command | Purpose |
|
|
34
|
+
|---------|---------|
|
|
35
|
+
| `/theme-maker` | Interactive wizard with AI-driven, Guided, or Manual modes |
|
|
36
|
+
| `/create-theme <name>` | Quick CLI-based theme creation (copies from base) |
|
|
37
|
+
| `/set-theme <name>` | Activate an existing theme |
|
|
38
|
+
| `/list-themes` | Show available themes |
|
|
39
|
+
| `/show-theme <name>` | Display theme details |
|
|
40
|
+
|
|
41
|
+
## Theme Creation Modes
|
|
42
|
+
|
|
43
|
+
### AI-Driven Mode (Recommended)
|
|
44
|
+
|
|
45
|
+
Best for: Users who describe a concept and want the AI to generate everything.
|
|
46
|
+
|
|
47
|
+
**Flow:**
|
|
48
|
+
1. User provides universe/concept (e.g., "Gilligan's Island, humorous")
|
|
49
|
+
2. AI generates all 10 agent personas automatically
|
|
50
|
+
3. User previews and confirms or regenerates
|
|
51
|
+
4. Theme file written to `.claude/pennyfarthing/themes/`
|
|
52
|
+
|
|
53
|
+
**What gets generated:**
|
|
54
|
+
- Character names fitting the universe
|
|
55
|
+
- OCEAN personality profiles (O/C/E/A/N scores 1-5)
|
|
56
|
+
- Communication styles
|
|
57
|
+
- Signature quotes
|
|
58
|
+
- Emojis and visual descriptions
|
|
59
|
+
- Helper assistants for each agent
|
|
60
|
+
|
|
61
|
+
### Guided Mode
|
|
62
|
+
|
|
63
|
+
Best for: Users who want to pick characters from suggestions.
|
|
64
|
+
|
|
65
|
+
**Flow:**
|
|
66
|
+
1. User provides universe/concept
|
|
67
|
+
2. AI suggests 3-4 character options per agent
|
|
68
|
+
3. User picks (or enters custom) for each
|
|
69
|
+
4. AI fills in remaining details (style, quote, OCEAN)
|
|
70
|
+
|
|
71
|
+
### Manual Mode
|
|
72
|
+
|
|
73
|
+
Best for: Users who know exactly what they want.
|
|
74
|
+
|
|
75
|
+
**Flow:**
|
|
76
|
+
1. User provides theme description
|
|
77
|
+
2. User enters character, style, quote for each agent
|
|
78
|
+
3. Optional: Specify OCEAN scores or let AI generate
|
|
79
|
+
4. Theme file created with user's exact specifications
|
|
80
|
+
|
|
81
|
+
## Agent Roles Reference
|
|
82
|
+
|
|
83
|
+
When generating or suggesting characters, match to these roles:
|
|
84
|
+
|
|
85
|
+
| Agent | Role | Character Should Be |
|
|
86
|
+
|-------|------|---------------------|
|
|
87
|
+
| orchestrator | Meta-coordinator | Pattern-seer, guide, overseer |
|
|
88
|
+
| sm | Scrum Master | Leader, coordinator, keeps team together |
|
|
89
|
+
| tea | Test Engineer | Analyst, detail-oriented, finds flaws |
|
|
90
|
+
| dev | Developer | Builder, practical, gets things done |
|
|
91
|
+
| reviewer | Code Reviewer | Critical, honest, high standards |
|
|
92
|
+
| architect | System Architect | Big-picture thinker, systems designer |
|
|
93
|
+
| pm | Product Manager | Strategic, stakeholder manager |
|
|
94
|
+
| tech-writer | Documentation | Clear communicator, precise |
|
|
95
|
+
| ux-designer | UX Design | User advocate, feels the experience |
|
|
96
|
+
| devops | Infrastructure | Reliable, keeps systems running |
|
|
97
|
+
|
|
98
|
+
## Theme File Location
|
|
99
|
+
|
|
100
|
+
- **User themes:** `.claude/pennyfarthing/themes/{name}.yaml`
|
|
101
|
+
- **Built-in themes:** `pennyfarthing-dist/personas/themes/`
|
|
102
|
+
|
|
103
|
+
## OCEAN Personality Profiles
|
|
104
|
+
|
|
105
|
+
Each agent gets an OCEAN profile (Big Five personality traits):
|
|
106
|
+
|
|
107
|
+
| Dimension | Low (1-2) | High (4-5) |
|
|
108
|
+
|-----------|-----------|------------|
|
|
109
|
+
| **O**penness | Traditional, practical | Creative, curious |
|
|
110
|
+
| **C**onscientiousness | Flexible, spontaneous | Organized, disciplined |
|
|
111
|
+
| **E**xtraversion | Reserved, reflective | Outgoing, energetic |
|
|
112
|
+
| **A**greeableness | Competitive, skeptical | Cooperative, trusting |
|
|
113
|
+
| **N**euroticism | Calm, stable | Emotional, reactive |
|
|
114
|
+
|
|
115
|
+
## Examples
|
|
116
|
+
|
|
117
|
+
### Example 1: AI-Driven Theme Creation
|
|
118
|
+
|
|
119
|
+
**User:** "Create a Gilligan's Island theme, make it humorous"
|
|
120
|
+
|
|
121
|
+
**Action:** Invoke `/theme-maker`, select AI-Driven mode, generate 10 agents based on the show's characters.
|
|
122
|
+
|
|
123
|
+
### Example 2: Quick Theme from Base
|
|
124
|
+
|
|
125
|
+
**User:** "Create a theme called my-team based on discworld"
|
|
126
|
+
|
|
127
|
+
**Action:** Run `/create-theme my-team --base discworld`
|
|
128
|
+
|
|
129
|
+
### Example 3: List and Switch Themes
|
|
130
|
+
|
|
131
|
+
**User:** "What themes are available? Switch to star-trek."
|
|
132
|
+
|
|
133
|
+
**Action:** Run `/list-themes`, then `/set-theme star-trek`
|
|
134
|
+
|
|
135
|
+
## Validation Rules for Theme Names
|
|
136
|
+
|
|
137
|
+
- Lowercase letters only
|
|
138
|
+
- Must start with a letter
|
|
139
|
+
- Hyphens allowed (no underscores or spaces)
|
|
140
|
+
- No conflicts with existing themes
|
|
141
|
+
|
|
142
|
+
## Portrait Generation
|
|
143
|
+
|
|
144
|
+
Each agent can have a `visual` field that describes their appearance for portrait generation.
|
|
145
|
+
|
|
146
|
+
**Generate portraits:**
|
|
147
|
+
```bash
|
|
148
|
+
python3 scripts/generate-portraits.py --theme {name}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Dry run (preview):**
|
|
152
|
+
```bash
|
|
153
|
+
python3 scripts/generate-portraits.py --theme {name} --dry-run
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Requirements:**
|
|
157
|
+
- Python 3 with diffusers, torch, pillow, pyyaml
|
|
158
|
+
- Apple Silicon Mac (MPS) or NVIDIA GPU
|
|
159
|
+
- ~6.5GB model download on first run
|
|
160
|
+
|
|
161
|
+
**Output:** `pennyfarthing-dist/personas/portraits/{theme}/{role}.png` (100x100px woodcut style)
|
|
162
|
+
|
|
163
|
+
## Post-Creation Steps
|
|
164
|
+
|
|
165
|
+
After creating a theme:
|
|
166
|
+
1. Theme file at `.claude/pennyfarthing/themes/{name}.yaml`
|
|
167
|
+
2. Activate with `/set-theme {name}`
|
|
168
|
+
3. Generate portraits with `python3 scripts/generate-portraits.py --theme {name}`
|
|
169
|
+
4. Edit YAML directly for fine-tuning
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: workflow
|
|
3
|
+
description: List available workflows, show current workflow details, and switch workflows mid-session if needed. Use for all workflow-related operations.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Workflow Management Skill
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Pennyfarthing uses YAML-defined workflows to control agent sequences. The default TDD workflow (SM → TEA → Dev → Reviewer) can be customized or replaced with alternative flows for documentation, debugging, devops, and more.
|
|
11
|
+
|
|
12
|
+
## Quick Reference
|
|
13
|
+
|
|
14
|
+
| Action | Command |
|
|
15
|
+
|--------|---------|
|
|
16
|
+
| List all workflows | `/workflow` |
|
|
17
|
+
| Show current workflow | `/workflow show` |
|
|
18
|
+
| Show specific workflow | `/workflow show <name>` |
|
|
19
|
+
| Set active workflow | `/workflow set <name>` |
|
|
20
|
+
|
|
21
|
+
## List Available Workflows
|
|
22
|
+
|
|
23
|
+
To see all available workflows:
|
|
24
|
+
|
|
25
|
+
```zsh
|
|
26
|
+
for f in pennyfarthing-dist/workflows/*.yaml; do
|
|
27
|
+
name=$(grep "^ name:" "$f" | head -1 | cut -d: -f2 | tr -d ' "')
|
|
28
|
+
desc=$(grep "^ description:" "$f" | head -1 | cut -d: -f2- | sed 's/^ *//')
|
|
29
|
+
default=$(grep "default: true" "$f" >/dev/null && echo " (default)" || echo "")
|
|
30
|
+
echo "- $name$default: $desc"
|
|
31
|
+
done
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Show Current Workflow
|
|
35
|
+
|
|
36
|
+
To display the active workflow for the current session:
|
|
37
|
+
|
|
38
|
+
```zsh
|
|
39
|
+
# Get workflow from session file
|
|
40
|
+
SESSION=$(ls .session/*-session.md 2>/dev/null | head -1)
|
|
41
|
+
if [[ -n "$SESSION" ]]; then
|
|
42
|
+
WORKFLOW=$(grep "^workflow:" "$SESSION" | cut -d: -f2 | tr -d ' ')
|
|
43
|
+
PHASE=$(grep "^\*\*Phase:\*\*" "$SESSION" | sed 's/.*\*\* //')
|
|
44
|
+
echo "Current workflow: ${WORKFLOW:-tdd (default)}"
|
|
45
|
+
echo "Current phase: ${PHASE:-unknown}"
|
|
46
|
+
fi
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
To show details of a specific workflow:
|
|
50
|
+
|
|
51
|
+
```zsh
|
|
52
|
+
cat pennyfarthing-dist/workflows/<name>.yaml
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Workflow Phase Visualization
|
|
56
|
+
|
|
57
|
+
```zsh
|
|
58
|
+
WORKFLOW_FILE="pennyfarthing-dist/workflows/<name>.yaml"
|
|
59
|
+
echo "Phases:"
|
|
60
|
+
grep -A1 "^ - name:" "$WORKFLOW_FILE" | grep -E "(name:|agent:)" | paste - - | while read line; do
|
|
61
|
+
name=$(echo "$line" | grep -o "name: [a-z]*" | cut -d: -f2 | tr -d ' ')
|
|
62
|
+
agent=$(echo "$line" | grep -o "agent: [a-z-]*" | cut -d: -f2 | tr -d ' ')
|
|
63
|
+
echo " $name → $agent"
|
|
64
|
+
done
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Set Active Workflow
|
|
68
|
+
|
|
69
|
+
To switch workflows mid-session (use sparingly):
|
|
70
|
+
|
|
71
|
+
1. Verify workflow exists:
|
|
72
|
+
```zsh
|
|
73
|
+
ls pennyfarthing-dist/workflows/<name>.yaml
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
2. Update session file's workflow field:
|
|
77
|
+
```zsh
|
|
78
|
+
# Edit .session/{story-id}-session.md
|
|
79
|
+
# Add or update: workflow: <name>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
3. Continue with the new workflow's agent sequence
|
|
83
|
+
|
|
84
|
+
**Note:** Switching workflows mid-session resets phase tracking. Only do this when the story requirements have fundamentally changed.
|
|
85
|
+
|
|
86
|
+
## Workflow File Locations
|
|
87
|
+
|
|
88
|
+
| Location | Purpose |
|
|
89
|
+
|----------|---------|
|
|
90
|
+
| `pennyfarthing-dist/workflows/` | Built-in workflows |
|
|
91
|
+
| `.claude/workflows/` | User-created custom workflows (symlinked) |
|
|
92
|
+
|
|
93
|
+
## Built-in Workflows
|
|
94
|
+
|
|
95
|
+
### TDD (default for 3+ point features)
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
SM (setup) → TEA (red) → Dev (green) → Reviewer (review) → SM (finish)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
- Full test-driven development cycle
|
|
102
|
+
- TEA writes failing tests first
|
|
103
|
+
- Dev implements to make tests pass
|
|
104
|
+
- Triggers: `types: [feature, enhancement]`, `points.min: 3`
|
|
105
|
+
|
|
106
|
+
### Trivial (for 1-2 point fixes)
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
SM (setup) → Dev (implement) → Reviewer (review) → SM (finish)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
- Skips TEA phase for quick fixes
|
|
113
|
+
- Dev ensures existing tests still pass
|
|
114
|
+
- Triggers: `types: [chore, fix, refactor]`, `points.max: 2`
|
|
115
|
+
|
|
116
|
+
## Creating Custom Workflows
|
|
117
|
+
|
|
118
|
+
See `pennyfarthing-dist/guides/workflow-schema.md` for the full schema.
|
|
119
|
+
|
|
120
|
+
Example documentation workflow:
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
workflow:
|
|
124
|
+
name: docs
|
|
125
|
+
description: Documentation updates
|
|
126
|
+
version: "1.0.0"
|
|
127
|
+
|
|
128
|
+
phases:
|
|
129
|
+
- name: setup
|
|
130
|
+
agent: sm
|
|
131
|
+
- name: write
|
|
132
|
+
agent: tech-writer
|
|
133
|
+
output: [documentation]
|
|
134
|
+
- name: review
|
|
135
|
+
agent: reviewer
|
|
136
|
+
gate:
|
|
137
|
+
type: approval
|
|
138
|
+
- name: finish
|
|
139
|
+
agent: sm
|
|
140
|
+
|
|
141
|
+
triggers:
|
|
142
|
+
types: [docs]
|
|
143
|
+
tags: [documentation]
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Routing Priority
|
|
147
|
+
|
|
148
|
+
When multiple workflows match a story:
|
|
149
|
+
|
|
150
|
+
1. **Explicit tag:** `workflow:docs` on story overrides everything
|
|
151
|
+
2. **Trigger tags:** Story tags match workflow's `triggers.tags`
|
|
152
|
+
3. **Type match:** Story type matches workflow's `triggers.types`
|
|
153
|
+
4. **Points match:** Story points within `triggers.points` range
|
|
154
|
+
5. **Default:** Workflow with `default: true`
|
|
155
|
+
|
|
156
|
+
## Related
|
|
157
|
+
|
|
158
|
+
- Workflow schema: `pennyfarthing-dist/guides/workflow-schema.md`
|
|
159
|
+
- Workflow loader: `packages/core/src/workflow/workflow-loader.ts`
|
|
160
|
+
- Workflow router: `packages/core/src/workflow/workflow-router.ts`
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: yq
|
|
3
|
+
description: yq is a YAML processor. Use this skill when reading, modifying, or querying YAML files from the command line.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# yq - YAML Processor Skill
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
`yq` is a lightweight and portable command-line YAML processor. It's like `jq` but for YAML. This skill covers the mikefarah/yq version (v4+).
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# macOS
|
|
16
|
+
brew install yq
|
|
17
|
+
|
|
18
|
+
# Check version (should be v4+)
|
|
19
|
+
yq --version
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Basic Operations
|
|
23
|
+
|
|
24
|
+
### Read a Value
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Read a top-level key
|
|
28
|
+
yq '.theme' config.yaml
|
|
29
|
+
# Output: discworld
|
|
30
|
+
|
|
31
|
+
# Read nested value
|
|
32
|
+
yq '.agents.sm.character' personas.yaml
|
|
33
|
+
# Output: Captain Carrot Ironfoundersson
|
|
34
|
+
|
|
35
|
+
# Read with default if missing
|
|
36
|
+
yq '.missing // "default"' config.yaml
|
|
37
|
+
# Output: default
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Read Entire Section
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
# Get all properties of a key
|
|
44
|
+
yq '.agents.sm' personas.yaml
|
|
45
|
+
# Output: the entire sm object as YAML
|
|
46
|
+
|
|
47
|
+
# Output as JSON
|
|
48
|
+
yq -o json '.agents.sm' personas.yaml
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Check if Key Exists
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Returns "true" or "false"
|
|
55
|
+
yq '.agents.sm | has("helper")' personas.yaml
|
|
56
|
+
|
|
57
|
+
# Returns null if doesn't exist
|
|
58
|
+
yq '.agents.missing' personas.yaml
|
|
59
|
+
# Output: null
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Modifying YAML
|
|
63
|
+
|
|
64
|
+
### In-Place Edit
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Edit file in place
|
|
68
|
+
yq -i '.theme = "startrek"' config.yaml
|
|
69
|
+
|
|
70
|
+
# Add a new key
|
|
71
|
+
yq -i '.newkey = "value"' config.yaml
|
|
72
|
+
|
|
73
|
+
# Delete a key
|
|
74
|
+
yq -i 'del(.unwanted)' config.yaml
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Output to Stdout (Non-Destructive)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Modify and output to stdout (file unchanged)
|
|
81
|
+
yq '.count = 42' config.yaml
|
|
82
|
+
|
|
83
|
+
# Pipe to new file
|
|
84
|
+
yq '.theme = "newtheme"' config.yaml > new-config.yaml
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Common Patterns
|
|
88
|
+
|
|
89
|
+
### Iterate Over Arrays
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# List all items
|
|
93
|
+
yq '.stories[]' sprint.yaml
|
|
94
|
+
|
|
95
|
+
# Get specific field from each item
|
|
96
|
+
yq '.stories[].title' sprint.yaml
|
|
97
|
+
|
|
98
|
+
# Filter items
|
|
99
|
+
yq '.stories[] | select(.status == "in-progress")' sprint.yaml
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Iterate Over Object Keys
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Get all agent names
|
|
106
|
+
yq '.agents | keys' personas.yaml
|
|
107
|
+
# Output:
|
|
108
|
+
# - sm
|
|
109
|
+
# - tea
|
|
110
|
+
# - dev
|
|
111
|
+
# - reviewer
|
|
112
|
+
|
|
113
|
+
# Iterate with key-value
|
|
114
|
+
yq '.agents | to_entries | .[] | .key + ": " + .value.character' personas.yaml
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Merge Files
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Merge two YAML files (second overwrites first)
|
|
121
|
+
yq '. *= load("overrides.yaml")' base.yaml
|
|
122
|
+
|
|
123
|
+
# Merge specific key
|
|
124
|
+
yq '.agents.sm *= load("sm-overrides.yaml")' personas.yaml
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Extract to Environment Variables
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Export as shell variables
|
|
131
|
+
eval $(yq -o shell '.database' config.yaml)
|
|
132
|
+
# Creates: $host, $port, $name
|
|
133
|
+
|
|
134
|
+
# Specific format
|
|
135
|
+
yq '.theme' config.yaml | xargs -I{} echo "THEME={}"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Working with Multi-Document YAML
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# Select specific document (0-indexed)
|
|
142
|
+
yq 'select(document_index == 0)' multi.yaml
|
|
143
|
+
|
|
144
|
+
# Process all documents
|
|
145
|
+
yq '... | select(has("kind"))' k8s-manifests.yaml
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## String Operations
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# Uppercase
|
|
152
|
+
yq '.name | upcase' config.yaml
|
|
153
|
+
|
|
154
|
+
# String contains
|
|
155
|
+
yq '.agents | to_entries | .[] | select(.value.style | contains("honest"))' personas.yaml
|
|
156
|
+
|
|
157
|
+
# String interpolation
|
|
158
|
+
yq '"Theme is: " + .theme' config.yaml
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Conditional Logic
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
# If-then-else
|
|
165
|
+
yq 'if .count > 10 then "many" else "few" end' config.yaml
|
|
166
|
+
|
|
167
|
+
# Select with condition
|
|
168
|
+
yq '.stories[] | select(.points >= 5)' sprint.yaml
|
|
169
|
+
|
|
170
|
+
# Null coalescing
|
|
171
|
+
yq '.optional // "default"' config.yaml
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Output Formats
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# YAML (default)
|
|
178
|
+
yq '.data' file.yaml
|
|
179
|
+
|
|
180
|
+
# JSON
|
|
181
|
+
yq -o json '.data' file.yaml
|
|
182
|
+
|
|
183
|
+
# Properties format
|
|
184
|
+
yq -o props '.data' file.yaml
|
|
185
|
+
|
|
186
|
+
# CSV (for arrays)
|
|
187
|
+
yq -o csv '.items' file.yaml
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Common Use Cases in Pennyfarthing
|
|
191
|
+
|
|
192
|
+
### Read Persona Config
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Get current theme
|
|
196
|
+
yq '.theme' .claude/persona-config.yaml
|
|
197
|
+
|
|
198
|
+
# Get agent persona
|
|
199
|
+
THEME=$(yq '.theme' .claude/persona-config.yaml)
|
|
200
|
+
yq ".agents.sm" personas/themes/${THEME}.yaml
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Query Sprint Data
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
# Get current sprint stories
|
|
207
|
+
yq '.stories[] | select(.status == "todo")' sprint/current-sprint.yaml
|
|
208
|
+
|
|
209
|
+
# Count stories by status
|
|
210
|
+
yq '[.stories[].status] | group_by(.) | map({(.[0]): length}) | add' sprint/current-sprint.yaml
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Update Session Files
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# Update status in YAML frontmatter (if using YAML)
|
|
217
|
+
yq -i '.status = "in-progress"' .session/current_work.yaml
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Quick Reference
|
|
221
|
+
|
|
222
|
+
| Action | Command |
|
|
223
|
+
|--------|---------|
|
|
224
|
+
| Read value | `yq '.key' file.yaml` |
|
|
225
|
+
| Read nested | `yq '.parent.child' file.yaml` |
|
|
226
|
+
| Set value | `yq -i '.key = "value"' file.yaml` |
|
|
227
|
+
| Delete key | `yq -i 'del(.key)' file.yaml` |
|
|
228
|
+
| Array length | `yq '.array | length' file.yaml` |
|
|
229
|
+
| Filter array | `yq '.array[] \| select(.field == "value")' file.yaml` |
|
|
230
|
+
| Output JSON | `yq -o json '.' file.yaml` |
|
|
231
|
+
| Merge files | `yq '. *= load("other.yaml")' base.yaml` |
|
|
232
|
+
| Default value | `yq '.key // "default"' file.yaml` |
|
|
233
|
+
|
|
234
|
+
## Troubleshooting
|
|
235
|
+
|
|
236
|
+
### "null" Output
|
|
237
|
+
|
|
238
|
+
The key doesn't exist. Use `// "default"` for fallback:
|
|
239
|
+
```bash
|
|
240
|
+
yq '.missing // "not found"' file.yaml
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Quotes in Output
|
|
244
|
+
|
|
245
|
+
yq preserves YAML formatting. Use `-r` (raw) for unquoted strings:
|
|
246
|
+
```bash
|
|
247
|
+
yq -r '.theme' config.yaml
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### Boolean as String
|
|
251
|
+
|
|
252
|
+
YAML booleans (`true`/`false`) are parsed as booleans. Compare accordingly:
|
|
253
|
+
```bash
|
|
254
|
+
# CORRECT
|
|
255
|
+
yq '.enabled == true' config.yaml
|
|
256
|
+
|
|
257
|
+
# WRONG (comparing to string)
|
|
258
|
+
yq '.enabled == "true"' config.yaml
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Reference
|
|
262
|
+
|
|
263
|
+
- **Official Docs:** https://mikefarah.gitbook.io/yq/
|
|
264
|
+
- **GitHub:** https://github.com/mikefarah/yq
|