@windyroad/itil 1.2.0 → 2.0.0-preview.1111
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/.agents/plugins/marketplace.json +12 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +42 -0
- package/README.md +34 -25
- package/agents/hang-off-check.md +34 -34
- package/bin/install.mjs +71 -5
- package/bin/wr-itil-catchup-scan +4 -4
- package/bin/wr-itil-check-deferred-placeholder-staleness +4 -4
- package/bin/wr-itil-check-fail-soft-skip-discipline +4 -4
- package/bin/wr-itil-check-fix-rfc-trace +4 -4
- package/bin/wr-itil-check-locale-discipline +4 -4
- package/bin/wr-itil-check-outbound-responses-staleness +4 -4
- package/bin/wr-itil-check-problems-readme-budget +4 -4
- package/bin/wr-itil-check-rfc-has-stories +4 -4
- package/bin/wr-itil-check-rfc-stories-ratified +4 -4
- package/bin/wr-itil-check-ticket-jtbd-ratification +4 -4
- package/bin/wr-itil-check-upstream-cache-staleness +4 -4
- package/bin/wr-itil-check-upstream-responses +4 -4
- package/bin/wr-itil-classify-readme-drift +4 -4
- package/bin/wr-itil-derive-release-vehicle +4 -4
- package/bin/wr-itil-detect-unratified-stories-maps +4 -4
- package/bin/wr-itil-effort-tally +4 -4
- package/bin/wr-itil-enumerate-postrelease-kv-candidates +4 -4
- package/bin/wr-itil-evaluate-relevance +4 -4
- package/bin/wr-itil-mark-create-gate +4 -4
- package/bin/wr-itil-mark-story-oversight-confirmed +4 -4
- package/bin/wr-itil-migrate-problems-layout +4 -4
- package/bin/wr-itil-migrate-story-status-mirror +4 -4
- package/bin/wr-itil-next-rfc-id +4 -4
- package/bin/wr-itil-plugin-exercise-index +4 -4
- package/bin/wr-itil-plugin-maturity-populate +4 -4
- package/bin/wr-itil-plugin-maturity-render +4 -4
- package/bin/wr-itil-plugin-validate-ci-gate +4 -4
- package/bin/wr-itil-reconcile-readme +4 -4
- package/bin/wr-itil-reconcile-rfcs +4 -4
- package/bin/wr-itil-reconcile-stories +4 -4
- package/bin/wr-itil-reconcile-story-maps +4 -4
- package/bin/wr-itil-render-story-map +4 -4
- package/bin/wr-itil-resolve-governance-plugin-dirs +4 -4
- package/bin/wr-itil-skill-invocations +4 -4
- package/bin/wr-itil-story-map-edit +4 -4
- package/bin/wr-itil-story-map-query +4 -4
- package/bin/wr-itil-update-jtbd-references-section +4 -4
- package/bin/wr-itil-update-problem-references-section +4 -4
- package/bin/wr-itil-update-problem-rfcs-section +4 -4
- package/bin/wr-itil-update-rfc-commits-section +4 -4
- package/bin/wr-itil-update-rfc-references-section +4 -4
- package/bin/wr-itil-verify-iter-summary +4 -4
- package/hooks/itil-assistant-output-gate.sh +3 -3
- package/hooks/itil-assistant-output-review.sh +5 -5
- package/hooks/itil-bash-polling-antipattern-detect.sh +11 -11
- package/hooks/itil-changeset-discipline.sh +24 -24
- package/hooks/itil-claude-space-protection.sh +21 -14
- package/hooks/itil-codex-dispatch.sh +164 -0
- package/hooks/itil-commit-trailer-transition-advisory.sh +11 -11
- package/hooks/itil-correction-detect.sh +8 -8
- package/hooks/itil-deferral-cadence-gate.sh +23 -23
- package/hooks/itil-fictional-defer-detect.sh +16 -16
- package/hooks/itil-fix-title-lifecycle-advisory.sh +11 -11
- package/hooks/itil-mid-loop-ask-detect.sh +14 -14
- package/hooks/itil-no-implement-draft-gate.sh +18 -18
- package/hooks/itil-pending-questions-surface.sh +11 -11
- package/hooks/itil-readme-refresh-discipline.sh +27 -27
- package/hooks/itil-rfc-oversight-nudge.sh +7 -7
- package/hooks/itil-rfc-trailer-advisory.sh +28 -28
- package/hooks/itil-runtime-sid-marker.sh +11 -11
- package/hooks/itil-story-mirror-migration-nudge.sh +7 -7
- package/hooks/lib/block-list.sh +17 -17
- package/hooks/lib/changeset-detect.sh +27 -27
- package/hooks/lib/claude-space-gate.sh +23 -15
- package/hooks/lib/command-detect.sh +12 -12
- package/hooks/lib/create-gate.sh +9 -39
- package/hooks/lib/detectors.sh +12 -12
- package/hooks/lib/readme-refresh-detect.sh +51 -51
- package/hooks/lib/runtime-sid.sh +12 -12
- package/hooks/lib/session-id.sh +28 -28
- package/hooks/lib/session-marker.sh +1 -1
- package/hooks/lib/staging-detect.sh +13 -13
- package/hooks/manage-problem-enforce-create.sh +16 -27
- package/hooks/p057-staging-trap-detect.sh +18 -18
- package/hooks/pre-publish-intake-gate.sh +5 -5
- package/hooks/staleness-check.sh +6 -6
- package/hooks-codex/hooks.json +57 -0
- package/lib/check-deferred-placeholder-staleness.sh +10 -10
- package/lib/check-outbound-responses-staleness.sh +2 -2
- package/lib/check-upstream-cache-staleness.sh +2 -2
- package/lib/derive-first-dispatch.sh +19 -19
- package/lib/enumerate-postrelease-kv-candidates.sh +18 -18
- package/lib/migrate-problems-layout.sh +12 -12
- package/lib/story-oversight.sh +27 -27
- package/package.json +16 -3
- package/scripts/catchup-scan.sh +25 -25
- package/scripts/check-fail-soft-skip-discipline.sh +10 -10
- package/scripts/check-fix-rfc-trace.sh +8 -8
- package/scripts/check-locale-discipline.sh +13 -13
- package/scripts/check-problems-readme-budget.sh +12 -12
- package/scripts/check-rfc-has-stories.sh +7 -7
- package/scripts/check-rfc-rejected-alternatives.sh +11 -11
- package/scripts/check-rfc-stories-ratified.sh +9 -9
- package/scripts/check-ticket-jtbd-ratification.sh +10 -10
- package/scripts/check-upstream-responses.sh +22 -22
- package/scripts/classify-readme-drift.sh +13 -13
- package/scripts/codex-agent.mjs +104 -0
- package/scripts/derive-release-vehicle.sh +23 -23
- package/scripts/detect-unoversighted-rfcs.sh +3 -3
- package/scripts/detect-unratified-stories-maps.sh +5 -5
- package/scripts/effort-tally.sh +10 -10
- package/scripts/evaluate-relevance.sh +16 -16
- package/scripts/mark-create-gate.sh +4 -4
- package/scripts/mark-story-oversight-confirmed.sh +14 -14
- package/scripts/migrate-story-status-mirror.sh +6 -6
- package/scripts/next-rfc-id.sh +5 -5
- package/scripts/plugin-exercise-index.sh +26 -26
- package/scripts/plugin-maturity-populate.sh +38 -38
- package/scripts/plugin-maturity-render.sh +26 -26
- package/scripts/plugin-validate-ci-gate.sh +14 -14
- package/scripts/reconcile-readme.sh +23 -23
- package/scripts/reconcile-rfcs.sh +13 -13
- package/scripts/reconcile-stories.sh +12 -12
- package/scripts/reconcile-story-maps.sh +6 -6
- package/scripts/render-story-map.mjs +24 -24
- package/scripts/render-story-map.sh +3 -3
- package/scripts/resolve-governance-plugin-dirs.sh +10 -10
- package/scripts/run-check-deferred-placeholder-staleness.sh +3 -3
- package/scripts/run-check-outbound-responses-staleness.sh +3 -3
- package/scripts/run-check-upstream-cache-staleness.sh +3 -3
- package/scripts/run-enumerate-postrelease-kv-candidates.sh +3 -3
- package/scripts/run-migrate-problems-layout.sh +3 -3
- package/scripts/skill-invocations.sh +29 -29
- package/scripts/story-map-edit.mjs +6 -6
- package/scripts/story-map-edit.sh +3 -3
- package/scripts/story-map-query.mjs +8 -8
- package/scripts/story-map-query.sh +3 -3
- package/scripts/update-jtbd-references-section.sh +8 -8
- package/scripts/update-problem-references-section.sh +12 -12
- package/scripts/update-problem-rfcs-section.sh +9 -9
- package/scripts/update-rfc-commits-section.sh +7 -7
- package/scripts/update-rfc-references-section.sh +3 -3
- package/scripts/update-story-references-section.sh +5 -5
- package/scripts/verify-iter-summary.sh +3 -3
- package/skills/capture-problem/REFERENCE.md +33 -33
- package/skills/capture-problem/SKILL.md +108 -108
- package/skills/capture-problem/agents/openai.yaml +3 -0
- package/skills/capture-rfc/SKILL.md +21 -323
- package/skills/capture-rfc/agents/openai.yaml +3 -0
- package/skills/capture-story/SKILL.md +65 -65
- package/skills/capture-story/agents/openai.yaml +3 -0
- package/skills/capture-story-map/SKILL.md +31 -31
- package/skills/capture-story-map/agents/openai.yaml +3 -0
- package/skills/check-upstream-responses/SKILL.md +38 -38
- package/skills/check-upstream-responses/agents/openai.yaml +3 -0
- package/skills/close-incident/SKILL.md +25 -25
- package/skills/close-incident/agents/openai.yaml +3 -0
- package/skills/link-incident/SKILL.md +22 -22
- package/skills/link-incident/agents/openai.yaml +3 -0
- package/skills/list-incidents/SKILL.md +9 -9
- package/skills/list-incidents/agents/openai.yaml +3 -0
- package/skills/list-problems/SKILL.md +17 -17
- package/skills/list-problems/agents/openai.yaml +3 -0
- package/skills/list-stories/SKILL.md +23 -23
- package/skills/list-stories/agents/openai.yaml +3 -0
- package/skills/list-story-maps/SKILL.md +9 -9
- package/skills/list-story-maps/agents/openai.yaml +3 -0
- package/skills/manage-incident/SKILL.md +59 -59
- package/skills/manage-incident/agents/openai.yaml +3 -0
- package/skills/manage-problem/SKILL.md +222 -222
- package/skills/manage-problem/agents/openai.yaml +3 -0
- package/skills/manage-rfc/SKILL.md +62 -62
- package/skills/manage-rfc/agents/openai.yaml +3 -0
- package/skills/manage-story/SKILL.md +49 -49
- package/skills/manage-story/agents/openai.yaml +3 -0
- package/skills/manage-story-map/SKILL.md +30 -30
- package/skills/manage-story-map/agents/openai.yaml +3 -0
- package/skills/mitigate-incident/SKILL.md +40 -40
- package/skills/mitigate-incident/agents/openai.yaml +3 -0
- package/skills/reconcile-readme/SKILL.md +28 -28
- package/skills/reconcile-readme/agents/openai.yaml +3 -0
- package/skills/reconcile-stories/SKILL.md +17 -17
- package/skills/reconcile-stories/agents/openai.yaml +3 -0
- package/skills/reconcile-story-maps/SKILL.md +11 -11
- package/skills/reconcile-story-maps/agents/openai.yaml +3 -0
- package/skills/report-upstream/SKILL.md +73 -73
- package/skills/report-upstream/agents/openai.yaml +3 -0
- package/skills/restore-incident/SKILL.md +28 -28
- package/skills/restore-incident/agents/openai.yaml +3 -0
- package/skills/review-problems/SKILL.md +129 -129
- package/skills/review-problems/agents/openai.yaml +3 -0
- package/skills/scaffold-intake/SKILL.md +26 -26
- package/skills/scaffold-intake/agents/openai.yaml +3 -0
- package/skills/transition-problem/SKILL.md +85 -85
- package/skills/transition-problem/agents/openai.yaml +3 -0
- package/skills/transition-problems/SKILL.md +69 -69
- package/skills/transition-problems/agents/openai.yaml +3 -0
- package/skills/update-upstream/SKILL.md +97 -97
- package/skills/update-upstream/agents/openai.yaml +3 -0
- package/skills/work-problem/SKILL.md +42 -42
- package/skills/work-problem/agents/openai.yaml +3 -0
- package/skills/work-problems/SKILL.md +327 -327
- package/skills/work-problems/agents/openai.yaml +3 -0
- package/skills-codex/capture-problem/REFERENCE.md +139 -0
- package/skills-codex/capture-problem/SKILL.md +438 -0
- package/skills-codex/capture-problem/agents/openai.yaml +3 -0
- package/skills-codex/capture-rfc/SKILL.md +45 -0
- package/skills-codex/capture-rfc/agents/openai.yaml +3 -0
- package/skills-codex/capture-story/SKILL.md +407 -0
- package/skills-codex/capture-story/agents/openai.yaml +3 -0
- package/skills-codex/capture-story-map/SKILL.md +286 -0
- package/skills-codex/capture-story-map/agents/openai.yaml +3 -0
- package/skills-codex/check-upstream-responses/SKILL.md +160 -0
- package/skills-codex/check-upstream-responses/agents/openai.yaml +3 -0
- package/skills-codex/close-incident/SKILL.md +192 -0
- package/skills-codex/close-incident/agents/openai.yaml +3 -0
- package/skills-codex/link-incident/SKILL.md +173 -0
- package/skills-codex/link-incident/agents/openai.yaml +3 -0
- package/skills-codex/list-incidents/SKILL.md +92 -0
- package/skills-codex/list-incidents/agents/openai.yaml +3 -0
- package/skills-codex/list-problems/SKILL.md +126 -0
- package/skills-codex/list-problems/agents/openai.yaml +3 -0
- package/skills-codex/list-stories/SKILL.md +170 -0
- package/skills-codex/list-stories/agents/openai.yaml +3 -0
- package/skills-codex/list-story-maps/SKILL.md +104 -0
- package/skills-codex/list-story-maps/agents/openai.yaml +3 -0
- package/skills-codex/manage-incident/SKILL.md +378 -0
- package/skills-codex/manage-incident/agents/openai.yaml +3 -0
- package/skills-codex/manage-problem/SKILL.md +1180 -0
- package/skills-codex/manage-problem/agents/openai.yaml +3 -0
- package/skills-codex/manage-rfc/SKILL.md +314 -0
- package/skills-codex/manage-rfc/agents/openai.yaml +3 -0
- package/skills-codex/manage-story/SKILL.md +284 -0
- package/skills-codex/manage-story/agents/openai.yaml +3 -0
- package/skills-codex/manage-story-map/SKILL.md +198 -0
- package/skills-codex/manage-story-map/agents/openai.yaml +3 -0
- package/skills-codex/mitigate-incident/SKILL.md +239 -0
- package/skills-codex/mitigate-incident/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-readme/SKILL.md +175 -0
- package/skills-codex/reconcile-readme/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-stories/SKILL.md +124 -0
- package/skills-codex/reconcile-stories/agents/openai.yaml +3 -0
- package/skills-codex/reconcile-story-maps/SKILL.md +81 -0
- package/skills-codex/reconcile-story-maps/agents/openai.yaml +3 -0
- package/skills-codex/report-upstream/SKILL.md +716 -0
- package/skills-codex/report-upstream/agents/openai.yaml +3 -0
- package/skills-codex/restore-incident/SKILL.md +216 -0
- package/skills-codex/restore-incident/agents/openai.yaml +3 -0
- package/skills-codex/review-problems/SKILL.md +524 -0
- package/skills-codex/review-problems/agents/openai.yaml +3 -0
- package/skills-codex/scaffold-intake/SKILL.md +209 -0
- package/skills-codex/scaffold-intake/agents/openai.yaml +3 -0
- package/skills-codex/scaffold-intake/templates/CONTRIBUTING.md.tmpl +31 -0
- package/skills-codex/scaffold-intake/templates/SECURITY.md.tmpl +39 -0
- package/skills-codex/scaffold-intake/templates/SUPPORT.md.tmpl +32 -0
- package/skills-codex/scaffold-intake/templates/config.yml.tmpl +8 -0
- package/skills-codex/scaffold-intake/templates/problem-report.yml.tmpl +114 -0
- package/skills-codex/transition-problem/SKILL.md +371 -0
- package/skills-codex/transition-problem/agents/openai.yaml +3 -0
- package/skills-codex/transition-problems/SKILL.md +310 -0
- package/skills-codex/transition-problems/agents/openai.yaml +3 -0
- package/skills-codex/update-upstream/SKILL.md +583 -0
- package/skills-codex/update-upstream/agents/openai.yaml +3 -0
- package/skills-codex/work-problem/SKILL.md +160 -0
- package/skills-codex/work-problem/agents/openai.yaml +3 -0
- package/skills-codex/work-problems/SKILL.md +58 -0
- package/skills-codex/work-problems/agents/openai.yaml +3 -0
- package/templates/story-map.css +1 -1
- package/bin/wr-itil-mark-rfc-capture-gate +0 -51
- package/scripts/mark-rfc-capture-gate.sh +0 -32
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wr-itil:list-stories
|
|
3
|
+
description: List INVEST-shaped story tickets from docs/stories/ as a markdown table. Read-only display — no edits, no interaction. Optional `--rfc RFC-<NNN>` filter to surface a specific RFC's ordered story list per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Phase 2.
|
|
4
|
+
allowed-tools: Read, Bash, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- Generated from the runtime-neutral skill source. Do not edit. -->
|
|
8
|
+
|
|
9
|
+
> Codex runtime note: use `request_user_input` only where this contract
|
|
10
|
+
> explicitly requires a human decision. Resolve `<itil-plugin-root>` from
|
|
11
|
+
> this installed `SKILL.md`: it is two directories above the skill
|
|
12
|
+
> directory. Run bundled commands from `<itil-plugin-root>/bin/`; do not
|
|
13
|
+
> search the adopter repository or rely on those commands being on `PATH`.
|
|
14
|
+
> Spawn `wr-itil:hang-off-check` with the native Codex subagent tool, wait
|
|
15
|
+
> for it, and close that same agent.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# List Stories
|
|
19
|
+
|
|
20
|
+
Display the story corpus from `docs/stories/` as a markdown table. Read-only view of the story tier per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Phase 2; this skill does not edit, transition, close, or create stories. For those operations, use the dedicated skills (`/wr-itil:capture-story`, `/wr-itil:manage-story`).
|
|
21
|
+
|
|
22
|
+
Mirrors the `/wr-itil:list-problems` precedent (the "Problem 071: Argument-based skill subcommands are not discoverable in Codex autocomplete" problem phased-landing split per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended Skill Granularity rule: one skill per distinct user intent). The list-stories surface separates the read-only view from the heavyweight `/wr-itil:manage-story list` subcommand route (which is itself a candidate for phased-landing split in a future slice).
|
|
23
|
+
|
|
24
|
+
## Scope
|
|
25
|
+
|
|
26
|
+
Stories live under `docs/stories/<state>/STORY-<NNN>-<slug>.md` in lifecycle subdirectories:
|
|
27
|
+
|
|
28
|
+
- `docs/stories/draft/*.md` — draft (captured via `/wr-itil:capture-story`; pre-INVEST-acceptance)
|
|
29
|
+
- `docs/stories/accepted/*.md` — accepted (INVEST-shape verified per I10; pre-implementation)
|
|
30
|
+
- `docs/stories/in-progress/*.md` — in-progress (implementation underway; auto-transitioned from accepted on first `Refs: STORY-<NNN>` commit AFTER the capture commit per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 292)
|
|
31
|
+
- `docs/stories/done/*.md` — done (acceptance-criteria all-ticked + linked RFC closes; auto-transitioned from in-progress)
|
|
32
|
+
- `docs/stories/archived/*.md` — archived (closed without completion; manual transition)
|
|
33
|
+
|
|
34
|
+
Per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule I11 invariant (Phase 2 deferred): stories MUST NOT carry a WSJF field. Legacy RFC files retain their ordered frontmatter `stories:` array. Under the "A release row is the RFC, and the map is the approval surface" architecture rule, newer RFCs are release rows and their story sequence comes from the row's cards on the map, NOT from per-story WSJF.
|
|
35
|
+
|
|
36
|
+
## Argument grammar
|
|
37
|
+
|
|
38
|
+
**Positional (optional)**: `--rfc RFC-<NNN>` flag-style filter. When provided, the display lists ONLY stories that trace to the named RFC, IN THE ORDER specified by the RFC's frontmatter `stories:` array per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 259. Without the flag, all stories across all lifecycle states are listed grouped by state.
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
/wr-itil:list-stories # All stories, grouped by lifecycle state
|
|
42
|
+
/wr-itil:list-stories --rfc the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design # Only stories under the ": docs/problems/ flat layout migration — per-state subdirs + adopter auto-migration" release design, in execution order
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Steps
|
|
46
|
+
|
|
47
|
+
### 1. Check `docs/stories/README.md` cache freshness
|
|
48
|
+
|
|
49
|
+
Reuse the same `git log`-based freshness test as `/wr-itil:list-problems` Step 1 (per the "Problem 031: `manage-problem work` incorrectly determines cache is fresh" problem — filesystem mtime is unreliable in worktrees and fresh checkouts):
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
readme_commit=$(git log -1 --format=%H -- docs/stories/README.md 2>/dev/null)
|
|
53
|
+
if [ -z "$readme_commit" ] || \
|
|
54
|
+
git log --oneline "${readme_commit}..HEAD" -- 'docs/stories/*/*.md' ':!docs/stories/README.md' 2>/dev/null | grep -q .; then
|
|
55
|
+
echo "stale"
|
|
56
|
+
fi
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Cache fresh** (no output AND no `--rfc` filter): read `docs/stories/README.md` directly — display the Story Rankings section + Done section as-is. Note in the output: "Using cached ranking from [timestamp in README.md]".
|
|
60
|
+
|
|
61
|
+
**Cache stale OR `--rfc` filter provided OR `README.md` missing**: run the live scan in Step 2. (The filter case always live-scans because the README cache is whole-corpus ranking, not a per-RFC filtered view.)
|
|
62
|
+
|
|
63
|
+
### 2. Live scan (cache-stale fallback OR filter mode)
|
|
64
|
+
|
|
65
|
+
**Unfiltered live scan** — enumerate every state directory:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
ls docs/stories/draft/*.md docs/stories/accepted/*.md docs/stories/in-progress/*.md docs/stories/done/*.md docs/stories/archived/*.md 2>/dev/null
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
For each story file, parse the YAML frontmatter to extract: `story-id`, `status`, `problems`, `jtbd`, `rfcs`, `story-maps`, `estimated-effort`. Read the H1 line for the title.
|
|
72
|
+
|
|
73
|
+
**Filtered live scan** (`--rfc RFC-<NNN>` provided) — resolve a legacy RFC file first; if absent, resolve the release row through the canonical map query:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
shopt -s nullglob
|
|
77
|
+
rfc_files=(docs/rfcs/RFC-<NNN>-*.md)
|
|
78
|
+
rfc_file="${rfc_files[0]:-}"
|
|
79
|
+
shopt -u nullglob
|
|
80
|
+
|
|
81
|
+
if [ -n "$rfc_file" ]; then
|
|
82
|
+
stories_list=$(awk '/^stories:/,/^[a-z]/' "$rfc_file" | grep -oE 'STORY-[0-9]+')
|
|
83
|
+
else
|
|
84
|
+
rfc_rows=$(<itil-plugin-root>/bin/wr-itil-story-map-query find-rfc RFC-<NNN>)
|
|
85
|
+
[ "$rfc_rows" = "[]" ] && echo "RFC-<NNN> not found" >&2 && exit 1
|
|
86
|
+
stories_list=$(grep -oE 'STORY-[0-9]+' <<< "$rfc_rows" | awk '!seen[$0]++')
|
|
87
|
+
fi
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
For each `STORY-<NNN>` in the ordered list, resolve to a file under `docs/stories/*/STORY-<NNN>-*.md` and parse the frontmatter as above. Preserve the legacy array or map-row card ordering in the output.
|
|
91
|
+
|
|
92
|
+
### 3. Display
|
|
93
|
+
|
|
94
|
+
**Unfiltered mode** — render lifecycle-grouped sections:
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
## Draft
|
|
98
|
+
|
|
99
|
+
| ID | Title | Problems | JTBD | RFCs | Story Maps |
|
|
100
|
+
|----|-------|----------|------|------|------------|
|
|
101
|
+
| STORY-<NNN> | <title> | <P<NNN>...> | <JTBD-<NNN>...> | <RFC-<NNN>...> | <STORY-MAP-<NNN>...> |
|
|
102
|
+
|
|
103
|
+
## Accepted
|
|
104
|
+
|
|
105
|
+
| ID | Title | Problems | JTBD | RFCs | Story Maps | Effort | Accepted by |
|
|
106
|
+
|----|-------|----------|------|------|------------|--------|-------------|
|
|
107
|
+
...
|
|
108
|
+
|
|
109
|
+
## In Progress
|
|
110
|
+
|
|
111
|
+
(same shape as Accepted)
|
|
112
|
+
|
|
113
|
+
## Done
|
|
114
|
+
|
|
115
|
+
| ID | Title | Done date | Driving problems |
|
|
116
|
+
|----|-------|-----------|------------------|
|
|
117
|
+
...
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Omit empty sections rather than rendering empty headers. The Estimated Effort column is omitted from the Draft section because effort is deferred at capture and only required at accepted per I10 INVEST Estimable.
|
|
121
|
+
|
|
122
|
+
**The `Approved by` column (the "A release row is the RFC, and the map is the approval surface" architecture rule, Accepted + In Progress sections only).** A story carries no oversight field; approval is its map's. Name the ratified map that approves it, since that is what the human actually looked at, and leave the column empty when no map in the story's `story-maps:` field is ratified. Derive it with `story_is_approved` — never by reading a `human-oversight:` line off the story, which no longer exists.
|
|
123
|
+
|
|
124
|
+
**Filtered mode** (`--rfc RFC-<NNN>`) — render a single ordered table:
|
|
125
|
+
|
|
126
|
+
```markdown
|
|
127
|
+
## Stories under RFC-<NNN>
|
|
128
|
+
|
|
129
|
+
(In execution order per RFC frontmatter `stories:` array.)
|
|
130
|
+
|
|
131
|
+
| Order | ID | Title | Status | Effort |
|
|
132
|
+
|-------|----|-------|--------|--------|
|
|
133
|
+
| 1 | STORY-<NNN> | <title> | <status> | <effort> |
|
|
134
|
+
| 2 | STORY-<NNN> | <title> | <status> | <effort> |
|
|
135
|
+
...
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The Order column makes the execution sequence visible — critical for the working-the-problem flow per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 314 ("read frontmatter `stories:` array (ordered) → pick first not-done story").
|
|
139
|
+
|
|
140
|
+
### 4. Trailing suggestions
|
|
141
|
+
|
|
142
|
+
After the table(s), print one short pointer depending on output:
|
|
143
|
+
|
|
144
|
+
- **Filtered mode + first not-done story exists**: `Run /wr-itil:work-problem to advance the next story under RFC-<NNN> (STORY-<NNN> — <title>).` (Note: working-the-problem traversal per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 300-320 lands in Slice 13.)
|
|
145
|
+
- **Filtered mode + all stories done**: `All stories under RFC-<NNN> are done. Run /wr-itil:manage-rfc <RFC-<NNN>> verifying to transition the RFC.`
|
|
146
|
+
- **Unfiltered mode + Draft section non-empty**: `Run /wr-itil:manage-story <STORY-<NNN>> accepted to advance a draft through INVEST gates.`
|
|
147
|
+
- **Unfiltered mode + only Done section non-empty**: `No active stories. Run /wr-itil:capture-story to draft a new story.`
|
|
148
|
+
|
|
149
|
+
## Ownership boundary
|
|
150
|
+
|
|
151
|
+
`list-stories` does not modify, rename, or commit any files. If the README.md cache is stale, list-stories performs a live scan but does NOT rewrite `docs/stories/README.md` — refreshing the cache is `/wr-itil:manage-story review`'s ownership (Slice 8 lands the review surface). The trailing-suggestion pointer surfaces this boundary.
|
|
152
|
+
|
|
153
|
+
## Related
|
|
154
|
+
|
|
155
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule** — Problem-RFC-Story framework + Phase 2 amendment 2026-05-12 (story tier).
|
|
156
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 259** — RFC frontmatter `stories:` ORDERED array (execution sequence).
|
|
157
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 294** — `/wr-itil:list-stories` skill description with `--rfc RFC-<NNN>` filter.
|
|
158
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule lines 300-320** — working-the-problem flow (Slice 13 lands the traversal).
|
|
159
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 253** — I11 no-WSJF-leak invariant (Phase 2).
|
|
160
|
+
- **the "Problem 071: Argument-based skill subcommands are not discoverable in Codex autocomplete" problem** — phased-landing split precedent (list-problems split from manage-problem list).
|
|
161
|
+
- **the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule amended** — Skill Granularity rule.
|
|
162
|
+
- **the "Problem lifecycle — add a Verification Pending status between Known Error and Closed" architecture rule** — lifecycle conventions (story lifecycle mirrors problem lifecycle).
|
|
163
|
+
- **the "Skill testing strategy — contract-assertion bats companion to" architecture rule** — contract-assertion bats pattern.
|
|
164
|
+
- **the "Problem 031: `manage-problem work` incorrectly determines cache is fresh" problem** — git-history freshness check rationale.
|
|
165
|
+
- **the ": Decompose a Fix Into Coordinated Changes" user outcome** — Decompose a Fix Into Coordinated Changes. The list view supports the working-the-problem flow that operationalises the ": Decompose a Fix Into Coordinated Changes" user outcome's "first-class entity" Desired Outcome.
|
|
166
|
+
- **the ": Progress the Backlog While I'm Away" user outcome** — Progress the Backlog While I'm Away. Filtered mode (`--rfc`) feeds the AFK orchestrator's per-RFC iter dispatch (Slice 13).
|
|
167
|
+
- `<itil-plugin-root>/skills/list-problems/SKILL.md` — direct precedent shape.
|
|
168
|
+
- `<itil-plugin-root>/skills/list-incidents/SKILL.md` — sibling list-* skill at the incident tier.
|
|
169
|
+
|
|
170
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wr-itil:list-story-maps
|
|
3
|
+
description: List story-map artefacts from docs/story-maps/ as a markdown table. Read-only display — no edits, no interaction. Renders <meta> block data (problems / rfcs / jtbd / status) from each HTML map per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule § Phase 2 encoding amendment 2026-05-12.
|
|
4
|
+
allowed-tools: Read, Bash, Grep, Glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- Generated from the runtime-neutral skill source. Do not edit. -->
|
|
8
|
+
|
|
9
|
+
> Codex runtime note: use `request_user_input` only where this contract
|
|
10
|
+
> explicitly requires a human decision. Resolve `<itil-plugin-root>` from
|
|
11
|
+
> this installed `SKILL.md`: it is two directories above the skill
|
|
12
|
+
> directory. Run bundled commands from `<itil-plugin-root>/bin/`; do not
|
|
13
|
+
> search the adopter repository or rely on those commands being on `PATH`.
|
|
14
|
+
> Spawn `wr-itil:hang-off-check` with the native Codex subagent tool, wait
|
|
15
|
+
> for it, and close that same agent.
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# List Story Maps
|
|
19
|
+
|
|
20
|
+
Display the story-map corpus from `docs/story-maps/` as a markdown table. Read-only view per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule Phase 2; does not edit, transition, or create maps.
|
|
21
|
+
|
|
22
|
+
Mirrors `/wr-itil:list-stories` precedent (the "Problem 071: Argument-based skill subcommands are not discoverable in Codex autocomplete" problem phased-landing split per the "Rename `wr-problem` Plugin to `wr-itil`" architecture rule). I5 invariant: story-maps MUST NOT carry WSJF (no Story Rankings table — maps are planning artefacts, not work items per the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 145).
|
|
23
|
+
|
|
24
|
+
## Scope
|
|
25
|
+
|
|
26
|
+
Story-maps live under `docs/story-maps/<state>/STORY-MAP-<NNN>-<slug>.html`:
|
|
27
|
+
- `draft/` — captured (problem + JTBD traces present); pre-acceptance authoring
|
|
28
|
+
- `accepted/` — backbone/ribs/slices authored; ready for implementation dispatch
|
|
29
|
+
- `in-progress/` — slices being implemented; stories transitioning
|
|
30
|
+
- `completed/` — all slices done
|
|
31
|
+
- `archived/` — closed without completion
|
|
32
|
+
|
|
33
|
+
## Argument grammar
|
|
34
|
+
|
|
35
|
+
No arguments (read-only display).
|
|
36
|
+
|
|
37
|
+
## Steps
|
|
38
|
+
|
|
39
|
+
### 1. Check `docs/story-maps/README.md` cache freshness
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
readme_commit=$(git log -1 --format=%H -- docs/story-maps/README.md 2>/dev/null)
|
|
43
|
+
if [ -z "$readme_commit" ] || \
|
|
44
|
+
git log --oneline "${readme_commit}..HEAD" -- 'docs/story-maps/*/*.html' ':!docs/story-maps/README.md' 2>/dev/null | grep -q .; then
|
|
45
|
+
echo "stale"
|
|
46
|
+
fi
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Cache fresh**: read `docs/story-maps/README.md` directly. **Cache stale**: live-scan in Step 2.
|
|
50
|
+
|
|
51
|
+
### 2. Live scan
|
|
52
|
+
|
|
53
|
+
Enumerate each lifecycle subdir:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
ls docs/story-maps/draft/*.html docs/story-maps/accepted/*.html docs/story-maps/in-progress/*.html docs/story-maps/completed/*.html docs/story-maps/archived/*.html 2>/dev/null
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
For each map file, parse the `<meta>` block to extract: `story-map-id`, `status`, `problems`, `rfcs`, `jtbd`. `problems` and `rfcs` are DERIVED — the union of the stories' `problems:` and of the release-row identities — so they carry content the data island does not. Use `xmllint --xpath` when available; fall back to `grep` on `<meta>` lines:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
status=$(xmllint --xpath 'string(//meta[@name="status"]/@content)' "$map" 2>/dev/null || \
|
|
63
|
+
grep -oE '<meta name="status" content="[^"]*"' "$map" | grep -oE 'content="[^"]*"' | sed 's/content="//;s/"$//')
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 3. Display
|
|
67
|
+
|
|
68
|
+
Render lifecycle-grouped sections:
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
## Draft
|
|
72
|
+
|
|
73
|
+
| ID | Title | Problems | RFCs | JTBD |
|
|
74
|
+
|----|-------|----------|------|------|
|
|
75
|
+
| STORY-MAP-<NNN> | <title> | <P<NNN>...> | <RFC-<NNN>...> | <JTBD-<NNN>...> |
|
|
76
|
+
|
|
77
|
+
## Accepted / In Progress / Completed / Archived
|
|
78
|
+
|
|
79
|
+
(same shape; sections omitted when empty)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
NO WSJF column per I5. NO ranking table per the "story-maps are planning artefacts, not work items" principle (the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 145).
|
|
83
|
+
|
|
84
|
+
### 4. Trailing suggestions
|
|
85
|
+
|
|
86
|
+
- Draft section non-empty: `Run /wr-itil:manage-story-map <STORY-MAP-<NNN>> accepted to author backbone/ribs/slices and advance the draft.`
|
|
87
|
+
- In-progress section non-empty: `Run /wr-itil:list-stories --rfc <RFC-<NNN>> to see the next story under each in-progress map's referenced RFC.`
|
|
88
|
+
- All sections empty: `No story maps captured yet. Run /wr-itil:capture-story-map <P-<NNN>> <JTBD-<NNN>> <description> to capture the first.`
|
|
89
|
+
|
|
90
|
+
## Ownership boundary
|
|
91
|
+
|
|
92
|
+
Does not modify, rename, or commit files. Cache-stale path performs live scan only; never rewrites `docs/story-maps/README.md` — refresh is `/wr-itil:manage-story-map review`'s ownership.
|
|
93
|
+
|
|
94
|
+
## Related
|
|
95
|
+
|
|
96
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule** — Problem-RFC-Story framework; Phase 2 amendment lines 145-189 (story-map tier spec).
|
|
97
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule line 145** — story-maps are planning artefacts; no WSJF (I5).
|
|
98
|
+
- **the "Problem-RFC-Story framework with mandatory problem-trace and unified problem ontology" architecture rule lines 381-435** — HTML encoding schema; `<meta>` block parse target.
|
|
99
|
+
- **`docs/story-maps/README.md`** — story-map directory index.
|
|
100
|
+
- **`/wr-itil:list-stories`** — sibling read-only display at the story tier.
|
|
101
|
+
- **`/wr-itil:list-problems`** — sibling at the problem tier (the "Problem 071: Argument-based skill subcommands are not discoverable in Codex autocomplete" problem precedent).
|
|
102
|
+
- **the ": Decompose a Fix Into Coordinated Changes" user outcome** — Decompose a Fix Into Coordinated Changes.
|
|
103
|
+
|
|
104
|
+
$ARGUMENTS
|