@pennyfarthing/core 11.0.0 → 11.1.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 +80 -22
- package/package.json +14 -16
- package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.d.ts +20 -0
- package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.js +278 -0
- package/packages/core/dist/cli/utils/010-detect-remove-old-packages.test.js.map +1 -0
- package/packages/core/dist/cli/utils/constants.d.ts +7 -1
- package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/constants.js +2 -0
- package/packages/core/dist/cli/utils/constants.js.map +1 -1
- package/packages/core/dist/cli/utils/constants.test.d.ts +10 -0
- package/packages/core/dist/cli/utils/constants.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/constants.test.js +38 -0
- package/packages/core/dist/cli/utils/constants.test.js.map +1 -0
- package/packages/core/dist/consultation/consultation-protocol.d.ts +139 -0
- package/packages/core/dist/consultation/consultation-protocol.d.ts.map +1 -0
- package/packages/core/dist/consultation/consultation-protocol.js +178 -0
- package/packages/core/dist/consultation/consultation-protocol.js.map +1 -0
- package/packages/core/dist/consultation/consultation-protocol.test.d.ts +20 -0
- package/packages/core/dist/consultation/consultation-protocol.test.d.ts.map +1 -0
- package/packages/core/dist/consultation/consultation-protocol.test.js +474 -0
- package/packages/core/dist/consultation/consultation-protocol.test.js.map +1 -0
- package/packages/core/dist/public/js/react/react.js +3 -3
- package/packages/core/dist/scripts/theme-detail.test.d.ts +10 -0
- package/packages/core/dist/scripts/theme-detail.test.js +199 -0
- package/packages/core/dist/server/api/health-score.d.ts.map +1 -1
- package/packages/core/dist/server/api/health-score.js +25 -1
- package/packages/core/dist/server/api/health-score.js.map +1 -1
- package/packages/core/dist/server/api/settings.d.ts.map +1 -1
- package/packages/core/dist/server/api/settings.js +63 -1
- package/packages/core/dist/server/api/settings.js.map +1 -1
- package/packages/core/dist/server/api/theme-agents.d.ts.map +1 -1
- package/packages/core/dist/server/api/theme-agents.js +61 -0
- package/packages/core/dist/server/api/theme-agents.js.map +1 -1
- package/packages/core/dist/server/server.d.ts.map +1 -1
- package/packages/core/dist/server/server.js +17 -12
- package/packages/core/dist/server/server.js.map +1 -1
- package/packages/core/dist/workflow/gate-file-validation.d.ts +49 -0
- package/packages/core/dist/workflow/gate-file-validation.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-file-validation.js +157 -0
- package/packages/core/dist/workflow/gate-file-validation.js.map +1 -0
- package/packages/core/dist/workflow/gate-file-validation.test.d.ts +19 -0
- package/packages/core/dist/workflow/gate-file-validation.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-file-validation.test.js +536 -0
- package/packages/core/dist/workflow/gate-file-validation.test.js.map +1 -0
- package/packages/core/dist/workflow/gate-schema-validation.test.d.ts +14 -0
- package/packages/core/dist/workflow/gate-schema-validation.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/gate-schema-validation.test.js +339 -0
- package/packages/core/dist/workflow/gate-schema-validation.test.js.map +1 -0
- package/packages/core/dist/workflow/handoff.js +2 -2
- package/packages/core/dist/workflow/handoff.js.map +1 -1
- package/packages/core/dist/workflow/handoff.test.js +16 -0
- package/packages/core/dist/workflow/handoff.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.d.ts +4 -2
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.js +43 -8
- package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
- package/pennyfarthing-dist/agents/README.md +6 -14
- package/pennyfarthing-dist/agents/architect.md +43 -29
- package/pennyfarthing-dist/agents/ba.md +30 -29
- package/pennyfarthing-dist/agents/dev.md +32 -43
- package/pennyfarthing-dist/agents/devops.md +57 -21
- package/pennyfarthing-dist/agents/orchestrator.md +3 -10
- package/pennyfarthing-dist/agents/pm.md +45 -31
- package/pennyfarthing-dist/agents/reviewer.md +20 -66
- package/pennyfarthing-dist/agents/sm-setup.md +2 -2
- package/pennyfarthing-dist/agents/sm.md +8 -30
- package/pennyfarthing-dist/agents/tea.md +25 -41
- package/pennyfarthing-dist/agents/tech-writer.md +33 -90
- package/pennyfarthing-dist/agents/ux-designer.md +39 -39
- package/pennyfarthing-dist/commands/benchmark-control.md +8 -64
- package/pennyfarthing-dist/commands/benchmark.md +8 -480
- package/pennyfarthing-dist/commands/job-fair.md +8 -97
- package/pennyfarthing-dist/commands/pf-benchmark-control.md +70 -0
- package/pennyfarthing-dist/commands/pf-benchmark.md +486 -0
- package/pennyfarthing-dist/commands/pf-chore.md +4 -4
- package/pennyfarthing-dist/commands/pf-ci.md +40 -0
- package/pennyfarthing-dist/commands/pf-close-epic.md +9 -27
- package/pennyfarthing-dist/commands/pf-continue-session.md +9 -213
- package/pennyfarthing-dist/commands/pf-create-branches-from-story.md +11 -353
- package/pennyfarthing-dist/commands/pf-docs.md +28 -0
- package/pennyfarthing-dist/commands/pf-epic.md +67 -0
- package/pennyfarthing-dist/commands/pf-git-cleanup.md +11 -52
- package/pennyfarthing-dist/commands/pf-git.md +75 -0
- package/pennyfarthing-dist/commands/pf-help.md +110 -128
- package/pennyfarthing-dist/commands/pf-job-fair.md +102 -0
- package/pennyfarthing-dist/commands/pf-new-work.md +9 -18
- package/pennyfarthing-dist/commands/pf-parallel-work.md +6 -66
- package/pennyfarthing-dist/commands/pf-release.md +11 -76
- package/pennyfarthing-dist/commands/pf-repo-status.md +11 -44
- package/pennyfarthing-dist/commands/pf-run-ci.md +8 -111
- package/pennyfarthing-dist/commands/pf-session.md +51 -0
- package/pennyfarthing-dist/commands/pf-solo.md +447 -0
- package/pennyfarthing-dist/commands/pf-sprint-planning.md +8 -104
- package/pennyfarthing-dist/commands/pf-standalone.md +1 -1
- package/pennyfarthing-dist/commands/pf-start-epic.md +9 -163
- package/pennyfarthing-dist/commands/pf-sync-epic-to-jira.md +8 -179
- package/pennyfarthing-dist/commands/pf-sync-work-with-sprint.md +8 -368
- package/pennyfarthing-dist/commands/pf-update-domain-docs.md +8 -78
- package/pennyfarthing-dist/commands/solo.md +8 -442
- package/pennyfarthing-dist/guides/agent-behavior.md +13 -13
- package/pennyfarthing-dist/guides/agent-coordination.md +7 -7
- package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +6 -5
- package/pennyfarthing-dist/guides/bikerack.md +128 -0
- package/pennyfarthing-dist/guides/brownfield-tools.md +133 -0
- package/pennyfarthing-dist/guides/command-tag-taxonomy.md +2 -2
- package/pennyfarthing-dist/guides/gate-schema.md +227 -0
- package/pennyfarthing-dist/guides/gates.md +120 -0
- package/pennyfarthing-dist/guides/handoff-cli.md +116 -0
- package/pennyfarthing-dist/guides/hooks.md +86 -4
- package/pennyfarthing-dist/guides/output-styles.md +65 -0
- package/pennyfarthing-dist/guides/patterns/approval-gates-pattern.md +5 -5
- package/pennyfarthing-dist/guides/patterns/tdd-flow-pattern.md +4 -4
- package/pennyfarthing-dist/guides/prompt-patterns.md +5 -5
- package/pennyfarthing-dist/guides/reflector.md +4 -4
- package/pennyfarthing-dist/guides/session-artifacts.md +1 -1
- package/pennyfarthing-dist/guides/skill-schema.md +1 -1
- package/pennyfarthing-dist/guides/tandem-protocol.md +13 -1
- package/pennyfarthing-dist/guides/worktree-mode.md +3 -3
- package/pennyfarthing-dist/guides/xml-tags.md +5 -4
- package/pennyfarthing-dist/personas/themes/hogans-heroes.yaml +11 -22
- package/pennyfarthing-dist/personas/themes/stephen-king.yaml +13 -24
- package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -0
- package/pennyfarthing-dist/scripts/core/check-context.sh +0 -0
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +1 -1
- package/pennyfarthing-dist/scripts/core/prime.sh +0 -0
- package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -0
- package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -0
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +0 -0
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +0 -0
- package/pennyfarthing-dist/scripts/git/release.sh +0 -0
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +0 -0
- package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/dispatcher-template.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +19 -14
- package/pennyfarthing-dist/scripts/hooks/post-merge.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -0
- package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +0 -0
- package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -0
- package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/common.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/logging.sh +0 -0
- package/pennyfarthing-dist/scripts/lib/retry.sh +0 -0
- package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -0
- package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -0
- package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -0
- package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/repo-utils.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -0
- package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -0
- package/pennyfarthing-dist/scripts/portraits/generate-portraits.py +191 -57
- package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +26 -10
- package/pennyfarthing-dist/scripts/story/create-story.sh +0 -0
- package/pennyfarthing-dist/scripts/story/size-story.sh +0 -0
- package/pennyfarthing-dist/scripts/story/story-template.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
- package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -0
- package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -0
- package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/check.py +0 -0
- package/pennyfarthing-dist/scripts/workflow/check.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/complete-step.py +0 -0
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -0
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -0
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -0
- package/pennyfarthing-dist/skills/pf-changelog/SKILL.md +4 -4
- package/pennyfarthing-dist/skills/pf-sprint/skill.md +1 -1
- package/pennyfarthing-dist/skills/pf-story/scripts/create-story.sh +0 -0
- package/pennyfarthing-dist/skills/pf-story/scripts/size-story.sh +0 -0
- package/pennyfarthing-dist/skills/pf-story/scripts/story-template.sh +0 -0
- package/pennyfarthing-dist/skills/pf-workflow/scripts/list-workflows.sh +0 -0
- package/pennyfarthing-dist/skills/pf-workflow/scripts/resume-workflow.sh +0 -0
- package/pennyfarthing-dist/skills/pf-workflow/scripts/show-workflow.sh +0 -0
- package/pennyfarthing-dist/skills/pf-workflow/scripts/start-workflow.sh +0 -0
- package/pennyfarthing-dist/skills/pf-workflow/scripts/workflow-status.sh +0 -0
- package/pennyfarthing-dist/skills/skill-registry.schema.json +4 -0
- package/pennyfarthing-dist/skills/skill-registry.yaml +5 -0
- package/pennyfarthing-dist/workflows/2party-tdd.yaml +11 -0
- package/pennyfarthing-dist/workflows/agent-docs.yaml +2 -0
- package/pennyfarthing-dist/workflows/bdd-tandem.yaml +4 -0
- package/pennyfarthing-dist/workflows/bdd.yaml +4 -0
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +1 -1
- package/pennyfarthing-dist/workflows/tdd-tandem.yaml +3 -0
- package/pennyfarthing-dist/workflows/tdd.yaml +3 -0
- package/pennyfarthing-dist/workflows/trivial.yaml +2 -0
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/bellmode_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/context.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_bidirectional_sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_epic_creation.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira_sync_story.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/output.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/patch_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/schema_validation_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/session_start_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/background_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/base_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/changed_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/debug_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/diffs_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/git_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/sprint_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/tui.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/ws_client.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/debug_panel.py +218 -0
- package/pennyfarthing_scripts/bikerack/diffs_panel.py +203 -27
- package/pennyfarthing_scripts/brownfield/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/brownfield/__pycache__/discover.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/cli.py +114 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/codemarkers/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/output.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/themes.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/complexity/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/dependencies/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/epic/__init__.py +0 -0
- package/pennyfarthing_scripts/epic/cli.py +64 -0
- package/pennyfarthing_scripts/gate/__init__.py +1 -0
- package/pennyfarthing_scripts/gate/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/gate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/gate/__pycache__/validate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/gate/cli.py +56 -0
- package/pennyfarthing_scripts/gate/validate.py +266 -0
- package/pennyfarthing_scripts/git/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/create_branches.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git_group/__init__.py +0 -0
- package/pennyfarthing_scripts/git_group/cli.py +100 -0
- package/pennyfarthing_scripts/handoff/__init__.py +1 -0
- package/pennyfarthing_scripts/handoff/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/complete_phase.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/gate_file.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/gate_runner.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/marker.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/resolve_gate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/cli.py +120 -0
- package/pennyfarthing_scripts/handoff/complete_phase.py +155 -0
- package/pennyfarthing_scripts/handoff/gate_file.py +105 -0
- package/pennyfarthing_scripts/handoff/gate_runner.py +152 -0
- package/pennyfarthing_scripts/handoff/marker.py +109 -0
- package/pennyfarthing_scripts/handoff/resolve_gate.py +152 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/formatters.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/story.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/session.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/skill.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/step.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/validate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/preflight/__pycache__/finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/persona.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/session.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/tiers.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/version_sentinel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/workflow.py +39 -0
- package/pennyfarthing_scripts/session/__init__.py +0 -0
- package/pennyfarthing_scripts/session/cli.py +87 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/import_epic.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_108_2_remove_handoff_fallback.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_archive_epic.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bc.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_brownfield.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_cli_modules.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_cli_normalization.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_codemarkers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_common.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_epic_shard_validation.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_gate_file_resolution.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_gate_runner.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_git_utils.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_handoff_cli.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_handoff_e2e.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_healthscore.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_jira_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_package_structure.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_patch_mode.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_prime.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_resolve_gate_file_field.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_panel.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_sprint_validator.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_package.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tiers.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_token_counting.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_topology_loader.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tui_focus.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_tui_panel_persistence.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_validate_cmd.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_version_sentinel.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_check.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/test_108_1_gate_migration.py +540 -0
- package/pennyfarthing_scripts/tests/test_108_2_remove_handoff_fallback.py +339 -0
- package/pennyfarthing_scripts/tests/test_confidence_sm_evaluation.py +253 -0
- package/pennyfarthing_scripts/tests/test_confidence_sm_gate.py +315 -0
- package/pennyfarthing_scripts/tests/test_gate_file_resolution.py +341 -0
- package/pennyfarthing_scripts/tests/test_gate_runner.py +620 -0
- package/pennyfarthing_scripts/tests/test_handoff_cli.py +929 -0
- package/pennyfarthing_scripts/tests/test_handoff_e2e.py +454 -0
- package/pennyfarthing_scripts/tests/test_resolve_gate_file_field.py +464 -0
- package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/agent.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/schema.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/sprint.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/skill_command.py +200 -0
- package/pennyfarthing_scripts/validate/adapters/workflow.py +64 -0
- package/pennyfarthing_scripts/validate/cli.py +15 -4
- package/packages/core/dist/scripts/benchmark-integration.d.ts +0 -182
- package/packages/core/dist/scripts/benchmark-integration.d.ts.map +0 -1
- package/packages/core/dist/scripts/benchmark-integration.js +0 -691
- package/packages/core/dist/scripts/benchmark-integration.js.map +0 -1
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts +0 -150
- package/packages/core/dist/scripts/job-fair-aggregator.d.ts.map +0 -1
- package/packages/core/dist/scripts/job-fair-aggregator.js +0 -547
- package/packages/core/dist/scripts/job-fair-aggregator.js.map +0 -1
- package/pennyfarthing-dist/agents/handoff.md +0 -250
- package/pennyfarthing-dist/agents/sm-handoff.md +0 -152
- package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -112
- package/pennyfarthing-dist/scripts/hooks/__pycache__/question_reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/jira.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/pretooluse_hook.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/sprint.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/workflow.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/compat.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/mappings.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/models.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/migration/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/__main__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_workflow_cli.cpython-314-pytest-9.0.2.pyc +0 -0
- package/scripts/README.md +0 -41
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Detect and run CI locally
|
|
3
|
+
args: "[run] [--detect-only] [--dry-run]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CI Operations
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Run CI locally by detecting the project's CI system and executing appropriate commands.
|
|
10
|
+
</purpose>
|
|
11
|
+
|
|
12
|
+
## Commands
|
|
13
|
+
|
|
14
|
+
### `/pf-ci run`
|
|
15
|
+
|
|
16
|
+
Run CI locally (auto-detects CI system).
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Run CI
|
|
20
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh
|
|
21
|
+
|
|
22
|
+
# Detect only
|
|
23
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh --detect-only
|
|
24
|
+
|
|
25
|
+
# Dry run
|
|
26
|
+
$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/run-ci.sh --dry-run
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## CI System Detection
|
|
30
|
+
|
|
31
|
+
| Priority | System | Detection | Command |
|
|
32
|
+
|----------|--------|-----------|---------|
|
|
33
|
+
| 1 | Justfile | `just --list` shows `ci` recipe | `just ci` |
|
|
34
|
+
| 2 | GitHub Actions | `.github/workflows/*.yml` | `act` |
|
|
35
|
+
| 3 | GitLab CI | `.gitlab-ci.yml` | `gitlab-runner exec` |
|
|
36
|
+
| 4 | npm fallback | `package.json` | `npm run build && npm test && npm run lint` |
|
|
37
|
+
|
|
38
|
+
## Related
|
|
39
|
+
|
|
40
|
+
- `/pf-check` — Run quality gates before handoff
|
|
@@ -1,32 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
deprecated: true
|
|
3
|
+
redirect: pf-epic
|
|
4
|
+
description: "DEPRECATED: Use /pf-epic close instead."
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
#
|
|
7
|
+
# /close-epic - DEPRECATED
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
Closes an epic after all stories are done. Updates sprint YAML, transitions Jira, archives context.
|
|
9
|
-
Counterpart to `/start-epic`. Idempotent — safe to run multiple times.
|
|
10
|
-
</purpose>
|
|
9
|
+
Epic commands have been consolidated into `/pf-epic`. Use:
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
</usage>
|
|
18
|
-
|
|
19
|
-
<workflow>
|
|
20
|
-
1. Parse epic ID (strip `epic-` prefix if present). Ask if not provided.
|
|
21
|
-
2. Read epic shard `sprint/epic-{JIRA_KEY}.yaml`, verify all stories `status: done`. Warn if incomplete.
|
|
22
|
-
3. Update epic: `status: done`, `completed_points: {sum of story points}`
|
|
23
|
-
4. Recalculate sprint summary totals in `sprint/current-sprint.yaml`
|
|
24
|
-
5. If epic has `jira:` key → `pf jira move {JIRA_KEY} "Done"`
|
|
25
|
-
6. If `sprint/context/context-epic-{N}.md` exists → move to `sprint/archive/`
|
|
26
|
-
7. Commit and push sprint changes
|
|
27
|
-
</workflow>
|
|
28
|
-
|
|
29
|
-
<related>
|
|
30
|
-
- `/start-epic` — Start an epic (move to current sprint, generate context)
|
|
31
|
-
- `/pf-sprint status` — View sprint progress
|
|
32
|
-
</related>
|
|
11
|
+
| Old Command | New Command |
|
|
12
|
+
|-------------|-------------|
|
|
13
|
+
| `/start-epic <id>` | `/pf-epic start <id>` |
|
|
14
|
+
| `/close-epic <id>` | `/pf-epic close <id>` |
|
|
@@ -1,218 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
deprecated: true
|
|
3
|
+
redirect: pf-session
|
|
4
|
+
description: "DEPRECATED: Use /pf-session continue instead."
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
#
|
|
7
|
+
# /continue-session - DEPRECATED
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
Recovery command for resuming work after the context circuit breaker (85% threshold) halts execution. Loads saved checkpoints and resumes the appropriate agent to continue where you left off.
|
|
9
|
-
</purpose>
|
|
9
|
+
Session commands have been consolidated into `/pf-session`. Use:
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
- To recover from any context overflow situation
|
|
16
|
-
</when-to-use>
|
|
17
|
-
|
|
18
|
-
<usage>
|
|
19
|
-
```
|
|
20
|
-
/continue-session [--list] [--story-id ID]
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
| Option | Description |
|
|
24
|
-
|--------|-------------|
|
|
25
|
-
| (none) | Interactive: show checkpoints, let user choose |
|
|
26
|
-
| `--list` | Just display available checkpoints, don't restore |
|
|
27
|
-
| `--story-id ID` | Resume specific story directly (skip selection) |
|
|
28
|
-
</usage>
|
|
29
|
-
|
|
30
|
-
<on-invoke>
|
|
31
|
-
|
|
32
|
-
## Step 1: Check for Circuit Breaker Agent
|
|
33
|
-
|
|
34
|
-
First, check if the circuit breaker saved an active agent:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
source "${PROJECT_ROOT:-.}/.pennyfarthing/scripts/lib/checkpoint.sh"
|
|
38
|
-
SAVED_AGENT=$(checkpoint_restore "circuit_breaker_agent")
|
|
39
|
-
if [[ -n "$SAVED_AGENT" ]]; then
|
|
40
|
-
echo "Circuit breaker saved agent: $SAVED_AGENT"
|
|
41
|
-
else
|
|
42
|
-
echo "No circuit breaker agent found"
|
|
43
|
-
fi
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**If a saved agent is found:**
|
|
47
|
-
- Invoke that agent's command (e.g., `/sm`, `/dev`, `/tea`, `/reviewer`)
|
|
48
|
-
- The agent will be primed with FULL tier context (fresh session)
|
|
49
|
-
- This restores the exact agent that was active when the circuit breaker triggered
|
|
50
|
-
|
|
51
|
-
```markdown
|
|
52
|
-
## Circuit Breaker Recovery
|
|
53
|
-
|
|
54
|
-
The circuit breaker saved your active agent: **{SAVED_AGENT}**
|
|
55
|
-
|
|
56
|
-
Invoking `/{SAVED_AGENT}` to restore with full context...
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Then invoke the Skill tool with skill="{SAVED_AGENT}" to activate the agent.
|
|
60
|
-
|
|
61
|
-
**If no saved agent**, continue to Step 2 below.
|
|
62
|
-
|
|
63
|
-
## Step 2: Scan for Checkpoints
|
|
64
|
-
|
|
65
|
-
Run bash to check for saved checkpoints:
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
CHECKPOINT_FILE="${PROJECT_ROOT:-.}/.session/checkpoints.log"
|
|
69
|
-
if [[ -f "$CHECKPOINT_FILE" ]]; then
|
|
70
|
-
echo "=== Recent Checkpoints ==="
|
|
71
|
-
tail -20 "$CHECKPOINT_FILE"
|
|
72
|
-
else
|
|
73
|
-
echo "No checkpoints found."
|
|
74
|
-
fi
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Step 3: Parse and Present Options (if no saved agent)
|
|
78
|
-
|
|
79
|
-
If checkpoints exist, parse and present them:
|
|
80
|
-
|
|
81
|
-
```markdown
|
|
82
|
-
## Available Checkpoints
|
|
83
|
-
|
|
84
|
-
| # | Timestamp | Label | Data |
|
|
85
|
-
|---|-----------|-------|------|
|
|
86
|
-
| 1 | 2026-01-06T14:30:22Z | phase:3-4 | dev |
|
|
87
|
-
| 2 | 2026-01-06T14:28:15Z | context:3-4 | Working on continue-session command |
|
|
88
|
-
|
|
89
|
-
Which checkpoint would you like to restore? (Enter number or 'all' for most recent of each label)
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Output `<!-- CYCLIST:CHOICES:checkpoint -->` marker, then use AskUserQuestion to let user choose.
|
|
93
|
-
|
|
94
|
-
## Step 4: Restore Checkpoint
|
|
95
|
-
|
|
96
|
-
Source the checkpoint utilities and restore:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
# Source checkpoint utilities
|
|
100
|
-
source "${PROJECT_ROOT:-.}/.pennyfarthing/scripts/lib/checkpoint.sh"
|
|
101
|
-
|
|
102
|
-
# Restore by label
|
|
103
|
-
PHASE=$(checkpoint_restore "phase:${STORY_ID}")
|
|
104
|
-
CONTEXT=$(checkpoint_restore "context:${STORY_ID}")
|
|
105
|
-
FILES=$(checkpoint_restore "files:${STORY_ID}")
|
|
106
|
-
|
|
107
|
-
echo "Restored checkpoint:"
|
|
108
|
-
echo " Phase: $PHASE"
|
|
109
|
-
echo " Context: $CONTEXT"
|
|
110
|
-
echo " Files: $FILES"
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Step 5: Find Session File
|
|
114
|
-
|
|
115
|
-
Look for the matching session file:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
SESSION_FILE=".session/${STORY_ID}-session.md"
|
|
119
|
-
if [[ -f "$SESSION_FILE" ]]; then
|
|
120
|
-
echo "Found session file: $SESSION_FILE"
|
|
121
|
-
head -20 "$SESSION_FILE"
|
|
122
|
-
else
|
|
123
|
-
echo "Warning: No session file found for story $STORY_ID"
|
|
124
|
-
fi
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## Step 6: Resume Appropriate Agent
|
|
128
|
-
|
|
129
|
-
Based on the restored phase, invoke the appropriate agent:
|
|
130
|
-
|
|
131
|
-
| Phase | Agent | Command |
|
|
132
|
-
|-------|-------|---------|
|
|
133
|
-
| `setup` or `sm` | TEA | `/tea` |
|
|
134
|
-
| `tea` or `red` | Dev | `/dev` |
|
|
135
|
-
| `dev` or `green` | Reviewer | `/reviewer` |
|
|
136
|
-
| `review` | Reviewer | `/reviewer` |
|
|
137
|
-
| `approved` | SM | `/sm` (finish flow) |
|
|
138
|
-
|
|
139
|
-
Present to user:
|
|
140
|
-
```markdown
|
|
141
|
-
## Session Restored
|
|
142
|
-
|
|
143
|
-
**Story:** {STORY_ID} - {title from session}
|
|
144
|
-
**Phase:** {PHASE}
|
|
145
|
-
**Context:** {CONTEXT}
|
|
146
|
-
|
|
147
|
-
Ready to continue with **{Agent Name}**.
|
|
148
|
-
|
|
149
|
-
The checkpoint shows you were working on: {CONTEXT}
|
|
150
|
-
|
|
151
|
-
[Continue] [Show more details] [Cancel]
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
</on-invoke>
|
|
155
|
-
|
|
156
|
-
<checkpoint-labels>
|
|
157
|
-
Standard checkpoint labels include the story ID:
|
|
158
|
-
|
|
159
|
-
| Label Pattern | Purpose | Example |
|
|
160
|
-
|---------------|---------|---------|
|
|
161
|
-
| `circuit_breaker_agent` | **Auto-saved** by circuit breaker | `circuit_breaker_agent` → `dev` |
|
|
162
|
-
| `phase:{story-id}` | Workflow phase | `phase:3-4` → `dev` |
|
|
163
|
-
| `context:{story-id}` | Work summary | `context:3-4` → `Implementing validation` |
|
|
164
|
-
| `files:{story-id}` | Key files | `files:3-4` → `src/api.ts,src/utils.ts` |
|
|
165
|
-
| `branch:{story-id}` | Git branch | `branch:3-4` → `feat/3-4-session` |
|
|
166
|
-
</checkpoint-labels>
|
|
167
|
-
|
|
168
|
-
<no-checkpoints>
|
|
169
|
-
If no checkpoints are found:
|
|
170
|
-
|
|
171
|
-
```markdown
|
|
172
|
-
## No Checkpoints Found
|
|
173
|
-
|
|
174
|
-
No saved checkpoints exist in `.session/checkpoints.log`.
|
|
175
|
-
|
|
176
|
-
**Options:**
|
|
177
|
-
1. `/work` - Check for active session files
|
|
178
|
-
2. `/new-work` - Start fresh with a new story
|
|
179
|
-
3. Check git stash: `git stash list`
|
|
180
|
-
```
|
|
181
|
-
</no-checkpoints>
|
|
182
|
-
|
|
183
|
-
<stale-checkpoint-warning>
|
|
184
|
-
If checkpoint is older than 24 hours:
|
|
185
|
-
|
|
186
|
-
```markdown
|
|
187
|
-
## Stale Checkpoint Warning
|
|
188
|
-
|
|
189
|
-
The most recent checkpoint is from **{timestamp}** ({hours} hours ago).
|
|
190
|
-
|
|
191
|
-
The codebase may have changed significantly since then.
|
|
192
|
-
|
|
193
|
-
**Options:**
|
|
194
|
-
1. [Restore anyway] - Load this checkpoint
|
|
195
|
-
2. [Check git log] - See what changed since checkpoint
|
|
196
|
-
3. [Start fresh] - Begin new work with `/new-work`
|
|
197
|
-
```
|
|
198
|
-
</stale-checkpoint-warning>
|
|
199
|
-
|
|
200
|
-
<integration>
|
|
201
|
-
This command completes the circuit breaker workflow:
|
|
202
|
-
|
|
203
|
-
1. Agent works normally
|
|
204
|
-
2. Context reaches 85% → circuit breaker triggers
|
|
205
|
-
3. Circuit breaker **automatically saves** the active agent to `circuit_breaker_agent` checkpoint
|
|
206
|
-
4. User starts new Claude session
|
|
207
|
-
5. User runs `/continue-session`
|
|
208
|
-
6. Command reads `circuit_breaker_agent` checkpoint
|
|
209
|
-
7. Agent is invoked with `/{agent}` command → FULL tier context injection
|
|
210
|
-
8. Agent resumes with complete persona, behavior guide, and session context
|
|
211
|
-
</integration>
|
|
212
|
-
|
|
213
|
-
<reference>
|
|
214
|
-
- **Checkpoint API:** `.pennyfarthing/scripts/lib/checkpoint.sh`
|
|
215
|
-
- **Circuit Breaker:** `scripts/hooks/context-circuit-breaker.sh`
|
|
216
|
-
- **Related:** `/work`, `/new-work`
|
|
217
|
-
- **Session Files:** `.session/{story-id}-session.md`
|
|
218
|
-
</reference>
|
|
11
|
+
| Old Command | New Command |
|
|
12
|
+
|-------------|-------------|
|
|
13
|
+
| `/new-work` | `/pf-session new` |
|
|
14
|
+
| `/continue-session` | `/pf-session continue` |
|
|
@@ -1,358 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
deprecated: true
|
|
3
|
+
redirect: pf-git
|
|
4
|
+
description: "DEPRECATED: Use /pf-git branches instead."
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
#
|
|
7
|
+
# /create-branches-from-story - DEPRECATED
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
Git commands have been consolidated into `/pf-git`. Use:
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
## Steps
|
|
16
|
-
|
|
17
|
-
### 1. Extract Branch Name from Story
|
|
18
|
-
|
|
19
|
-
Read the story/feature description and create a branch name following the pattern:
|
|
20
|
-
- Format: `feature/[story-id]-[short-description]`
|
|
21
|
-
- Example: `feature/AUTH-123-user-login`
|
|
22
|
-
- Use kebab-case for description
|
|
23
|
-
- Keep it short but descriptive
|
|
24
|
-
|
|
25
|
-
**Branch naming conventions:**
|
|
26
|
-
- `feature/` - New features
|
|
27
|
-
- `bugfix/` - Bug fixes
|
|
28
|
-
- `hotfix/` - Urgent production fixes
|
|
29
|
-
- `refactor/` - Code refactoring
|
|
30
|
-
- `chore/` - Maintenance tasks
|
|
31
|
-
|
|
32
|
-
### 2. Determine Scope
|
|
33
|
-
|
|
34
|
-
Ask: Does this story require changes in:
|
|
35
|
-
- [ ] API only → Create branch in `API` only
|
|
36
|
-
- [ ] UI only → Create branch in `UI` only
|
|
37
|
-
- [ ] Both → Create branches in both repos
|
|
38
|
-
|
|
39
|
-
### 2b. Choose Branch Strategy
|
|
40
|
-
|
|
41
|
-
**Option A: Standard (in-place branch switching)**
|
|
42
|
-
- Use when: Working on one thing at a time
|
|
43
|
-
- Pros: Simple, no extra directories
|
|
44
|
-
- Cons: Must stash/commit before switching
|
|
45
|
-
|
|
46
|
-
**Option B: Worktree (parallel development)**
|
|
47
|
-
- Use when: Need to work on multiple things simultaneously
|
|
48
|
-
- Pros: No branch switching, isolated work directories
|
|
49
|
-
- Cons: Uses more disk space
|
|
50
|
-
|
|
51
|
-
If you need parallel work, skip to **Step 3b** below.
|
|
52
|
-
|
|
53
|
-
### 3. Create Branches
|
|
54
|
-
|
|
55
|
-
Run the following commands based on scope:
|
|
56
|
-
|
|
57
|
-
#### For API Changes
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
cd $CLAUDE_PROJECT_DIR/API
|
|
61
|
-
|
|
62
|
-
# Ensure you're on main and up to date
|
|
63
|
-
git checkout main
|
|
64
|
-
git pull origin main
|
|
65
|
-
|
|
66
|
-
# Create and checkout new branch
|
|
67
|
-
git checkout -b feature/[story-id]-[description]
|
|
68
|
-
|
|
69
|
-
# Push branch to remote
|
|
70
|
-
git push -u origin feature/[story-id]-[description]
|
|
71
|
-
|
|
72
|
-
# Confirm
|
|
73
|
-
git branch --show-current
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
#### For UI Changes
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
cd $CLAUDE_PROJECT_DIR/UI
|
|
80
|
-
|
|
81
|
-
# Ensure you're on main and up to date
|
|
82
|
-
git checkout main
|
|
83
|
-
git pull origin main
|
|
84
|
-
|
|
85
|
-
# Create and checkout new branch
|
|
86
|
-
git checkout -b feature/[story-id]-[description]
|
|
87
|
-
|
|
88
|
-
# Push branch to remote
|
|
89
|
-
git push -u origin feature/[story-id]-[description]
|
|
90
|
-
|
|
91
|
-
# Confirm
|
|
92
|
-
git branch --show-current
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### 3b. Create Worktree (Alternative for Parallel Work)
|
|
96
|
-
|
|
97
|
-
Use this instead of Step 3 if you need to work on multiple stories simultaneously:
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
cd $CLAUDE_PROJECT_DIR
|
|
101
|
-
|
|
102
|
-
# Create worktree with branches (both API and UI)
|
|
103
|
-
./scripts/git/worktree-manager.sh create [story-id] feat/[story-id]-[description]
|
|
104
|
-
|
|
105
|
-
# Example: Story 5-2
|
|
106
|
-
./scripts/git/worktree-manager.sh create 5-2 feat/5-2-csv-import
|
|
107
|
-
|
|
108
|
-
# For API-only work
|
|
109
|
-
./scripts/git/worktree-manager.sh create [story-id] feat/[story-id]-[description] api
|
|
110
|
-
|
|
111
|
-
# For UI-only work
|
|
112
|
-
./scripts/git/worktree-manager.sh create [story-id] feat/[story-id]-[description] ui
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
This creates:
|
|
116
|
-
- Worktree at `worktrees/[story-id]/API` and/or `UI`
|
|
117
|
-
- Session file at `.session/wt-[story-id].md`
|
|
118
|
-
- Branches created from develop
|
|
119
|
-
|
|
120
|
-
**Skip to Step 5b** if using worktrees.
|
|
121
|
-
|
|
122
|
-
### 4. Document the Work
|
|
123
|
-
|
|
124
|
-
Edit `.session/{STORY_ID}-session.md`:
|
|
125
|
-
|
|
126
|
-
```markdown
|
|
127
|
-
# Feature: [Story Title]
|
|
128
|
-
|
|
129
|
-
**Story ID:** [STORY-123]
|
|
130
|
-
**Repos:** [X] API [X] UI [ ] Both
|
|
131
|
-
**Branches:**
|
|
132
|
-
- API: feature/[story-id]-[description]
|
|
133
|
-
- UI: feature/[story-id]-[description]
|
|
134
|
-
**Date:** [YYYY-MM-DD]
|
|
135
|
-
|
|
136
|
-
## Goal
|
|
137
|
-
[One sentence - what are you building?]
|
|
138
|
-
|
|
139
|
-
## Story Description
|
|
140
|
-
[Copy relevant parts of the story]
|
|
141
|
-
|
|
142
|
-
## Acceptance Criteria
|
|
143
|
-
- [ ] [Criterion 1]
|
|
144
|
-
- [ ] [Criterion 2]
|
|
145
|
-
- [ ] [Criterion 3]
|
|
146
|
-
|
|
147
|
-
## API Changes
|
|
148
|
-
- Files: [list expected files]
|
|
149
|
-
- Endpoints: [list new/modified endpoints]
|
|
150
|
-
- Branch: feature/[story-id]-[description]
|
|
151
|
-
|
|
152
|
-
## UI Changes
|
|
153
|
-
- Files: [list expected files]
|
|
154
|
-
- Components: [list new/modified components]
|
|
155
|
-
- Branch: feature/[story-id]-[description]
|
|
156
|
-
|
|
157
|
-
## Technical Notes
|
|
158
|
-
[Any technical considerations, dependencies, etc.]
|
|
159
|
-
|
|
160
|
-
## Testing Plan
|
|
161
|
-
- [ ] API unit tests
|
|
162
|
-
- [ ] UI component tests
|
|
163
|
-
- [ ] Integration tests
|
|
164
|
-
- [ ] Manual testing
|
|
165
|
-
|
|
166
|
-
## Done
|
|
167
|
-
- [ ] All acceptance criteria met
|
|
168
|
-
- [ ] Tests pass
|
|
169
|
-
- [ ] Code reviewed
|
|
170
|
-
- [ ] Branches merged
|
|
171
|
-
- [ ] Deployed
|
|
172
|
-
|
|
173
|
-
## Next Steps
|
|
174
|
-
[What happens after this story is complete?]
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### 6. Verify Setup
|
|
178
|
-
|
|
179
|
-
Check that everything is ready:
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
# Check API branch
|
|
183
|
-
cd $CLAUDE_PROJECT_DIR/API
|
|
184
|
-
git branch --show-current
|
|
185
|
-
# Should show: feature/[story-id]-[description]
|
|
186
|
-
|
|
187
|
-
# Check UI branch
|
|
188
|
-
cd $CLAUDE_PROJECT_DIR/UI
|
|
189
|
-
git branch --show-current
|
|
190
|
-
# Should show: feature/[story-id]-[description]
|
|
191
|
-
|
|
192
|
-
# Check Pennyfarthing session exists
|
|
193
|
-
cd $CLAUDE_PROJECT_DIR
|
|
194
|
-
ls -la .session/{STORY_ID}-session.md
|
|
195
|
-
# Should exist
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### 5b. Document Worktree Work (if using worktrees)
|
|
199
|
-
|
|
200
|
-
The worktree manager already created a session file. Edit `.session/wt-[story-id].md` with the same content as Step 5.
|
|
201
|
-
|
|
202
|
-
### 7. Start Development
|
|
203
|
-
|
|
204
|
-
You're now ready to start work:
|
|
205
|
-
|
|
206
|
-
**Standard (in-place branches):**
|
|
207
|
-
```bash
|
|
208
|
-
# Work in API
|
|
209
|
-
cd $CLAUDE_PROJECT_DIR/API
|
|
210
|
-
# You're on feature branch, AI loads session + API context
|
|
211
|
-
|
|
212
|
-
# Work in UI
|
|
213
|
-
cd $CLAUDE_PROJECT_DIR/UI
|
|
214
|
-
# You're on feature branch, AI loads session + UI context
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
**Worktree (parallel work):**
|
|
218
|
-
```bash
|
|
219
|
-
# Work in API worktree
|
|
220
|
-
cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/API
|
|
221
|
-
|
|
222
|
-
# Work in UI worktree
|
|
223
|
-
cd $CLAUDE_PROJECT_DIR/worktrees/[story-id]/UI
|
|
224
|
-
|
|
225
|
-
# Get port configuration for dev servers
|
|
226
|
-
eval $(./scripts/git/worktree-manager.sh ports [story-id])
|
|
227
|
-
echo "API: $API_PORT, UI: $UI_PORT"
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
## Example: Complete Workflow
|
|
231
|
-
|
|
232
|
-
### Story: "Add User Authentication"
|
|
233
|
-
|
|
234
|
-
```bash
|
|
235
|
-
# 1. Create API branch
|
|
236
|
-
cd $CLAUDE_PROJECT_DIR/API
|
|
237
|
-
git checkout main && git pull
|
|
238
|
-
git checkout -b feature/AUTH-123-user-authentication
|
|
239
|
-
git push -u origin feature/AUTH-123-user-authentication
|
|
240
|
-
|
|
241
|
-
# 2. Create UI branch
|
|
242
|
-
cd ../UI
|
|
243
|
-
git checkout main && git pull
|
|
244
|
-
git checkout -b feature/AUTH-123-user-authentication
|
|
245
|
-
git push -u origin feature/AUTH-123-user-authentication
|
|
246
|
-
|
|
247
|
-
# 3. Edit session file
|
|
248
|
-
# Update .session/{STORY_ID}-session.md with story details
|
|
249
|
-
|
|
250
|
-
# 5. Start working
|
|
251
|
-
cd API
|
|
252
|
-
# Implement auth endpoints
|
|
253
|
-
|
|
254
|
-
cd ../UI
|
|
255
|
-
# Implement login UI
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
## Tips
|
|
259
|
-
|
|
260
|
-
### Branch Naming Best Practices
|
|
261
|
-
|
|
262
|
-
- **Be consistent** - Use same branch name in both repos for related work
|
|
263
|
-
- **Include story ID** - Makes it easy to track back to requirements
|
|
264
|
-
- **Keep it short** - But descriptive enough to understand at a glance
|
|
265
|
-
- **Use prefixes** - feature/, bugfix/, etc. for clarity
|
|
266
|
-
|
|
267
|
-
### When to Create Branches
|
|
268
|
-
|
|
269
|
-
- **Both repos affected** - Create matching branches in both
|
|
270
|
-
- **Single repo** - Only create branch where needed
|
|
271
|
-
- **Uncertain** - Start with both, delete unused later
|
|
272
|
-
|
|
273
|
-
### Branch Cleanup
|
|
274
|
-
|
|
275
|
-
After merging:
|
|
276
|
-
```bash
|
|
277
|
-
# Delete local branch
|
|
278
|
-
git branch -d feature/[story-id]-[description]
|
|
279
|
-
|
|
280
|
-
# Delete remote branch
|
|
281
|
-
git push origin --delete feature/[story-id]-[description]
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
## Troubleshooting
|
|
285
|
-
|
|
286
|
-
### Already have uncommitted changes?
|
|
287
|
-
|
|
288
|
-
```bash
|
|
289
|
-
# Stash changes
|
|
290
|
-
git stash
|
|
291
|
-
|
|
292
|
-
# Create branch
|
|
293
|
-
git checkout -b feature/[story-id]-[description]
|
|
294
|
-
|
|
295
|
-
# Apply stashed changes
|
|
296
|
-
git stash pop
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
### Wrong branch name?
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
# Rename local branch
|
|
303
|
-
git branch -m old-name new-name
|
|
304
|
-
|
|
305
|
-
# Delete old remote branch
|
|
306
|
-
git push origin --delete old-name
|
|
307
|
-
|
|
308
|
-
# Push new branch
|
|
309
|
-
git push -u origin new-name
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### Forgot to pull main first?
|
|
313
|
-
|
|
314
|
-
```bash
|
|
315
|
-
# Fetch latest
|
|
316
|
-
git fetch origin
|
|
317
|
-
|
|
318
|
-
# Rebase your branch on latest main
|
|
319
|
-
git rebase origin/main
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
## Integration with Pennyfarthing
|
|
323
|
-
|
|
324
|
-
This workflow integrates with the solo dev Pennyfarthing structure:
|
|
325
|
-
|
|
326
|
-
1. **Branches** - Git manages code isolation
|
|
327
|
-
2. **Session** - Pennyfarthing tracks work progress
|
|
328
|
-
3. **Context** - Repo context files guide AI
|
|
329
|
-
4. **Archive** - When done, archive session and delete branches
|
|
330
|
-
|
|
331
|
-
**Workflow:**
|
|
332
|
-
```
|
|
333
|
-
Story → Branches → Pennyfarthing Session → Development → Merge → Archive
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
## Quick Reference
|
|
337
|
-
|
|
338
|
-
```bash
|
|
339
|
-
# Create API branch
|
|
340
|
-
cd API && git checkout main && git pull && \
|
|
341
|
-
git checkout -b feature/STORY-ID-description && \
|
|
342
|
-
git push -u origin feature/STORY-ID-description
|
|
343
|
-
|
|
344
|
-
# Create UI branch
|
|
345
|
-
cd ../UI && git checkout main && git pull && \
|
|
346
|
-
git checkout -b feature/STORY-ID-description && \
|
|
347
|
-
git push -u origin feature/STORY-ID-description
|
|
348
|
-
|
|
349
|
-
# Edit session
|
|
350
|
-
# Update .session/{STORY_ID}-session.md
|
|
351
|
-
|
|
352
|
-
# Start work
|
|
353
|
-
cd API # or UI
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
---
|
|
357
|
-
|
|
358
|
-
**You're ready to start development with coordinated branches and Pennyfarthing tracking!**
|
|
11
|
+
| Old Command | New Command |
|
|
12
|
+
|-------------|-------------|
|
|
13
|
+
| `/repo-status` | `/pf-git status` |
|
|
14
|
+
| `/git-cleanup` | `/pf-git cleanup` |
|
|
15
|
+
| `/create-branches-from-story` | `/pf-git branches` |
|
|
16
|
+
| `/release` | `/pf-git release` |
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Domain documentation management
|
|
3
|
+
args: "[update]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Documentation Operations
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Manage domain documentation files. Currently supports updating CLAUDE-*.md domain documentation files to reflect the current state of the codebase.
|
|
10
|
+
</purpose>
|
|
11
|
+
|
|
12
|
+
## Commands
|
|
13
|
+
|
|
14
|
+
### `/pf-docs update`
|
|
15
|
+
|
|
16
|
+
Update CLAUDE-*.md domain documentation files based on current codebase.
|
|
17
|
+
|
|
18
|
+
Scans the relevant files for each domain and updates documentation with:
|
|
19
|
+
- Service files and their main functions
|
|
20
|
+
- Handler files and their endpoints
|
|
21
|
+
- Model files and their structs
|
|
22
|
+
- Worker files (if applicable)
|
|
23
|
+
- Test files
|
|
24
|
+
|
|
25
|
+
## Related
|
|
26
|
+
|
|
27
|
+
- `/pf-help` — Context-aware help
|
|
28
|
+
- `/tech-writer` — Technical Writer agent
|