@pennyfarthing/core 10.0.3 → 10.0.5

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.
Files changed (220) hide show
  1. package/README.md +1 -1
  2. package/package.json +13 -11
  3. package/packages/core/dist/cli/commands/cyclist.d.ts +5 -1
  4. package/packages/core/dist/cli/commands/cyclist.d.ts.map +1 -1
  5. package/packages/core/dist/cli/commands/cyclist.js +4 -4
  6. package/packages/core/dist/cli/commands/cyclist.js.map +1 -1
  7. package/packages/core/dist/cli/commands/cyclist.test.js +2 -2
  8. package/packages/core/dist/cli/commands/cyclist.test.js.map +1 -1
  9. package/packages/core/dist/cli/commands/doctor-legacy.test.js +17 -16
  10. package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -1
  11. package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
  12. package/packages/core/dist/cli/commands/init.js +3 -0
  13. package/packages/core/dist/cli/commands/init.js.map +1 -1
  14. package/packages/core/dist/cli/ocean-profiles.test.js +1 -1
  15. package/packages/core/dist/cli/ocean-profiles.test.js.map +1 -1
  16. package/packages/core/dist/cli/utils/files.d.ts +10 -0
  17. package/packages/core/dist/cli/utils/files.d.ts.map +1 -1
  18. package/packages/core/dist/cli/utils/files.js +35 -0
  19. package/packages/core/dist/cli/utils/files.js.map +1 -1
  20. package/packages/core/dist/scripts/generate-report.d.ts.map +1 -1
  21. package/packages/core/dist/scripts/generate-report.js +11 -7
  22. package/packages/core/dist/scripts/generate-report.js.map +1 -1
  23. package/packages/core/dist/scripts/generate-spider-report.d.ts.map +1 -1
  24. package/packages/core/dist/scripts/generate-spider-report.js +12 -8
  25. package/packages/core/dist/scripts/generate-spider-report.js.map +1 -1
  26. package/packages/core/dist/scripts/generate-spider.d.ts.map +1 -1
  27. package/packages/core/dist/scripts/generate-spider.js +6 -4
  28. package/packages/core/dist/scripts/generate-spider.js.map +1 -1
  29. package/packages/core/dist/scripts/generate-spider.test.js +2 -2
  30. package/packages/core/dist/scripts/generate-spider.test.js.map +1 -1
  31. package/pennyfarthing-dist/agents/pm.md +1 -1
  32. package/pennyfarthing-dist/agents/sm-finish.md +1 -1
  33. package/pennyfarthing-dist/agents/sm-setup.md +2 -2
  34. package/pennyfarthing-dist/agents/sm.md +4 -5
  35. package/pennyfarthing-dist/agents/workflow-status-check.md +1 -1
  36. package/pennyfarthing-dist/commands/repo-status.md +2 -2
  37. package/pennyfarthing-dist/commands/sprint.md +8 -8
  38. package/pennyfarthing-dist/guides/skill-schema.md +25 -26
  39. package/pennyfarthing-dist/guides/xml-tags.md +2 -2
  40. package/pennyfarthing-dist/scripts/README.md +2 -2
  41. package/pennyfarthing-dist/scripts/core/agent-session.sh +0 -0
  42. package/pennyfarthing-dist/scripts/core/check-context.sh +0 -0
  43. package/pennyfarthing-dist/scripts/core/handoff-marker.sh +0 -0
  44. package/pennyfarthing-dist/scripts/core/phase-check-start.sh +0 -0
  45. package/pennyfarthing-dist/scripts/core/prime.sh +0 -0
  46. package/pennyfarthing-dist/scripts/cyclist/is-cyclist.sh +0 -0
  47. package/pennyfarthing-dist/scripts/git/create-feature-branches.sh +0 -0
  48. package/pennyfarthing-dist/scripts/git/git-status-all.sh +1 -1
  49. package/pennyfarthing-dist/scripts/git/install-git-hooks.sh +0 -0
  50. package/pennyfarthing-dist/scripts/git/release.sh +0 -0
  51. package/pennyfarthing-dist/scripts/git/worktree-manager.sh +3 -3
  52. package/pennyfarthing-dist/scripts/health/drift-detection.sh +0 -0
  53. package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +0 -0
  54. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +0 -0
  55. package/pennyfarthing-dist/scripts/hooks/context-warning.sh +0 -0
  56. package/pennyfarthing-dist/scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
  57. package/pennyfarthing-dist/scripts/hooks/otel-auto-config.sh +0 -0
  58. package/pennyfarthing-dist/scripts/hooks/post-merge.sh +2 -7
  59. package/pennyfarthing-dist/scripts/hooks/pre-commit.sh +0 -0
  60. package/pennyfarthing-dist/scripts/hooks/pre-edit-check.sh +0 -0
  61. package/pennyfarthing-dist/scripts/hooks/pre-push.sh +0 -0
  62. package/pennyfarthing-dist/scripts/hooks/question-reflector-check.sh +0 -0
  63. package/pennyfarthing-dist/scripts/hooks/question_reflector_check.py +0 -0
  64. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +0 -0
  65. package/pennyfarthing-dist/scripts/hooks/session-start.sh +0 -0
  66. package/pennyfarthing-dist/scripts/hooks/session-stop.sh +0 -0
  67. package/pennyfarthing-dist/scripts/hooks/sprint-yaml-validation.sh +1 -1
  68. package/pennyfarthing-dist/scripts/hooks/welcome-hook.sh +0 -0
  69. package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +0 -0
  70. package/pennyfarthing-dist/scripts/jira/create-jira-story.sh +0 -0
  71. package/pennyfarthing-dist/scripts/jira/jira-claim-story.sh +0 -0
  72. package/pennyfarthing-dist/scripts/jira/jira-reconcile.sh +0 -0
  73. package/pennyfarthing-dist/scripts/jira/jira-sync-story.sh +0 -0
  74. package/pennyfarthing-dist/scripts/jira/sync-epic-jira.sh +0 -0
  75. package/pennyfarthing-dist/scripts/lib/background-tasks.sh +0 -0
  76. package/pennyfarthing-dist/scripts/lib/checkpoint.sh +0 -0
  77. package/pennyfarthing-dist/scripts/lib/common.sh +0 -0
  78. package/pennyfarthing-dist/scripts/lib/file-lock.sh +0 -0
  79. package/pennyfarthing-dist/scripts/lib/logging.sh +0 -0
  80. package/pennyfarthing-dist/scripts/lib/retry.sh +0 -0
  81. package/pennyfarthing-dist/scripts/maintenance/migrate-theme-schema.mjs +0 -0
  82. package/pennyfarthing-dist/scripts/maintenance/sidecar-health.sh +0 -0
  83. package/pennyfarthing-dist/scripts/misc/add-short-names.sh +0 -0
  84. package/pennyfarthing-dist/scripts/misc/add_short_names.py +0 -0
  85. package/pennyfarthing-dist/scripts/misc/backlog.sh +0 -0
  86. package/pennyfarthing-dist/scripts/misc/check-status.sh +0 -0
  87. package/pennyfarthing-dist/scripts/misc/find-related-work.sh +0 -0
  88. package/pennyfarthing-dist/scripts/misc/generate-skill-docs.sh +0 -0
  89. package/pennyfarthing-dist/scripts/misc/log-skill-usage.sh +0 -0
  90. package/pennyfarthing-dist/scripts/misc/migrate-bmad-workflow.sh +0 -0
  91. package/pennyfarthing-dist/scripts/misc/migrate_bmad_workflow.py +0 -0
  92. package/pennyfarthing-dist/scripts/misc/repo-scan.sh +0 -0
  93. package/pennyfarthing-dist/scripts/misc/repo-utils.sh +3 -3
  94. package/pennyfarthing-dist/scripts/misc/run-ci.sh +0 -0
  95. package/pennyfarthing-dist/scripts/misc/run-timestamp.sh +0 -0
  96. package/pennyfarthing-dist/scripts/misc/session-cleanup.sh +0 -0
  97. package/pennyfarthing-dist/scripts/misc/skill-usage-report.sh +0 -0
  98. package/pennyfarthing-dist/scripts/misc/statusline.sh +0 -0
  99. package/pennyfarthing-dist/scripts/misc/uninstall.sh +0 -0
  100. package/pennyfarthing-dist/scripts/misc/validate-subagent-frontmatter.sh +0 -0
  101. package/pennyfarthing-dist/scripts/portraits/generate-portraits.sh +0 -0
  102. package/pennyfarthing-dist/scripts/sprint/README.md +32 -17
  103. package/pennyfarthing-dist/scripts/story/README.md +1 -1
  104. package/pennyfarthing-dist/scripts/story/create-story.sh +0 -0
  105. package/pennyfarthing-dist/scripts/story/size-story.sh +0 -0
  106. package/pennyfarthing-dist/scripts/story/story-template.sh +0 -0
  107. package/pennyfarthing-dist/scripts/test/ensure-swebench-data.sh +0 -0
  108. package/pennyfarthing-dist/scripts/test/swebench-judge.py +0 -0
  109. package/pennyfarthing-dist/scripts/test/test-cache.sh +0 -0
  110. package/pennyfarthing-dist/scripts/test/test-setup.sh +1 -1
  111. package/pennyfarthing-dist/scripts/tests/check.test.sh +0 -0
  112. package/pennyfarthing-dist/scripts/tests/dev-story-workflow-import.test.sh +0 -0
  113. package/pennyfarthing-dist/scripts/tests/epics-and-stories-workflow-import.test.sh +0 -0
  114. package/pennyfarthing-dist/scripts/tests/handoff-phase-update.test.sh +0 -0
  115. package/pennyfarthing-dist/scripts/tests/implementation-readiness-workflow-import.test.sh +0 -0
  116. package/pennyfarthing-dist/scripts/tests/migrate-bmad-workflow.test.sh +0 -0
  117. package/pennyfarthing-dist/scripts/tests/prd-workflow-import.test.sh +0 -0
  118. package/pennyfarthing-dist/scripts/tests/project-context-workflow-import.test.sh +0 -0
  119. package/pennyfarthing-dist/scripts/tests/test-character-voice.sh +0 -0
  120. package/pennyfarthing-dist/scripts/tests/test-drift-detection.sh +0 -0
  121. package/pennyfarthing-dist/scripts/tests/test-post-merge-hook.sh +0 -0
  122. package/pennyfarthing-dist/scripts/tests/test-session-checkpoint.sh +0 -0
  123. package/pennyfarthing-dist/scripts/tests/test-solo-command.sh +0 -0
  124. package/pennyfarthing-dist/scripts/tests/ux-design-workflow-import.test.sh +0 -0
  125. package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +0 -0
  126. package/pennyfarthing-dist/scripts/theme/compute_theme_tiers.py +0 -0
  127. package/pennyfarthing-dist/scripts/theme/list-themes.sh +0 -0
  128. package/pennyfarthing-dist/scripts/theme/update-theme-tiers.sh +0 -0
  129. package/pennyfarthing-dist/scripts/validation/validate-agent-schema.sh +0 -0
  130. package/pennyfarthing-dist/scripts/workflow/check.py +0 -0
  131. package/pennyfarthing-dist/scripts/workflow/check.sh +0 -0
  132. package/pennyfarthing-dist/scripts/workflow/complete-step.py +0 -0
  133. package/pennyfarthing-dist/scripts/workflow/finish-story.sh +0 -0
  134. package/pennyfarthing-dist/scripts/workflow/fix-session-phase.sh +0 -0
  135. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.py +0 -0
  136. package/pennyfarthing-dist/scripts/workflow/get-workflow-type.sh +0 -0
  137. package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +0 -0
  138. package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +0 -0
  139. package/pennyfarthing-dist/scripts/workflow/resume-workflow.sh +0 -0
  140. package/pennyfarthing-dist/scripts/workflow/show-workflow.sh +0 -0
  141. package/pennyfarthing-dist/scripts/workflow/start-workflow.sh +0 -0
  142. package/pennyfarthing-dist/scripts/workflow/workflow-status.sh +0 -0
  143. package/pennyfarthing-dist/skills/skill-registry.yaml +21 -12
  144. package/pennyfarthing-dist/skills/sprint/skill.md +386 -68
  145. package/pennyfarthing-dist/skills/story/scripts/create-story.sh +0 -0
  146. package/pennyfarthing-dist/skills/story/scripts/size-story.sh +0 -0
  147. package/pennyfarthing-dist/skills/story/scripts/story-template.sh +0 -0
  148. package/pennyfarthing-dist/skills/story/skill.md +14 -206
  149. package/pennyfarthing-dist/skills/workflow/scripts/list-workflows.sh +0 -0
  150. package/pennyfarthing-dist/skills/workflow/scripts/resume-workflow.sh +0 -0
  151. package/pennyfarthing-dist/skills/workflow/scripts/show-workflow.sh +0 -0
  152. package/pennyfarthing-dist/skills/workflow/scripts/start-workflow.sh +0 -0
  153. package/pennyfarthing-dist/skills/workflow/scripts/workflow-status.sh +0 -0
  154. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +1 -1
  155. package/pennyfarthing-dist/workflows/git-cleanup.yaml +1 -1
  156. package/pennyfarthing-dist/workflows/project-setup/steps/step-10-complete.md +1 -1
  157. package/pennyfarthing_scripts/__pycache__/cli.cpython-314.pyc +0 -0
  158. package/pennyfarthing_scripts/common/__pycache__/config.cpython-314.pyc +0 -0
  159. package/pennyfarthing_scripts/common/config.py +2 -1
  160. package/pennyfarthing_scripts/hooks/cyclist-pretooluse-hook.sh +0 -0
  161. package/pennyfarthing_scripts/hotspots/__pycache__/analyze.cpython-314.pyc +0 -0
  162. package/pennyfarthing_scripts/hotspots/__pycache__/cli.cpython-314.pyc +0 -0
  163. package/pennyfarthing_scripts/hotspots/analyze.py +1 -1
  164. package/pennyfarthing_scripts/hotspots/cli.py +1 -1
  165. package/pennyfarthing_scripts/jira/__pycache__/__init__.cpython-314.pyc +0 -0
  166. package/pennyfarthing_scripts/jira/__pycache__/cli.cpython-314.pyc +0 -0
  167. package/pennyfarthing_scripts/jira/__pycache__/client.cpython-314.pyc +0 -0
  168. package/pennyfarthing_scripts/jira/__pycache__/create.cpython-314.pyc +0 -0
  169. package/pennyfarthing_scripts/jira/__pycache__/operations.cpython-314.pyc +0 -0
  170. package/pennyfarthing_scripts/jira/__pycache__/reconcile.cpython-314.pyc +0 -0
  171. package/pennyfarthing_scripts/jira/cli.py +74 -0
  172. package/pennyfarthing_scripts/prime/__pycache__/workflow.cpython-314.pyc +0 -0
  173. package/pennyfarthing_scripts/prime/workflow.py +5 -3
  174. package/pennyfarthing_scripts/sprint/__pycache__/archive.cpython-314.pyc +0 -0
  175. package/pennyfarthing_scripts/sprint/__pycache__/archive_epic.cpython-314.pyc +0 -0
  176. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  177. package/pennyfarthing_scripts/sprint/__pycache__/epic_add.cpython-314.pyc +0 -0
  178. package/pennyfarthing_scripts/sprint/__pycache__/loader.cpython-314.pyc +0 -0
  179. package/pennyfarthing_scripts/sprint/__pycache__/validate_cmd.cpython-314.pyc +0 -0
  180. package/pennyfarthing_scripts/sprint/__pycache__/validator.cpython-314.pyc +0 -0
  181. package/pennyfarthing_scripts/sprint/__pycache__/work.cpython-314.pyc +0 -0
  182. package/pennyfarthing_scripts/sprint/__pycache__/yaml_io.cpython-314.pyc +0 -0
  183. package/pennyfarthing_scripts/sprint/archive.py +63 -6
  184. package/pennyfarthing_scripts/sprint/archive_epic.py +14 -5
  185. package/pennyfarthing_scripts/sprint/cli.py +1555 -65
  186. package/pennyfarthing_scripts/sprint/epic_add.py +173 -0
  187. package/pennyfarthing_scripts/sprint/loader.py +46 -2
  188. package/pennyfarthing_scripts/sprint/validate_cmd.py +44 -5
  189. package/pennyfarthing_scripts/sprint/validator.py +13 -3
  190. package/pennyfarthing_scripts/sprint/work.py +17 -1
  191. package/pennyfarthing_scripts/sprint/yaml_io.py +124 -15
  192. package/pennyfarthing_scripts/tests/__pycache__/test_sprint_package.cpython-314-pytest-9.0.2.pyc +0 -0
  193. package/pennyfarthing_scripts/tests/__pycache__/test_story_add.cpython-314-pytest-9.0.2.pyc +0 -0
  194. package/pennyfarthing_scripts/tests/__pycache__/test_story_update.cpython-314-pytest-9.0.2.pyc +0 -0
  195. package/pennyfarthing_scripts/tests/__pycache__/test_yaml_io.cpython-314-pytest-9.0.2.pyc +0 -0
  196. package/pennyfarthing_scripts/tests/test_sprint_package.py +166 -0
  197. package/pennyfarthing_scripts/tests/test_yaml_io.py +117 -0
  198. package/scripts/postinstall.cjs +34 -0
  199. package/pennyfarthing-dist/scripts/sprint/archive-story.sh +0 -133
  200. package/pennyfarthing-dist/scripts/sprint/available-stories.sh +0 -91
  201. package/pennyfarthing-dist/scripts/sprint/check-story.sh +0 -158
  202. package/pennyfarthing-dist/scripts/sprint/get-epic-field.sh +0 -52
  203. package/pennyfarthing-dist/scripts/sprint/get-story-field.sh +0 -63
  204. package/pennyfarthing-dist/scripts/sprint/list-future.sh +0 -145
  205. package/pennyfarthing-dist/scripts/sprint/new-sprint.sh +0 -110
  206. package/pennyfarthing-dist/scripts/sprint/promote-epic.sh +0 -148
  207. package/pennyfarthing-dist/scripts/sprint/sprint-common.sh +0 -415
  208. package/pennyfarthing-dist/scripts/sprint/sprint-info.sh +0 -33
  209. package/pennyfarthing-dist/scripts/sprint/sprint-metrics.sh +0 -230
  210. package/pennyfarthing-dist/scripts/sprint/sprint-status.sh +0 -134
  211. package/pennyfarthing-dist/scripts/sprint/validate-sprint-yaml.sh +0 -139
  212. package/pennyfarthing-dist/skills/sprint/scripts/archive-story.sh +0 -101
  213. package/pennyfarthing-dist/skills/sprint/scripts/available-stories.sh +0 -97
  214. package/pennyfarthing-dist/skills/sprint/scripts/check-story.sh +0 -164
  215. package/pennyfarthing-dist/skills/sprint/scripts/create-jira-epic.sh +0 -23
  216. package/pennyfarthing-dist/skills/sprint/scripts/new-sprint.sh +0 -116
  217. package/pennyfarthing-dist/skills/sprint/scripts/promote-epic.sh +0 -164
  218. package/pennyfarthing-dist/skills/sprint/scripts/sprint-info.sh +0 -39
  219. package/pennyfarthing-dist/skills/sprint/scripts/sprint-status.sh +0 -147
  220. package/pennyfarthing-dist/skills/sprint/scripts/sync-epic-jira.sh +0 -23
@@ -447,7 +447,7 @@ Tags used in skill files (`skills/{name}/SKILL.md`) for command documentation.
447
447
 
448
448
  ```markdown
449
449
  <run>
450
- .pennyfarthing/scripts/sprint/sprint-status.sh [filter]
450
+ pf sprint status [filter]
451
451
  </run>
452
452
  ```
453
453
 
@@ -473,7 +473,7 @@ Tags used in skill files (`skills/{name}/SKILL.md`) for command documentation.
473
473
 
474
474
  ```markdown
475
475
  <example>
476
- .pennyfarthing/scripts/sprint/check-story.sh MSSCI-12038
476
+ pf sprint check MSSCI-12038
477
477
  # Returns: {"type": "story", "available": true}
478
478
  </example>
479
479
  ```
@@ -8,7 +8,7 @@ Scripts are organized into categorical subdirectories. **Full paths are required
8
8
  scripts/
9
9
  ├── core/ # Essential scripts (agent-session.sh)
10
10
  ├── workflow/ # Workflow mechanics (finish-story.sh, check.sh)
11
- ├── sprint/ # Sprint YAML operations (sprint-status.sh)
11
+ ├── sprint/ # Sprint YAML operations (migrated to pf sprint CLI)
12
12
  ├── story/ # Story operations (create-story.sh)
13
13
  ├── jira/ # Jira integration (jira-claim-story.sh)
14
14
  ├── git/ # Git operations (release.sh, worktree-manager.sh)
@@ -27,7 +27,7 @@ Scripts are invoked directly with **full category paths**:
27
27
  ```bash
28
28
  # From project root
29
29
  .pennyfarthing/scripts/core/agent-session.sh start sm
30
- .pennyfarthing/scripts/sprint/sprint-status.sh
30
+ pf sprint status
31
31
  .pennyfarthing/scripts/jira/jira-claim-story.sh MSSCI-12345
32
32
  .pennyfarthing/scripts/workflow/finish-story.sh MSSCI-12345
33
33
  ```
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -3,7 +3,7 @@
3
3
  # Usage: ./scripts/git-status-all.sh [--brief]
4
4
  #
5
5
  # Shows: branch, status, unpushed commits for all repos
6
- # Reads repo configuration from .claude/project/repos.yaml
6
+ # Reads repo configuration from .pennyfarthing/repos.yaml
7
7
 
8
8
  set -e
9
9
 
File without changes
@@ -3,7 +3,7 @@
3
3
  # Usage: worktree-manager.sh {create|remove|list|status|ports|cd} [args]
4
4
  #
5
5
  # Configuration (choose one):
6
- # 1. repos.yaml: Define repos in .claude/project/repos.yaml (recommended)
6
+ # 1. repos.yaml: Define repos in .pennyfarthing/repos.yaml (recommended)
7
7
  # 2. Legacy env vars: Set API_REPO and UI_REPO in .claude/project/hooks/setup-env.sh
8
8
 
9
9
  set -e
@@ -109,7 +109,7 @@ load_repos_config
109
109
  if [ "$(get_repo_count)" -eq 0 ]; then
110
110
  echo "❌ Error: No repositories configured"
111
111
  echo ""
112
- echo "Option 1: Create .claude/project/repos.yaml (recommended for multi-repo projects)"
112
+ echo "Option 1: Create .pennyfarthing/repos.yaml (recommended for multi-repo projects)"
113
113
  echo "Option 2: Set API_REPO and UI_REPO in .claude/project/hooks/setup-env.sh"
114
114
  exit 1
115
115
  fi
@@ -161,7 +161,7 @@ Repos Filter (third argument):
161
161
  repo1,repo2 - Comma-separated list of specific repo names
162
162
 
163
163
  Configuration:
164
- Option 1 (recommended): Create .claude/project/repos.yaml
164
+ Option 1 (recommended): Create .pennyfarthing/repos.yaml
165
165
  Option 2 (legacy): Set API_REPO and UI_REPO environment variables
166
166
 
167
167
  Session Files:
@@ -10,7 +10,7 @@
10
10
  #
11
11
  # Dependencies:
12
12
  # - yq (for YAML manipulation)
13
- # - sprint-common.sh (for shared sprint functions)
13
+ # (sprint-common.sh removed all functions defined locally)
14
14
 
15
15
  set -uo pipefail
16
16
 
@@ -22,12 +22,7 @@ source "$(dirname "$REAL_SCRIPT")/../lib/find-root.sh"
22
22
  SESSION_DIR="$PROJECT_ROOT/.session"
23
23
  SPRINT_FILE="$PROJECT_ROOT/sprint/current-sprint.yaml"
24
24
 
25
- # Source sprint-common.sh for shared functions
26
- SPRINT_COMMON="$PROJECT_ROOT/.pennyfarthing/scripts/sprint/sprint-common.sh"
27
- if [[ -f "$SPRINT_COMMON" ]]; then
28
- # shellcheck source=/dev/null
29
- source "$SPRINT_COMMON"
30
- fi
25
+ # Note: sprint-common.sh removed all needed functions are defined locally below
31
26
 
32
27
  # extract_story_id BRANCH_NAME
33
28
  # Extract story ID from branch name pattern feat/X-Y-*
File without changes
File without changes
File without changes
File without changes
@@ -15,7 +15,7 @@
15
15
  # Input: JSON via stdin with tool_name, tool_input
16
16
  # Output: JSON with additionalContext on validation failure
17
17
  #
18
- # See also: .pennyfarthing/scripts/validation/validate-sprint-yaml.sh
18
+ # See also: pf sprint validate
19
19
 
20
20
  set -euo pipefail
21
21
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # Usage: source scripts/repo-utils.sh
6
6
  #
7
- # If .claude/project/repos.yaml exists, uses that configuration.
7
+ # If .pennyfarthing/repos.yaml exists, uses that configuration.
8
8
  # Otherwise, falls back to legacy $API_REPO/$UI_REPO environment variables.
9
9
  #
10
10
  # Core Functions:
@@ -28,7 +28,7 @@ set -euo pipefail
28
28
 
29
29
  # Determine PROJECT_ROOT if not set
30
30
  PROJECT_ROOT="${PROJECT_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"
31
- REPOS_CONFIG="${PROJECT_ROOT}/.claude/project/pennyfarthing-settings.yaml"
31
+ REPOS_CONFIG="${PROJECT_ROOT}/.pennyfarthing/repos.yaml"
32
32
 
33
33
  # Cache for parsed config (associative arrays)
34
34
  declare -A _REPO_PATHS 2>/dev/null || true
@@ -136,7 +136,7 @@ import json
136
136
  import sys
137
137
  import os
138
138
 
139
- config_path = os.environ.get('REPOS_CONFIG', '.claude/project/repos.yaml')
139
+ config_path = os.environ.get('REPOS_CONFIG', '.pennyfarthing/repos.yaml')
140
140
  try:
141
141
  with open(config_path) as f:
142
142
  config = yaml.safe_load(f)
File without changes
File without changes
File without changes
File without changes
@@ -1,29 +1,44 @@
1
1
  # Sprint Scripts
2
2
 
3
- Scripts for sprint YAML operations and sprint management.
4
-
5
- ## Scripts
6
-
7
- | Script | Purpose |
8
- |--------|---------|
9
- | `sprint-status.sh` | Show current sprint status and metrics |
10
- | `sprint-info.sh` | Display sprint information |
11
- | `available-stories.sh` | List available stories in backlog |
12
- | `archive-story.sh` | Archive completed story to sprint archive |
13
- | `check-story.sh` | Check story details and readiness |
14
- | `new-sprint.sh` | Create a new sprint |
15
- | `promote-epic.sh` | Move epic from planning to current sprint |
16
- | `sprint-common.sh` | Shared sprint utilities (library) |
17
- | `sprint-metrics.sh` | Calculate sprint metrics |
3
+ Sprint management is handled by the Python CLI: `pf sprint [COMMAND]`.
4
+
5
+ ## Commands
6
+
7
+ | Command | Purpose |
8
+ |---------|---------|
9
+ | `pf sprint status` | Show current sprint status and metrics |
10
+ | `pf sprint backlog` | List available stories grouped by epic |
11
+ | `pf sprint info` | Sprint info as JSON (for Cyclist sidebar) |
12
+ | `pf sprint metrics` | Sprint velocity and progress metrics |
13
+ | `pf sprint check <id>` | Check story/epic availability (JSON) |
14
+ | `pf sprint future` | Show future initiatives and epics |
15
+ | `pf sprint new` | Initialize a new sprint |
16
+ | `pf sprint validate <file>` | Validate sprint YAML structure |
17
+ | `pf sprint archive <id>` | Archive a completed story |
18
+ | `pf sprint work <id>` | Start work on a story |
19
+ | `pf sprint story field <id> <field>` | Get a story field value |
20
+ | `pf sprint epic field <id> <field>` | Get an epic field value |
21
+ | `pf sprint epic promote <id>` | Move epic from future to current sprint |
22
+ | `pf sprint epic show <id>` | Show epic details |
23
+ | `pf sprint epic cancel <id>` | Cancel an epic |
24
+ | `pf sprint epic archive` | Archive completed epics |
18
25
 
19
26
  ## Usage
20
27
 
21
28
  ```bash
22
- .pennyfarthing/scripts/sprint/sprint-status.sh
23
- .pennyfarthing/scripts/sprint/available-stories.sh
29
+ pf sprint status
30
+ pf sprint backlog
31
+ pf sprint future epic-55
32
+ pf sprint epic promote epic-41
24
33
  ```
25
34
 
26
35
  ## Ownership
27
36
 
28
37
  - **Primary users:** SM agent, `/sprint` skill
29
38
  - **Maintained by:** Core Pennyfarthing team
39
+
40
+ ## Migration Note
41
+
42
+ All bash scripts previously in this directory have been migrated to Python CLI
43
+ commands in `pennyfarthing_scripts/sprint/cli.py`. See PR #716 and the follow-up
44
+ deprecation commit for details.
@@ -19,5 +19,5 @@ Scripts for story creation and management.
19
19
 
20
20
  ## Ownership
21
21
 
22
- - **Primary users:** SM agent, `/story` skill
22
+ - **Primary users:** SM agent, `/sprint story` commands
23
23
  - **Maintained by:** Core Pennyfarthing team
File without changes
File without changes
File without changes
File without changes
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # Usage: source scripts/test/test-setup.sh
6
6
  #
7
- # Configuration is read from .claude/project/repos.yaml
7
+ # Configuration is read from .pennyfarthing/repos.yaml
8
8
  # See repos.yaml for schema documentation
9
9
  #
10
10
  # Functions:
File without changes
File without changes
File without changes
File without changes
@@ -141,7 +141,7 @@ skills:
141
141
  invocation: /jira assign ISSUE-123
142
142
  anti_patterns:
143
143
  - Don't bypass Jira for sprint tracking
144
- related_skills: [sprint, story]
144
+ related_skills: [sprint]
145
145
  keywords: [atlassian, issues, tickets, backlog]
146
146
 
147
147
  judge:
@@ -251,20 +251,26 @@ skills:
251
251
 
252
252
  sprint:
253
253
  name: sprint
254
- description: Sprint status, backlog, and story management for Pennyfarthing
254
+ description: Sprint status, backlog, story, and epic management for Pennyfarthing
255
255
  category: project-management
256
- tags: [sprint, status, backlog]
257
- version: "1.0.0"
256
+ tags: [sprint, status, backlog, stories, epics]
257
+ version: "2.0.0"
258
258
  prerequisites: []
259
259
  examples:
260
260
  - context: Checking sprint status
261
261
  invocation: /sprint
262
262
  - context: Finding available stories
263
263
  invocation: /sprint backlog
264
+ - context: Adding a story
265
+ invocation: /sprint story add epic-76 "My story" 3
266
+ - context: Sizing guidelines
267
+ invocation: /sprint story size
268
+ - context: Adding an epic
269
+ invocation: /sprint epic add epic-85 "New epic"
264
270
  anti_patterns:
265
271
  - Don't manually edit sprint YAML - use scripts
266
- related_skills: [story, jira]
267
- keywords: [sprint, backlog, velocity, kanban]
272
+ related_skills: [jira]
273
+ keywords: [sprint, backlog, velocity, kanban, stories, epics, sizing, templates]
268
274
  allowed_tools: [Read, Glob, Grep, Bash, Task]
269
275
 
270
276
  systematic-debugging:
@@ -287,18 +293,21 @@ skills:
287
293
 
288
294
  story:
289
295
  name: story
290
- description: Story creation, sizing, and templates for Pennyfarthing workflow
296
+ description: "DEPRECATED: Use /sprint story instead. Story commands consolidated under /sprint."
291
297
  category: project-management
292
- tags: [stories, sizing, workflow]
293
- version: "1.0.0"
298
+ tags: [stories, sizing, workflow, deprecated]
299
+ version: "2.0.0"
300
+ deprecated: true
301
+ redirect: sprint
294
302
  prerequisites: []
295
303
  examples:
296
304
  - context: Creating new stories
297
- invocation: /story create
305
+ invocation: /sprint story add
298
306
  - context: Sizing stories
299
- invocation: /story size
307
+ invocation: /sprint story size
300
308
  anti_patterns:
301
309
  - Don't create stories without acceptance criteria
310
+ - Don't use /story directly - use /sprint story instead
302
311
  related_skills: [sprint, jira]
303
312
  keywords: [user-stories, estimation, points, acceptance-criteria]
304
313
 
@@ -372,7 +381,7 @@ skills:
372
381
  invocation: /workflow start architecture
373
382
  anti_patterns:
374
383
  - Don't switch workflows mid-story unless requirements fundamentally changed
375
- related_skills: [sprint, story]
384
+ related_skills: [sprint]
376
385
  keywords: [tdd, trivial, agent-docs, bdd, architecture, bikelane, stepped, phased]
377
386
 
378
387
  yq: