@pennyfarthing/core 10.0.1 → 10.0.2
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/package.json +13 -3
- package/pennyfarthing-dist/agents/README.md +348 -0
- package/pennyfarthing-dist/agents/architect.md +180 -0
- package/pennyfarthing-dist/agents/dev.md +169 -0
- package/pennyfarthing-dist/agents/devops.md +203 -0
- package/pennyfarthing-dist/agents/handoff.md +235 -0
- package/pennyfarthing-dist/agents/orchestrator.md +182 -0
- package/pennyfarthing-dist/agents/pm.md +152 -0
- package/pennyfarthing-dist/agents/reviewer-preflight.md +129 -0
- package/pennyfarthing-dist/agents/reviewer.md +197 -0
- package/pennyfarthing-dist/agents/sm-file-summary.md +79 -0
- package/pennyfarthing-dist/agents/sm-finish.md +82 -0
- package/pennyfarthing-dist/agents/sm-handoff.md +129 -0
- package/pennyfarthing-dist/agents/sm-setup.md +251 -0
- package/pennyfarthing-dist/agents/sm.md +298 -0
- package/pennyfarthing-dist/agents/tea.md +161 -0
- package/pennyfarthing-dist/agents/tech-writer.md +226 -0
- package/pennyfarthing-dist/agents/testing-runner.md +184 -0
- package/pennyfarthing-dist/agents/ux-designer.md +236 -0
- package/pennyfarthing-dist/agents/workflow-status-check.md +96 -0
- package/pennyfarthing-dist/commands/architect.md +9 -0
- package/pennyfarthing-dist/commands/benchmark-control.md +69 -0
- package/pennyfarthing-dist/commands/benchmark.md +485 -0
- package/pennyfarthing-dist/commands/brainstorming.md +91 -0
- package/pennyfarthing-dist/commands/check.md +156 -0
- package/pennyfarthing-dist/commands/chore.md +218 -0
- package/pennyfarthing-dist/commands/close-epic.md +139 -0
- package/pennyfarthing-dist/commands/continue-session.md +218 -0
- package/pennyfarthing-dist/commands/create-branches-from-story.md +358 -0
- package/pennyfarthing-dist/commands/create-theme.md +29 -0
- package/pennyfarthing-dist/commands/dev.md +9 -0
- package/pennyfarthing-dist/commands/devops.md +9 -0
- package/pennyfarthing-dist/commands/fix-blocker.md +22 -0
- package/pennyfarthing-dist/commands/git-cleanup.md +57 -0
- package/pennyfarthing-dist/commands/health-check.md +143 -0
- package/pennyfarthing-dist/commands/help.md +264 -0
- package/pennyfarthing-dist/commands/job-fair.md +102 -0
- package/pennyfarthing-dist/commands/list-themes.md +21 -0
- package/pennyfarthing-dist/commands/new-work.md +23 -0
- package/pennyfarthing-dist/commands/orchestrator.md +9 -0
- package/pennyfarthing-dist/commands/parallel-work.md +73 -0
- package/pennyfarthing-dist/commands/party-mode.md +77 -0
- package/pennyfarthing-dist/commands/patch.md +210 -0
- package/pennyfarthing-dist/commands/permissions.md +193 -0
- package/pennyfarthing-dist/commands/pm.md +9 -0
- package/pennyfarthing-dist/commands/prime.md +136 -0
- package/pennyfarthing-dist/commands/release.md +74 -0
- package/pennyfarthing-dist/commands/repo-status.md +49 -0
- package/pennyfarthing-dist/commands/retro.md +200 -0
- package/pennyfarthing-dist/commands/reviewer.md +9 -0
- package/pennyfarthing-dist/commands/run-ci.md +116 -0
- package/pennyfarthing-dist/commands/set-theme.md +56 -0
- package/pennyfarthing-dist/commands/setup.md +65 -0
- package/pennyfarthing-dist/commands/show-theme.md +21 -0
- package/pennyfarthing-dist/commands/sm.md +9 -0
- package/pennyfarthing-dist/commands/solo.md +447 -0
- package/pennyfarthing-dist/commands/sprint-planning.md +109 -0
- package/pennyfarthing-dist/commands/sprint.md +142 -0
- package/pennyfarthing-dist/commands/standalone.md +194 -0
- package/pennyfarthing-dist/commands/start-epic.md +168 -0
- package/pennyfarthing-dist/commands/sync-epic-to-jira.md +184 -0
- package/pennyfarthing-dist/commands/sync-work-with-sprint.md +373 -0
- package/pennyfarthing-dist/commands/tea.md +9 -0
- package/pennyfarthing-dist/commands/tech-writer.md +9 -0
- package/pennyfarthing-dist/commands/theme-maker.md +676 -0
- package/pennyfarthing-dist/commands/update-domain-docs.md +83 -0
- package/pennyfarthing-dist/commands/ux-designer.md +9 -0
- package/pennyfarthing-dist/commands/work.md +25 -0
- package/pennyfarthing-dist/commands/workflow.md +21 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +92 -0
- package/pennyfarthing-dist/guides/agent-coordination.md +475 -0
- package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +432 -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/hooks.md +230 -0
- package/pennyfarthing-dist/guides/measurement-framework.md +210 -0
- package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +766 -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/prompt-patterns.md +338 -0
- package/pennyfarthing-dist/guides/scale-levels.md +114 -0
- package/pennyfarthing-dist/guides/session-artifacts.md +193 -0
- package/pennyfarthing-dist/guides/session-schema.md +346 -0
- package/pennyfarthing-dist/guides/skill-schema.md +412 -0
- package/pennyfarthing-dist/guides/workflow-schema.md +257 -0
- package/pennyfarthing-dist/guides/workflow-step-schema.md +512 -0
- package/pennyfarthing-dist/guides/worktree-mode.md +113 -0
- package/pennyfarthing-dist/guides/xml-tags.md +627 -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/a-team.yaml +331 -0
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +324 -0
- package/pennyfarthing-dist/personas/themes/battlestar-galactica.yaml +282 -0
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +289 -0
- package/pennyfarthing-dist/personas/themes/catch-22.yaml +304 -0
- package/pennyfarthing-dist/personas/themes/control.yaml +201 -0
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +315 -0
- package/pennyfarthing-dist/personas/themes/discworld.yaml +334 -0
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +284 -0
- package/pennyfarthing-dist/personas/themes/dune.yaml +301 -0
- package/pennyfarthing-dist/personas/themes/firefly.yaml +320 -0
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +284 -0
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +316 -0
- package/pennyfarthing-dist/personas/themes/hitchhikers-guide.yaml +323 -0
- package/pennyfarthing-dist/personas/themes/lord-of-the-rings.yaml +326 -0
- package/pennyfarthing-dist/personas/themes/mad-max.yaml +349 -0
- package/pennyfarthing-dist/personas/themes/mash.yaml +329 -0
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +344 -0
- package/pennyfarthing-dist/personas/themes/sandman.yaml +282 -0
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +358 -0
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +297 -0
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +337 -0
- package/pennyfarthing-dist/personas/themes/the-matrix.yaml +342 -0
- package/pennyfarthing-dist/personas/themes/watchmen.yaml +285 -0
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +285 -0
- package/pennyfarthing-dist/personas/themes/x-files.yaml +296 -0
- package/pennyfarthing-dist/scripts/README.md +87 -0
- package/pennyfarthing-dist/scripts/core/README.md +25 -0
- package/pennyfarthing-dist/scripts/core/agent-session.sh +390 -0
- package/pennyfarthing-dist/scripts/core/check-context.sh +194 -0
- package/pennyfarthing-dist/scripts/core/handoff-marker.sh +112 -0
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +90 -0
- package/pennyfarthing-dist/scripts/core/prime.sh +30 -0
- package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +21 -0
- package/pennyfarthing-dist/scripts/git/README.md +25 -0
- package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +267 -0
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +152 -0
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +79 -0
- package/pennyfarthing-dist/scripts/git/release.sh +246 -0
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +497 -0
- package/pennyfarthing-dist/scripts/health/drift-detection.sh +156 -0
- package/pennyfarthing-dist/scripts/hooks/README.md +32 -0
- package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +106 -0
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +95 -0
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +65 -0
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +35 -0
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +150 -0
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +190 -0
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +71 -0
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +42 -0
- package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +20 -0
- package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +499 -0
- package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +30 -0
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +97 -0
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +65 -0
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +78 -0
- package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +94 -0
- package/pennyfarthing-dist/scripts/jira/README.md +36 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +95 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +91 -0
- package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +22 -0
- package/pennyfarthing-dist/scripts/jira/jira-lib.sh +464 -0
- package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +260 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +18 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync.sh +16 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +16 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-to-jira.sh +16 -0
- package/pennyfarthing-dist/scripts/lib/README.md +29 -0
- package/pennyfarthing-dist/scripts/lib/background-tasks.sh +177 -0
- package/pennyfarthing-dist/scripts/lib/checkpoint.sh +136 -0
- package/pennyfarthing-dist/scripts/lib/common.sh +212 -0
- package/pennyfarthing-dist/scripts/lib/file-lock.sh +269 -0
- package/pennyfarthing-dist/scripts/lib/find-root.sh +58 -0
- package/pennyfarthing-dist/scripts/lib/logging.sh +186 -0
- package/pennyfarthing-dist/scripts/lib/retry.sh +76 -0
- package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +102 -0
- package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +91 -0
- package/pennyfarthing-dist/scripts/misc/README.md +44 -0
- package/pennyfarthing-dist/scripts/misc/add-short-names.sh +13 -0
- package/pennyfarthing-dist/scripts/misc/add_short_names.py +226 -0
- package/pennyfarthing-dist/scripts/misc/backlog.sh +77 -0
- package/pennyfarthing-dist/scripts/misc/check-status.sh +247 -0
- package/pennyfarthing-dist/scripts/misc/find-related-work.sh +231 -0
- package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +107 -0
- package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +74 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +10 -0
- package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +319 -0
- package/pennyfarthing-dist/scripts/misc/repo-scan.sh +141 -0
- package/pennyfarthing-dist/scripts/misc/repo-utils.sh +778 -0
- package/pennyfarthing-dist/scripts/misc/run-ci.sh +212 -0
- package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +7 -0
- package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +319 -0
- package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +193 -0
- package/pennyfarthing-dist/scripts/misc/statusline.sh +257 -0
- package/pennyfarthing-dist/scripts/misc/uninstall.sh +275 -0
- package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +160 -0
- package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +417 -0
- package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +54 -0
- package/pennyfarthing-dist/scripts/sprint/README.md +29 -0
- package/pennyfarthing-dist/scripts/sprint/archive-story.sh +133 -0
- package/pennyfarthing-dist/scripts/sprint/available-stories.sh +91 -0
- package/pennyfarthing-dist/scripts/sprint/check-story.sh +158 -0
- package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +52 -0
- package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +63 -0
- package/pennyfarthing-dist/scripts/sprint/list-future.sh +145 -0
- package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +110 -0
- package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +148 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +415 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +33 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +230 -0
- package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +134 -0
- package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +139 -0
- package/pennyfarthing-dist/scripts/story/README.md +23 -0
- package/pennyfarthing-dist/scripts/story/create-story.sh +19 -0
- package/pennyfarthing-dist/scripts/story/size-story.sh +18 -0
- package/pennyfarthing-dist/scripts/story/story-template.sh +18 -0
- package/pennyfarthing-dist/scripts/test/README.md +23 -0
- package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +59 -0
- package/pennyfarthing-dist/scripts/test/ground-truth-judge.py +220 -0
- package/pennyfarthing-dist/scripts/test/swebench-judge.py +374 -0
- package/pennyfarthing-dist/scripts/test/test-cache.sh +165 -0
- package/pennyfarthing-dist/scripts/test/test-setup.sh +337 -0
- package/pennyfarthing-dist/scripts/tests/check.test.sh +582 -0
- package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +515 -0
- package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +599 -0
- package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +332 -0
- package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +573 -0
- package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +859 -0
- package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +662 -0
- package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +589 -0
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +106 -0
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +597 -0
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +514 -0
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +517 -0
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +331 -0
- package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +647 -0
- package/pennyfarthing-dist/scripts/theme/README.md +22 -0
- package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +13 -0
- package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +402 -0
- package/pennyfarthing-dist/scripts/theme/list-themes.sh +30 -0
- package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +97 -0
- package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +576 -0
- package/pennyfarthing-dist/scripts/workflow/README.md +28 -0
- package/pennyfarthing-dist/scripts/workflow/check.py +502 -0
- package/pennyfarthing-dist/scripts/workflow/check.sh +24 -0
- package/pennyfarthing-dist/scripts/workflow/complete-step.py +304 -0
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +154 -0
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +222 -0
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +61 -0
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +13 -0
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +124 -0
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +34 -0
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +157 -0
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +132 -0
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +250 -0
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +161 -0
- package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +246 -0
- package/pennyfarthing-dist/skills/changelog/SKILL.md +385 -0
- package/pennyfarthing-dist/skills/code-review/SKILL.md +172 -0
- package/pennyfarthing-dist/skills/context-engineering/SKILL.md +277 -0
- package/pennyfarthing-dist/skills/cyclist/SKILL.md +88 -0
- package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +461 -0
- package/pennyfarthing-dist/skills/finalize-run/SKILL.md +261 -0
- package/pennyfarthing-dist/skills/jira/SKILL.md +508 -0
- package/pennyfarthing-dist/skills/judge/SKILL.md +644 -0
- package/pennyfarthing-dist/skills/just/SKILL.md +414 -0
- package/pennyfarthing-dist/skills/mermaid/SKILL.md +256 -0
- package/pennyfarthing-dist/skills/otel/skill.md +227 -0
- package/pennyfarthing-dist/skills/permissions/skill.md +157 -0
- package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +187 -0
- package/pennyfarthing-dist/skills/skill-registry.schema.json +107 -0
- package/pennyfarthing-dist/skills/skill-registry.yaml +393 -0
- package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +97 -0
- package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +101 -0
- package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +116 -0
- package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +164 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +39 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +147 -0
- package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +93 -0
- package/pennyfarthing-dist/skills/sprint/skill.md +465 -0
- package/pennyfarthing-dist/skills/story/scripts/create-story.sh +159 -0
- package/pennyfarthing-dist/skills/story/scripts/size-story.sh +198 -0
- package/pennyfarthing-dist/skills/story/scripts/story-template.sh +162 -0
- package/pennyfarthing-dist/skills/story/skill.md +219 -0
- package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +446 -0
- package/pennyfarthing-dist/skills/testing/SKILL.md +121 -0
- package/pennyfarthing-dist/skills/testing/references/troubleshooting.md +124 -0
- package/pennyfarthing-dist/skills/theme/skill.md +141 -0
- package/pennyfarthing-dist/skills/theme-creation/SKILL.md +178 -0
- package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +91 -0
- package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +163 -0
- package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +138 -0
- package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +273 -0
- package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +167 -0
- package/pennyfarthing-dist/skills/workflow/skill.md +345 -0
- package/pennyfarthing-dist/skills/yq/SKILL.md +272 -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 +130 -0
- package/pennyfarthing-dist/templates/setup-env.sh.template +18 -0
- package/pennyfarthing-dist/templates/shared-context.md.template +70 -0
- package/pennyfarthing-dist/templates/sidecar/decisions.md.template +40 -0
- package/pennyfarthing-dist/templates/sidecar/gotchas.md.template +37 -0
- package/pennyfarthing-dist/templates/sidecar/patterns.md.template +34 -0
- package/pennyfarthing-dist/workflows/agent-docs.yaml +70 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +113 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +105 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +127 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +145 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +150 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +145 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +154 -0
- package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +172 -0
- package/pennyfarthing-dist/workflows/architecture/templates/architecture-decision.md +102 -0
- package/pennyfarthing-dist/workflows/architecture.yaml +65 -0
- package/pennyfarthing-dist/workflows/bdd.yaml +60 -0
- package/pennyfarthing-dist/workflows/brainstorming/brain-methods.csv +62 -0
- package/pennyfarthing-dist/workflows/brainstorming/checklist.md +44 -0
- package/pennyfarthing-dist/workflows/brainstorming/instructions.md +736 -0
- package/pennyfarthing-dist/workflows/brainstorming/workflow.yaml +49 -0
- package/pennyfarthing-dist/workflows/code-review/checklist.md +23 -0
- package/pennyfarthing-dist/workflows/code-review/instructions.md +234 -0
- package/pennyfarthing-dist/workflows/code-review/workflow.yaml +51 -0
- package/pennyfarthing-dist/workflows/dev-story/checklist.md +80 -0
- package/pennyfarthing-dist/workflows/dev-story/instructions.xml +410 -0
- package/pennyfarthing-dist/workflows/dev-story/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +281 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +256 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +298 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +177 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +145 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/templates/epics-template.md +57 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +28 -0
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +103 -0
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-02-categorize.md +147 -0
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-03-execute.md +215 -0
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +97 -0
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +78 -0
- package/pennyfarthing-dist/workflows/git-cleanup.yaml +59 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +211 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +199 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +202 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +162 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +280 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +158 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/templates/readiness-report-template.md +4 -0
- package/pennyfarthing-dist/workflows/implementation-readiness/workflow.yaml +40 -0
- package/pennyfarthing-dist/workflows/interactive-debug/steps/step-01-connect.md +257 -0
- package/pennyfarthing-dist/workflows/interactive-debug/steps/step-02-explore.md +107 -0
- package/pennyfarthing-dist/workflows/interactive-debug/steps/step-03-fix.md +127 -0
- package/pennyfarthing-dist/workflows/interactive-debug/steps/step-04-commit.md +122 -0
- package/pennyfarthing-dist/workflows/interactive-debug/workflow.yaml +51 -0
- package/pennyfarthing-dist/workflows/patch.yaml +67 -0
- package/pennyfarthing-dist/workflows/prd/data/domain-complexity.csv +13 -0
- package/pennyfarthing-dist/workflows/prd/data/prd-purpose.md +197 -0
- package/pennyfarthing-dist/workflows/prd/data/project-types.csv +11 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +197 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +159 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +230 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +232 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +219 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +213 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +232 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +243 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +234 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +237 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +248 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +223 -0
- package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +186 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +253 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +214 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +255 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +259 -0
- package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +174 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +224 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +197 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +215 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +180 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +220 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +234 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +223 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +211 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +249 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +269 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +215 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +270 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +248 -0
- package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +238 -0
- package/pennyfarthing-dist/workflows/prd/templates/prd-template.md +10 -0
- package/pennyfarthing-dist/workflows/prd/workflow.yaml +42 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +195 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +180 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +221 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +224 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +228 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +243 -0
- package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +216 -0
- package/pennyfarthing-dist/workflows/product-brief/templates/product-brief.template.md +10 -0
- package/pennyfarthing-dist/workflows/product-brief/workflow.yaml +31 -0
- package/pennyfarthing-dist/workflows/project-context/project-context-template.md +21 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +206 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +349 -0
- package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +306 -0
- package/pennyfarthing-dist/workflows/project-context/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-01-discover.md +157 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-02-clone-repos.md +217 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-03-repos-yaml.md +159 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-04-claude-md.md +186 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-05-shared-context.md +185 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-06-task-runner.md +279 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-07-theme.md +200 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-08-theme-packs.md +142 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-09-cyclist.md +245 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +204 -0
- package/pennyfarthing-dist/workflows/project-setup/workflow.yaml +41 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +177 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +143 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +138 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +135 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +129 -0
- package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +163 -0
- package/pennyfarthing-dist/workflows/quick-dev/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +201 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +156 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +140 -0
- package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +203 -0
- package/pennyfarthing-dist/workflows/quick-spec/tech-spec-template.md +74 -0
- package/pennyfarthing-dist/workflows/quick-spec/workflow.yaml +27 -0
- package/pennyfarthing-dist/workflows/release/steps/step-01-preflight.md +105 -0
- package/pennyfarthing-dist/workflows/release/steps/step-02-bump.md +95 -0
- package/pennyfarthing-dist/workflows/release/steps/step-03-changelog.md +125 -0
- package/pennyfarthing-dist/workflows/release/steps/step-04-readme.md +101 -0
- package/pennyfarthing-dist/workflows/release/steps/step-05-claude-md.md +102 -0
- package/pennyfarthing-dist/workflows/release/steps/step-06-retro.md +59 -0
- package/pennyfarthing-dist/workflows/release/steps/step-07-commit.md +109 -0
- package/pennyfarthing-dist/workflows/release/steps/step-08-merge.md +65 -0
- package/pennyfarthing-dist/workflows/release/steps/step-09-push.md +75 -0
- package/pennyfarthing-dist/workflows/release/steps/step-10-publish.md +93 -0
- package/pennyfarthing-dist/workflows/release/steps/step-11-finalize.md +71 -0
- package/pennyfarthing-dist/workflows/release.yaml +62 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +159 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +253 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +263 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +232 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +260 -0
- package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +477 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +205 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +262 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +227 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +275 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +286 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +203 -0
- package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +510 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +159 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +264 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +274 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +228 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +267 -0
- package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +522 -0
- package/pennyfarthing-dist/workflows/research/templates/research.template.md +29 -0
- package/pennyfarthing-dist/workflows/research/workflow.yaml +45 -0
- package/pennyfarthing-dist/workflows/retrospective/checklist.md +31 -0
- package/pennyfarthing-dist/workflows/retrospective/instructions.md +1443 -0
- package/pennyfarthing-dist/workflows/retrospective/workflow.yaml +50 -0
- package/pennyfarthing-dist/workflows/sprint-planning/checklist.md +33 -0
- package/pennyfarthing-dist/workflows/sprint-planning/sprint-status-template.yaml +55 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +69 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +61 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +80 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +90 -0
- package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +78 -0
- package/pennyfarthing-dist/workflows/sprint-planning/workflow.yaml +34 -0
- package/pennyfarthing-dist/workflows/tdd.yaml +50 -0
- package/pennyfarthing-dist/workflows/trivial.yaml +40 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +141 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +133 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +196 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +222 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +225 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +240 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +258 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +260 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +230 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +230 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +247 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +254 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +243 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +270 -0
- package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +234 -0
- package/pennyfarthing-dist/workflows/ux-design/ux-design-template.md +13 -0
- package/pennyfarthing-dist/workflows/ux-design/workflow.yaml +41 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Start a stepped workflow
|
|
3
|
+
# Usage: .pennyfarthing/scripts/workflow/start-workflow.sh <name> [--mode create|validate|edit]
|
|
4
|
+
#
|
|
5
|
+
# Creates a new workflow session and loads step 1.
|
|
6
|
+
# For tri-modal workflows, --mode selects the step path (default: create)
|
|
7
|
+
|
|
8
|
+
set -euo pipefail
|
|
9
|
+
|
|
10
|
+
# Find project root
|
|
11
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
|
|
12
|
+
|
|
13
|
+
WORKFLOWS_DIR="$PROJECT_ROOT/.pennyfarthing/workflows"
|
|
14
|
+
SESSION_DIR="$PROJECT_ROOT/.session"
|
|
15
|
+
|
|
16
|
+
if ! command -v yq &> /dev/null; then
|
|
17
|
+
echo "Error: yq is required but not installed"
|
|
18
|
+
echo "Install with: brew install yq"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
# Parse arguments
|
|
23
|
+
WORKFLOW_NAME=""
|
|
24
|
+
MODE=""
|
|
25
|
+
ARGS=("$@")
|
|
26
|
+
|
|
27
|
+
i=0
|
|
28
|
+
while [[ $i -lt ${#ARGS[@]} ]]; do
|
|
29
|
+
arg="${ARGS[$i]}"
|
|
30
|
+
case "$arg" in
|
|
31
|
+
--mode=*)
|
|
32
|
+
MODE="${arg#--mode=}"
|
|
33
|
+
;;
|
|
34
|
+
--mode|-m)
|
|
35
|
+
if [[ $((i+1)) -lt ${#ARGS[@]} ]]; then
|
|
36
|
+
((i++))
|
|
37
|
+
MODE="${ARGS[$i]}"
|
|
38
|
+
else
|
|
39
|
+
echo "Error: --mode requires a value (create, validate, or edit)"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
;;
|
|
43
|
+
-*)
|
|
44
|
+
echo "Error: Unknown option: $arg"
|
|
45
|
+
echo "Usage: start-workflow.sh <name> [--mode create|validate|edit]"
|
|
46
|
+
exit 1
|
|
47
|
+
;;
|
|
48
|
+
*)
|
|
49
|
+
if [[ -z "$WORKFLOW_NAME" ]]; then
|
|
50
|
+
WORKFLOW_NAME="$arg"
|
|
51
|
+
else
|
|
52
|
+
echo "Error: Unexpected argument: $arg"
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
;;
|
|
56
|
+
esac
|
|
57
|
+
((i++))
|
|
58
|
+
done
|
|
59
|
+
|
|
60
|
+
if [[ -z "$WORKFLOW_NAME" ]]; then
|
|
61
|
+
echo "# Start Stepped Workflow"
|
|
62
|
+
echo ""
|
|
63
|
+
echo "Usage: /workflow start <name> [--mode create|validate|edit]"
|
|
64
|
+
echo ""
|
|
65
|
+
echo "**Available stepped workflows:**"
|
|
66
|
+
echo ""
|
|
67
|
+
for f in "$WORKFLOWS_DIR"/*.yaml "$WORKFLOWS_DIR"/*/workflow.yaml; do
|
|
68
|
+
[[ -f "$f" ]] || continue
|
|
69
|
+
workflow_type=$(yq eval '.workflow.type // "phased"' "$f")
|
|
70
|
+
if [[ "$workflow_type" == "stepped" ]]; then
|
|
71
|
+
name=$(yq eval '.workflow.name' "$f")
|
|
72
|
+
desc=$(yq eval '.workflow.description' "$f" | head -1 | cut -c1-60)
|
|
73
|
+
echo "- **$name** - $desc"
|
|
74
|
+
fi
|
|
75
|
+
done
|
|
76
|
+
exit 1
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# Find workflow file (support both flat and directory structure)
|
|
80
|
+
WORKFLOW_FILE=""
|
|
81
|
+
if [[ -f "$WORKFLOWS_DIR/${WORKFLOW_NAME}.yaml" ]]; then
|
|
82
|
+
WORKFLOW_FILE="$WORKFLOWS_DIR/${WORKFLOW_NAME}.yaml"
|
|
83
|
+
elif [[ -f "$WORKFLOWS_DIR/${WORKFLOW_NAME}/workflow.yaml" ]]; then
|
|
84
|
+
WORKFLOW_FILE="$WORKFLOWS_DIR/${WORKFLOW_NAME}/workflow.yaml"
|
|
85
|
+
else
|
|
86
|
+
echo "Error: Workflow '$WORKFLOW_NAME' not found"
|
|
87
|
+
echo ""
|
|
88
|
+
echo "Looked in:"
|
|
89
|
+
echo " $WORKFLOWS_DIR/${WORKFLOW_NAME}.yaml"
|
|
90
|
+
echo " $WORKFLOWS_DIR/${WORKFLOW_NAME}/workflow.yaml"
|
|
91
|
+
exit 1
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
WORKFLOW_DIR=$(dirname "$WORKFLOW_FILE")
|
|
95
|
+
|
|
96
|
+
# Validate it's a stepped workflow
|
|
97
|
+
WORKFLOW_TYPE=$(yq eval '.workflow.type // "phased"' "$WORKFLOW_FILE")
|
|
98
|
+
if [[ "$WORKFLOW_TYPE" != "stepped" ]]; then
|
|
99
|
+
echo "Error: '$WORKFLOW_NAME' is a phased workflow, not stepped"
|
|
100
|
+
echo "Use TDD workflow commands (/sm, /tea, /dev, /reviewer) for phased workflows"
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
# Validate mode if provided
|
|
105
|
+
if [[ -n "$MODE" ]]; then
|
|
106
|
+
case "$MODE" in
|
|
107
|
+
create|validate|edit)
|
|
108
|
+
;;
|
|
109
|
+
*)
|
|
110
|
+
echo "Error: Invalid mode '$MODE'. Must be one of: create, validate, edit"
|
|
111
|
+
exit 1
|
|
112
|
+
;;
|
|
113
|
+
esac
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# Get workflow info
|
|
117
|
+
WORKFLOW_DESC=$(yq eval '.workflow.description' "$WORKFLOW_FILE")
|
|
118
|
+
WORKFLOW_AGENT=$(yq eval '.workflow.agent // "pm"' "$WORKFLOW_FILE")
|
|
119
|
+
|
|
120
|
+
# Resolve steps path based on mode
|
|
121
|
+
if [[ -n "$MODE" ]]; then
|
|
122
|
+
MODE_PATH=$(yq eval ".workflow.modes.$MODE // \"\"" "$WORKFLOW_FILE")
|
|
123
|
+
if [[ -z "$MODE_PATH" || "$MODE_PATH" == "null" ]]; then
|
|
124
|
+
AVAILABLE_MODES=$(yq eval '.workflow.modes | keys | .[]' "$WORKFLOW_FILE" 2>/dev/null | grep -v default | tr '\n' ', ' | sed 's/,$//')
|
|
125
|
+
echo "Error: Mode '$MODE' not available for workflow '$WORKFLOW_NAME'"
|
|
126
|
+
echo "Available modes: $AVAILABLE_MODES"
|
|
127
|
+
exit 1
|
|
128
|
+
fi
|
|
129
|
+
STEPS_PATH="$MODE_PATH"
|
|
130
|
+
else
|
|
131
|
+
# Use default mode or steps.path
|
|
132
|
+
DEFAULT_MODE=$(yq eval '.workflow.modes.default // ""' "$WORKFLOW_FILE")
|
|
133
|
+
if [[ -n "$DEFAULT_MODE" && "$DEFAULT_MODE" != "null" ]]; then
|
|
134
|
+
MODE_PATH=$(yq eval ".workflow.modes.$DEFAULT_MODE // \"\"" "$WORKFLOW_FILE")
|
|
135
|
+
if [[ -n "$MODE_PATH" && "$MODE_PATH" != "null" ]]; then
|
|
136
|
+
STEPS_PATH="$MODE_PATH"
|
|
137
|
+
MODE="$DEFAULT_MODE"
|
|
138
|
+
fi
|
|
139
|
+
fi
|
|
140
|
+
|
|
141
|
+
if [[ -z "${STEPS_PATH:-}" ]]; then
|
|
142
|
+
STEPS_PATH=$(yq eval '.workflow.steps.path' "$WORKFLOW_FILE")
|
|
143
|
+
MODE="${MODE:-create}"
|
|
144
|
+
fi
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
# Resolve relative path
|
|
148
|
+
if [[ "$STEPS_PATH" == ./* ]]; then
|
|
149
|
+
STEPS_PATH="$WORKFLOW_DIR/${STEPS_PATH#./}"
|
|
150
|
+
elif [[ "$STEPS_PATH" != /* ]]; then
|
|
151
|
+
STEPS_PATH="$PROJECT_ROOT/$STEPS_PATH"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
# Count steps
|
|
155
|
+
STEPS_PATTERN=$(yq eval '.workflow.steps.pattern // "step-*.md"' "$WORKFLOW_FILE")
|
|
156
|
+
STEP_COUNT=$(find "$STEPS_PATH" -maxdepth 1 -name "step-0*.md" -o -name "step-1*.md" 2>/dev/null | wc -l | tr -d ' ')
|
|
157
|
+
|
|
158
|
+
if [[ "$STEP_COUNT" -eq 0 ]]; then
|
|
159
|
+
echo "Error: No step files found in $STEPS_PATH"
|
|
160
|
+
exit 1
|
|
161
|
+
fi
|
|
162
|
+
|
|
163
|
+
# Create session directory
|
|
164
|
+
mkdir -p "$SESSION_DIR"
|
|
165
|
+
|
|
166
|
+
# Generate session filename
|
|
167
|
+
SESSION_FILE="$SESSION_DIR/${WORKFLOW_NAME}-workflow-session.md"
|
|
168
|
+
|
|
169
|
+
# Check for existing session
|
|
170
|
+
if [[ -f "$SESSION_FILE" ]]; then
|
|
171
|
+
echo "**Warning:** Existing session found"
|
|
172
|
+
echo ""
|
|
173
|
+
echo "Session: $SESSION_FILE"
|
|
174
|
+
echo ""
|
|
175
|
+
echo "Options:"
|
|
176
|
+
echo "1. Use \`/workflow resume $WORKFLOW_NAME\` to continue"
|
|
177
|
+
echo "2. Delete the session file to start fresh"
|
|
178
|
+
echo ""
|
|
179
|
+
echo "To start fresh, run:"
|
|
180
|
+
echo "\`\`\`bash"
|
|
181
|
+
echo "rm \"$SESSION_FILE\""
|
|
182
|
+
echo "\`\`\`"
|
|
183
|
+
exit 0
|
|
184
|
+
fi
|
|
185
|
+
|
|
186
|
+
# Create initial session file
|
|
187
|
+
NOW=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
188
|
+
cat > "$SESSION_FILE" << EOF
|
|
189
|
+
# Workflow Session: $WORKFLOW_NAME
|
|
190
|
+
|
|
191
|
+
**Workflow:** $WORKFLOW_NAME
|
|
192
|
+
**Type:** stepped
|
|
193
|
+
**Agent:** $WORKFLOW_AGENT
|
|
194
|
+
**Started:** $NOW
|
|
195
|
+
|
|
196
|
+
## Workflow State
|
|
197
|
+
- **Workflow Name:** $WORKFLOW_NAME
|
|
198
|
+
- **Type:** stepped
|
|
199
|
+
- **Mode:** $MODE
|
|
200
|
+
- **Started:** $NOW
|
|
201
|
+
- **Last Updated:** $NOW
|
|
202
|
+
- **Current Step:** 1
|
|
203
|
+
- **Steps Completed:** []
|
|
204
|
+
- **Status:** in_progress
|
|
205
|
+
- **Notes:** Session created via /workflow start
|
|
206
|
+
|
|
207
|
+
## Progress
|
|
208
|
+
- Total Steps: $STEP_COUNT
|
|
209
|
+
- Completion: 0%
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
EOF
|
|
214
|
+
|
|
215
|
+
# Find step 1 file (handle various naming patterns)
|
|
216
|
+
STEP_FILE=$(find "$STEPS_PATH" -maxdepth 1 \( -name "step-01*.md" -o -name "step-1-*.md" \) 2>/dev/null | sort | head -1)
|
|
217
|
+
|
|
218
|
+
if [[ -z "$STEP_FILE" ]]; then
|
|
219
|
+
echo "Error: Could not find step 1 file in $STEPS_PATH"
|
|
220
|
+
exit 1
|
|
221
|
+
fi
|
|
222
|
+
|
|
223
|
+
# Output workflow start info
|
|
224
|
+
echo "# Starting Workflow: $WORKFLOW_NAME"
|
|
225
|
+
echo ""
|
|
226
|
+
echo "**Description:** $WORKFLOW_DESC"
|
|
227
|
+
echo "**Mode:** $MODE"
|
|
228
|
+
echo "**Steps:** $STEP_COUNT"
|
|
229
|
+
echo "**Agent:** $WORKFLOW_AGENT"
|
|
230
|
+
echo "**Session:** $SESSION_FILE"
|
|
231
|
+
echo ""
|
|
232
|
+
echo "---"
|
|
233
|
+
echo ""
|
|
234
|
+
echo "## Step 1 of $STEP_COUNT"
|
|
235
|
+
echo ""
|
|
236
|
+
|
|
237
|
+
# Output step content (strip frontmatter if present)
|
|
238
|
+
if head -1 "$STEP_FILE" | grep -q "^---$"; then
|
|
239
|
+
awk '/^---$/{if(++c==2){p=1;next}}p' "$STEP_FILE"
|
|
240
|
+
else
|
|
241
|
+
cat "$STEP_FILE"
|
|
242
|
+
fi
|
|
243
|
+
|
|
244
|
+
echo ""
|
|
245
|
+
echo "---"
|
|
246
|
+
echo ""
|
|
247
|
+
echo "**Controls:**"
|
|
248
|
+
echo "- \`C\` - Continue to next step"
|
|
249
|
+
echo "- \`/workflow status\` - Check progress"
|
|
250
|
+
echo "- \`/workflow resume\` - Resume after break"
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Show current stepped workflow progress
|
|
3
|
+
# Usage: .pennyfarthing/scripts/workflow/workflow-status.sh [name]
|
|
4
|
+
#
|
|
5
|
+
# If no name provided, shows status of active workflow session
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
# Find project root
|
|
10
|
+
source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
|
|
11
|
+
|
|
12
|
+
WORKFLOWS_DIR="$PROJECT_ROOT/.pennyfarthing/workflows"
|
|
13
|
+
SESSION_DIR="$PROJECT_ROOT/.session"
|
|
14
|
+
|
|
15
|
+
if ! command -v yq &> /dev/null; then
|
|
16
|
+
echo "Error: yq is required but not installed"
|
|
17
|
+
echo "Install with: brew install yq"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
WORKFLOW_NAME="${1:-}"
|
|
22
|
+
|
|
23
|
+
# If no name, try to detect from session
|
|
24
|
+
if [[ -z "$WORKFLOW_NAME" ]]; then
|
|
25
|
+
SESSION_FILE=$(find "$SESSION_DIR" -maxdepth 1 -name "*-workflow-session.md" 2>/dev/null | head -1)
|
|
26
|
+
|
|
27
|
+
if [[ -z "$SESSION_FILE" ]]; then
|
|
28
|
+
echo "# Workflow Status"
|
|
29
|
+
echo ""
|
|
30
|
+
echo "No active workflow session found."
|
|
31
|
+
echo ""
|
|
32
|
+
echo "Use \`/workflow start <name>\` to begin a new workflow."
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
WORKFLOW_NAME=$(grep -E "^\*\*Workflow:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/\*\*Workflow:\*\* //' | tr -d ' ')
|
|
37
|
+
|
|
38
|
+
if [[ -z "$WORKFLOW_NAME" ]]; then
|
|
39
|
+
WORKFLOW_NAME=$(basename "$SESSION_FILE" | sed 's/-workflow-session.md//')
|
|
40
|
+
fi
|
|
41
|
+
else
|
|
42
|
+
SESSION_FILE="$SESSION_DIR/${WORKFLOW_NAME}-workflow-session.md"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
if [[ ! -f "$SESSION_FILE" ]]; then
|
|
46
|
+
echo "# Workflow Status: $WORKFLOW_NAME"
|
|
47
|
+
echo ""
|
|
48
|
+
echo "No session found for workflow '$WORKFLOW_NAME'"
|
|
49
|
+
echo ""
|
|
50
|
+
echo "Use \`/workflow start $WORKFLOW_NAME\` to begin."
|
|
51
|
+
exit 0
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
# Find workflow file
|
|
55
|
+
WORKFLOW_FILE=""
|
|
56
|
+
if [[ -f "$WORKFLOWS_DIR/${WORKFLOW_NAME}.yaml" ]]; then
|
|
57
|
+
WORKFLOW_FILE="$WORKFLOWS_DIR/${WORKFLOW_NAME}.yaml"
|
|
58
|
+
elif [[ -f "$WORKFLOWS_DIR/${WORKFLOW_NAME}/workflow.yaml" ]]; then
|
|
59
|
+
WORKFLOW_FILE="$WORKFLOWS_DIR/${WORKFLOW_NAME}/workflow.yaml"
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
WORKFLOW_DIR=$(dirname "$WORKFLOW_FILE")
|
|
63
|
+
|
|
64
|
+
# Parse session state
|
|
65
|
+
CURRENT_STEP=$(grep -E "^\- \*\*Current Step:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/.*\*\* //' || echo "1")
|
|
66
|
+
MODE=$(grep -E "^\- \*\*Mode:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/.*\*\* //' || echo "create")
|
|
67
|
+
STATUS=$(grep -E "^\- \*\*Status:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/.*\*\* //' || echo "in_progress")
|
|
68
|
+
STARTED=$(grep -E "^\- \*\*Started:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/.*\*\* //' || echo "-")
|
|
69
|
+
LAST_UPDATED=$(grep -E "^\- \*\*Last Updated:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/.*\*\* //' || echo "-")
|
|
70
|
+
STEPS_COMPLETED=$(grep -E "^\- \*\*Steps Completed:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/.*\*\* //' || echo "[]")
|
|
71
|
+
NOTES=$(grep -E "^\- \*\*Notes:\*\*" "$SESSION_FILE" 2>/dev/null | sed 's/.*\*\* //' || echo "-")
|
|
72
|
+
|
|
73
|
+
# Get total steps from workflow
|
|
74
|
+
if [[ -n "$WORKFLOW_FILE" && -f "$WORKFLOW_FILE" ]]; then
|
|
75
|
+
# Resolve steps path based on mode
|
|
76
|
+
MODE_PATH=$(yq eval ".workflow.modes.$MODE // \"\"" "$WORKFLOW_FILE")
|
|
77
|
+
if [[ -n "$MODE_PATH" && "$MODE_PATH" != "null" ]]; then
|
|
78
|
+
STEPS_PATH="$MODE_PATH"
|
|
79
|
+
else
|
|
80
|
+
STEPS_PATH=$(yq eval '.workflow.steps.path' "$WORKFLOW_FILE")
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
# Resolve relative path
|
|
84
|
+
if [[ "$STEPS_PATH" == ./* ]]; then
|
|
85
|
+
STEPS_PATH="$WORKFLOW_DIR/${STEPS_PATH#./}"
|
|
86
|
+
elif [[ "$STEPS_PATH" != /* ]]; then
|
|
87
|
+
STEPS_PATH="$PROJECT_ROOT/$STEPS_PATH"
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
STEP_COUNT=$(find "$STEPS_PATH" -maxdepth 1 -name "step-0*.md" -o -name "step-1*.md" 2>/dev/null | wc -l | tr -d ' ')
|
|
91
|
+
WORKFLOW_DESC=$(yq eval '.workflow.description' "$WORKFLOW_FILE" | head -1)
|
|
92
|
+
else
|
|
93
|
+
STEP_COUNT="?"
|
|
94
|
+
WORKFLOW_DESC="-"
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# Calculate completion percentage
|
|
98
|
+
COMPLETED_COUNT=$(echo "$STEPS_COMPLETED" | tr -cd ',' | wc -c | tr -d ' ')
|
|
99
|
+
if [[ "$STEPS_COMPLETED" != "[]" && -n "$STEPS_COMPLETED" ]]; then
|
|
100
|
+
COMPLETED_COUNT=$((COMPLETED_COUNT + 1))
|
|
101
|
+
fi
|
|
102
|
+
|
|
103
|
+
if [[ "$STEP_COUNT" != "?" && "$STEP_COUNT" -gt 0 ]]; then
|
|
104
|
+
COMPLETION_PCT=$((COMPLETED_COUNT * 100 / STEP_COUNT))
|
|
105
|
+
else
|
|
106
|
+
COMPLETION_PCT=0
|
|
107
|
+
fi
|
|
108
|
+
|
|
109
|
+
# Build progress bar
|
|
110
|
+
BAR_WIDTH=20
|
|
111
|
+
if [[ "$STEP_COUNT" != "?" && "$STEP_COUNT" -gt 0 ]]; then
|
|
112
|
+
FILLED=$((COMPLETION_PCT * BAR_WIDTH / 100))
|
|
113
|
+
EMPTY=$((BAR_WIDTH - FILLED))
|
|
114
|
+
PROGRESS_BAR=$(printf '%*s' "$FILLED" '' | tr ' ' '#')$(printf '%*s' "$EMPTY" '' | tr ' ' '-')
|
|
115
|
+
else
|
|
116
|
+
PROGRESS_BAR=$(printf '%*s' "$BAR_WIDTH" '' | tr ' ' '?')
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
# Status indicator
|
|
120
|
+
case "$STATUS" in
|
|
121
|
+
completed)
|
|
122
|
+
STATUS_ICON="[COMPLETE]"
|
|
123
|
+
;;
|
|
124
|
+
paused)
|
|
125
|
+
STATUS_ICON="[PAUSED]"
|
|
126
|
+
;;
|
|
127
|
+
*)
|
|
128
|
+
STATUS_ICON="[IN PROGRESS]"
|
|
129
|
+
;;
|
|
130
|
+
esac
|
|
131
|
+
|
|
132
|
+
# Output status
|
|
133
|
+
echo "# Workflow Status: $WORKFLOW_NAME"
|
|
134
|
+
echo ""
|
|
135
|
+
echo "**Description:** $WORKFLOW_DESC"
|
|
136
|
+
echo ""
|
|
137
|
+
echo "## Progress"
|
|
138
|
+
echo ""
|
|
139
|
+
echo "\`\`\`"
|
|
140
|
+
echo "[$PROGRESS_BAR] $COMPLETION_PCT%"
|
|
141
|
+
echo "\`\`\`"
|
|
142
|
+
echo ""
|
|
143
|
+
echo "| Field | Value |"
|
|
144
|
+
echo "|-------|-------|"
|
|
145
|
+
echo "| Status | $STATUS_ICON |"
|
|
146
|
+
echo "| Mode | $MODE |"
|
|
147
|
+
echo "| Current Step | $CURRENT_STEP of $STEP_COUNT |"
|
|
148
|
+
echo "| Completed | $COMPLETED_COUNT steps |"
|
|
149
|
+
echo "| Steps Done | $STEPS_COMPLETED |"
|
|
150
|
+
echo "| Started | $STARTED |"
|
|
151
|
+
echo "| Last Updated | $LAST_UPDATED |"
|
|
152
|
+
if [[ "$NOTES" != "-" ]]; then
|
|
153
|
+
echo "| Notes | $NOTES |"
|
|
154
|
+
fi
|
|
155
|
+
echo ""
|
|
156
|
+
echo "**Session:** $SESSION_FILE"
|
|
157
|
+
echo ""
|
|
158
|
+
|
|
159
|
+
if [[ "$STATUS" != "completed" ]]; then
|
|
160
|
+
echo "**Next:** Use \`/workflow resume\` to continue from step $CURRENT_STEP"
|
|
161
|
+
fi
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agentic-patterns
|
|
3
|
+
description: Core reasoning patterns for building effective LLM agents. Use when designing agent behavior, debugging agent failures, improving agent reliability, or understanding ReAct/Plan-and-Execute patterns.
|
|
4
|
+
allowed_tools: [Read, Glob, Grep, Task]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Agentic Patterns Skill
|
|
8
|
+
|
|
9
|
+
<run>When designing agent behavior, debugging agent failures, improving agent reliability.</run>
|
|
10
|
+
|
|
11
|
+
<output>Core reasoning patterns for building effective LLM agents. Includes ReAct, Plan-and-Execute, Self-Reflection, confidence calibration, error recovery, multi-agent coordination, and context management strategies.</output>
|
|
12
|
+
|
|
13
|
+
**Purpose:** Core reasoning patterns for building effective LLM agents.
|
|
14
|
+
|
|
15
|
+
**Use when:** Designing agent behavior, debugging agent failures, improving agent reliability.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Core Reasoning Patterns
|
|
20
|
+
|
|
21
|
+
### 1. ReAct (Reasoning and Acting)
|
|
22
|
+
|
|
23
|
+
The foundational agentic loop. Combines chain-of-thought with tool use.
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
THOUGHT: What am I trying to accomplish? What do I know?
|
|
27
|
+
ACTION: Execute tool/command based on reasoning
|
|
28
|
+
OBSERVATION: What was the result? Did it match expectations?
|
|
29
|
+
THOUGHT: Based on observation, what next?
|
|
30
|
+
... repeat until goal achieved
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**Why it works:** Grounds LLM outputs in real observations. Reduces hallucinations.
|
|
34
|
+
|
|
35
|
+
**When to use:** Most tasks. This is the default pattern.
|
|
36
|
+
|
|
37
|
+
**Example:**
|
|
38
|
+
```
|
|
39
|
+
THOUGHT: I need to find where authentication is handled
|
|
40
|
+
ACTION: grep -r "authenticate" --include="*.go"
|
|
41
|
+
OBSERVATION: Found 3 files: auth.go, middleware.go, handlers.go
|
|
42
|
+
THOUGHT: middleware.go likely has the auth middleware, let me read it
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. Plan-and-Execute
|
|
46
|
+
|
|
47
|
+
Decompose complex goals into sub-tasks before acting.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
1. PLAN: Break goal into discrete steps
|
|
51
|
+
2. EXECUTE: Work through each step
|
|
52
|
+
3. VERIFY: Check each step succeeded before moving on
|
|
53
|
+
4. ADJUST: Replan if something fails
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Why it works:** Prevents getting lost in complex tasks. Makes progress visible.
|
|
57
|
+
|
|
58
|
+
**When to use:** Multi-step tasks, unfamiliar codebases, architectural changes.
|
|
59
|
+
|
|
60
|
+
**Example:**
|
|
61
|
+
```
|
|
62
|
+
PLAN for "Add user authentication":
|
|
63
|
+
1. Check existing auth patterns in codebase
|
|
64
|
+
2. Design auth middleware
|
|
65
|
+
3. Implement token validation
|
|
66
|
+
4. Add protected routes
|
|
67
|
+
5. Write tests
|
|
68
|
+
6. Update documentation
|
|
69
|
+
|
|
70
|
+
Now executing step 1...
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 3. Self-Reflection
|
|
74
|
+
|
|
75
|
+
Evaluate own outputs before presenting them.
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
1. GENERATE: Produce initial output
|
|
79
|
+
2. CRITIQUE: What could be wrong? What did I assume?
|
|
80
|
+
3. REFINE: Improve based on critique
|
|
81
|
+
4. PRESENT: Only after reflection
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Why it works:** Catches errors before they propagate. Improves quality.
|
|
85
|
+
|
|
86
|
+
**When to use:** Code generation, architectural decisions, any output that matters.
|
|
87
|
+
|
|
88
|
+
**Example:**
|
|
89
|
+
```
|
|
90
|
+
GENERATED: Function to validate email
|
|
91
|
+
CRITIQUE: Did I handle edge cases? Empty string? Unicode?
|
|
92
|
+
REFINE: Add null check, use proper regex, handle IDN domains
|
|
93
|
+
PRESENT: Here's the validated function...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Confidence and Uncertainty
|
|
99
|
+
|
|
100
|
+
### Confidence Levels
|
|
101
|
+
|
|
102
|
+
| Level | Indicators | Action |
|
|
103
|
+
|-------|-----------|--------|
|
|
104
|
+
| HIGH (proceed) | Matches known patterns, clear requirements, similar past success | Act autonomously |
|
|
105
|
+
| MEDIUM (verify) | Some unknowns, first time for this pattern, could break things | Ask before risky actions |
|
|
106
|
+
| LOW (ask) | Architectural change, security-sensitive, deleting files | Always ask user |
|
|
107
|
+
|
|
108
|
+
### Expressing Uncertainty
|
|
109
|
+
|
|
110
|
+
When uncertain, SAY SO:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
GOOD: "I'm not sure if this is the right approach. Here's my reasoning..."
|
|
114
|
+
GOOD: "I found two possible solutions. Let me explain the tradeoffs..."
|
|
115
|
+
BAD: [silently picks one approach without mentioning alternatives]
|
|
116
|
+
BAD: [confidently states something without verifying]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Confidence Calibration
|
|
120
|
+
|
|
121
|
+
Before acting, ask yourself:
|
|
122
|
+
1. Have I seen this pattern before? (in skills, sidecars, or this session)
|
|
123
|
+
2. What could go wrong?
|
|
124
|
+
3. Is this reversible?
|
|
125
|
+
4. Would a senior engineer want to review this?
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Error Recovery
|
|
130
|
+
|
|
131
|
+
### The Retry Pattern
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
1. ATTEMPT: Try the action
|
|
135
|
+
2. OBSERVE: Did it succeed?
|
|
136
|
+
3. DIAGNOSE: If failed, why?
|
|
137
|
+
4. ADJUST: Modify approach based on diagnosis
|
|
138
|
+
5. RETRY: Max 2 retries with different approaches
|
|
139
|
+
6. ESCALATE: If still failing, ask user
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Graceful Degradation
|
|
143
|
+
|
|
144
|
+
When stuck:
|
|
145
|
+
1. **Never silently fail.** Always report what happened.
|
|
146
|
+
2. **Provide context.** What were you trying to do? What went wrong?
|
|
147
|
+
3. **Suggest alternatives.** "I couldn't do X, but I could try Y instead..."
|
|
148
|
+
4. **Ask for help.** "I'm blocked on Z. Can you help?"
|
|
149
|
+
|
|
150
|
+
### Common Failure Modes
|
|
151
|
+
|
|
152
|
+
| Failure | Recovery |
|
|
153
|
+
|---------|----------|
|
|
154
|
+
| Tool returned error | Read error message, adjust inputs, retry |
|
|
155
|
+
| Unexpected output | Verify assumptions, try different approach |
|
|
156
|
+
| Stuck in loop | Stop, reflect, try fundamentally different approach |
|
|
157
|
+
| Context exhaustion | Summarize progress, ask user for direction |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Multi-Agent Coordination
|
|
162
|
+
|
|
163
|
+
### Handoff Patterns
|
|
164
|
+
|
|
165
|
+
When handing off to another agent:
|
|
166
|
+
|
|
167
|
+
1. **Write before you speak.** Update session file BEFORE saying "ready for X"
|
|
168
|
+
2. **Summarize, don't dump.** Pass key findings, not full context
|
|
169
|
+
3. **State expectations.** What should the next agent do?
|
|
170
|
+
4. **Verify handoff.** Confirm the update was written
|
|
171
|
+
|
|
172
|
+
### State Synchronization
|
|
173
|
+
|
|
174
|
+
**Session file is source of truth.** Always:
|
|
175
|
+
- Read session file on activation
|
|
176
|
+
- Write your assessment before handoff
|
|
177
|
+
- Verify what you wrote is actually in the file
|
|
178
|
+
|
|
179
|
+
### Conflict Resolution
|
|
180
|
+
|
|
181
|
+
If agents disagree (e.g., Reviewer rejects Dev's code):
|
|
182
|
+
1. Reviewer documents specific issues
|
|
183
|
+
2. Dev addresses each issue
|
|
184
|
+
3. Reviewer re-reviews
|
|
185
|
+
4. Repeat until resolved or escalate to user
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Context Management
|
|
190
|
+
|
|
191
|
+
### Just-in-Time Loading
|
|
192
|
+
|
|
193
|
+
**Don't:** Load all potentially relevant files upfront
|
|
194
|
+
**Do:** Store paths/identifiers, load only when needed
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
WRONG: Read all 50 test files to understand testing patterns
|
|
198
|
+
RIGHT: Read testing skill, then load specific test when implementing
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Context Efficiency
|
|
202
|
+
|
|
203
|
+
- Keep tool results focused (don't read entire files if you need one function)
|
|
204
|
+
- Summarize findings rather than quoting everything
|
|
205
|
+
- Reference file:line instead of copying code
|
|
206
|
+
|
|
207
|
+
### When Context Gets Full
|
|
208
|
+
|
|
209
|
+
1. Summarize progress so far
|
|
210
|
+
2. Identify what's still needed
|
|
211
|
+
3. Ask user if you should continue with fresh context
|
|
212
|
+
4. Or hand off to subagent with focused task
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Reasoning Mode (Toggleable)
|
|
217
|
+
|
|
218
|
+
**Default:** Quiet mode - follow patterns internally, show only key decisions
|
|
219
|
+
|
|
220
|
+
**Verbose mode:** User says "verbose mode" to enable explicit reasoning
|
|
221
|
+
|
|
222
|
+
When verbose, show:
|
|
223
|
+
```
|
|
224
|
+
THOUGHT: [articulate intent]
|
|
225
|
+
ACTION: [describe tool/command]
|
|
226
|
+
OBSERVATION: [verify result]
|
|
227
|
+
REFLECT: [adjust if needed]
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
When quiet, only show:
|
|
231
|
+
- Key decisions
|
|
232
|
+
- Results
|
|
233
|
+
- Questions/blockers
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Key Sources
|
|
238
|
+
|
|
239
|
+
- [Anthropic: Building Effective Agents](https://www.anthropic.com/research/building-effective-agents)
|
|
240
|
+
- [Anthropic: Claude Code Best Practices](https://www.anthropic.com/engineering/claude-code-best-practices)
|
|
241
|
+
- [LangChain: ReAct Pattern](https://blog.langchain.com/react-agent/)
|
|
242
|
+
- [LangChain: Reflection Agents](https://blog.langchain.com/reflection-agents/)
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
**Remember:** The goal is not to follow patterns rigidly, but to THINK before acting, VERIFY results, and ASK when uncertain.
|