@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,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
description: Code review checklists and patterns for Conductor. Use when reviewing PRs, self-reviewing code, or checking for common issues before commit.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Review Skill - Conductor Project
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill provides code review patterns and checklists for the Conductor project. Use this when reviewing PRs or self-reviewing before commit.
|
|
11
|
+
|
|
12
|
+
## Review Checklists
|
|
13
|
+
|
|
14
|
+
### API Handler Review
|
|
15
|
+
|
|
16
|
+
- [ ] **Authorization check present** - Uses `utils.GetClientIDsForQuery()` for admin bypass
|
|
17
|
+
- [ ] **Input validation** - Request body and params validated
|
|
18
|
+
- [ ] **Error handling** - Appropriate status codes, no internal leaks
|
|
19
|
+
- [ ] **Response format** - Consistent with other endpoints
|
|
20
|
+
- [ ] **Tests** - Cover happy path + edge cases + error cases
|
|
21
|
+
|
|
22
|
+
### UI Component Review
|
|
23
|
+
|
|
24
|
+
- [ ] **Props typed correctly** - Interface defined, no `any`
|
|
25
|
+
- [ ] **Loading states** - Shows spinner/skeleton while fetching
|
|
26
|
+
- [ ] **Error states** - Graceful error display with retry option
|
|
27
|
+
- [ ] **Empty states** - Meaningful message when no data
|
|
28
|
+
- [ ] **Accessibility** - Proper ARIA labels, keyboard navigation
|
|
29
|
+
- [ ] **No hardcoded strings** - Ready for i18n
|
|
30
|
+
|
|
31
|
+
### Database Changes
|
|
32
|
+
|
|
33
|
+
- [ ] **Migration reversible** - Can roll back cleanly
|
|
34
|
+
- [ ] **Indexes present** - For common query patterns
|
|
35
|
+
- [ ] **FK constraints** - Appropriate relationships defined
|
|
36
|
+
- [ ] **NULL semantics** - Comments explain NULL meaning
|
|
37
|
+
- [ ] **Default values** - Sensible defaults for new columns
|
|
38
|
+
|
|
39
|
+
### TypeScript/React
|
|
40
|
+
|
|
41
|
+
- [ ] **Type imports use `import type`** - Required for build
|
|
42
|
+
- [ ] **No unused imports** - Remove or use
|
|
43
|
+
- [ ] **No `any` types** - Use proper types
|
|
44
|
+
- [ ] **useCallback/useMemo** - For expensive operations in deps
|
|
45
|
+
- [ ] **Error boundaries** - Around risky components
|
|
46
|
+
|
|
47
|
+
## Common Review Issues
|
|
48
|
+
|
|
49
|
+
### Authorization
|
|
50
|
+
|
|
51
|
+
```go
|
|
52
|
+
// BAD - blocks admins with empty ClientIDs
|
|
53
|
+
if len(clientIDs) == 0 {
|
|
54
|
+
return http.StatusForbidden
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// GOOD - use centralized utility
|
|
58
|
+
clientIDs, err := utils.GetClientIDsForQuery(user, h.db)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Error Messages
|
|
62
|
+
|
|
63
|
+
```go
|
|
64
|
+
// BAD - leaks internals
|
|
65
|
+
http.Error(w, err.Error(), 500)
|
|
66
|
+
|
|
67
|
+
// GOOD - generic message, log details
|
|
68
|
+
log.Error("database error", "error", err, "user_id", user.ID)
|
|
69
|
+
http.Error(w, "Internal server error", 500)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### TypeScript Imports
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// BAD - causes build errors
|
|
76
|
+
import { SomeType } from './types';
|
|
77
|
+
|
|
78
|
+
// GOOD
|
|
79
|
+
import type { SomeType } from './types';
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### React Query
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
// BAD - query runs even when not ready
|
|
86
|
+
const { data } = useQuery({
|
|
87
|
+
queryKey: ['items', clientId],
|
|
88
|
+
queryFn: () => fetchItems(clientId),
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// GOOD - only runs when clientId is set
|
|
92
|
+
const { data } = useQuery({
|
|
93
|
+
queryKey: ['items', clientId],
|
|
94
|
+
queryFn: () => fetchItems(clientId),
|
|
95
|
+
enabled: !!clientId,
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Approval Criteria
|
|
100
|
+
|
|
101
|
+
### Must Have for Approval
|
|
102
|
+
|
|
103
|
+
1. **Tests pass** - All CI checks green
|
|
104
|
+
2. **No security issues** - Auth, input validation, no SQL injection
|
|
105
|
+
3. **No breaking changes** - Or migration path provided
|
|
106
|
+
4. **Code follows patterns** - Consistent with existing codebase
|
|
107
|
+
|
|
108
|
+
### Nice to Have
|
|
109
|
+
|
|
110
|
+
1. Documentation updated
|
|
111
|
+
2. Performance considered
|
|
112
|
+
3. Error messages helpful
|
|
113
|
+
4. Edge cases handled
|
|
114
|
+
|
|
115
|
+
## Security Checklist
|
|
116
|
+
|
|
117
|
+
- [ ] **No SQL injection** - Use parameterized queries
|
|
118
|
+
- [ ] **No XSS** - Sanitize user input in UI
|
|
119
|
+
- [ ] **Auth on all endpoints** - Middleware applied
|
|
120
|
+
- [ ] **Client isolation** - Multi-tenant data filtered
|
|
121
|
+
- [ ] **No secrets in code** - Use env vars or KMS
|
|
122
|
+
- [ ] **SSRF protection** - URL validation for external calls
|
|
123
|
+
|
|
124
|
+
## Performance Checklist
|
|
125
|
+
|
|
126
|
+
- [ ] **N+1 queries** - Use preloading/joins
|
|
127
|
+
- [ ] **Pagination** - For list endpoints
|
|
128
|
+
- [ ] **Indexes** - For filtered/sorted columns
|
|
129
|
+
- [ ] **Memoization** - For expensive React renders
|
|
130
|
+
- [ ] **Bundle size** - No unnecessary imports
|
|
131
|
+
|
|
132
|
+
## Review Comments Format
|
|
133
|
+
|
|
134
|
+
### Requesting Changes
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
**[MUST FIX]** This leaks internal error details to the client.
|
|
138
|
+
Suggest: Use a generic message and log the details server-side.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Suggestions
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
**[SUGGESTION]** Consider using `useMemo` here since this calculation
|
|
145
|
+
runs on every render.
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Questions
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
**[QUESTION]** What happens if `clientId` is undefined? Should we
|
|
152
|
+
add an early return or enabled flag?
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Praise
|
|
156
|
+
|
|
157
|
+
```
|
|
158
|
+
**[NICE]** Good use of the centralized auth utility here!
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Recent Learnings
|
|
162
|
+
|
|
163
|
+
| Date | Issue | Resolution |
|
|
164
|
+
|------|-------|------------|
|
|
165
|
+
| Dec 2024 | Admin 403 errors | Use `GetClientIDsForQuery()` |
|
|
166
|
+
| Dec 2024 | Type import errors | Use `import type` |
|
|
167
|
+
| Dec 2024 | Role-based filtering | Check analyst vs manager vs admin |
|
|
168
|
+
| Dec 2024 | Error boundaries | Wrap risky components |
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# Context Engineering Skill
|
|
2
|
+
|
|
3
|
+
**Purpose:** Strategies for managing context windows efficiently in long-running agent sessions.
|
|
4
|
+
|
|
5
|
+
**Use when:** Working on complex tasks, approaching context limits, designing subagent prompts.
|
|
6
|
+
|
|
7
|
+
**Source:** [Anthropic: Effective Context Engineering for AI Agents](https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Core Principle
|
|
12
|
+
|
|
13
|
+
> Find the smallest set of high-signal tokens that maximize the likelihood of your desired outcome.
|
|
14
|
+
|
|
15
|
+
Don't pre-load everything. Store lightweight identifiers (paths, URLs, queries) and load just-in-time.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Just-in-Time Context Loading
|
|
20
|
+
|
|
21
|
+
### The Pattern
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
WRONG: Read all 50 test files upfront to understand patterns
|
|
25
|
+
RIGHT: Store test file paths, read specific ones when implementing
|
|
26
|
+
|
|
27
|
+
WRONG: Load entire codebase structure at session start
|
|
28
|
+
RIGHT: Load CLAUDE.md + current task context, explore as needed
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Implementation
|
|
32
|
+
|
|
33
|
+
1. **Store references, not content:**
|
|
34
|
+
```
|
|
35
|
+
- Test patterns: See .claude/skills/testing/SKILL.md
|
|
36
|
+
- API handlers: internal/handlers/ (or use repos.yaml for multi-repo)
|
|
37
|
+
- UI components: src/components/
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
2. **Load on demand:**
|
|
41
|
+
```
|
|
42
|
+
"I need to implement a handler. Let me read one existing handler first..."
|
|
43
|
+
[reads one file, not all handlers]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
3. **Summarize, don't quote:**
|
|
47
|
+
```
|
|
48
|
+
GOOD: "The auth middleware checks JWT tokens in the Authorization header"
|
|
49
|
+
BAD: [pastes entire middleware.go into context]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Context Editing
|
|
55
|
+
|
|
56
|
+
### Clearing Stale Results
|
|
57
|
+
|
|
58
|
+
Tool results become stale over time. In long sessions:
|
|
59
|
+
|
|
60
|
+
1. **Identify stale context:** Results from early in session no longer relevant
|
|
61
|
+
2. **Summarize findings:** "Earlier I found X, Y, Z"
|
|
62
|
+
3. **Clear mental model:** Focus on current task state
|
|
63
|
+
|
|
64
|
+
### When to Reset
|
|
65
|
+
|
|
66
|
+
Consider resetting context when:
|
|
67
|
+
- You've been working for 20+ tool calls
|
|
68
|
+
- Earlier findings are no longer relevant
|
|
69
|
+
- You're going in circles
|
|
70
|
+
- The task has shifted significantly
|
|
71
|
+
|
|
72
|
+
### Reset Pattern
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
"Let me summarize progress:
|
|
76
|
+
- Completed: A, B, C
|
|
77
|
+
- Current state: D
|
|
78
|
+
- Remaining: E, F
|
|
79
|
+
|
|
80
|
+
Starting fresh from current state..."
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Subagent Patterns
|
|
86
|
+
|
|
87
|
+
### The Golden Rule
|
|
88
|
+
|
|
89
|
+
> Subagents return SUMMARIES, not full context.
|
|
90
|
+
|
|
91
|
+
### Spawning Subagents
|
|
92
|
+
|
|
93
|
+
When to spawn:
|
|
94
|
+
- Task requires sifting through large amounts of data
|
|
95
|
+
- Parallel exploration needed
|
|
96
|
+
- Isolated context window beneficial
|
|
97
|
+
|
|
98
|
+
How to spawn:
|
|
99
|
+
```
|
|
100
|
+
Task tool:
|
|
101
|
+
subagent_type: "Explore" or "general-purpose"
|
|
102
|
+
model: "haiku" # For mechanical tasks
|
|
103
|
+
prompt: "Find X, summarize what you find. Don't paste entire files."
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Receiving Subagent Results
|
|
107
|
+
|
|
108
|
+
What you get back:
|
|
109
|
+
- Summary of findings
|
|
110
|
+
- Key file paths (not file contents)
|
|
111
|
+
- Specific answers to questions asked
|
|
112
|
+
|
|
113
|
+
What you DON'T get:
|
|
114
|
+
- Full tool call history
|
|
115
|
+
- All files the subagent read
|
|
116
|
+
- Raw grep/glob results
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Memory Tools
|
|
121
|
+
|
|
122
|
+
### Cross-Session State
|
|
123
|
+
|
|
124
|
+
For long-running work, use external files:
|
|
125
|
+
|
|
126
|
+
1. **Session file:** `.session/{STORY_ID}-session.md`
|
|
127
|
+
- Current story context
|
|
128
|
+
- Progress notes
|
|
129
|
+
- Handoff state
|
|
130
|
+
|
|
131
|
+
2. **Progress log:** Project-specific tracking
|
|
132
|
+
- What was done
|
|
133
|
+
- What remains
|
|
134
|
+
- Blockers encountered
|
|
135
|
+
|
|
136
|
+
3. **Sidecar files:** `.pennyfarthing/agents/{agent}-sidecar/`
|
|
137
|
+
- Patterns learned
|
|
138
|
+
- Common fixes
|
|
139
|
+
- Accumulated knowledge
|
|
140
|
+
|
|
141
|
+
### Writing to Memory
|
|
142
|
+
|
|
143
|
+
When you learn something reusable:
|
|
144
|
+
```
|
|
145
|
+
"This pattern worked well. Let me add it to the sidecar..."
|
|
146
|
+
[Edit sidecar file with new pattern]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
When completing work:
|
|
150
|
+
```
|
|
151
|
+
"Session complete. Updating session file with final state..."
|
|
152
|
+
[Update .session/{STORY_ID}-session.md]
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## CLAUDE.md Best Practices
|
|
158
|
+
|
|
159
|
+
### Keep It Minimal
|
|
160
|
+
|
|
161
|
+
CLAUDE.md should contain ONLY:
|
|
162
|
+
- Project conventions (naming, structure)
|
|
163
|
+
- Key commands (test, build, deploy)
|
|
164
|
+
- Directory layout
|
|
165
|
+
- Architecture notes
|
|
166
|
+
- Core app features
|
|
167
|
+
|
|
168
|
+
### What NOT to Include
|
|
169
|
+
|
|
170
|
+
- Full API documentation
|
|
171
|
+
- Complete code examples
|
|
172
|
+
- Every edge case
|
|
173
|
+
- Historical decisions
|
|
174
|
+
|
|
175
|
+
### Reference, Don't Duplicate
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
GOOD:
|
|
179
|
+
"Test patterns: See .claude/skills/testing/SKILL.md"
|
|
180
|
+
|
|
181
|
+
BAD:
|
|
182
|
+
"Here's how to test:
|
|
183
|
+
[300 lines of testing documentation]"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Context Budget
|
|
189
|
+
|
|
190
|
+
### Typical Limits
|
|
191
|
+
|
|
192
|
+
| Content Type | Target Lines |
|
|
193
|
+
|-------------|--------------|
|
|
194
|
+
| Agent file | 200-400 |
|
|
195
|
+
| Session file | 50-100 |
|
|
196
|
+
| Skill file | 100-200 |
|
|
197
|
+
| Repo context | 30-50 |
|
|
198
|
+
| **Total per activation** | **500-800** |
|
|
199
|
+
|
|
200
|
+
### Staying Under Budget
|
|
201
|
+
|
|
202
|
+
1. **Load incrementally:** Start minimal, add as needed
|
|
203
|
+
2. **Summarize findings:** Don't keep raw results
|
|
204
|
+
3. **Use subagents:** Offload data-heavy exploration
|
|
205
|
+
4. **Reference, don't embed:** Point to files instead of pasting
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Signs You're Using Context Poorly
|
|
210
|
+
|
|
211
|
+
| Symptom | Problem | Solution |
|
|
212
|
+
|---------|---------|----------|
|
|
213
|
+
| Reading same file multiple times | Not retaining key info | Summarize on first read |
|
|
214
|
+
| Pasting entire files in responses | Over-sharing | Quote only relevant sections |
|
|
215
|
+
| Long tool result chains | Not filtering | Request focused results |
|
|
216
|
+
| Subagent returns everything | Bad prompt | Ask for summary, not raw data |
|
|
217
|
+
| "I forgot what we were doing" | Context overflow | Reset with progress summary |
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Templates
|
|
222
|
+
|
|
223
|
+
### Subagent Exploration Prompt
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
Explore the codebase to find [SPECIFIC THING].
|
|
227
|
+
|
|
228
|
+
Return:
|
|
229
|
+
1. File paths where you found it (not file contents)
|
|
230
|
+
2. Brief description of what each file does
|
|
231
|
+
3. The most relevant 5-10 lines (not entire file)
|
|
232
|
+
|
|
233
|
+
Do NOT paste entire files or long grep results.
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Progress Summary Template
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
## Progress Summary
|
|
240
|
+
|
|
241
|
+
**Completed:**
|
|
242
|
+
- [x] Task A - [brief result]
|
|
243
|
+
- [x] Task B - [brief result]
|
|
244
|
+
|
|
245
|
+
**Current State:**
|
|
246
|
+
- Working on: [current task]
|
|
247
|
+
- Blockers: [any blockers]
|
|
248
|
+
|
|
249
|
+
**Remaining:**
|
|
250
|
+
- [ ] Task C
|
|
251
|
+
- [ ] Task D
|
|
252
|
+
|
|
253
|
+
**Key Findings:**
|
|
254
|
+
- [Important thing 1]
|
|
255
|
+
- [Important thing 2]
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Key Insight
|
|
261
|
+
|
|
262
|
+
Context is precious. Every token you waste on stale information is a token you can't use for solving the actual problem.
|
|
263
|
+
|
|
264
|
+
**Ask yourself:**
|
|
265
|
+
- Do I need to load this file, or just know it exists?
|
|
266
|
+
- Can I summarize this finding instead of quoting it?
|
|
267
|
+
- Would a subagent handle this better?
|
|
268
|
+
- Is this context still relevant?
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cyclist
|
|
3
|
+
description: Launch Cyclist visual terminal for Claude Code. Use this skill when starting Cyclist to monitor agent work, view personas, or debug sessions.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Cyclist Visual Terminal Skill
|
|
7
|
+
|
|
8
|
+
## When to Use This Skill
|
|
9
|
+
|
|
10
|
+
- Starting Cyclist to monitor Claude Code sessions
|
|
11
|
+
- Viewing persona portraits and attributes
|
|
12
|
+
- Debugging agent interactions visually
|
|
13
|
+
- Running Cyclist in web mode for development
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
Cyclist is a visual terminal interface for Claude Code that displays:
|
|
18
|
+
- Real-time terminal output with persona styling
|
|
19
|
+
- Agent portraits and OCEAN personality traits
|
|
20
|
+
- Story/session progress tracking
|
|
21
|
+
- Git status and context information
|
|
22
|
+
|
|
23
|
+
## Environment Variables
|
|
24
|
+
|
|
25
|
+
| Variable | Description | Default |
|
|
26
|
+
|----------|-------------|---------|
|
|
27
|
+
| `CYCLIST_PROJECT_DIR` | Project directory path (required for web mode) | `$PWD` |
|
|
28
|
+
| `PORT` | Server port | `1898` |
|
|
29
|
+
| `CYCLIST_SESSION_ID` | Session tracking ID | auto-generated |
|
|
30
|
+
| `CYCLIST_DEV_WEB` | Enable web dev mode (set to `1`) | unset |
|
|
31
|
+
| `CYCLIST_THEME_PATH` | Custom theme file path | auto-detected |
|
|
32
|
+
|
|
33
|
+
## CLI Flags (Electron App)
|
|
34
|
+
|
|
35
|
+
| Flag | Description |
|
|
36
|
+
|------|-------------|
|
|
37
|
+
| `--project-dir=/path` | Specify project directory |
|
|
38
|
+
|
|
39
|
+
## Launch Commands
|
|
40
|
+
|
|
41
|
+
### Web Backend (Browser Mode)
|
|
42
|
+
|
|
43
|
+
Run from the **cyclist package directory**:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Production mode
|
|
47
|
+
cd packages/cyclist
|
|
48
|
+
CYCLIST_PROJECT_DIR=/path/to/project npm start
|
|
49
|
+
|
|
50
|
+
# Development mode with hot reload
|
|
51
|
+
cd packages/cyclist
|
|
52
|
+
CYCLIST_PROJECT_DIR=/path/to/project npm run dev:web
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Opens at: http://localhost:1898 (or next available port)
|
|
56
|
+
|
|
57
|
+
### Electron App
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Using CLI wrapper (if installed)
|
|
61
|
+
cyclist /path/to/project
|
|
62
|
+
|
|
63
|
+
# Direct launch via open
|
|
64
|
+
open -a Cyclist --args --project-dir=/path/to/project
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Quick Launch Examples
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Web mode for current directory
|
|
71
|
+
cd packages/cyclist && CYCLIST_PROJECT_DIR=$PWD npm start
|
|
72
|
+
|
|
73
|
+
# Web mode on custom port
|
|
74
|
+
cd packages/cyclist && PORT=3000 CYCLIST_PROJECT_DIR=/path npm start
|
|
75
|
+
|
|
76
|
+
# Dev mode with hot reload
|
|
77
|
+
cd packages/cyclist && CYCLIST_DEV_WEB=1 CYCLIST_PROJECT_DIR=/path npm run dev:server
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Port Auto-Discovery
|
|
81
|
+
|
|
82
|
+
The server automatically finds an available port starting from 1898:
|
|
83
|
+
- Tries ports 1898, 1899, 1900... up to 10 attempts
|
|
84
|
+
- Logs the actual port: `Cyclist running at http://localhost:{port}`
|
|
85
|
+
|
|
86
|
+
## npm Scripts Reference
|
|
87
|
+
|
|
88
|
+
From `packages/cyclist/`:
|
|
89
|
+
|
|
90
|
+
| Script | Description |
|
|
91
|
+
|--------|-------------|
|
|
92
|
+
| `npm start` | Run production server |
|
|
93
|
+
| `npm run dev` | Electron dev mode with file watching |
|
|
94
|
+
| `npm run dev:web` | Web server with tsx watch |
|
|
95
|
+
| `npm run dev:server` | Server-only with tsx watch |
|
|
96
|
+
| `npm run build` | Compile TypeScript |
|
|
97
|
+
|
|
98
|
+
## Requirements
|
|
99
|
+
|
|
100
|
+
- Project must have `.claude/` directory (Pennyfarthing-enabled)
|
|
101
|
+
- For Electron: Cyclist.app must be installed
|
|
102
|
+
- For web: Run from `packages/cyclist/` directory
|
|
103
|
+
|
|
104
|
+
## Troubleshooting
|
|
105
|
+
|
|
106
|
+
### Server won't start
|
|
107
|
+
- Ensure you're in the cyclist package directory
|
|
108
|
+
- Run `npm run build` first if dist/ is stale
|
|
109
|
+
- Check console for port conflict messages
|
|
110
|
+
|
|
111
|
+
### No portraits showing
|
|
112
|
+
- Verify `pennyfarthing-dist/personas/portraits/` exists
|
|
113
|
+
- Check theme in `.claude/persona-config.yaml`
|
|
114
|
+
|
|
115
|
+
### "Not a Pennyfarthing project"
|
|
116
|
+
- Ensure project has `.claude/` directory
|
|
117
|
+
- Run `pennyfarthing init` in the project first
|