@pennyfarthing/core 9.0.0 → 9.0.3

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 (193) hide show
  1. package/README.md +16 -7
  2. package/package.json +1 -1
  3. package/packages/core/dist/cli/commands/doctor.d.ts +5 -2
  4. package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
  5. package/packages/core/dist/cli/commands/doctor.js +225 -17
  6. package/packages/core/dist/cli/commands/doctor.js.map +1 -1
  7. package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
  8. package/packages/core/dist/cli/commands/init.js +3 -246
  9. package/packages/core/dist/cli/commands/init.js.map +1 -1
  10. package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
  11. package/packages/core/dist/cli/commands/update.js +4 -140
  12. package/packages/core/dist/cli/commands/update.js.map +1 -1
  13. package/packages/core/dist/cli/utils/constants.d.ts +7 -1
  14. package/packages/core/dist/cli/utils/constants.d.ts.map +1 -1
  15. package/packages/core/dist/cli/utils/constants.js +2 -0
  16. package/packages/core/dist/cli/utils/constants.js.map +1 -1
  17. package/packages/core/dist/cli/utils/settings.d.ts +22 -0
  18. package/packages/core/dist/cli/utils/settings.d.ts.map +1 -0
  19. package/packages/core/dist/cli/utils/settings.js +300 -0
  20. package/packages/core/dist/cli/utils/settings.js.map +1 -0
  21. package/pennyfarthing-dist/commands/chore.md +18 -17
  22. package/pennyfarthing-dist/commands/continue-session.md +41 -7
  23. package/pennyfarthing-dist/commands/fix-blocker.md +22 -0
  24. package/pennyfarthing-dist/commands/git-cleanup.md +25 -19
  25. package/pennyfarthing-dist/commands/patch.md +210 -0
  26. package/pennyfarthing-dist/guides/session-schema.md +346 -0
  27. package/pennyfarthing-dist/guides/skill-schema.md +412 -0
  28. package/pennyfarthing-dist/guides/workflow-step-schema.md +512 -0
  29. package/pennyfarthing-dist/guides/xml-tags.md +292 -0
  30. package/pennyfarthing-dist/scripts/hooks/context-circuit-breaker.sh +43 -8
  31. package/pennyfarthing-dist/scripts/hooks/schema-validation.sh +30 -0
  32. package/pennyfarthing-dist/scripts/lib/find-root.sh +32 -7
  33. package/pennyfarthing-dist/skills/agentic-patterns/SKILL.md +4 -0
  34. package/pennyfarthing-dist/skills/changelog/SKILL.md +18 -0
  35. package/pennyfarthing-dist/skills/code-review/SKILL.md +5 -1
  36. package/pennyfarthing-dist/skills/context-engineering/SKILL.md +3 -0
  37. package/pennyfarthing-dist/skills/cyclist/SKILL.md +2 -2
  38. package/pennyfarthing-dist/skills/dev-patterns/SKILL.md +24 -0
  39. package/pennyfarthing-dist/skills/finalize-run/SKILL.md +3 -0
  40. package/pennyfarthing-dist/skills/judge/SKILL.md +8 -0
  41. package/pennyfarthing-dist/skills/just/SKILL.md +11 -0
  42. package/pennyfarthing-dist/skills/mermaid/SKILL.md +16 -0
  43. package/pennyfarthing-dist/skills/otel/skill.md +4 -0
  44. package/pennyfarthing-dist/skills/permissions/skill.md +3 -0
  45. package/pennyfarthing-dist/skills/persona-benchmark/SKILL.md +9 -0
  46. package/pennyfarthing-dist/skills/story/skill.md +16 -16
  47. package/pennyfarthing-dist/skills/systematic-debugging/SKILL.md +56 -0
  48. package/pennyfarthing-dist/skills/testing/SKILL.md +22 -0
  49. package/pennyfarthing-dist/skills/theme/skill.md +12 -0
  50. package/pennyfarthing-dist/skills/theme-creation/SKILL.md +4 -0
  51. package/pennyfarthing-dist/skills/workflow/skill.md +22 -14
  52. package/pennyfarthing-dist/skills/yq/SKILL.md +8 -0
  53. package/pennyfarthing-dist/templates/settings.local.json.template +9 -0
  54. package/pennyfarthing-dist/workflows/architecture/steps/step-01-initialize.md +12 -0
  55. package/pennyfarthing-dist/workflows/architecture/steps/step-01b-continue.md +12 -0
  56. package/pennyfarthing-dist/workflows/architecture/steps/step-02-context.md +12 -0
  57. package/pennyfarthing-dist/workflows/architecture/steps/step-03-patterns.md +12 -0
  58. package/pennyfarthing-dist/workflows/architecture/steps/step-04-components.md +12 -0
  59. package/pennyfarthing-dist/workflows/architecture/steps/step-05-interfaces.md +12 -0
  60. package/pennyfarthing-dist/workflows/architecture/steps/step-06-risks.md +12 -0
  61. package/pennyfarthing-dist/workflows/architecture/steps/step-07-document.md +12 -0
  62. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-01-validate-prerequisites.md +25 -0
  63. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-02-design-epics.md +23 -0
  64. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-03-create-stories.md +26 -0
  65. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +24 -0
  66. package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +23 -0
  67. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-01-analyze.md +43 -41
  68. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-02-categorize.md +50 -19
  69. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-03-execute.md +102 -111
  70. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-04-verify.md +48 -39
  71. package/pennyfarthing-dist/workflows/git-cleanup/steps/step-05-complete.md +30 -31
  72. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-01-document-discovery.md +21 -0
  73. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-02-prd-analysis.md +21 -0
  74. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-03-epic-coverage-validation.md +23 -0
  75. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-04-ux-alignment.md +23 -0
  76. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-05-epic-quality-review.md +28 -0
  77. package/pennyfarthing-dist/workflows/implementation-readiness/steps/step-06-final-assessment.md +25 -0
  78. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-01-connect.md +257 -0
  79. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-02-explore.md +107 -0
  80. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-03-fix.md +127 -0
  81. package/pennyfarthing-dist/workflows/interactive-debug/steps/step-04-commit.md +122 -0
  82. package/pennyfarthing-dist/workflows/interactive-debug/workflow.yaml +51 -0
  83. package/pennyfarthing-dist/workflows/prd/steps-c/step-01-init.md +6 -0
  84. package/pennyfarthing-dist/workflows/prd/steps-c/step-01b-continue.md +6 -0
  85. package/pennyfarthing-dist/workflows/prd/steps-c/step-02-discovery.md +6 -0
  86. package/pennyfarthing-dist/workflows/prd/steps-c/step-03-success.md +6 -0
  87. package/pennyfarthing-dist/workflows/prd/steps-c/step-04-journeys.md +6 -0
  88. package/pennyfarthing-dist/workflows/prd/steps-c/step-05-domain.md +6 -0
  89. package/pennyfarthing-dist/workflows/prd/steps-c/step-06-innovation.md +6 -0
  90. package/pennyfarthing-dist/workflows/prd/steps-c/step-07-project-type.md +6 -0
  91. package/pennyfarthing-dist/workflows/prd/steps-c/step-08-scoping.md +6 -0
  92. package/pennyfarthing-dist/workflows/prd/steps-c/step-09-functional.md +6 -0
  93. package/pennyfarthing-dist/workflows/prd/steps-c/step-10-nonfunctional.md +6 -0
  94. package/pennyfarthing-dist/workflows/prd/steps-c/step-11-polish.md +6 -0
  95. package/pennyfarthing-dist/workflows/prd/steps-c/step-12-complete.md +6 -0
  96. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01-discovery.md +6 -0
  97. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-01b-legacy-conversion.md +6 -0
  98. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-02-review.md +6 -0
  99. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-03-edit.md +6 -0
  100. package/pennyfarthing-dist/workflows/prd/steps-e/step-e-04-complete.md +6 -0
  101. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-01-discovery.md +6 -0
  102. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02-format-detection.md +6 -0
  103. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-02b-parity-check.md +6 -0
  104. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-03-density-validation.md +6 -0
  105. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +6 -0
  106. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-05-measurability-validation.md +6 -0
  107. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-06-traceability-validation.md +6 -0
  108. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +6 -0
  109. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +6 -0
  110. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-09-project-type-validation.md +6 -0
  111. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-10-smart-validation.md +6 -0
  112. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +6 -0
  113. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-12-completeness-validation.md +6 -0
  114. package/pennyfarthing-dist/workflows/prd/steps-v/step-v-13-report-complete.md +6 -0
  115. package/pennyfarthing-dist/workflows/product-brief/steps/step-01-init.md +18 -0
  116. package/pennyfarthing-dist/workflows/product-brief/steps/step-01b-continue.md +19 -0
  117. package/pennyfarthing-dist/workflows/product-brief/steps/step-02-vision.md +22 -0
  118. package/pennyfarthing-dist/workflows/product-brief/steps/step-03-users.md +22 -0
  119. package/pennyfarthing-dist/workflows/product-brief/steps/step-04-metrics.md +23 -0
  120. package/pennyfarthing-dist/workflows/product-brief/steps/step-05-scope.md +24 -0
  121. package/pennyfarthing-dist/workflows/product-brief/steps/step-06-complete.md +22 -0
  122. package/pennyfarthing-dist/workflows/project-context/steps/step-01-discover.md +22 -0
  123. package/pennyfarthing-dist/workflows/project-context/steps/step-02-generate.md +31 -0
  124. package/pennyfarthing-dist/workflows/project-context/steps/step-03-complete.md +28 -0
  125. package/pennyfarthing-dist/workflows/quick-dev/steps/step-01-mode-detection.md +21 -0
  126. package/pennyfarthing-dist/workflows/quick-dev/steps/step-02-context-gathering.md +23 -0
  127. package/pennyfarthing-dist/workflows/quick-dev/steps/step-03-execute.md +25 -0
  128. package/pennyfarthing-dist/workflows/quick-dev/steps/step-04-self-check.md +22 -0
  129. package/pennyfarthing-dist/workflows/quick-dev/steps/step-05-adversarial-review.md +23 -0
  130. package/pennyfarthing-dist/workflows/quick-dev/steps/step-06-resolve-findings.md +23 -0
  131. package/pennyfarthing-dist/workflows/quick-spec/steps/step-01-understand.md +12 -0
  132. package/pennyfarthing-dist/workflows/quick-spec/steps/step-02-investigate.md +12 -0
  133. package/pennyfarthing-dist/workflows/quick-spec/steps/step-03-generate.md +12 -0
  134. package/pennyfarthing-dist/workflows/quick-spec/steps/step-04-review.md +12 -0
  135. package/pennyfarthing-dist/workflows/research/steps-domain/step-01-init.md +22 -0
  136. package/pennyfarthing-dist/workflows/research/steps-domain/step-02-domain-analysis.md +24 -0
  137. package/pennyfarthing-dist/workflows/research/steps-domain/step-03-competitive-landscape.md +25 -0
  138. package/pennyfarthing-dist/workflows/research/steps-domain/step-04-regulatory-focus.md +26 -0
  139. package/pennyfarthing-dist/workflows/research/steps-domain/step-05-technical-trends.md +26 -0
  140. package/pennyfarthing-dist/workflows/research/steps-domain/step-06-research-synthesis.md +34 -0
  141. package/pennyfarthing-dist/workflows/research/steps-market/step-01-init.md +23 -0
  142. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-behavior.md +25 -0
  143. package/pennyfarthing-dist/workflows/research/steps-market/step-02-customer-insights.md +27 -0
  144. package/pennyfarthing-dist/workflows/research/steps-market/step-03-customer-pain-points.md +26 -0
  145. package/pennyfarthing-dist/workflows/research/steps-market/step-04-customer-decisions.md +27 -0
  146. package/pennyfarthing-dist/workflows/research/steps-market/step-05-competitive-analysis.md +26 -0
  147. package/pennyfarthing-dist/workflows/research/steps-market/step-06-research-completion.md +35 -0
  148. package/pennyfarthing-dist/workflows/research/steps-technical/step-01-init.md +22 -0
  149. package/pennyfarthing-dist/workflows/research/steps-technical/step-02-technical-overview.md +25 -0
  150. package/pennyfarthing-dist/workflows/research/steps-technical/step-03-integration-patterns.md +26 -0
  151. package/pennyfarthing-dist/workflows/research/steps-technical/step-04-architectural-patterns.md +26 -0
  152. package/pennyfarthing-dist/workflows/research/steps-technical/step-05-implementation-research.md +29 -1
  153. package/pennyfarthing-dist/workflows/research/steps-technical/step-06-research-synthesis.md +37 -1
  154. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-01-parse-epic-files.md +15 -0
  155. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-02-build-sprint-status.md +17 -0
  156. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-03-status-detection.md +16 -0
  157. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-04-generate-status-file.md +17 -0
  158. package/pennyfarthing-dist/workflows/sprint-planning/steps/step-05-validate-and-report.md +22 -0
  159. package/pennyfarthing-dist/workflows/ux-design/steps/step-01-init.md +6 -0
  160. package/pennyfarthing-dist/workflows/ux-design/steps/step-01b-continue.md +6 -0
  161. package/pennyfarthing-dist/workflows/ux-design/steps/step-02-discovery.md +6 -0
  162. package/pennyfarthing-dist/workflows/ux-design/steps/step-03-core-experience.md +6 -0
  163. package/pennyfarthing-dist/workflows/ux-design/steps/step-04-emotional-response.md +6 -0
  164. package/pennyfarthing-dist/workflows/ux-design/steps/step-05-inspiration.md +6 -0
  165. package/pennyfarthing-dist/workflows/ux-design/steps/step-06-design-system.md +6 -0
  166. package/pennyfarthing-dist/workflows/ux-design/steps/step-07-defining-experience.md +6 -0
  167. package/pennyfarthing-dist/workflows/ux-design/steps/step-08-visual-foundation.md +6 -0
  168. package/pennyfarthing-dist/workflows/ux-design/steps/step-09-design-directions.md +6 -0
  169. package/pennyfarthing-dist/workflows/ux-design/steps/step-10-user-journeys.md +6 -0
  170. package/pennyfarthing-dist/workflows/ux-design/steps/step-11-component-strategy.md +6 -0
  171. package/pennyfarthing-dist/workflows/ux-design/steps/step-12-ux-patterns.md +6 -0
  172. package/pennyfarthing-dist/workflows/ux-design/steps/step-13-responsive-accessibility.md +6 -0
  173. package/pennyfarthing-dist/workflows/ux-design/steps/step-14-complete.md +6 -0
  174. package/pennyfarthing_scripts/migration/__init__.py +39 -0
  175. package/pennyfarthing_scripts/migration/__main__.py +10 -0
  176. package/pennyfarthing_scripts/migration/cli.py +304 -0
  177. package/pennyfarthing_scripts/migration/session.py +384 -0
  178. package/pennyfarthing_scripts/migration/skill.py +188 -0
  179. package/pennyfarthing_scripts/migration/step.py +229 -0
  180. package/pennyfarthing_scripts/migration/validate.py +282 -0
  181. package/pennyfarthing_scripts/schema_validation_hook.py +306 -0
  182. package/pennyfarthing_scripts/sprint/__pycache__/cli.cpython-314.pyc +0 -0
  183. package/pennyfarthing_scripts/sprint/archive_epic.py +399 -0
  184. package/pennyfarthing_scripts/sprint/cli.py +100 -0
  185. package/pennyfarthing_scripts/sprint/import_epic.py +431 -0
  186. package/pennyfarthing_scripts/story/__pycache__/__init__.cpython-314.pyc +0 -0
  187. package/pennyfarthing_scripts/story/__pycache__/__main__.cpython-314.pyc +0 -0
  188. package/pennyfarthing_scripts/story/__pycache__/cli.cpython-314.pyc +0 -0
  189. package/pennyfarthing_scripts/story/__pycache__/create.cpython-314.pyc +0 -0
  190. package/pennyfarthing_scripts/story/__pycache__/size.cpython-314.pyc +0 -0
  191. package/pennyfarthing_scripts/story/__pycache__/template.cpython-314.pyc +0 -0
  192. package/pennyfarthing-dist/scripts/sprint/import-epic-to-future.sh +0 -10
  193. package/pennyfarthing-dist/scripts/sprint/import_epic_to_future.py +0 -270
@@ -325,6 +325,298 @@ Assume the code is broken until you prove otherwise.
325
325
  | `<persona>` | Agent files (top) |
326
326
  | `<role>` | Agent files (after persona) |
327
327
 
328
+ ## Session Tags
329
+
330
+ Tags used in session files (`.session/{story-id}-session.md`) for workflow state tracking.
331
+
332
+ ### `<session>`
333
+
334
+ **Purpose:** Root container for all session data.
335
+
336
+ **Usage:** Wraps entire session file content.
337
+
338
+ ```markdown
339
+ <session story="MSSCI-12345" workflow="tdd">
340
+ <!-- session content -->
341
+ </session>
342
+ ```
343
+
344
+ **Attributes:**
345
+ - `story` - Story identifier (Jira key or local ID)
346
+ - `workflow` - Workflow type: `tdd`, `trivial`, `bdd`, `agent-docs`
347
+
348
+ ### `<meta>`
349
+
350
+ **Purpose:** Story metadata that doesn't change during the session.
351
+
352
+ **Usage:** Inside `<session>`, contains static story info.
353
+
354
+ ```markdown
355
+ <meta>
356
+ <jira>MSSCI-12345</jira>
357
+ <epic>MSSCI-12300</epic>
358
+ <points>3</points>
359
+ <started>2026-02-03</started>
360
+ </meta>
361
+ ```
362
+
363
+ ### `<status>`
364
+
365
+ **Purpose:** Machine-readable workflow state for agent navigation.
366
+
367
+ **Usage:** Self-closing element updated at phase transitions.
368
+
369
+ ```markdown
370
+ <status phase="green" next-agent="reviewer" handoff-ready="true"/>
371
+ ```
372
+
373
+ **Attributes:**
374
+ - `phase` - Current workflow phase (`setup`, `red`, `green`, `review`, `finish`)
375
+ - `next-agent` - Agent to handle next (`sm`, `tea`, `dev`, `reviewer`)
376
+ - `handoff-ready` - Whether current work is complete (`true`/`false`)
377
+
378
+ ### `<acceptance-criteria>`
379
+
380
+ **Purpose:** Track AC completion status in machine-parseable format.
381
+
382
+ **Usage:** Contains `<ac>` child elements.
383
+
384
+ ```markdown
385
+ <acceptance-criteria>
386
+ <ac id="1" status="done">User can create account</ac>
387
+ <ac id="2" status="pending">Email validation works</ac>
388
+ </acceptance-criteria>
389
+ ```
390
+
391
+ ### `<ac>`
392
+
393
+ **Purpose:** Individual acceptance criterion.
394
+
395
+ **Attributes:**
396
+ - `id` - Numeric identifier (1, 2, 3...)
397
+ - `status` - `pending`, `in-progress`, `done`, `blocked`
398
+
399
+ ### `<work-log>`
400
+
401
+ **Purpose:** Container for chronological agent contributions.
402
+
403
+ **Usage:** Contains `<entry>` and `<assessment>` elements.
404
+
405
+ ### `<entry>`
406
+
407
+ **Purpose:** Standard work log entry from any agent.
408
+
409
+ **Attributes:**
410
+ - `agent` - Agent identifier (`sm`, `tea`, `dev`, `reviewer`)
411
+ - `date` - Entry date (YYYY-MM-DD)
412
+ - `phase` - Optional TDD phase (`red`, `green`, `refactor`)
413
+
414
+ ```markdown
415
+ <entry agent="tea" date="2026-02-03" phase="red">
416
+ Wrote failing tests for all ACs.
417
+ </entry>
418
+ ```
419
+
420
+ ### `<assessment>`
421
+
422
+ **Purpose:** Formal verdict from Reviewer agent.
423
+
424
+ **Attributes:**
425
+ - `agent` - Must be `reviewer`
426
+ - `verdict` - `approved`, `rejected`, `needs-work`
427
+
428
+ ```markdown
429
+ <assessment agent="reviewer" verdict="approved">
430
+ All ACs verified, code follows patterns.
431
+ </assessment>
432
+ ```
433
+
434
+ **See also:** `guides/session-schema.md` for complete session file schema.
435
+
436
+ ---
437
+
438
+ ## Skill Tags
439
+
440
+ Tags used in skill files (`skills/{name}/SKILL.md`) for command documentation.
441
+
442
+ ### `<run>`
443
+
444
+ **Purpose:** The exact command to execute for a skill command.
445
+
446
+ **Usage:** One per command, contains shell command.
447
+
448
+ ```markdown
449
+ <run>
450
+ .pennyfarthing/scripts/sprint/sprint-status.sh [filter]
451
+ </run>
452
+ ```
453
+
454
+ ### `<args>`
455
+
456
+ **Purpose:** Document command arguments in table format.
457
+
458
+ **Usage:** Follows `<run>`, contains markdown table.
459
+
460
+ ```markdown
461
+ <args>
462
+ | Arg | Required | Description |
463
+ |-----|----------|-------------|
464
+ | `filter` | No | Filter by status: `todo`, `done` |
465
+ </args>
466
+ ```
467
+
468
+ ### `<example>`
469
+
470
+ **Purpose:** Show command usage with expected output.
471
+
472
+ **Usage:** Realistic invocation followed by commented output.
473
+
474
+ ```markdown
475
+ <example>
476
+ .pennyfarthing/scripts/sprint/check-story.sh MSSCI-12038
477
+ # Returns: {"type": "story", "available": true}
478
+ </example>
479
+ ```
480
+
481
+ ### `<when>`
482
+
483
+ **Purpose:** Document conditions for using a command and next steps.
484
+
485
+ **Usage:** Trigger conditions or follow-up actions.
486
+
487
+ ```markdown
488
+ <when>
489
+ - Starting new development work
490
+ - After promote, create Jira epic with `/jira create epic`
491
+ </when>
492
+ ```
493
+
494
+ ### `<agent-activation>`
495
+
496
+ **Purpose:** Command to load agent persona before using skill.
497
+
498
+ **Usage:** Shell command for agent activation.
499
+
500
+ ```markdown
501
+ <agent-activation>
502
+ Load SM persona first:
503
+ ```bash
504
+ d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/agent-session.sh" start "sm"
505
+ ```
506
+ </agent-activation>
507
+ ```
508
+
509
+ **See also:** `guides/skill-schema.md` for complete skill file schema.
510
+
511
+ ---
512
+
513
+ ## Workflow Step Tags
514
+
515
+ Tags used in workflow step files (`workflows/{name}/steps/step-*.md`) for BikeLane navigation.
516
+
517
+ ### `<step-meta>`
518
+
519
+ **Purpose:** Machine-readable step metadata for workflow navigation.
520
+
521
+ **Usage:** Required at top of every step file.
522
+
523
+ ```markdown
524
+ <step-meta>
525
+ number: 1
526
+ name: initialize
527
+ gate: false
528
+ next: step-02-context
529
+ </step-meta>
530
+ ```
531
+
532
+ **Fields:**
533
+ - `number` - Step number (integer)
534
+ - `name` - Step identifier (kebab-case)
535
+ - `gate` - Whether step has checkpoint (boolean)
536
+ - `next` - Next step filename (optional)
537
+
538
+ ### `<purpose>`
539
+
540
+ **Purpose:** Explain what the step accomplishes.
541
+
542
+ **Usage:** Clear, concise goal statement.
543
+
544
+ ```markdown
545
+ <purpose>
546
+ Set up the architecture session by gathering inputs and establishing context.
547
+ </purpose>
548
+ ```
549
+
550
+ ### `<prerequisites>`
551
+
552
+ **Purpose:** What must be true before starting this step.
553
+
554
+ **Usage:** Bullet list of requirements.
555
+
556
+ ```markdown
557
+ <prerequisites>
558
+ - PRD document exists
559
+ - Previous step completed
560
+ </prerequisites>
561
+ ```
562
+
563
+ ### `<instructions>`
564
+
565
+ **Purpose:** Step-by-step execution guide.
566
+
567
+ **Usage:** Numbered list of actions.
568
+
569
+ ```markdown
570
+ <instructions>
571
+ 1. Read the PRD document
572
+ 2. Identify architectural concerns
573
+ 3. Document recommendation
574
+ </instructions>
575
+ ```
576
+
577
+ ### `<actions>`
578
+
579
+ **Purpose:** Specific file and script operations.
580
+
581
+ **Usage:** Prefixed bullet list (Check:, Read:, Write:, Run:).
582
+
583
+ ```markdown
584
+ <actions>
585
+ - Read: `{planning_artifacts}/*prd*.md`
586
+ - Write: `{output_file}` with session content
587
+ </actions>
588
+ ```
589
+
590
+ ### `<collaboration-menu>`
591
+
592
+ **Purpose:** Present user options after step completion.
593
+
594
+ **Usage:** Standard menu with keyboard shortcuts.
595
+
596
+ ```markdown
597
+ <collaboration-menu>
598
+ - **[C] Continue** - Proceed to next step
599
+ - **[R] Revise** - Make changes
600
+ - **[H] Help** - Get guidance
601
+ </collaboration-menu>
602
+ ```
603
+
604
+ ### `<next-step>`
605
+
606
+ **Purpose:** Explicit navigation to the next step.
607
+
608
+ **Usage:** Instruction on which file to load.
609
+
610
+ ```markdown
611
+ <next-step>
612
+ After gate passes, proceed to step-02-context.md
613
+ </next-step>
614
+ ```
615
+
616
+ **See also:** `guides/workflow-step-schema.md` for complete workflow step schema.
617
+
618
+ ---
619
+
328
620
  ## Adding New Tags
329
621
 
330
622
  Before adding a new tag type:
@@ -2,14 +2,17 @@
2
2
  # Context circuit breaker hook: Block tool execution at 85% context usage
3
3
  # Called by Claude Code before tool calls (PreToolUse)
4
4
  #
5
- # Input: JSON via stdin with tool_name, tool_input
5
+ # Input: JSON via stdin with tool_name, tool_input, session_id
6
6
  # Output: Exit 0 to allow, Exit 2 to block (stderr shown to Claude)
7
7
  #
8
8
  # This hook provides a hard stop when context is critically high,
9
9
  # unlike context-warning.sh which only warns.
10
+ #
11
+ # When triggered, automatically saves the active agent to a checkpoint
12
+ # so /continue-session can restore it with FULL tier.
10
13
 
11
- # Read and discard stdin (required by hook protocol)
12
- cat > /dev/null
14
+ # Read stdin to get session_id (required by hook protocol)
15
+ INPUT=$(cat)
13
16
 
14
17
  # Script location for sibling script references
15
18
  SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
@@ -34,6 +37,28 @@ CRITICAL_THRESHOLD="${CRITICAL_THRESHOLD:-80}"
34
37
 
35
38
  # Check if at or above critical threshold
36
39
  if [[ "$CONTEXT_PERCENT" -ge "$CRITICAL_THRESHOLD" ]] 2>/dev/null; then
40
+ # Auto-save active agent to checkpoint before blocking
41
+ # This allows /continue-session to restore with FULL tier
42
+ source "$SCRIPT_DIR/../lib/checkpoint.sh" 2>/dev/null || true
43
+
44
+ # Get session_id from input JSON
45
+ SESSION_ID=""
46
+ if command -v jq &>/dev/null && [[ -n "$INPUT" ]]; then
47
+ SESSION_ID=$(echo "$INPUT" | jq -r '.session_id // empty' 2>/dev/null)
48
+ fi
49
+
50
+ # Look up active agent for this session
51
+ ACTIVE_AGENT=""
52
+ AGENT_FILE="${CLAUDE_PROJECT_DIR:-.}/.session/agents/${SESSION_ID}"
53
+ if [[ -n "$SESSION_ID" && -f "$AGENT_FILE" ]]; then
54
+ ACTIVE_AGENT=$(cat "$AGENT_FILE" 2>/dev/null)
55
+ fi
56
+
57
+ # Save agent checkpoint if we found one
58
+ if [[ -n "$ACTIVE_AGENT" ]]; then
59
+ checkpoint_save "circuit_breaker_agent" "$ACTIVE_AGENT" 2>/dev/null || true
60
+ fi
61
+
37
62
  # Send error message to stderr (Claude will see this)
38
63
  cat >&2 << EOF
39
64
  CONTEXT CIRCUIT BREAKER TRIGGERED
@@ -41,16 +66,26 @@ CONTEXT CIRCUIT BREAKER TRIGGERED
41
66
  Context usage: ${CONTEXT_PERCENT}% - CRITICAL (threshold: ${CRITICAL_THRESHOLD}%)
42
67
 
43
68
  Tool execution BLOCKED. You must stop and hand off.
69
+ EOF
70
+
71
+ # Include agent info if available
72
+ if [[ -n "$ACTIVE_AGENT" ]]; then
73
+ cat >&2 << EOF
74
+
75
+ Active agent saved: ${ACTIVE_AGENT}
76
+ The agent will be restored with FULL context when you run /continue-session.
77
+ EOF
78
+ fi
79
+
80
+ cat >&2 << EOF
44
81
 
45
82
  Required actions:
46
- 1. Save checkpoint: Run checkpoint_save "{phase}" "{work_summary}"
47
- 2. Update session file with current progress
48
- 3. Commit any pending changes
49
- 4. Hand off to next agent OR tell user to start fresh session
83
+ 1. Commit any pending changes
84
+ 2. Tell user to start fresh session with /continue-session
50
85
 
51
86
  DO NOT attempt further tool calls. This is a hard stop.
52
87
 
53
- To resume later: /continue-session (story 3-4)
88
+ To resume later: /continue-session
54
89
  EOF
55
90
  # Exit 2 blocks the tool execution
56
91
  exit 2
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env zsh
2
+ # Schema Validation Hook
3
+ # Validates XML schema for session, skill, and workflow step files on Write operations
4
+ # Called by Claude Code PreToolUse hook
5
+ #
6
+ # Input: JSON via stdin with tool_name, tool_input
7
+ # Output: JSON with decision (allow/deny)
8
+
9
+ set -euo pipefail
10
+
11
+ # Find script directory (zsh compatible)
12
+ SCRIPT_DIR="${0:A:h}"
13
+ source "$SCRIPT_DIR/../lib/find-root.sh"
14
+
15
+ # Set PYTHONPATH for pennyfarthing_scripts
16
+ PENNYFARTHING_SCRIPTS=""
17
+ if [[ -d "$PROJECT_ROOT/pennyfarthing" ]]; then
18
+ # Dogfooding: framework inlined in orchestrator
19
+ PENNYFARTHING_SCRIPTS="$PROJECT_ROOT/pennyfarthing"
20
+ elif [[ -d "$PROJECT_ROOT/node_modules/@pennyfarthing/core" ]]; then
21
+ # Normal install
22
+ PENNYFARTHING_SCRIPTS="$PROJECT_ROOT/node_modules/@pennyfarthing/core"
23
+ fi
24
+
25
+ if [[ -n "$PENNYFARTHING_SCRIPTS" ]]; then
26
+ export PYTHONPATH="$PENNYFARTHING_SCRIPTS:${PYTHONPATH:-}"
27
+ fi
28
+
29
+ # Run Python validation hook
30
+ python3 -m pennyfarthing_scripts.schema_validation_hook
@@ -1,12 +1,13 @@
1
1
  #!/usr/bin/env bash
2
- # Shared utility: Find project root by walking up to .pennyfarthing/
2
+ # Shared utility: Find project root
3
3
  #
4
- # Usage:
5
- # source "$SCRIPT_DIR/../lib/find-root.sh"
6
- # # PROJECT_ROOT is now set
4
+ # Resolution order:
5
+ # 1. Honor explicit PROJECT_ROOT override (from Claude Code or user)
6
+ # 2. BASH_SOURCE derivation (auto-detect caller's location)
7
+ # 3. PWD walk looking for .pennyfarthing/ (fallback)
7
8
  #
8
- # Or simply:
9
- # source /path/to/find-root.sh
9
+ # Usage:
10
+ # source "$(dirname "${BASH_SOURCE[0]}")/../lib/find-root.sh"
10
11
  # # PROJECT_ROOT is now set
11
12
 
12
13
  # Allow explicit override
@@ -15,7 +16,31 @@ if [[ -n "${PROJECT_ROOT:-}" ]]; then
15
16
  return 0 2>/dev/null || exit 0
16
17
  fi
17
18
 
18
- # Walk up from PWD looking for .pennyfarthing/
19
+ # BASH_SOURCE approach: derive from caller's location
20
+ # BASH_SOURCE[1] is the script that sourced us, BASH_SOURCE[0] is this file
21
+ _caller_script="${BASH_SOURCE[1]:-}"
22
+ if [[ -n "$_caller_script" ]]; then
23
+ _real_dir="$(cd "$(dirname "$_caller_script")" && pwd -P)"
24
+ if [[ "$_real_dir" == */pennyfarthing-dist/scripts/* ]] || \
25
+ [[ "$_real_dir" == */.pennyfarthing/scripts/* ]]; then
26
+ # Extract package root from path
27
+ _pkg="${_real_dir%/scripts/*}"
28
+ _pkg="${_pkg%/pennyfarthing-dist}"
29
+ _pkg="${_pkg%/.pennyfarthing}"
30
+ if [[ "$_pkg" == */node_modules/* ]]; then
31
+ PROJECT_ROOT="${_pkg%/node_modules/*}"
32
+ else
33
+ PROJECT_ROOT="$_pkg"
34
+ fi
35
+ unset _real_dir _pkg _caller_script
36
+ export PROJECT_ROOT
37
+ return 0 2>/dev/null || exit 0
38
+ fi
39
+ unset _real_dir
40
+ fi
41
+ unset _caller_script
42
+
43
+ # Fallback: walk up from PWD looking for .pennyfarthing/
19
44
  _d="$PWD"
20
45
  while [[ ! -d "$_d/.pennyfarthing" ]] && [[ "$_d" != "/" ]]; do
21
46
  _d="$(dirname "$_d")"
@@ -6,6 +6,10 @@ allowed_tools: [Read, Glob, Grep, Task]
6
6
 
7
7
  # Agentic Patterns Skill
8
8
 
9
+ <run>When designing agent behavior, debugging agent failures, improving agent reliability.</run>
10
+
11
+ <output>Core reasoning patterns for building effective LLM agents. Includes ReAct, Plan-and-Execute, Self-Reflection, confidence calibration, error recovery, multi-agent coordination, and context management strategies.</output>
12
+
9
13
  **Purpose:** Core reasoning patterns for building effective LLM agents.
10
14
 
11
15
  **Use when:** Designing agent behavior, debugging agent failures, improving agent reliability.
@@ -3,6 +3,24 @@ name: changelog
3
3
  description: Maintain changelogs following Keep a Changelog format. Use when creating release notes, parsing conventional commits for changelog entries, auto-generating changelog sections from git history, or preparing CHANGELOG.md for releases.
4
4
  ---
5
5
 
6
+ <run>
7
+ Commands for changelog maintenance:
8
+ - Parse conventional commits for changelog entries
9
+ - Auto-generate changelog sections from git history
10
+ - Version bump decisions using semantic versioning
11
+ - Create release notes and CHANGELOG.md updates
12
+ </run>
13
+
14
+ <output>
15
+ Changelog entries in Keep a Changelog format:
16
+ - Added (new features from `feat:` commits)
17
+ - Changed (changes from `perf:` commits, breaking changes)
18
+ - Deprecated (features marked for removal)
19
+ - Removed (removed features)
20
+ - Fixed (bug fixes from `fix:` commits)
21
+ - Security (vulnerability fixes)
22
+ </output>
23
+
6
24
  # Changelog Management Skill
7
25
 
8
26
  ## When to Use This Skill
@@ -3,7 +3,11 @@ name: code-review
3
3
  description: Code review checklists and patterns for Pennyfarthing. Use when reviewing PRs, self-reviewing code, or checking for common issues before commit.
4
4
  ---
5
5
 
6
- # Code Review Skill
6
+ # Code Review Skill
7
+
8
+ <run>Review code against the checklists below. Focus on authorization, error handling, TypeScript/React patterns, and performance.</run>
9
+
10
+ <output>Code review comments using [MUST FIX], [SUGGESTION], [QUESTION], [NICE] prefixes</output>
7
11
 
8
12
  ## Overview
9
13
 
@@ -6,6 +6,9 @@ allowed_tools: [Read, Glob, Grep, Task]
6
6
 
7
7
  # Context Engineering Skill
8
8
 
9
+ <run>context-engineering</run>
10
+ <output>strategies for managing context windows in long-running agent sessions</output>
11
+
9
12
  **Purpose:** Strategies for managing context windows efficiently in long-running agent sessions.
10
13
 
11
14
  **Use when:** Working on complex tasks, approaching context limits, designing subagent prompts.
@@ -15,7 +15,7 @@ args: "[check|status]"
15
15
  Check if running inside Cyclist visual terminal.
16
16
 
17
17
  <run>
18
- .pennyfarthing/scripts cyclist/is-cyclist.sh
18
+ .pennyfarthing/scripts/cyclist/is-cyclist.sh
19
19
  </run>
20
20
 
21
21
  <output>
@@ -23,7 +23,7 @@ JSON: `{"cyclist": true}` with exit 0 if in Cyclist, `{"cyclist": false}` with e
23
23
  </output>
24
24
 
25
25
  <example>
26
- .pennyfarthing/scripts cyclist/is-cyclist.sh
26
+ .pennyfarthing/scripts/cyclist/is-cyclist.sh
27
27
  # Returns: {"cyclist": true}
28
28
  </example>
29
29
 
@@ -4,6 +4,30 @@ description: Common development patterns, fixes, and gotchas. Use when implement
4
4
  allowed_tools: [Read, Glob, Grep, Task]
5
5
  ---
6
6
 
7
+ <run>
8
+ Reference this skill when implementing features, debugging issues, or avoiding known pitfalls in development. Use these patterns to guide:
9
+ - Working directory management in bash commands
10
+ - TypeScript type system decisions
11
+ - Error handling in Go
12
+ - Test structure and isolation
13
+ - HTTP status code selection
14
+ - Turn-efficient coding practices
15
+ - Background task execution
16
+
17
+ The patterns capture common gotchas and solutions across multiple languages and frameworks.
18
+ </run>
19
+
20
+ <output>
21
+ Following these patterns produces:
22
+ - Reliable bash commands that work regardless of current directory
23
+ - TypeScript builds that pass verbatimModuleSyntax validation
24
+ - Go code with proper error handling and validation
25
+ - Well-isolated, maintainable test suites
26
+ - Consistent HTTP API behavior
27
+ - Faster task completion through turn-efficient techniques
28
+ - Properly tracked background operations
29
+ </output>
30
+
7
31
  # Dev Patterns Skill
8
32
 
9
33
  ## Overview
@@ -5,6 +5,9 @@ description: Validate and save benchmark run results. Use when completing a benc
5
5
 
6
6
  # Finalize Run Skill
7
7
 
8
+ <run>Validates and saves benchmark run results</run>
9
+ <output>JSON with validation success status and saved file path</output>
10
+
8
11
  All runs MUST pass through this skill before saving. This is the guardrail.
9
12
 
10
13
  ## Invocation
@@ -7,6 +7,14 @@ description: Evaluate agent responses using standardized rubrics. Use when scori
7
7
 
8
8
  Canonical evaluation of agent responses. All judging goes through this skill.
9
9
 
10
+ <run>
11
+ Judge is invoked via CLI with `/judge --mode <mode> --data <json>` to evaluate agent responses using standardized rubrics. Modes include solo (single response), compare (two responses), phase-specific modes (SM/TEA/Dev/Reviewer), coherence (chain coherence), swebench (SWE-bench evaluation), and ground-truth (patch comparison).
12
+ </run>
13
+
14
+ <output>
15
+ Judge returns structured JSON output containing evaluation scores, weighted totals, reasoning, and token usage information. Output format varies by mode: solo/compare return individual or comparative scores with dimensions (correctness, depth, quality, persona); phase modes return team evaluations; coherence returns a rating (excellent/good/poor); swebench/ground-truth return deterministic scores via Python scripts. All responses include validation of results and error handling for failed evaluations.
16
+ </output>
17
+
10
18
  ## Invocation
11
19
 
12
20
  ```
@@ -8,6 +8,17 @@ args: "[recipe] [args...]"
8
8
 
9
9
  # /just - Project Task Runner
10
10
 
11
+ <run>
12
+ Main commands:
13
+ - `just --list` - List all available recipes
14
+ - `just <recipe>` - Run a specific recipe (e.g., `just build`, `just test`, `just cyclist`)
15
+ </run>
16
+
17
+ <output>
18
+ - `just --list` outputs a list of available recipes with their descriptions
19
+ - Individual recipe commands output their execution results (build logs, test results, etc.) depending on the recipe
20
+ </output>
21
+
11
22
  `just` is a command runner for project tasks. All commands run from the **project root**.
12
23
 
13
24
  ## Commands
@@ -3,6 +3,22 @@ name: mermaid
3
3
  description: Generate diagrams using Mermaid syntax. Use this skill when creating architecture diagrams, sequence diagrams, ER diagrams, flowcharts, or any visual documentation in markdown files.
4
4
  ---
5
5
 
6
+ <run>
7
+ Generate Mermaid diagrams by writing code blocks with the `mermaid` language identifier in markdown files. Mermaid syntax is rendered natively by GitHub, GitLab, and most markdown editors. Choose the appropriate diagram type (flowchart, sequence, ER, class, or state) based on what you need to visualize.
8
+ </run>
9
+
10
+ <output>
11
+ Mermaid code blocks that render as diagrams. Example output format:
12
+
13
+ ```mermaid
14
+ flowchart TD
15
+ A[Start] --> B[Process]
16
+ B --> C[End]
17
+ ```
18
+
19
+ The diagram renders visually in GitHub, GitLab, and compatible markdown viewers.
20
+ </output>
21
+
6
22
  # Mermaid Diagram Skill
7
23
 
8
24
  ## When to Use This Skill
@@ -6,6 +6,10 @@ allowed_tools: [Read, Glob, Grep, Task]
6
6
 
7
7
  # OTEL Skill - Claude Code Telemetry
8
8
 
9
+ <run>Enable OTEL debug logging and inspect telemetry data to understand span structure, attributes, and correlation patterns.</run>
10
+
11
+ <output>Enriched span data with tool metadata, file information, and correlation IDs for UI visualization and telemetry analysis.</output>
12
+
9
13
  ## Purpose
10
14
 
11
15
  Document the actual OTEL data Claude Code emits. This is ground truth, not speculation.
@@ -5,6 +5,9 @@ description: Manage runtime permission grants - list active grants, add/revoke t
5
5
 
6
6
  # Permission Management Skill
7
7
 
8
+ <run>/permissions</run>
9
+ <output>List all active permission grants</output>
10
+
8
11
  ## Overview
9
12
 
10
13
  Pennyfarthing uses a runtime permission system for tool access control. This skill provides commands to view and manage permission grants.
@@ -7,6 +7,15 @@ description: Run benchmarks to compare persona effectiveness across themes. Use
7
7
 
8
8
  Run benchmarks to compare persona effectiveness.
9
9
 
10
+ <run>
11
+ /persona-benchmark <test-case-id> <persona>
12
+ /persona-benchmark <test-case-id> <persona> [--analyze] [--suite]
13
+ </run>
14
+
15
+ <output>
16
+ Benchmark results saved to `.claude/benchmarks/results/{timestamp}-{persona}-{test-case-id}.yaml` with quantitative and qualitative metrics, or analysis summary when using `--analyze`.
17
+ </output>
18
+
10
19
  ## Usage
11
20
 
12
21
  ```