@pennyfarthing/core 11.2.0 → 11.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +100 -40
- package/package.json +2 -1
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/doctor.js +474 -66
- package/packages/core/dist/cli/commands/doctor.js.map +1 -1
- package/packages/core/dist/cli/commands/init.js +4 -4
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +4 -5
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/utils/constants.d.ts +3 -8
- package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/constants.js +3 -4
- package/packages/core/dist/cli/utils/constants.js.map +1 -1
- package/packages/core/dist/cli/utils/settings.d.ts +7 -0
- package/packages/core/dist/cli/utils/settings.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/settings.js +70 -29
- package/packages/core/dist/cli/utils/settings.js.map +1 -1
- package/packages/core/dist/cli/utils/symlinks.js +16 -16
- package/packages/core/dist/cli/utils/symlinks.js.map +1 -1
- 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.d.ts +91 -0
- package/packages/core/dist/consultation/tandem-metrics.d.ts.map +1 -0
- package/packages/core/dist/consultation/tandem-metrics.js +131 -0
- package/packages/core/dist/consultation/tandem-metrics.js.map +1 -0
- package/packages/core/dist/consultation/tandem-metrics.test.d.ts +18 -0
- package/packages/core/dist/consultation/tandem-metrics.test.d.ts.map +1 -0
- package/packages/core/dist/consultation/tandem-metrics.test.js +457 -0
- package/packages/core/dist/consultation/tandem-metrics.test.js.map +1 -0
- package/packages/core/dist/public/css/react.css +1 -1
- package/packages/core/dist/public/js/react/react.js +14 -14
- package/packages/core/dist/server/api/agent-load.js +1 -1
- package/packages/core/dist/server/api/agent-load.js.map +1 -1
- 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 +0 -3
- package/packages/core/dist/server/server.d.ts.map +1 -1
- package/packages/core/dist/server/server.js +5 -38
- 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 +12 -23
- package/packages/core/dist/server/server.test.js.map +1 -1
- 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 +13 -0
- package/packages/core/dist/server/settings.js.map +1 -1
- package/packages/core/dist/shared/capabilities.d.ts +88 -0
- package/packages/core/dist/shared/capabilities.d.ts.map +1 -0
- package/packages/core/dist/shared/capabilities.js +133 -0
- package/packages/core/dist/shared/capabilities.js.map +1 -0
- package/packages/core/dist/shared/capabilities.test.d.ts +2 -0
- package/packages/core/dist/shared/capabilities.test.d.ts.map +1 -0
- package/packages/core/dist/shared/capabilities.test.js +217 -0
- package/packages/core/dist/shared/capabilities.test.js.map +1 -0
- package/packages/core/dist/shared/spawn-prompt.d.ts +47 -0
- package/packages/core/dist/shared/spawn-prompt.d.ts.map +1 -0
- package/packages/core/dist/shared/spawn-prompt.js +82 -0
- package/packages/core/dist/shared/spawn-prompt.js.map +1 -0
- package/packages/core/dist/shared/spawn-prompt.test.d.ts +2 -0
- package/packages/core/dist/shared/spawn-prompt.test.d.ts.map +1 -0
- package/packages/core/dist/shared/spawn-prompt.test.js +251 -0
- package/packages/core/dist/shared/spawn-prompt.test.js.map +1 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.d.ts +18 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js +434 -0
- package/packages/core/dist/workflow/tandem-workflow-templates.test.js.map +1 -0
- package/packages/core/dist/workflow/team-lifecycle.d.ts +169 -0
- package/packages/core/dist/workflow/team-lifecycle.d.ts.map +1 -0
- package/packages/core/dist/workflow/team-lifecycle.js +217 -0
- package/packages/core/dist/workflow/team-lifecycle.js.map +1 -0
- package/packages/core/dist/workflow/team-lifecycle.test.d.ts +20 -0
- package/packages/core/dist/workflow/team-lifecycle.test.d.ts.map +1 -0
- package/packages/core/dist/workflow/team-lifecycle.test.js +966 -0
- package/packages/core/dist/workflow/team-lifecycle.test.js.map +1 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts +32 -0
- package/packages/core/dist/workflow/workflow-schema.d.ts.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.js +120 -0
- package/packages/core/dist/workflow/workflow-schema.js.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.test.d.ts.map +1 -1
- package/packages/core/dist/workflow/workflow-schema.test.js +570 -1
- package/packages/core/dist/workflow/workflow-schema.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 +21 -12
- package/pennyfarthing-dist/agents/reviewer.md +23 -4
- package/pennyfarthing-dist/agents/sm-finish.md +19 -2
- package/pennyfarthing-dist/agents/sm-setup.md +7 -7
- package/pennyfarthing-dist/agents/sm.md +12 -12
- 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 +12 -10
- package/pennyfarthing-dist/commands/pf-health-check.md +1 -1
- 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/approval.md +63 -0
- package/pennyfarthing-dist/gates/confidence-sm.md +71 -0
- package/pennyfarthing-dist/gates/context-ok.md +56 -0
- package/pennyfarthing-dist/gates/evaluations/confidence-sm.md +54 -0
- package/pennyfarthing-dist/gates/quality-pass.md +67 -0
- package/pennyfarthing-dist/gates/tests-fail.md +84 -0
- package/pennyfarthing-dist/gates/tests-pass.md +79 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +84 -29
- 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 +3 -3
- package/pennyfarthing-dist/guides/handoff-cli.md +8 -8
- package/pennyfarthing-dist/guides/hooks.md +29 -29
- 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 +3 -1
- package/pennyfarthing-dist/scripts/core/pf.sh +5 -0
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +4 -89
- 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 +4 -183
- package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +4 -95
- package/pennyfarthing-dist/scripts/hooks/context-warning.sh +4 -65
- package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +3 -31
- package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +5 -4
- package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +29 -34
- package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +4 -71
- package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +3 -19
- package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +4 -30
- package/pennyfarthing-dist/scripts/hooks/session-start.sh +3 -32
- package/pennyfarthing-dist/scripts/hooks/session-stop.sh +4 -65
- package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +4 -78
- package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +3 -93
- package/pennyfarthing-dist/scripts/lib/env.sh +34 -0
- package/pennyfarthing-dist/scripts/lib/run-pf.sh +39 -0
- package/pennyfarthing-dist/scripts/misc/README.md +1 -1
- package/pennyfarthing-dist/scripts/misc/statusline.sh +4 -301
- 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-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 +19 -19
- package/pennyfarthing-dist/templates/settings.local.json.template +19 -10
- package/pennyfarthing-dist/workflows/bdd-team.yaml +89 -0
- 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/project-setup/steps/step-01-discover.md +47 -0
- package/pennyfarthing-dist/workflows/tdd-team.yaml +80 -0
- package/pennyfarthing-dist/workflows/tdd.yaml +11 -2
- package/pennyfarthing_scripts/CLAUDE.md +19 -10
- package/pennyfarthing_scripts/__init__.py +1 -1
- 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__/context.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/hooks.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/__pycache__/pretooluse_hook.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/bc/__pycache__/cli.cpython-314.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 +2 -2
- package/pennyfarthing_scripts/bellmode_hook.py +9 -296
- 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__/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-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 +161 -0
- package/pennyfarthing_scripts/bikerack/base_panel.py +27 -4
- package/pennyfarthing_scripts/bikerack/changed_panel.py +96 -4
- package/pennyfarthing_scripts/bikerack/context_meter_footer.py +88 -0
- package/pennyfarthing_scripts/bikerack/debug_panel.py +1 -1
- package/pennyfarthing_scripts/bikerack/diffs_panel.py +30 -0
- package/pennyfarthing_scripts/bikerack/events.py +28 -0
- package/pennyfarthing_scripts/bikerack/launcher.py +6 -6
- package/pennyfarthing_scripts/bikerack/portrait_resolver.py +139 -0
- package/pennyfarthing_scripts/bikerack/progress_panel.py +0 -1
- package/pennyfarthing_scripts/bikerack/sprint_panel.py +373 -142
- package/pennyfarthing_scripts/bikerack/story_detail_data.py +247 -0
- package/pennyfarthing_scripts/bikerack/story_detail_screen.py +177 -0
- package/pennyfarthing_scripts/bikerack/tui.py +304 -62
- package/pennyfarthing_scripts/bikerack/ws_client.py +2 -2
- package/pennyfarthing_scripts/cli.py +5 -0
- package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/common/config.py +29 -2
- package/pennyfarthing_scripts/common/pr_config.py +38 -0
- package/pennyfarthing_scripts/consultation/__pycache__/__init__.cpython-314.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/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__/repos.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/git/__pycache__/status_all.cpython-314.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__/cli.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__/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/handoff/cli.py +33 -1
- package/pennyfarthing_scripts/handoff/complete_phase.py +28 -0
- package/pennyfarthing_scripts/handoff/marker.py +15 -15
- package/pennyfarthing_scripts/handoff/phase_check.py +96 -0
- package/pennyfarthing_scripts/handoff/resolve_gate.py +13 -1
- package/pennyfarthing_scripts/hooks/__init__.py +442 -0
- package/pennyfarthing_scripts/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/bell_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_breaker.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/context_warning.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/cyclist_pretooluse.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/pre_edit_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/reflector_check.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/schema_validation.cpython-314.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-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/__pycache__/statusline.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/hooks/bell_mode.py +214 -0
- package/pennyfarthing_scripts/hooks/cli.py +96 -0
- package/pennyfarthing_scripts/hooks/context_breaker.py +104 -0
- package/pennyfarthing_scripts/hooks/context_warning.py +66 -0
- package/pennyfarthing_scripts/hooks/cyclist_pretooluse.py +129 -0
- package/pennyfarthing_scripts/hooks/pre_edit_check.py +77 -0
- package/pennyfarthing_scripts/hooks/reflector_check.py +270 -0
- package/pennyfarthing_scripts/hooks/schema_validation.py +202 -0
- package/pennyfarthing_scripts/hooks/session_start.py +294 -0
- package/pennyfarthing_scripts/hooks/session_stop.py +111 -0
- package/pennyfarthing_scripts/hooks/sprint_yaml_validation.py +97 -0
- package/pennyfarthing_scripts/hooks/statusline.py +429 -0
- package/pennyfarthing_scripts/hooks.py +27 -432
- package/pennyfarthing_scripts/pretooluse_hook.py +3 -185
- package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/prime/heatmap.py +3 -15
- package/pennyfarthing_scripts/prime/workflow.py +2 -1
- package/pennyfarthing_scripts/schema_validation_hook.py +3 -298
- package/pennyfarthing_scripts/session_start_hook.py +4 -186
- package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/sprint/__pycache__/loader.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/cli.py +121 -0
- package/pennyfarthing_scripts/sprint/loader.py +154 -3
- package/pennyfarthing_scripts/sprint/story_update.py +26 -0
- package/pennyfarthing_scripts/tests/__pycache__/test_bikerack.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_workflow_list_team.cpython-314-pytest-9.0.2.pyc +0 -0
- package/pennyfarthing_scripts/tests/test_bikerack.py +26 -26
- package/pennyfarthing_scripts/tests/test_dialogue_manager.py +0 -1
- package/pennyfarthing_scripts/tests/test_sprint_panel.py +344 -265
- package/pennyfarthing_scripts/tests/test_workflow_list_team.py +147 -0
- package/pennyfarthing_scripts/validate/__pycache__/cli.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/skill_command.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/tandem_awareness.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/team_mode.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/__pycache__/workflow.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/validate/adapters/team_mode.py +323 -0
- package/pennyfarthing_scripts/validate/adapters/workflow.py +19 -0
- package/pennyfarthing_scripts/welcome_hook.py +3 -149
- package/pennyfarthing_scripts/workflow/__pycache__/__init__.cpython-314.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-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/state.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/__pycache__/team_lifecycle.cpython-314.pyc +0 -0
- package/pennyfarthing_scripts/workflow/cli.py +22 -20
- package/pennyfarthing_scripts/workflow/state.py +0 -1
- package/pennyfarthing_scripts/workflow/team_lifecycle.py +256 -0
- package/packages/core/dist/cli/cyclist-migration.test.d.ts +0 -16
- package/packages/core/dist/cli/cyclist-migration.test.d.ts.map +0 -1
- package/packages/core/dist/cli/cyclist-migration.test.js +0 -229
- package/packages/core/dist/cli/cyclist-migration.test.js.map +0 -1
- package/packages/core/dist/scripts/theme-detail.test.d.ts +0 -10
- package/packages/core/dist/scripts/theme-detail.test.d.ts.map +0 -1
- package/packages/core/dist/scripts/theme-detail.test.js +0 -199
- package/packages/core/dist/scripts/theme-detail.test.js.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# BDD Team Workflow - BDD with Native Team Collaboration
|
|
2
|
+
#
|
|
3
|
+
# When to use: Best for UI/UX-heavy stories where sustained parallel
|
|
4
|
+
# collaboration during design and implementation provides more value than
|
|
5
|
+
# periodic tandem consultation. Use this instead of bdd-tandem when the
|
|
6
|
+
# designer-architect and dev-tester pairings need continuous interaction
|
|
7
|
+
# throughout their respective phases.
|
|
8
|
+
#
|
|
9
|
+
# Compared to bdd-tandem: Tandem spawns a Haiku subagent for a single
|
|
10
|
+
# request/response exchange. Team mode spawns full teammate sessions that
|
|
11
|
+
# work in parallel with the lead for the entire phase duration.
|
|
12
|
+
#
|
|
13
|
+
# Team pairings:
|
|
14
|
+
# - DESIGN phase: UX-Designer (lead) + Architect — Architect validates
|
|
15
|
+
# technical feasibility of design decisions in real-time
|
|
16
|
+
# - GREEN phase: Dev (lead) + TEA — TEA verifies tests stay green and
|
|
17
|
+
# flags regressions as Dev implements
|
|
18
|
+
#
|
|
19
|
+
# Fallback: When native teams are unavailable (non-interactive mode, feature
|
|
20
|
+
# flag off, or CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS not set), phases with
|
|
21
|
+
# team blocks fall back to solo execution. The lead agent works alone —
|
|
22
|
+
# consider using bdd-tandem as an alternative that works in all modes.
|
|
23
|
+
#
|
|
24
|
+
# Flow: SM → UX-Designer (+Architect) → TEA → Dev (+TEA) → Reviewer → SM
|
|
25
|
+
|
|
26
|
+
workflow:
|
|
27
|
+
name: bdd-team
|
|
28
|
+
description: BDD with native team collaboration — architect on design, TEA on green phase
|
|
29
|
+
version: "1.0.0"
|
|
30
|
+
|
|
31
|
+
phases:
|
|
32
|
+
- name: setup
|
|
33
|
+
agent: sm
|
|
34
|
+
output: [session_file, branches, story_context]
|
|
35
|
+
|
|
36
|
+
- name: design
|
|
37
|
+
agent: ux-designer
|
|
38
|
+
input: [session_file, story_context]
|
|
39
|
+
output: [design_spec, user_flows, wireframes, behavior_scenarios]
|
|
40
|
+
gate:
|
|
41
|
+
file: gates/design-review
|
|
42
|
+
type: design_review
|
|
43
|
+
condition: UX spec defines user flows and acceptance behaviors
|
|
44
|
+
team:
|
|
45
|
+
teammates:
|
|
46
|
+
- agent: architect
|
|
47
|
+
task: "Validate technical feasibility of design decisions. Flag constraints via SendMessage."
|
|
48
|
+
|
|
49
|
+
- name: red
|
|
50
|
+
agent: tea
|
|
51
|
+
input: [design_spec, behavior_scenarios, story_context]
|
|
52
|
+
output: [failing_tests]
|
|
53
|
+
gate:
|
|
54
|
+
file: gates/tests-fail
|
|
55
|
+
type: tests_fail
|
|
56
|
+
condition: Behavior scenarios have test coverage
|
|
57
|
+
|
|
58
|
+
- name: green
|
|
59
|
+
agent: dev
|
|
60
|
+
input: [failing_tests, design_spec, story_context]
|
|
61
|
+
output: [implementation, passing_tests]
|
|
62
|
+
gate:
|
|
63
|
+
file: gates/tests-pass
|
|
64
|
+
type: tests_pass
|
|
65
|
+
condition: All tests passing, UX spec implemented
|
|
66
|
+
team:
|
|
67
|
+
teammates:
|
|
68
|
+
- agent: tea
|
|
69
|
+
task: "Verify tests stay green and flag regressions as Dev implements."
|
|
70
|
+
|
|
71
|
+
- name: review
|
|
72
|
+
agent: reviewer
|
|
73
|
+
input: [implementation, passing_tests, design_spec]
|
|
74
|
+
output: [approval]
|
|
75
|
+
gate:
|
|
76
|
+
file: gates/approval
|
|
77
|
+
type: approval
|
|
78
|
+
condition: Code review approved, UX requirements met
|
|
79
|
+
|
|
80
|
+
- name: finish
|
|
81
|
+
agent: sm
|
|
82
|
+
input: [approval]
|
|
83
|
+
output: [archived_session, story_summary]
|
|
84
|
+
|
|
85
|
+
triggers:
|
|
86
|
+
tags: [team, bdd-team]
|
|
87
|
+
points:
|
|
88
|
+
min: 3
|
|
89
|
+
default: false
|
|
@@ -170,7 +170,7 @@ Display completion message:
|
|
|
170
170
|
|
|
171
171
|
Next steps:
|
|
172
172
|
- Use `/pf-sprint` to view the backlog
|
|
173
|
-
- Use `pf sprint epic promote` to move to a sprint when ready
|
|
173
|
+
- Use `pf.sh sprint epic promote` to move to a sprint when ready
|
|
174
174
|
```
|
|
175
175
|
|
|
176
176
|
## SUCCESS CRITERIA:
|
|
@@ -32,7 +32,7 @@ Build a complete picture of uncommitted changes across ALL repos defined in `.cl
|
|
|
32
32
|
**CRITICAL: Use the multi-repo script, not plain `git status`.**
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
pf git status
|
|
35
|
+
pf.sh git status
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
This shows branch, staged/unstaged changes, and unpushed commits for **all repos** defined in the project configuration.
|
|
@@ -20,6 +20,53 @@ Discover the project structure, detect repositories, identify tech stack, and ga
|
|
|
20
20
|
- User-confirmed discovery ready for repos.yaml generation
|
|
21
21
|
</output>
|
|
22
22
|
|
|
23
|
+
## PRE-FLIGHT: Environment Check
|
|
24
|
+
|
|
25
|
+
Before discovery, verify the environment is clean.
|
|
26
|
+
|
|
27
|
+
### Check for Global `pf` Installation
|
|
28
|
+
|
|
29
|
+
A globally installed `pf` CLI causes version drift between projects. All `pf`
|
|
30
|
+
invocations should go through `uv run` via the shell shims in `.pennyfarthing/scripts/`.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Check for global pf binary
|
|
34
|
+
which pf 2>/dev/null
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**If `which pf` returns a path**, the user has a stale global install. Guide them through removal:
|
|
38
|
+
|
|
39
|
+
1. **Check the source** of the global install:
|
|
40
|
+
```bash
|
|
41
|
+
which pf
|
|
42
|
+
head -3 "$(which pf)" 2>/dev/null
|
|
43
|
+
pip3 show pennyfarthing-scripts 2>/dev/null | grep -E "^(Version|Location|Editable)"
|
|
44
|
+
uv tool list 2>/dev/null | grep pennyfarthing
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
2. **Remove based on source:**
|
|
48
|
+
|
|
49
|
+
| Source | Command |
|
|
50
|
+
|--------|---------|
|
|
51
|
+
| `uv tool` | `uv tool uninstall pennyfarthing-scripts` |
|
|
52
|
+
| `pip` (Homebrew Python) | `pip3 uninstall pennyfarthing-scripts --break-system-packages -y` |
|
|
53
|
+
| `pip` (venv/system) | `pip3 uninstall pennyfarthing-scripts -y` |
|
|
54
|
+
| `pipx` | `pipx uninstall pennyfarthing-scripts` |
|
|
55
|
+
|
|
56
|
+
3. **Verify removal:**
|
|
57
|
+
```bash
|
|
58
|
+
hash -r # Clear shell cache
|
|
59
|
+
which pf 2>/dev/null && echo "STILL INSTALLED — check for multiple installs" || echo "Clean"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
4. **Explain to user:** Pennyfarthing hooks use `uv run` to resolve `pf` from the
|
|
63
|
+
local project's `pyproject.toml`. This ensures each project runs its own version
|
|
64
|
+
of the CLI without cross-project contamination. No global install is needed.
|
|
65
|
+
|
|
66
|
+
**If `which pf` returns nothing**, the environment is clean — continue to discovery.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
23
70
|
## DISCOVERY TASKS
|
|
24
71
|
|
|
25
72
|
### 1. Detect Repository Structure
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# TDD Team Workflow - TDD with Native Team Collaboration
|
|
2
|
+
#
|
|
3
|
+
# When to use: Best for 5+ point feature stories where sustained parallel
|
|
4
|
+
# collaboration provides more value than periodic tandem consultation.
|
|
5
|
+
# Use this instead of tdd-tandem when teammates need to work alongside the
|
|
6
|
+
# lead for the full phase — e.g., Architect reviewing patterns as Dev
|
|
7
|
+
# implements, not just answering a single question.
|
|
8
|
+
#
|
|
9
|
+
# Compared to tdd-tandem: Tandem spawns a Haiku subagent for a single
|
|
10
|
+
# request/response exchange. Team mode spawns full teammate sessions that
|
|
11
|
+
# work in parallel with the lead for the entire phase duration.
|
|
12
|
+
#
|
|
13
|
+
# Team pairings:
|
|
14
|
+
# - GREEN phase: Dev (lead) + Architect — Architect reviews implementation
|
|
15
|
+
# approach and patterns in real-time via SendMessage
|
|
16
|
+
# - REVIEW phase: Reviewer (lead) + Architect — Architect validates
|
|
17
|
+
# architectural patterns during code review
|
|
18
|
+
#
|
|
19
|
+
# Fallback: When native teams are unavailable (non-interactive mode, feature
|
|
20
|
+
# flag off, or CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS not set), phases with
|
|
21
|
+
# team blocks fall back to solo execution. The lead agent works alone —
|
|
22
|
+
# consider using tdd-tandem as an alternative that works in all modes.
|
|
23
|
+
#
|
|
24
|
+
# Flow: SM → TEA → Dev (+Architect) → Reviewer (+Architect) → SM
|
|
25
|
+
|
|
26
|
+
workflow:
|
|
27
|
+
name: tdd-team
|
|
28
|
+
description: TDD with native team collaboration — architect pairing on green and review phases
|
|
29
|
+
version: "1.0.0"
|
|
30
|
+
|
|
31
|
+
phases:
|
|
32
|
+
- name: setup
|
|
33
|
+
agent: sm
|
|
34
|
+
output: [session_file, branches, story_context]
|
|
35
|
+
|
|
36
|
+
- name: red
|
|
37
|
+
agent: tea
|
|
38
|
+
input: [session_file, story_context]
|
|
39
|
+
output: [failing_tests]
|
|
40
|
+
gate:
|
|
41
|
+
file: gates/tests-fail
|
|
42
|
+
type: tests_fail
|
|
43
|
+
condition: All acceptance criteria have test coverage
|
|
44
|
+
|
|
45
|
+
- name: green
|
|
46
|
+
agent: dev
|
|
47
|
+
input: [failing_tests, story_context]
|
|
48
|
+
output: [implementation, passing_tests]
|
|
49
|
+
gate:
|
|
50
|
+
file: gates/tests-pass
|
|
51
|
+
type: tests_pass
|
|
52
|
+
condition: All tests passing, no skipped tests
|
|
53
|
+
team:
|
|
54
|
+
teammates:
|
|
55
|
+
- agent: architect
|
|
56
|
+
task: "Review implementation approach and patterns. Send observations via SendMessage as Dev works."
|
|
57
|
+
|
|
58
|
+
- name: review
|
|
59
|
+
agent: reviewer
|
|
60
|
+
input: [implementation, passing_tests]
|
|
61
|
+
output: [approval]
|
|
62
|
+
gate:
|
|
63
|
+
file: gates/approval
|
|
64
|
+
type: approval
|
|
65
|
+
condition: Code review approved, no blocking issues
|
|
66
|
+
team:
|
|
67
|
+
teammates:
|
|
68
|
+
- agent: architect
|
|
69
|
+
task: "Validate architectural patterns and coupling. Flag concerns via SendMessage."
|
|
70
|
+
|
|
71
|
+
- name: finish
|
|
72
|
+
agent: sm
|
|
73
|
+
input: [approval]
|
|
74
|
+
output: [archived_session, story_summary]
|
|
75
|
+
|
|
76
|
+
triggers:
|
|
77
|
+
tags: [team, tdd-team]
|
|
78
|
+
points:
|
|
79
|
+
min: 5
|
|
80
|
+
default: false
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# TDD Workflow - Test-Driven Development
|
|
2
2
|
# Default workflow for feature development in Pennyfarthing
|
|
3
3
|
#
|
|
4
|
-
# Flow: SM → TEA → Dev → Reviewer → SM
|
|
4
|
+
# Flow: SM → TEA → Dev → TEA (verify) → Reviewer → SM
|
|
5
5
|
# Scale routing: 1-2 pts use 'trivial' workflow instead
|
|
6
6
|
|
|
7
7
|
workflow:
|
|
@@ -32,9 +32,18 @@ workflow:
|
|
|
32
32
|
type: tests_pass
|
|
33
33
|
condition: All tests passing, no skipped tests
|
|
34
34
|
|
|
35
|
+
- name: verify
|
|
36
|
+
agent: tea
|
|
37
|
+
input: [implementation, passing_tests]
|
|
38
|
+
output: [quality_verified]
|
|
39
|
+
gate:
|
|
40
|
+
file: gates/quality-pass
|
|
41
|
+
type: quality_pass
|
|
42
|
+
condition: Lint, typecheck, and all tests passing
|
|
43
|
+
|
|
35
44
|
- name: review
|
|
36
45
|
agent: reviewer
|
|
37
|
-
input: [implementation, passing_tests]
|
|
46
|
+
input: [implementation, passing_tests, quality_verified]
|
|
38
47
|
output: [approval]
|
|
39
48
|
gate:
|
|
40
49
|
file: gates/approval
|
|
@@ -184,16 +184,25 @@ Options: `--session-id`, `--no-persona`, `--json`, `--minimal`, `--full`, `--qui
|
|
|
184
184
|
| `pf debug deadcode exports` | Unused TypeScript exports | `deadcode/cli.py` |
|
|
185
185
|
| `pf debug healthscore analyze` | Composite health score | `healthscore/cli.py` |
|
|
186
186
|
|
|
187
|
-
## Hooks (
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
|
192
|
-
|
|
193
|
-
| `
|
|
194
|
-
| `
|
|
195
|
-
| `
|
|
196
|
-
| `
|
|
187
|
+
## Hooks (`pf hooks`)
|
|
188
|
+
|
|
189
|
+
All hooks are in `hooks/` subpackage, invoked via `pf hooks <name>`.
|
|
190
|
+
|
|
191
|
+
| Command | Hook Type | Purpose |
|
|
192
|
+
|---------|-----------|---------|
|
|
193
|
+
| `pf hooks session-start` | SessionStart | Session setup, checkpoint, WheelHub, welcome |
|
|
194
|
+
| `pf hooks session-stop` | Stop | Save checkpoint for cross-session continuity |
|
|
195
|
+
| `pf hooks reflector-check` | Stop | Enforce CYCLIST reflector markers |
|
|
196
|
+
| `pf hooks pre-edit-check` | PreToolUse | Block edits to protected files |
|
|
197
|
+
| `pf hooks context-warning` | PreToolUse | Warn when context usage is high |
|
|
198
|
+
| `pf hooks context-breaker` | PreToolUse | Block tool execution at critical context |
|
|
199
|
+
| `pf hooks cyclist-pretooluse` | PreToolUse | Route approval through WheelHub |
|
|
200
|
+
| `pf hooks schema-validation` | PreToolUse:Write | Validate session/skill/step schema |
|
|
201
|
+
| `pf hooks bell-mode` | PostToolUse | Bell queue + tandem injection |
|
|
202
|
+
| `pf hooks sprint-yaml` | PostToolUse | Validate sprint YAML (YAML 1.2) |
|
|
203
|
+
| `pf hooks statusline` | statusLine | Render Claude Code status bar |
|
|
204
|
+
|
|
205
|
+
Legacy shims (`bellmode_hook.py`, `pretooluse_hook.py`, etc.) re-export from `hooks/` for backward compat.
|
|
197
206
|
|
|
198
207
|
## Architecture
|
|
199
208
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -34,7 +34,7 @@ from pennyfarthing_scripts.bc.focus import (
|
|
|
34
34
|
def _get_current_layout() -> dict | None:
|
|
35
35
|
"""Fetch the current layout from a running Cyclist or BikeRack server.
|
|
36
36
|
|
|
37
|
-
Reads .
|
|
37
|
+
Reads .bikerack-port (shared by both Cyclist and BikeRack) and fetches
|
|
38
38
|
the layout endpoint.
|
|
39
39
|
|
|
40
40
|
Returns:
|
|
@@ -45,7 +45,7 @@ def _get_current_layout() -> dict | None:
|
|
|
45
45
|
root = _get_root()
|
|
46
46
|
|
|
47
47
|
candidates = [
|
|
48
|
-
(root / ".
|
|
48
|
+
(root / ".bikerack-port", "/api/settings/bikerack-layout"),
|
|
49
49
|
]
|
|
50
50
|
|
|
51
51
|
for port_file, endpoint in candidates:
|