@pennyfarthing/core 11.2.1 → 11.3.1
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 +102 -42
- package/package.json +1 -1
- package/packages/core/dist/cli/commands/doctor-legacy.test.js +2 -2
- package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
- package/packages/core/dist/cli/commands/doctor.d.ts +55 -0
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/doctor.js +324 -50
- package/packages/core/dist/cli/commands/doctor.js.map +1 -1
- package/packages/core/dist/cli/commands/init.d.ts +12 -0
- package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/init.js +45 -0
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/pyproject-install.test.d.ts +19 -0
- package/packages/core/dist/cli/commands/pyproject-install.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/pyproject-install.test.js +261 -0
- package/packages/core/dist/cli/commands/pyproject-install.test.js.map +1 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.d.ts +17 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.js +470 -0
- package/packages/core/dist/cli/commands/stale-artifacts-cleanup.test.js.map +1 -0
- package/packages/core/dist/cli/commands/update-consolidation.test.js +14 -6
- package/packages/core/dist/cli/commands/update-consolidation.test.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +31 -2
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/index.js +2 -0
- package/packages/core/dist/cli/index.js.map +1 -1
- package/packages/core/dist/cli/utils/python.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/python.js +11 -0
- package/packages/core/dist/cli/utils/python.js.map +1 -1
- package/packages/core/dist/cli/utils/settings-hook-migration.test.d.ts +17 -0
- package/packages/core/dist/cli/utils/settings-hook-migration.test.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/settings-hook-migration.test.js +382 -0
- package/packages/core/dist/cli/utils/settings-hook-migration.test.js.map +1 -0
- package/packages/core/dist/cli/utils/settings.d.ts +0 -4
- package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/settings.js +45 -27
- package/packages/core/dist/cli/utils/settings.js.map +1 -1
- package/packages/core/dist/cli/utils/stale-artifacts.d.ts +59 -0
- package/packages/core/dist/cli/utils/stale-artifacts.d.ts.map +1 -0
- package/packages/core/dist/cli/utils/stale-artifacts.js +163 -0
- package/packages/core/dist/cli/utils/stale-artifacts.js.map +1 -0
- package/packages/core/dist/consultation/dialogue-manager.d.ts +1 -1
- package/packages/core/dist/consultation/dialogue-manager.d.ts.map +1 -1
- package/packages/core/dist/consultation/dialogue-manager.js +1 -1
- package/packages/core/dist/consultation/dialogue-manager.js.map +1 -1
- package/packages/core/dist/consultation/dialogue-manager.test.js.map +1 -1
- package/packages/core/dist/consultation/tandem-metrics.test.js.map +1 -1
- package/packages/core/dist/public/css/react.css +1 -1
- package/packages/core/dist/public/js/react/react.js +9 -9
- package/packages/core/dist/server/api/git.d.ts.map +1 -1
- package/packages/core/dist/server/api/git.js +0 -1
- package/packages/core/dist/server/api/git.js.map +1 -1
- package/packages/core/dist/server/api/index.d.ts +2 -0
- package/packages/core/dist/server/api/index.d.ts.map +1 -1
- package/packages/core/dist/server/api/index.js +2 -0
- package/packages/core/dist/server/api/index.js.map +1 -1
- package/packages/core/dist/server/api/project-info.d.ts +11 -0
- package/packages/core/dist/server/api/project-info.d.ts.map +1 -0
- package/packages/core/dist/server/api/project-info.js +18 -0
- package/packages/core/dist/server/api/project-info.js.map +1 -0
- package/packages/core/dist/server/otlp-receiver.d.ts.map +1 -1
- package/packages/core/dist/server/otlp-receiver.js +18 -1
- package/packages/core/dist/server/otlp-receiver.js.map +1 -1
- package/packages/core/dist/server/otlp-receiver.test.js +1 -1
- package/packages/core/dist/server/otlp-receiver.test.js.map +1 -1
- package/packages/core/dist/server/server.d.ts.map +1 -1
- package/packages/core/dist/server/server.js +3 -2
- package/packages/core/dist/server/server.js.map +1 -1
- package/packages/core/dist/server/server.test.d.ts +1 -1
- package/packages/core/dist/server/server.test.js +8 -8
- package/packages/core/dist/server/settings.d.ts +1 -0
- package/packages/core/dist/server/settings.d.ts.map +1 -1
- package/packages/core/dist/server/settings.js +18 -0
- package/packages/core/dist/server/settings.js.map +1 -1
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js +7 -5
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-migration.test.js +6 -5
- package/packages/core/dist/workflow/workflow-migration.test.js.map +1 -1
- package/packages/core/dist/workflow/workflow-team-templates.test.d.ts +17 -0
- package/packages/core/dist/workflow/workflow-team-templates.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/workflow-team-templates.test.js +275 -0
- package/packages/core/dist/workflow/workflow-team-templates.test.js.map +1 -0
- package/pennyfarthing-dist/agents/dev.md +19 -4
- package/pennyfarthing-dist/agents/devops.md +2 -10
- package/pennyfarthing-dist/agents/reviewer-preflight.md +4 -5
- package/pennyfarthing-dist/agents/reviewer.md +17 -4
- package/pennyfarthing-dist/agents/sm-finish.md +1 -1
- package/pennyfarthing-dist/agents/sm-setup.md +7 -7
- package/pennyfarthing-dist/agents/sm.md +16 -29
- package/pennyfarthing-dist/agents/tea.md +2 -2
- package/pennyfarthing-dist/agents/testing-runner.md +1 -1
- package/pennyfarthing-dist/commands/pf-architect.md +1 -1
- package/pennyfarthing-dist/commands/pf-ba.md +1 -1
- package/pennyfarthing-dist/commands/pf-chore.md +2 -2
- package/pennyfarthing-dist/commands/pf-dev.md +1 -1
- package/pennyfarthing-dist/commands/pf-devops.md +1 -1
- package/pennyfarthing-dist/commands/pf-epic.md +6 -6
- package/pennyfarthing-dist/commands/pf-git.md +10 -10
- package/pennyfarthing-dist/commands/pf-health-check.md +31 -12
- package/pennyfarthing-dist/commands/pf-help.md +12 -12
- package/pennyfarthing-dist/commands/pf-orchestrator.md +1 -1
- package/pennyfarthing-dist/commands/pf-pm.md +1 -1
- package/pennyfarthing-dist/commands/pf-prime.md +8 -8
- package/pennyfarthing-dist/commands/pf-reviewer.md +1 -1
- package/pennyfarthing-dist/commands/pf-session.md +7 -7
- package/pennyfarthing-dist/commands/pf-sm.md +1 -1
- package/pennyfarthing-dist/commands/pf-sprint.md +7 -7
- package/pennyfarthing-dist/commands/pf-tea.md +1 -1
- package/pennyfarthing-dist/commands/pf-tech-writer.md +1 -1
- package/pennyfarthing-dist/commands/pf-theme.md +9 -9
- package/pennyfarthing-dist/commands/pf-ux-designer.md +1 -1
- package/pennyfarthing-dist/commands/pf-work.md +1 -1
- package/pennyfarthing-dist/gates/{confidence-sm.md → confidence.md} +16 -17
- package/pennyfarthing-dist/gates/dev-exit.md +75 -0
- package/pennyfarthing-dist/gates/merge-ready.md +49 -0
- package/pennyfarthing-dist/gates/release-ready.md +95 -0
- package/pennyfarthing-dist/gates/reviewer-preflight-check.md +90 -0
- package/pennyfarthing-dist/gates/sm-setup-exit.md +82 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +129 -20
- package/pennyfarthing-dist/guides/agent-coordination.md +10 -10
- package/pennyfarthing-dist/guides/agent-tag-taxonomy.md +6 -6
- package/pennyfarthing-dist/guides/agent-template-tactical.md +1 -1
- package/pennyfarthing-dist/guides/bell-mode.md +1 -1
- package/pennyfarthing-dist/guides/bikerack.md +10 -10
- package/pennyfarthing-dist/guides/brownfield-tools.md +24 -24
- package/pennyfarthing-dist/guides/command-tag-taxonomy.md +1 -1
- package/pennyfarthing-dist/guides/gate-schema.md +2 -2
- package/pennyfarthing-dist/guides/gates.md +10 -5
- package/pennyfarthing-dist/guides/handoff-cli.md +8 -8
- package/pennyfarthing-dist/guides/hooks.md +27 -27
- package/pennyfarthing-dist/guides/prime.md +2 -2
- package/pennyfarthing-dist/guides/reflector.md +1 -1
- package/pennyfarthing-dist/guides/skill-schema.md +6 -6
- package/pennyfarthing-dist/guides/tandem-protocol.md +3 -3
- package/pennyfarthing-dist/guides/workflow-schema.md +1 -1
- package/pennyfarthing-dist/guides/worktree-mode.md +3 -3
- package/pennyfarthing-dist/guides/xml-tags.md +8 -8
- package/pennyfarthing-dist/scripts/README.md +4 -4
- package/pennyfarthing-dist/scripts/core/agent-session.sh +2 -5
- package/pennyfarthing-dist/scripts/core/check-context.sh +1 -1
- package/pennyfarthing-dist/scripts/core/pf.sh +5 -0
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +2 -5
- package/pennyfarthing-dist/scripts/core/prime.sh +2 -25
- package/pennyfarthing-dist/scripts/git/README.md +14 -14
- package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +2 -3
- package/pennyfarthing-dist/scripts/git/git-status-all.sh +2 -3
- package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +2 -3
- package/pennyfarthing-dist/scripts/git/worktree-manager.sh +2 -4
- package/pennyfarthing-dist/scripts/hooks/README.md +6 -6
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +5 -4
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +2 -1
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +3 -3
- package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +3 -4
- package/pennyfarthing-dist/scripts/lib/env.sh +34 -0
- package/pennyfarthing-dist/scripts/lib/find-root.sh +5 -0
- package/pennyfarthing-dist/scripts/lib/run-pf.sh +43 -0
- package/pennyfarthing-dist/scripts/misc/README.md +1 -1
- package/pennyfarthing-dist/scripts/misc/statusline.sh +3 -3
- package/pennyfarthing-dist/scripts/sprint/README.md +21 -21
- package/pennyfarthing-dist/scripts/workflow/README.md +2 -2
- package/pennyfarthing-dist/scripts/workflow/finish-story.sh +2 -16
- package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +3 -3
- package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +3 -3
- package/pennyfarthing-dist/skills/pf-bc/examples.md +23 -23
- package/pennyfarthing-dist/skills/pf-bc/skill.md +17 -17
- package/pennyfarthing-dist/skills/pf-bc/usage.md +8 -8
- package/pennyfarthing-dist/skills/pf-jira/SKILL.md +15 -15
- package/pennyfarthing-dist/skills/pf-jira/examples.md +48 -48
- package/pennyfarthing-dist/skills/pf-jira/usage.md +15 -15
- package/pennyfarthing-dist/skills/pf-settings/skill.md +42 -0
- package/pennyfarthing-dist/skills/pf-sprint/examples.md +80 -80
- package/pennyfarthing-dist/skills/pf-sprint/skill.md +35 -35
- package/pennyfarthing-dist/skills/pf-sprint/usage.md +30 -30
- package/pennyfarthing-dist/skills/pf-theme/examples.md +15 -15
- package/pennyfarthing-dist/skills/pf-theme/skill.md +6 -6
- package/pennyfarthing-dist/skills/pf-theme/usage.md +5 -5
- package/pennyfarthing-dist/skills/pf-workflow/examples.md +27 -27
- package/pennyfarthing-dist/skills/pf-workflow/skill.md +11 -11
- package/pennyfarthing-dist/skills/pf-workflow/usage.md +11 -11
- package/pennyfarthing-dist/skills/skill-registry.yaml +34 -19
- package/pennyfarthing-dist/templates/pyproject.toml +27 -0
- package/pennyfarthing-dist/templates/settings.local.json.template +11 -11
- package/pennyfarthing-dist/workflows/bdd-tandem.yaml +7 -3
- package/pennyfarthing-dist/workflows/bdd-team.yaml +89 -0
- package/pennyfarthing-dist/workflows/bdd.yaml +7 -3
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +1 -1
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +1 -1
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +1 -1
- package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +1 -1
- package/pennyfarthing-dist/workflows/installation-check/steps/step-01-foundation.md +77 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-02-commands.md +82 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-03-hooks.md +121 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-04-scripts.md +83 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-05-layout.md +81 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-06-legacy.md +94 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-07-tools.md +80 -0
- package/pennyfarthing-dist/workflows/installation-check/steps/step-08-summary.md +99 -0
- package/pennyfarthing-dist/workflows/installation-check/workflow.yaml +47 -0
- package/pennyfarthing-dist/workflows/project-setup/steps/step-01-discover.md +47 -0
- package/pennyfarthing-dist/workflows/tdd-tandem.yaml +7 -3
- package/pennyfarthing-dist/workflows/tdd-team.yaml +80 -0
- package/pennyfarthing-dist/workflows/tdd.yaml +7 -3
- package/pennyfarthing-dist/workflows/trivial.yaml +7 -3
- package/pennyfarthing_scripts/__init__.py +1 -1
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/context.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/context.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/focus.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/__pycache__/split.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bc/cli.py +23 -2
- package/pennyfarthing_scripts/bc/focus.py +1 -0
- package/pennyfarthing_scripts/bc/split.py +52 -0
- package/pennyfarthing_scripts/bellmode_hook.py +2 -5
- package/pennyfarthing_scripts/bikerack/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/audit_log_panel.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-311.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/context_meter_footer.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__/events.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/git_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/launcher.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/portrait_resolver.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/progress_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/sprint_panel.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/story_detail_data.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/bikerack/__pycache__/story_detail_screen.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/audit_log_panel.py +48 -6
- package/pennyfarthing_scripts/bikerack/context_meter_footer.py +53 -3
- package/pennyfarthing_scripts/bikerack/launcher.py +6 -6
- package/pennyfarthing_scripts/bikerack/progress_panel.py +0 -1
- package/pennyfarthing_scripts/bikerack/sprint_panel.py +1 -1
- package/pennyfarthing_scripts/bikerack/story_detail_data.py +4 -1
- package/pennyfarthing_scripts/bikerack/story_detail_screen.py +2 -1
- package/pennyfarthing_scripts/bikerack/tui.py +214 -10
- package/pennyfarthing_scripts/bikerack/ws_client.py +2 -2
- package/pennyfarthing_scripts/cli.py +5 -0
- package/pennyfarthing_scripts/common/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/output.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/common/__pycache__/pr_config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/config.py +29 -2
- package/pennyfarthing_scripts/consultation/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/consultation/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/consultation/cli.py +3 -3
- package/pennyfarthing_scripts/context.py +3 -3
- package/pennyfarthing_scripts/deadcode/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/deadcode/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/epic/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/epic/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/git/hooks_installer.py +2 -3
- package/pennyfarthing_scripts/git/status_all.py +1 -1
- package/pennyfarthing_scripts/git/worktree.py +2 -2
- package/pennyfarthing_scripts/git_group/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/git_group/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/git_group/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/cli.cpython-311.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__/marker.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/phase_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/handoff/__pycache__/resolve_gate.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/analyze.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/healthscore/__pycache__/models.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__init__.py +8 -3
- package/pennyfarthing_scripts/hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/bell_mode.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/bell_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_breaker.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_breaker.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_warning.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_warning.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cyclist_pretooluse.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cyclist_pretooluse.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/pre_edit_check.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/pre_edit_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/reflector_check.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/schema_validation.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/schema_validation.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/session_start.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/session_start.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/session_stop.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/sprint_yaml_validation.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/sprint_yaml_validation.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/statusline.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/statusline.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/bell_mode.py +0 -1
- package/pennyfarthing_scripts/hooks/pre_edit_check.py +0 -1
- package/pennyfarthing_scripts/hooks/reflector_check.py +1 -2
- package/pennyfarthing_scripts/hooks/schema_validation.py +0 -1
- package/pennyfarthing_scripts/hooks/session_start.py +6 -8
- package/pennyfarthing_scripts/hooks/statusline.py +10 -1
- package/pennyfarthing_scripts/hotspots/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/hotspots/__pycache__/models.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/bidirectional.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/claim.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/client.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/create.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/epic.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/story.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/jira/__pycache__/sync.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/launch/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/heatmap.py +3 -15
- package/pennyfarthing_scripts/session/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/session/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/settings/__init__.py +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/__pycache__/settings.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/settings/cli.py +55 -0
- package/pennyfarthing_scripts/settings/settings.py +98 -0
- package/pennyfarthing_scripts/sprint/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/epic_update.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/status.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_add.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_finish.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/story_update.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/sprint/cli.py +121 -0
- package/pennyfarthing_scripts/sprint/loader.py +154 -3
- package/pennyfarthing_scripts/sprint/story_update.py +7 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.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/test_bikerack.py +26 -26
- package/pennyfarthing_scripts/tests/test_confidence_sm_gate.py +17 -16
- package/pennyfarthing_scripts/tests/test_dialogue_manager.py +0 -1
- package/pennyfarthing_scripts/tests/test_resolve_gate_file_field.py +45 -47
- package/pennyfarthing_scripts/tests/test_workflow_list_team.py +143 -0
- package/pennyfarthing_scripts/theme/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/theme/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/team_mode.py +323 -0
- package/pennyfarthing_scripts/workflow/__pycache__/__init__.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/cli.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/helpers.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/scale.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/scale.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/state.cpython-311.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/state.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/cli.py +15 -14
- package/pennyfarthing_scripts/workflow/state.py +0 -1
- package/pennyfarthing_scripts/workflow/team_lifecycle.py +3 -4
|
@@ -52,7 +52,7 @@ SM → TEA → Dev → Reviewer → SM (finish)
|
|
|
52
52
|
|
|
53
53
|
Commands are organized by resource. Each group is accessible via both slash commands and CLI.
|
|
54
54
|
|
|
55
|
-
### Sprint — `/pf-sprint` · `pf sprint`
|
|
55
|
+
### Sprint — `/pf-sprint` · `pf.sh sprint`
|
|
56
56
|
|
|
57
57
|
| Command | Description |
|
|
58
58
|
|---------|-------------|
|
|
@@ -65,7 +65,7 @@ Commands are organized by resource. Each group is accessible via both slash comm
|
|
|
65
65
|
| `/pf-sprint story [show\|add\|update\|size\|finish]` | Story operations |
|
|
66
66
|
| `/pf-sprint epic [show\|add\|promote\|archive]` | Epic operations |
|
|
67
67
|
|
|
68
|
-
### Git — `/pf-git` · `pf git`
|
|
68
|
+
### Git — `/pf-git` · `pf.sh git`
|
|
69
69
|
|
|
70
70
|
| Command | Description |
|
|
71
71
|
|---------|-------------|
|
|
@@ -74,21 +74,21 @@ Commands are organized by resource. Each group is accessible via both slash comm
|
|
|
74
74
|
| `/pf-git branches <id>` | Create feature branches from story |
|
|
75
75
|
| `/pf-git release` | Interactive release workflow |
|
|
76
76
|
|
|
77
|
-
### Session — `/pf-session` · `pf session`
|
|
77
|
+
### Session — `/pf-session` · `pf.sh session`
|
|
78
78
|
|
|
79
79
|
| Command | Description |
|
|
80
80
|
|---------|-------------|
|
|
81
81
|
| `/pf-session new` | Start next available story |
|
|
82
82
|
| `/pf-session continue` | Resume from checkpoint |
|
|
83
83
|
|
|
84
|
-
### Epic — `/pf-epic` · `pf epic`
|
|
84
|
+
### Epic — `/pf-epic` · `pf.sh epic`
|
|
85
85
|
|
|
86
86
|
| Command | Description |
|
|
87
87
|
|---------|-------------|
|
|
88
88
|
| `/pf-epic start <id>` | Start epic for development |
|
|
89
89
|
| `/pf-epic close <id>` | Close completed epic |
|
|
90
90
|
|
|
91
|
-
### Jira — `/pf-jira` · `pf jira`
|
|
91
|
+
### Jira — `/pf-jira` · `pf.sh jira`
|
|
92
92
|
|
|
93
93
|
| Command | Description |
|
|
94
94
|
|---------|-------------|
|
|
@@ -98,7 +98,7 @@ Commands are organized by resource. Each group is accessible via both slash comm
|
|
|
98
98
|
| `/pf-jira sync-epic` | Sync epic to Jira |
|
|
99
99
|
| `/pf-jira reconcile` | Report mismatches |
|
|
100
100
|
|
|
101
|
-
### Theme — `/pf-theme` · `pf theme`
|
|
101
|
+
### Theme — `/pf-theme` · `pf.sh theme`
|
|
102
102
|
|
|
103
103
|
| Command | Description |
|
|
104
104
|
|---------|-------------|
|
|
@@ -108,7 +108,7 @@ Commands are organized by resource. Each group is accessible via both slash comm
|
|
|
108
108
|
| `/pf-theme create <name>` | Create custom theme |
|
|
109
109
|
| `/pf-theme maker` | Interactive theme wizard |
|
|
110
110
|
|
|
111
|
-
### Workflow — `/pf-workflow` · `pf workflow`
|
|
111
|
+
### Workflow — `/pf-workflow` · `pf.sh workflow`
|
|
112
112
|
|
|
113
113
|
| Command | Description |
|
|
114
114
|
|---------|-------------|
|
|
@@ -221,11 +221,11 @@ Based on your current state, here's what you might need:
|
|
|
221
221
|
|
|
222
222
|
For detailed help on any command group:
|
|
223
223
|
```bash
|
|
224
|
-
pf help # Overview of all groups
|
|
225
|
-
pf help sprint # Sprint commands
|
|
226
|
-
pf help git # Git commands
|
|
227
|
-
pf help session # Session commands
|
|
228
|
-
pf help epic # Epic commands
|
|
224
|
+
pf.sh help # Overview of all groups
|
|
225
|
+
pf.sh help sprint # Sprint commands
|
|
226
|
+
pf.sh help git # Git commands
|
|
227
|
+
pf.sh help session # Session commands
|
|
228
|
+
pf.sh help epic # Epic commands
|
|
229
229
|
```
|
|
230
230
|
|
|
231
231
|
## Documentation
|
|
@@ -5,7 +5,7 @@ description: Orchestrator - Coordinator of all agents and meta operations
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
pf agent start "orchestrator"
|
|
8
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "orchestrator"
|
|
9
9
|
```
|
|
10
10
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
11
11
|
</agent-activation>
|
|
@@ -5,7 +5,7 @@ description: Product Manager - Strategic planning and prioritization
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
pf agent start "pm"
|
|
8
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "pm"
|
|
9
9
|
```
|
|
10
10
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
11
11
|
</agent-activation>
|
|
@@ -4,7 +4,7 @@ description: Load essential project context at agent activation
|
|
|
4
4
|
|
|
5
5
|
<purpose>
|
|
6
6
|
Quickly load essential context files to reduce agent cold-start overhead.
|
|
7
|
-
Automatically invoked on agent activation via `pf agent start`.
|
|
7
|
+
Automatically invoked on agent activation via `pf.sh agent start`.
|
|
8
8
|
</purpose>
|
|
9
9
|
|
|
10
10
|
<when-to-use>
|
|
@@ -21,19 +21,19 @@ Use the `pf` CLI:
|
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
# Load all essential context (default)
|
|
24
|
-
pf agent start "sm"
|
|
24
|
+
pf.sh agent start "sm"
|
|
25
25
|
|
|
26
26
|
# Minimal mode - fastest startup
|
|
27
|
-
pf agent start "sm" --minimal
|
|
27
|
+
pf.sh agent start "sm" --minimal
|
|
28
28
|
|
|
29
29
|
# Full mode - include domain docs
|
|
30
|
-
pf agent start "sm" --full
|
|
30
|
+
pf.sh agent start "sm" --full
|
|
31
31
|
|
|
32
32
|
# Skip persona loading
|
|
33
|
-
pf agent start "sm" --no-persona
|
|
33
|
+
pf.sh agent start "sm" --no-persona
|
|
34
34
|
|
|
35
35
|
# JSON output (for Cyclist integration)
|
|
36
|
-
pf agent start "sm" --json
|
|
36
|
+
pf.sh agent start "sm" --json
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
## Options
|
|
@@ -111,7 +111,7 @@ With `--quiet`, section headers are suppressed.
|
|
|
111
111
|
The `/prime` command is automatically invoked when agents activate:
|
|
112
112
|
|
|
113
113
|
1. User invokes `/sm`, `/tea`, `/dev`, or `/reviewer`
|
|
114
|
-
2. `pf agent start <name>` runs
|
|
114
|
+
2. `pf.sh agent start <name>` runs
|
|
115
115
|
3. Context is loaded: workflow state, agent definition, persona, behavior guide, sprint context, session, sidecars
|
|
116
116
|
4. Agent starts with full context AND their learned patterns loaded
|
|
117
117
|
|
|
@@ -129,7 +129,7 @@ If context becomes stale mid-session, run `/prime` manually:
|
|
|
129
129
|
</integration>
|
|
130
130
|
|
|
131
131
|
<reference>
|
|
132
|
-
- **CLI:** `pf agent start <name>` or `python3 -m pennyfarthing_scripts.cli agent start <name>`
|
|
132
|
+
- **CLI:** `pf.sh agent start <name>` or `python3 -m pennyfarthing_scripts.cli agent start <name>`
|
|
133
133
|
- **Loads:** Workflow state, agent definition, persona, behavior guide, sprint context, session, sidecars
|
|
134
134
|
- **Sidecar location:** `.pennyfarthing/sidecars/{agent}/*.md`
|
|
135
135
|
- **Behavior guide:** `.pennyfarthing/guides/agent-behavior.md` (all agents)
|
|
@@ -5,7 +5,7 @@ description: Code Reviewer - Critical code review and quality enforcement
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
pf agent start "reviewer"
|
|
8
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "reviewer"
|
|
9
9
|
```
|
|
10
10
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
11
11
|
</agent-activation>
|
|
@@ -16,19 +16,19 @@ Manage work session lifecycle. Start new stories from the backlog or resume from
|
|
|
16
16
|
Start the next available story from the sprint backlog.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
pf session new
|
|
19
|
+
pf.sh session new
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
Equivalent to `pf sprint work next`. Auto-selects the highest priority story.
|
|
22
|
+
Equivalent to `pf.sh sprint work next`. Auto-selects the highest priority story.
|
|
23
23
|
|
|
24
24
|
### `/pf-session continue [--list] [--story-id ID]`
|
|
25
25
|
|
|
26
26
|
Resume work from a saved checkpoint after context circuit breaker.
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
pf session continue # Interactive checkpoint selection
|
|
30
|
-
pf session continue --list # Show available checkpoints
|
|
31
|
-
pf session continue --story-id MSSCI-12345 # Resume specific story
|
|
29
|
+
pf.sh session continue # Interactive checkpoint selection
|
|
30
|
+
pf.sh session continue --list # Show available checkpoints
|
|
31
|
+
pf.sh session continue --story-id MSSCI-12345 # Resume specific story
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
## Quick Reference
|
|
@@ -41,8 +41,8 @@ pf session continue --story-id MSSCI-12345 # Resume specific story
|
|
|
41
41
|
## CLI Equivalent
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
pf session new
|
|
45
|
-
pf session continue [--list] [--story-id ID]
|
|
44
|
+
pf.sh session new
|
|
45
|
+
pf.sh session continue [--list] [--story-id ID]
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
## Related
|
|
@@ -5,7 +5,7 @@ description: Scrum Master - Story coordination and sprint management
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
pf agent start "sm"
|
|
8
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "sm"
|
|
9
9
|
```
|
|
10
10
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
11
11
|
</agent-activation>
|
|
@@ -20,7 +20,7 @@ Never manually edit `sprint/current-sprint.yaml`. Always use the provided script
|
|
|
20
20
|
Show current sprint status with story counts and points.
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
pf sprint status [filter]
|
|
23
|
+
pf.sh sprint status [filter]
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
| Filter | Description |
|
|
@@ -35,7 +35,7 @@ pf sprint status [filter]
|
|
|
35
35
|
Show available stories ready for work, grouped by epic.
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
pf sprint backlog
|
|
38
|
+
pf.sh sprint backlog
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
### `/pf-sprint work [story-id|epic-id|next]`
|
|
@@ -59,7 +59,7 @@ if [[ "$OPEN_PRS" -gt 0 ]]; then
|
|
|
59
59
|
fi
|
|
60
60
|
|
|
61
61
|
# Check if story is available
|
|
62
|
-
pf sprint check <story-id>
|
|
62
|
+
pf.sh sprint check <story-id>
|
|
63
63
|
|
|
64
64
|
# Then load SM to begin work
|
|
65
65
|
```
|
|
@@ -78,7 +78,7 @@ When starting work, this command:
|
|
|
78
78
|
Archive a completed story.
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
pf sprint archive <story-id> [pr-number] [--apply]
|
|
81
|
+
pf.sh sprint archive <story-id> [pr-number] [--apply]
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
| Option | Description |
|
|
@@ -90,7 +90,7 @@ pf sprint archive <story-id> [pr-number] [--apply]
|
|
|
90
90
|
Initialize a new sprint.
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
|
-
pf sprint new 2605 277 2026-02-03 2026-02-16 "Sprint goal"
|
|
93
|
+
pf.sh sprint new 2605 277 2026-02-03 2026-02-16 "Sprint goal"
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
### `/pf-sprint future [--epic EPIC_ID]`
|
|
@@ -98,7 +98,7 @@ pf sprint new 2605 277 2026-02-03 2026-02-16 "Sprint goal"
|
|
|
98
98
|
Show future work available for promotion.
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
|
-
pf sprint future [--epic epic-XX]
|
|
101
|
+
pf.sh sprint future [--epic epic-XX]
|
|
102
102
|
```
|
|
103
103
|
|
|
104
104
|
### `/pf-sprint promote <epic-id>`
|
|
@@ -106,7 +106,7 @@ pf sprint future [--epic epic-XX]
|
|
|
106
106
|
Move an epic from future.yaml to current sprint.
|
|
107
107
|
|
|
108
108
|
```bash
|
|
109
|
-
pf sprint epic promote epic-XX
|
|
109
|
+
pf.sh sprint epic promote epic-XX
|
|
110
110
|
```
|
|
111
111
|
|
|
112
112
|
## Quick Reference
|
|
@@ -5,7 +5,7 @@ description: Test Engineer/Architect - Test strategy and TDD
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
pf agent start "tea"
|
|
8
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "tea"
|
|
9
9
|
```
|
|
10
10
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
11
11
|
</agent-activation>
|
|
@@ -5,7 +5,7 @@ description: Technical Writer - Documentation creation and maintenance
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
pf agent start "tech-writer"
|
|
8
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "tech-writer"
|
|
9
9
|
```
|
|
10
10
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
11
11
|
</agent-activation>
|
|
@@ -16,10 +16,10 @@ Manage persona themes: list available themes, view details, switch themes, creat
|
|
|
16
16
|
Show current theme or specific theme details.
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
|
-
pf theme show [name]
|
|
19
|
+
pf.sh theme show [name]
|
|
20
20
|
|
|
21
21
|
# Show extended details (OCEAN scores, quirks, catchphrases)
|
|
22
|
-
pf theme show [name] --full
|
|
22
|
+
pf.sh theme show [name] --full
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
### `/theme list`
|
|
@@ -27,7 +27,7 @@ pf theme show [name] --full
|
|
|
27
27
|
List all available themes with current theme highlighted.
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
pf theme list
|
|
30
|
+
pf.sh theme list
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Output shows current theme marked with `*` and tier brackets: `[S]` elite, `[A]` excellent, `[B]` strong, `[C]` good, `[D]` below average, `[U]` unbenchmarked.
|
|
@@ -37,12 +37,12 @@ Output shows current theme marked with `*` and tier brackets: `[S]` elite, `[A]`
|
|
|
37
37
|
Set the active persona theme.
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
|
-
pf theme set <name>
|
|
40
|
+
pf.sh theme set <name>
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
After setting, refresh the current agent's persona:
|
|
44
44
|
```bash
|
|
45
|
-
pf agent start "sm"
|
|
45
|
+
pf.sh agent start "sm"
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
### `/theme create <name> [--base <theme>] [--user]`
|
|
@@ -51,13 +51,13 @@ Create a new custom theme by copying from a base.
|
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
53
|
# Create from default base (minimalist)
|
|
54
|
-
pf theme create my-theme
|
|
54
|
+
pf.sh theme create my-theme
|
|
55
55
|
|
|
56
56
|
# Create from specific base
|
|
57
|
-
pf theme create my-theme --base blade-runner
|
|
57
|
+
pf.sh theme create my-theme --base blade-runner
|
|
58
58
|
|
|
59
59
|
# Create as user-level theme (available across all projects)
|
|
60
|
-
pf theme create my-theme --user
|
|
60
|
+
pf.sh theme create my-theme --user
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
### `/theme maker`
|
|
@@ -90,6 +90,6 @@ Interactive wizard for AI-driven theme creation. Supports three modes:
|
|
|
90
90
|
|
|
91
91
|
<reference>
|
|
92
92
|
- **Skill:** `.claude/skills/theme/skill.md`
|
|
93
|
-
- **CLI:** `pf theme [list|show|set|create]`
|
|
93
|
+
- **CLI:** `pf.sh theme [list|show|set|create]`
|
|
94
94
|
- **Config:** `.pennyfarthing/config.local.yaml`
|
|
95
95
|
</reference>
|
|
@@ -5,7 +5,7 @@ description: UX Designer - User experience design and UI patterns
|
|
|
5
5
|
<agent-activation>
|
|
6
6
|
**FIRST:** Use Bash tool to run:
|
|
7
7
|
```bash
|
|
8
|
-
pf agent start "ux-designer"
|
|
8
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "ux-designer"
|
|
9
9
|
```
|
|
10
10
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
11
11
|
</agent-activation>
|
|
@@ -7,7 +7,7 @@ description: Resume work or start new - smart entry point that picks up where yo
|
|
|
7
7
|
<agent-activation>
|
|
8
8
|
**FIRST:** Use Bash tool to run:
|
|
9
9
|
```bash
|
|
10
|
-
pf agent start "sm"
|
|
10
|
+
source .pennyfarthing/scripts/lib/env.sh && source "$CLAUDE_PROJECT_DIR/.pennyfarthing/scripts/lib/run-pf.sh" && run_pf agent start "sm"
|
|
11
11
|
```
|
|
12
12
|
This loads your persona and agent context. Adopt the character shown in the output.
|
|
13
13
|
</agent-activation>
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
<gate name="confidence
|
|
1
|
+
<gate name="confidence" model="haiku">
|
|
2
2
|
|
|
3
3
|
<purpose>
|
|
4
|
-
Check whether the user's instruction to the
|
|
5
|
-
The SM agent handles story management, sprint coordination, and workflow routing.
|
|
4
|
+
Check whether the user's instruction to the current agent is ambiguous or unclear.
|
|
6
5
|
Vague commands like "continue", "next", "start", or "do it" without a clear target
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
risk the agent taking the wrong action. This gate evaluates confidence that the
|
|
7
|
+
instruction has a single unambiguous interpretation.
|
|
9
8
|
</purpose>
|
|
10
9
|
|
|
11
10
|
<pass>
|
|
12
|
-
The instruction is clear and unambiguous. The
|
|
11
|
+
The instruction is clear and unambiguous. The agent can proceed confidently.
|
|
13
12
|
|
|
14
13
|
Evaluate the instruction against these criteria:
|
|
15
|
-
1. **Target identified:** A story ID,
|
|
16
|
-
2. **Intent clear:** The desired outcome
|
|
14
|
+
1. **Target identified:** A specific entity (story ID, file, component, action) is stated or obvious from context
|
|
15
|
+
2. **Intent clear:** The desired outcome is unambiguous
|
|
17
16
|
3. **No competing interpretations:** Only one reasonable reading of the instruction exists
|
|
18
17
|
|
|
19
18
|
If the instruction is confident and clear, return:
|
|
@@ -21,28 +20,28 @@ If the instruction is confident and clear, return:
|
|
|
21
20
|
```yaml
|
|
22
21
|
GATE_RESULT:
|
|
23
22
|
status: pass
|
|
24
|
-
gate: confidence
|
|
25
|
-
message: "Instruction is clear: {summary of what
|
|
23
|
+
gate: confidence
|
|
24
|
+
message: "Instruction is clear: {summary of what agent will do}"
|
|
26
25
|
checks:
|
|
27
26
|
- name: target
|
|
28
27
|
status: pass
|
|
29
28
|
detail: "{what the instruction targets}"
|
|
30
29
|
- name: intent
|
|
31
30
|
status: pass
|
|
32
|
-
detail: "{what action the
|
|
31
|
+
detail: "{what action the agent will take}"
|
|
33
32
|
```
|
|
34
33
|
</pass>
|
|
35
34
|
|
|
36
35
|
<fail>
|
|
37
|
-
The instruction is ambiguous. The
|
|
36
|
+
The instruction is ambiguous. The agent should not guess — ask for clarification instead.
|
|
38
37
|
|
|
39
38
|
Identify which aspect is unclear and offer specific options the user likely meant:
|
|
40
39
|
|
|
41
|
-
1. **Missing target:** "continue" / "next" / "start" without specifying
|
|
42
|
-
-
|
|
40
|
+
1. **Missing target:** "continue" / "next" / "start" without specifying what
|
|
41
|
+
- List the 2-3 most likely targets given current context
|
|
43
42
|
|
|
44
43
|
2. **Ambiguous scope:** "do the thing" / "handle it" without enough context
|
|
45
|
-
-
|
|
44
|
+
- List the 2-3 most likely actions given current workflow state
|
|
46
45
|
|
|
47
46
|
3. **Multiple interpretations:** The instruction could reasonably mean two or more different actions
|
|
48
47
|
- List each interpretation and ask which one the user intended
|
|
@@ -52,7 +51,7 @@ Return with clarifying options so the user can specify their intent:
|
|
|
52
51
|
```yaml
|
|
53
52
|
GATE_RESULT:
|
|
54
53
|
status: fail
|
|
55
|
-
gate: confidence
|
|
54
|
+
gate: confidence
|
|
56
55
|
message: "Instruction is ambiguous: {what is unclear}"
|
|
57
56
|
checks:
|
|
58
57
|
- name: target
|
|
@@ -64,7 +63,7 @@ GATE_RESULT:
|
|
|
64
63
|
recovery:
|
|
65
64
|
- "Did you mean: {option A}?"
|
|
66
65
|
- "Did you mean: {option B}?"
|
|
67
|
-
- "Specify a
|
|
66
|
+
- "Specify a target or action to proceed"
|
|
68
67
|
```
|
|
69
68
|
</fail>
|
|
70
69
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<gate name="dev-exit" model="haiku">
|
|
2
|
+
|
|
3
|
+
<purpose>
|
|
4
|
+
Composite gate for Dev handoff. Extends tests-pass with a debug code scan.
|
|
5
|
+
Runs after the Dev agent's implementation phase before review.
|
|
6
|
+
</purpose>
|
|
7
|
+
|
|
8
|
+
<ref gate="gates/tests-pass" />
|
|
9
|
+
|
|
10
|
+
<check name="no-debug-code">
|
|
11
|
+
No console.log, debugger statements, or .only() in changed files.
|
|
12
|
+
Search changed files (`git diff --name-only develop...HEAD`) for:
|
|
13
|
+
- `console.log` (not in DEV guard)
|
|
14
|
+
- `debugger`
|
|
15
|
+
- `.only(`
|
|
16
|
+
None found = pass.
|
|
17
|
+
</check>
|
|
18
|
+
|
|
19
|
+
<pass>
|
|
20
|
+
Run all checks from `gates/tests-pass` (test-suite, working-tree, branch-status),
|
|
21
|
+
then run the no-debug-code check.
|
|
22
|
+
|
|
23
|
+
If ALL pass, return:
|
|
24
|
+
|
|
25
|
+
```yaml
|
|
26
|
+
GATE_RESULT:
|
|
27
|
+
status: pass
|
|
28
|
+
gate: dev-exit
|
|
29
|
+
message: "All {N} tests passing. Tree clean. No debug code. Branch: {branch}"
|
|
30
|
+
checks:
|
|
31
|
+
- name: test-suite
|
|
32
|
+
status: pass
|
|
33
|
+
detail: "{passed}/{total} tests passing ({skipped} skipped)"
|
|
34
|
+
- name: working-tree
|
|
35
|
+
status: pass
|
|
36
|
+
detail: "No uncommitted changes"
|
|
37
|
+
- name: branch-status
|
|
38
|
+
status: pass
|
|
39
|
+
detail: "On branch {branch}, HEAD at {short-sha}"
|
|
40
|
+
- name: no-debug-code
|
|
41
|
+
status: pass
|
|
42
|
+
detail: "No debug patterns found in changed files"
|
|
43
|
+
```
|
|
44
|
+
</pass>
|
|
45
|
+
|
|
46
|
+
<fail>
|
|
47
|
+
If ANY check fails, run all remaining checks (don't short-circuit) and return:
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
GATE_RESULT:
|
|
51
|
+
status: fail
|
|
52
|
+
gate: dev-exit
|
|
53
|
+
message: "Gate failed: {summary of failures}"
|
|
54
|
+
checks:
|
|
55
|
+
- name: test-suite
|
|
56
|
+
status: pass | fail
|
|
57
|
+
detail: "{test results or failure list}"
|
|
58
|
+
- name: working-tree
|
|
59
|
+
status: pass | fail
|
|
60
|
+
detail: "{clean or list of uncommitted files}"
|
|
61
|
+
- name: branch-status
|
|
62
|
+
status: pass | fail
|
|
63
|
+
detail: "{branch match or mismatch details}"
|
|
64
|
+
- name: no-debug-code
|
|
65
|
+
status: pass | fail
|
|
66
|
+
detail: "{clean or list of debug code locations}"
|
|
67
|
+
recovery:
|
|
68
|
+
- "Fix failing tests in: {file1}, {file2}"
|
|
69
|
+
- "Commit or stash uncommitted changes"
|
|
70
|
+
- "Remove debug code: {file:line patterns}"
|
|
71
|
+
- "Switch to correct branch: git checkout {expected-branch}"
|
|
72
|
+
```
|
|
73
|
+
</fail>
|
|
74
|
+
|
|
75
|
+
</gate>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<gate name="merge-ready" model="haiku">
|
|
2
|
+
|
|
3
|
+
<purpose>
|
|
4
|
+
Block new work if non-draft pull requests are open. Open non-draft PRs represent
|
|
5
|
+
incomplete review cycles that must be resolved before starting new stories.
|
|
6
|
+
Draft PRs are allowed — they represent in-progress work not yet ready for review.
|
|
7
|
+
Extracted from the sm.md merge-gate.
|
|
8
|
+
</purpose>
|
|
9
|
+
|
|
10
|
+
<pass>
|
|
11
|
+
Run:
|
|
12
|
+
```bash
|
|
13
|
+
gh pr list --state open --search "draft:false" --json number,title,url
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
If the result is empty (no non-draft open PRs), return:
|
|
17
|
+
|
|
18
|
+
```yaml
|
|
19
|
+
GATE_RESULT:
|
|
20
|
+
status: pass
|
|
21
|
+
gate: merge-ready
|
|
22
|
+
message: "No open non-draft PRs. Clear to start new work."
|
|
23
|
+
checks:
|
|
24
|
+
- name: no-open-prs
|
|
25
|
+
status: pass
|
|
26
|
+
detail: "Zero non-draft PRs found"
|
|
27
|
+
```
|
|
28
|
+
</pass>
|
|
29
|
+
|
|
30
|
+
<fail>
|
|
31
|
+
If any non-draft PRs exist, list them and block:
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
GATE_RESULT:
|
|
35
|
+
status: fail
|
|
36
|
+
gate: merge-ready
|
|
37
|
+
message: "Blocked: {N} non-draft PR(s) open"
|
|
38
|
+
checks:
|
|
39
|
+
- name: no-open-prs
|
|
40
|
+
status: fail
|
|
41
|
+
detail: "Open PRs: {list of PR numbers and titles}"
|
|
42
|
+
recovery:
|
|
43
|
+
- "Merge or close open PRs before starting new work"
|
|
44
|
+
- "Use /reviewer to complete pending reviews"
|
|
45
|
+
- "Convert to draft if work is not ready: gh pr ready --undo {number}"
|
|
46
|
+
```
|
|
47
|
+
</fail>
|
|
48
|
+
|
|
49
|
+
</gate>
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
<gate name="release-ready" model="haiku">
|
|
2
|
+
|
|
3
|
+
<purpose>
|
|
4
|
+
Composite gate for pre-deploy verification. Extends tests-pass with build,
|
|
5
|
+
version, and changelog checks. Extracts the pre-deploy checklist from devops.md.
|
|
6
|
+
</purpose>
|
|
7
|
+
|
|
8
|
+
<ref gate="gates/tests-pass" />
|
|
9
|
+
|
|
10
|
+
<check name="build-succeeds">
|
|
11
|
+
Build completes without errors.
|
|
12
|
+
Run `cd pennyfarthing && pnpm build`. Exit code 0 = pass.
|
|
13
|
+
</check>
|
|
14
|
+
|
|
15
|
+
<check name="version-bumped">
|
|
16
|
+
Package version has been incremented.
|
|
17
|
+
Compare current `package.json` version against latest git tag
|
|
18
|
+
(`git describe --tags --abbrev=0`). Current must be strictly greater.
|
|
19
|
+
</check>
|
|
20
|
+
|
|
21
|
+
<check name="changelog-updated">
|
|
22
|
+
CHANGELOG.md has an entry for the new version.
|
|
23
|
+
Grep `CHANGELOG.md` for the current package.json version string.
|
|
24
|
+
</check>
|
|
25
|
+
|
|
26
|
+
<pass>
|
|
27
|
+
Run all checks from `gates/tests-pass` (test-suite, working-tree, branch-status),
|
|
28
|
+
then run build-succeeds, version-bumped, and changelog-updated.
|
|
29
|
+
|
|
30
|
+
If ALL pass, return:
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
GATE_RESULT:
|
|
34
|
+
status: pass
|
|
35
|
+
gate: release-ready
|
|
36
|
+
message: "Release ready: v{version}. Tests green, build clean, changelog updated."
|
|
37
|
+
checks:
|
|
38
|
+
- name: test-suite
|
|
39
|
+
status: pass
|
|
40
|
+
detail: "{passed}/{total} tests passing"
|
|
41
|
+
- name: working-tree
|
|
42
|
+
status: pass
|
|
43
|
+
detail: "No uncommitted changes"
|
|
44
|
+
- name: branch-status
|
|
45
|
+
status: pass
|
|
46
|
+
detail: "On branch {branch}"
|
|
47
|
+
- name: build-succeeds
|
|
48
|
+
status: pass
|
|
49
|
+
detail: "Build completed successfully"
|
|
50
|
+
- name: version-bumped
|
|
51
|
+
status: pass
|
|
52
|
+
detail: "v{version} > v{tag}"
|
|
53
|
+
- name: changelog-updated
|
|
54
|
+
status: pass
|
|
55
|
+
detail: "CHANGELOG.md has entry for v{version}"
|
|
56
|
+
```
|
|
57
|
+
</pass>
|
|
58
|
+
|
|
59
|
+
<fail>
|
|
60
|
+
If ANY check fails, report all results:
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
GATE_RESULT:
|
|
64
|
+
status: fail
|
|
65
|
+
gate: release-ready
|
|
66
|
+
message: "Not release ready: {summary}"
|
|
67
|
+
checks:
|
|
68
|
+
- name: test-suite
|
|
69
|
+
status: pass | fail
|
|
70
|
+
detail: "{test results or failure list}"
|
|
71
|
+
- name: working-tree
|
|
72
|
+
status: pass | fail
|
|
73
|
+
detail: "{clean or list of uncommitted files}"
|
|
74
|
+
- name: branch-status
|
|
75
|
+
status: pass | fail
|
|
76
|
+
detail: "{branch info}"
|
|
77
|
+
- name: build-succeeds
|
|
78
|
+
status: pass | fail
|
|
79
|
+
detail: "{build status or error summary}"
|
|
80
|
+
- name: version-bumped
|
|
81
|
+
status: pass | fail
|
|
82
|
+
detail: "{version comparison or same-version warning}"
|
|
83
|
+
- name: changelog-updated
|
|
84
|
+
status: pass | fail
|
|
85
|
+
detail: "{changelog status}"
|
|
86
|
+
recovery:
|
|
87
|
+
- "Fix failing tests before release"
|
|
88
|
+
- "Commit or stash uncommitted changes"
|
|
89
|
+
- "Resolve build errors"
|
|
90
|
+
- "Run: npm version patch|minor|major"
|
|
91
|
+
- "Add changelog entry for v{version}"
|
|
92
|
+
```
|
|
93
|
+
</fail>
|
|
94
|
+
|
|
95
|
+
</gate>
|