@tianhai/pi-workflow-kit 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -54,7 +54,7 @@ brainstorm → writing-plans → executing-tasks → finalizing
54
54
  diagnose (anytime) · status (anytime)
55
55
  ```
56
56
 
57
- A **design doc is one PR**; a **requirement is one testable slice within it**. For multi-design work (a large issue split into several design docseach its own PR), run the pipeline once per design doc.
57
+ A **design doc is one PR**; a **requirement is one testable slice within it**. A requirement too big for one design doc but shipping as one PR is an **umbrella**multiple design docs under one status-free overview, on one branch, finalized once.
58
58
 
59
59
  | Phase | Trigger | What Happens |
60
60
  |-------|---------|--------------|
@@ -32,7 +32,7 @@ Or in `.pi/settings.json` / `~/.pi/agent/config.json`:
32
32
 
33
33
  ## The workflow
34
34
 
35
- You control each phase by invoking the skill. A design doc is one PR; a requirement is one testable slice within it. For multi-design work (a large issue split), run the pipeline once per design doc:
35
+ You control each phase by invoking the skill. A design doc is one PR; a requirement is one testable slice within it. A requirement too big for one design doc but shipping as one PR is an **umbrella** multiple design docs under one status-free overview, on one branch, finalized once:
36
36
 
37
37
  ```
38
38
  /skill:pwk-brainstorming → /skill:pwk-writing-plans → /skill:pwk-executing-tasks → /skill:pwk-finalizing
@@ -46,7 +46,7 @@ You control each phase by invoking the skill. A design doc is one PR; a requirem
46
46
 
47
47
  Explore the idea through collaborative dialogue. The agent reads code, asks questions, proposes approaches, and presents the design for your review.
48
48
 
49
- Outcome: `docs/plans/YYYY-MM-DD-<topic>-design.md` — descriptive, opening with a `## Requirements` list. May split a large issue into multiple design docs. ADRs go to `docs/adr/` (permanent).
49
+ Outcome: `docs/plans/YYYY-MM-DD-<topic>-design.md` — descriptive, opening with a `## Requirements` list. For a too-big requirement, may start an **umbrella** (writes a status-free overview + the first part's design doc). ADRs go to `docs/adr/` (permanent).
50
50
 
51
51
  ### 2. Plan
52
52
 
@@ -82,7 +82,7 @@ pi install npm:pi-subagents
82
82
  /skill:pwk-finalizing
83
83
  ```
84
84
 
85
- **Pre-check: run the full test suite** — never ship a red suite (resume spans sessions). Then delete consumed plan docs (code + tests are the source of truth), curate lessons, update CHANGELOG/README, create PR or merge.
85
+ **Pre-check: run the full test suite** — never ship a red suite (resume spans sessions). Then archive or delete consumed plan docs (the human's choice), curate lessons, update CHANGELOG/README, create PR or merge.
86
86
 
87
87
  ### Diagnose (on demand)
88
88
 
package/docs/lessons.md CHANGED
@@ -9,5 +9,7 @@ Retire rules that no longer apply during finalizing.
9
9
 
10
10
  ## Cross-Skill Consistency
11
11
 
12
+ - **skill-lint assertions for new behavior need a marker that distinguishes new from old.** A token present in both models gives a false green — e.g. `/umbrella/` matched the old `<umbrella>-overview.md` filename placeholder before the new behavior landed; switched to `/status-free/`, a property only the new model has.
13
+ - **Test-first for skill/doc content:** add the skill-lint assertion first (red — the skill doesn't yet claim the behavior), then edit the skill markdown to satisfy it (green). After edits run biome — it collapses short `if (cond) ok();` to one line and rejects array holes like `[, ""]` (restructure instead).
12
14
 
13
15
  ## Documentation
@@ -6,11 +6,11 @@
6
6
 
7
7
  Skills teach the agent the workflow. There are 5 pipeline skills:
8
8
 
9
- - **pwk-brainstorming** — explore ideas, produce a descriptive design doc that opens with a `## Requirements` list
9
+ - **pwk-brainstorming** — explore ideas, produce a descriptive design doc that opens with a `## Requirements` list. For a requirement too big for one design doc, may start an **umbrella** (multiple design docs under one status-free overview, shipping as one PR)
10
10
  - **pwk-writing-plans** — turn each requirement into acceptance criteria + integration-test cases (a behavioral spec, no implementation code)
11
11
  - **pwk-executing-tasks** — implement requirement-by-requirement, test-first, with two mandatory human checkpoints per requirement
12
12
  - **pwk-code-review** — the inline reviewer (code tracing, spec alignment, code smells, production hazards). During `pwk-executing-tasks`, per-requirement review instead runs **four specialized reviewers in parallel** via the `subagent` tool, each from a fresh context (spec gaps & scope creep, tracing, smells, hazards). These ship as package agents (`agents/pwk-*.md`) discovered natively by the optional **`pi-subagents`** package; all report findings only — fixes are applied by the executing-tasks main agent. Falls back to inline `/skill:pwk-code-review` when `pi-subagents` is not installed.
13
- - **pwk-finalizing** — delete consumed plan docs, curate lessons, update docs, create PR or merge
13
+ - **pwk-finalizing** — dispose consumed plan docs (archive or delete; for an umbrella, the overview + every part), curate lessons, update docs, create PR or merge
14
14
 
15
15
  Plus 2 on-demand skills:
16
16
 
@@ -7,7 +7,7 @@ brainstorm → writing-plans → executing-tasks → finalizing
7
7
  (per requirement: tests → ⏸ checkpoint → implement → ⏸ checkpoint → code-review)
8
8
  ```
9
9
 
10
- A design doc is one PR; a requirement is one testable slice within it. For multi-design work (a large issue split into several design docs each its own PR), run the pipeline once per design doc.
10
+ A design doc is one PR; a requirement is one testable slice within it. A requirement too big for one design doc but shipping as one PR is an **umbrella**: multiple design docs under one status-free overview, on one branch, finalized once (`(brainstorm plan → execute) × N → finalize`).
11
11
 
12
12
  ## brainstorm
13
13
 
@@ -17,7 +17,7 @@ A design doc is one PR; a requirement is one testable slice within it. For multi
17
17
 
18
18
  - Explore requirements and shape the design.
19
19
  - Produce `docs/plans/YYYY-MM-DD-<topic>-design.md` — descriptive, opening with a `## Requirements` list, ending with a `## Feature acceptance` section (end-to-end scenarios that prove the requirements compose into the PRD's behavior — the feature's definition-of-done).
20
- - May split a large issue into multiple design docs (human-approved).
20
+ - May start an **umbrella** for a requirement too big for one design doc (human-approved): writes the status-free `docs/plans/YYYY-MM-DD-<umbrella>-overview.md` (roster of parts + build order) and the **first** part's `-design.md`. Later parts are brainstormed one by one against the overview + implemented predecessors.
21
21
  - ADRs go to `docs/adr/` (permanent, never archived).
22
22
 
23
23
  Write boundary: only `docs/plans/` is writable. Source files are hard-blocked.
@@ -30,6 +30,7 @@ Write boundary: only `docs/plans/` is writable. Source files are hard-blocked.
30
30
 
31
31
  - Creates the feature branch first (`git checkout -b <topic>`), so design + plan docs live on the branch, not `main`.
32
32
  - Reads the design doc's `## Requirements`; for each, derives **acceptance criteria + integration-test cases** (a behavioral spec, no implementation code), lists requirements in build order (dependencies positioned earlier), and challenges the design when `## Production-risk areas` is present.
33
+ - For an umbrella part, reads the `*-overview.md` to plan one slice (composing with earlier parts' code) and reuses the existing feature branch instead of creating a new one.
33
34
  - Derives a **`## Feature acceptance` section** in the plan from the design's Feature acceptance — an end-to-end integration test that exercises the requirements together (distinct from per-requirement tests). If the design has none, stops and asks the human to brainstorm one.
34
35
  - Produce `docs/plans/YYYY-MM-DD-<topic>-implementation.md`.
35
36
 
@@ -77,7 +78,7 @@ No write restrictions.
77
78
  ```
78
79
 
79
80
  - **Pre-check: run the full test suite** — don't ship a red suite (resume spans sessions; don't trust the last execute session).
80
- - Delete consumed plan docs (per-`<topic>`) — code + tests are the source of truth; ADRs stay at `docs/adr/`.
81
+ - Dispose of consumed plan docs (per-`<topic>`) — the human picks **delete** (default — code + tests are the source of truth) or **archive** to `docs/plans/completed/` (keep planning history). ADRs stay at `docs/adr/`. For an umbrella (an `*-overview.md` exists), disposes the overview **and every part's** docs in one pass and ships **one PR**.
81
82
  - Curate `docs/lessons.md`, update README/CHANGELOG, create PR or merge.
82
83
 
83
84
  No write restrictions.
@@ -88,7 +89,7 @@ No write restrictions.
88
89
  /skill:pwk-status
89
90
  ```
90
91
 
91
- Read-only overview of all active pipeline topics (phase + progress) when several designs are in flight. Not a pipeline phase — and it **does not exit the gated phase** (`pwk-status` is read-only; it runs fine under the brainstorm/plan write block, so the boundary stays up).
92
+ Read-only overview of all active pipeline topics (phase + progress) when several designs are in flight; an umbrella rolls up under its overview (shipped / in-flight / not-started). Not a pipeline phase — and it **does not exit the gated phase** (`pwk-status` is read-only; it runs fine under the brainstorm/plan write block, so the boundary stays up).
92
93
 
93
94
  ## diagnose
94
95
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianhai/pi-workflow-kit",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Enforce structured brainstorm→plan→execute→finalize workflow with TDD discipline in AI coding agents",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -18,15 +18,41 @@ When unsure, ask: "This looks trivial — fast-path it, or full brainstorm?" Def
18
18
 
19
19
  ## Granularity
20
20
 
21
- **One design doc = one PR; one requirement = one testable slice within it.**
21
+ **One design doc = one PR; one requirement = one testable slice within it.** Most work is a single design doc.
22
22
 
23
- - Split into **multiple design docs** only when each part could ship as its own PR (independently reviewable and mergeable). Each runs its own plan → execute → finalize pipeline.
24
- - Within a doc, decompose into **requirements**, each one testable behavior. Decision rule: could this part be reviewed and merged on its own? Yes separate design doc. No one doc, multiple requirements. Most work is a single doc; splitting is opt-in.
23
+ - Within a doc, decompose into **requirements**, each one testable behavior.
24
+ - A requirement too big for one design doc but shipping as a single PR is an **umbrella** multiple design docs decomposed under one overview, on one branch, finalized once. See [Umbrella](#umbrella) below.
25
+
26
+ ## Umbrella
27
+
28
+ An umbrella splits one large requirement into multiple design docs that ship together as **one PR**. One branch; one `pwk-finalizing` at the end. The split is intra-PR decomposition — a way to keep each design/plan/execute cycle small and focused, not a multi-PR strategy.
29
+
30
+ **First brainstorm** (the requirement is too big for one design doc):
31
+
32
+ 1. **Propose the split** — the parts, a one-line scope each, and build order. Get human approval before writing anything beyond discovery.
33
+ 2. **Write the overview** — `docs/plans/YYYY-MM-DD-<umbrella>-overview.md`, a **status-free roster**:
34
+
35
+ ```markdown
36
+ # Overview: <umbrella>
37
+
38
+ Goal: <one line — what the whole requirement delivers>
39
+
40
+ ## Parts (build order)
41
+ 1. <topic> — <one-line scope>
42
+ 2. <topic> — <one-line scope>
43
+ ```
44
+
45
+ Goal, parts with one-line scopes, build order — **no status column**. No skill mutates the overview between this write and `pwk-finalizing` (which disposes it); part-completion is inferred from each part's own `*-progress.md`.
46
+ 3. **Write the first part's** `YYYY-MM-DD-<part>-design.md`, then hand off to `/skill:pwk-writing-plans`.
47
+
48
+ **Later parts** — re-run `/skill:pwk-brainstorming` for the next part. Read the overview for big-picture/roster context (which slice is yours, which siblings exist), then explore the codebase to design your slice **as brainstorm always does** — prior parts are just implemented code in the repo by then. There is no special "read your predecessors" step; cross-slice decisions that must persist go in an ADR, not the overview.
49
+
50
+ The whole umbrella is one branch and one PR: `pwk-writing-plans` creates the branch on the first part and reuses it for later parts; `pwk-executing-tasks` suggests the next part (or finalize after the last); `pwk-finalizing` disposes the overview + every part's docs and ships one PR.
25
51
 
26
52
  ## Process
27
53
 
28
54
  1. **Check git state** — `git status` + `git log --oneline -5`. Uncommitted work? Ask the user what to do first.
29
- 2. **Discovery** *(skip in a brand-new repo with no `docs/plans/`)* — glob `docs/plans/*-design.md`; report in-flight topics. If the new idea continues an existing topic, ask whether to extend it or start fresh.
55
+ 2. **Discovery** *(skip in a brand-new repo with no `docs/plans/`)* — glob `docs/plans/*-design.md` and `*-overview.md`; report in-flight topics and any active umbrella. If the new idea continues an existing topic, ask whether to extend it or start fresh. Part of an umbrella? An existing `*-overview.md` means the split is already decided — read it for the roster and design this part's `-design.md` against it (see [Umbrella](#umbrella)).
30
56
  3. **Understand the idea** — read only enough code/docs/commits to ground the design. **Check `docs/lessons.md`** — known constraints may shape it. Ask questions one at a time, prefer multiple choice. Once you can articulate what/why/constraints, present a short summary and ask: "Should I proceed, or is there more?" The human decides when to move on.
31
57
  4. **Explore approaches** — propose 2–3, leading with your recommendation. Sketch the concrete interface (types, signatures, example caller) for each so the comparison is grounded in code, not abstractions.
32
58
  5. **Present the design** in one pass, organized into sections (architecture, components, data flow, error handling, testing) — the human comments on any section; re-present only revised sections.
@@ -46,7 +72,7 @@ When unsure, ask: "This looks trivial — fast-path it, or full brainstorm?" Def
46
72
 
47
73
  Example (rate limiting): "Given a new API consumer with no prior usage, When they exceed 100 requests/minute for 3 consecutive minutes, Then they're throttled, a `rate_limited` event is emitted, and further requests return 429."
48
74
 
49
- **Splitting large issues:** propose multiple design docs (one `<topic>` per sub-issue) and get human approval first — see [Granularity](#granularity). Each runs its own pipeline.
75
+ **Splitting large issues:** if the requirement needs more than one design doc, propose an umbrella split (one `<topic>` per part) and get human approval first — see [Umbrella](#umbrella). On approval, write the status-free `*-overview.md` and the **first part's** `-design.md`, then hand off to `/skill:pwk-writing-plans`. Later parts are brainstormed one by one (each re-reading the overview) — do not write every part's design doc up front.
50
76
 
51
77
  The session stays read-only and uncommitted through brainstorm and plan: branch creation happens at the end of `/skill:pwk-writing-plans`; plan docs are committed at the start of `pwk-executing-tasks`.
52
78
 
@@ -19,7 +19,7 @@ The plan is a **behavioral spec** (acceptance criteria + integration tests) —
19
19
 
20
20
  1. **Parse the plan** — read every `## Requirement N:` heading and its `### Checkpoints` / `### Review` tags (defaults `full` / `parallel`). Requirements run in **listed order** — the plan is already in build order; do not reorder.
21
21
  2. **Setup pre-flight** *(only if the plan has a `## Setup` section)* — install dependencies, apply migrations, seed data, then run the existing test suite. **⏸ CHECKPOINT: setup** — present results and wait for approval. Record `setup: done` in the progress-file header so a resume can confirm it rather than assume it.
22
- 3. **Create the progress file** `docs/plans/<plan-name>-progress.md`:
22
+ 3. **Create the progress file** `docs/plans/YYYY-MM-DD-<topic>-progress.md` (same dated stem as the implementation doc, so `pwk-finalizing`'s glob matches):
23
23
 
24
24
  ```markdown
25
25
  # Progress: <topic>
@@ -123,7 +123,12 @@ When no `⬜ pending` or `🔄 in-progress` requirements remain, run the **integ
123
123
  2. **Run the feature-acceptance test.** The plan's `## Feature acceptance` section specifies one end-to-end test exercising the requirements *together* against the design's claim. Write it if missing; run it; it must pass. If the plan has no such section, stop and tell the human — the gate has nothing concrete to verify.
124
124
  3. **Confirm composition.** Do the requirements together deliver the end-to-end behavior the design doc described? Fix gaps here, with tests, before shipping.
125
125
 
126
- Then present:
126
+ Then determine the next step from the artifacts (the human drives every transition — this is a suggestion, not a gate):
127
+
128
+ - **Standalone design doc** (no `docs/plans/*-overview.md`) → suggest `/skill:pwk-finalizing`.
129
+ - **Umbrella part** (an `*-overview.md` exists) → read the overview roster and find this part's `<topic>`. If it's the **last** in build order, the umbrella is complete → suggest `/skill:pwk-finalizing` (one PR for the whole umbrella). If **more parts remain**, suggest `/skill:pwk-brainstorming` for the next part (the next `<topic>` in the roster).
130
+
131
+ Present:
127
132
 
128
133
  ```
129
134
  ✅ All requirements complete — integration verified!
@@ -133,7 +138,8 @@ Then present:
133
138
  | 1 | ✅ done | <name> |
134
139
  | … | … | … |
135
140
 
136
- - Ship: /skill:pwk-finalizing
141
+ - Next part: /skill:pwk-brainstorming (<next topic>) ← umbrella, more parts remain
142
+ - Ship: /skill:pwk-finalizing ← standalone, or last umbrella part
137
143
  ```
138
144
 
139
145
  ## If you're stuck
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: pwk-finalizing
3
- description: "Use after all requirements are complete to delete consumed plan docs, curate lessons, update documentation, and ship the work."
3
+ description: "Use after all requirements are complete to archive or delete consumed plan docs, curate lessons, update documentation, and ship the work."
4
4
  ---
5
5
 
6
6
  # Finalizing
@@ -10,20 +10,43 @@ Ship the completed work.
10
10
  ## Pre-finalization checks
11
11
 
12
12
  1. **Run the FULL test suite** — every test must pass, and only a green suite ships. Resume spans sessions; re-run the suite yourself rather than trust the previous session's ending state. Anything failing → send the user back to `/skill:pwk-executing-tasks`.
13
- 2. Read the progress file (`docs/plans/*-progress.md`):
14
- - **Any `❌ failed`** → **block**. Present counts and reasons; continue only when the user sends the task back to executing-tasks, or explicitly types `--force-failed` to acknowledge shipping with incomplete requirements.
13
+ 2. Read **every** relevant progress file — for an umbrella that's each part's `docs/plans/*-progress.md`; for a standalone design doc, the one:
14
+ - **Any `❌ failed`** (in any part) → **block**. Present counts and reasons; continue only when the user sends the task back to executing-tasks, or explicitly types `--force-failed` to acknowledge shipping with incomplete requirements.
15
15
  - **Only `⏭ skipped`** → warn and confirm ("Requirement N was skipped. Continue, or go back?").
16
16
 
17
17
  ## Process
18
18
 
19
- 1. **Derive the topic** — progress file → `Plan:` ref → plan's `Design:` ref → design-doc filename → `<topic>`. Ambiguous with several designs in flight? Ask.
20
- 2. **Delete consumed plan docs** only this design's three artifacts, matched by the exact topic slug (with the `YYYY-MM-DD-` prefix) so similarly-named plans for other topics survive:
19
+ 1. **Derive the topic set** —
20
+ - **Umbrella** (a `docs/plans/*-overview.md` exists): read its roster; the set is every part's `<topic>`. The overview is disposed too.
21
+ - **Standalone**: progress file → `Plan:` ref → plan's `Design:` ref → design-doc filename → `<topic>`. One topic.
21
22
 
22
- ```bash
23
- rm -f docs/plans/????-??-??-<topic>-design.md docs/plans/????-??-??-<topic>-implementation.md docs/plans/????-??-??-<topic>-progress.md
24
- ```
23
+ Ambiguous with several designs in flight? Ask.
24
+ 2. **Dispose of consumed plan docs — ask archive or delete** — for **every topic** in the set, dispose its `-design.md`, `-implementation.md`, `-progress.md` (matched by the exact dated topic slug so similarly-named plans for other topics survive); for an umbrella, also dispose the `-overview.md`. Each path is matched with the `????-??-??-` prefix. Present both options and let the human choose:
25
25
 
26
- The `????-??-??-` glob enforces the dated filename; a bare `*<topic>*` would over-match unrelated docs (e.g. topic `auth` would also hit `feature-auth-redesign-design.md`). Verify with `ls docs/plans/` before and after. `rm -f` handles missing files. `docs/adr/`, `docs/lessons.md`, `CHANGELOG.md`, and `README.md` are permanent — leave them entirely out of the delete set.
26
+ - **Delete (default)** code + tests are the source of truth; removing the scaffold prevents stale plan docs from misleading future sessions:
27
+
28
+ ```bash
29
+ # for each <topic> in the set:
30
+ rm -f docs/plans/????-??-??-<topic>-design.md docs/plans/????-??-??-<topic>-implementation.md docs/plans/????-??-??-<topic>-progress.md
31
+ # umbrella only:
32
+ rm -f docs/plans/????-??-??-<umbrella>-overview.md
33
+ git add -A docs/plans/ && git commit -m "chore: delete planning docs for <topic-or-umbrella>"
34
+ ```
35
+
36
+ - **Archive** — keep the planning history for future readers (e.g. a complex design worth preserving) by moving the artifacts into `docs/plans/completed/`:
37
+
38
+ ```bash
39
+ mkdir -p docs/plans/completed
40
+ # for each <topic> in the set:
41
+ mv docs/plans/????-??-??-<topic>-design.md docs/plans/completed/ 2>/dev/null || true
42
+ mv docs/plans/????-??-??-<topic>-implementation.md docs/plans/completed/ 2>/dev/null || true
43
+ mv docs/plans/????-??-??-<topic>-progress.md docs/plans/completed/ 2>/dev/null || true
44
+ # umbrella only:
45
+ mv docs/plans/????-??-??-<umbrella>-overview.md docs/plans/completed/ 2>/dev/null || true
46
+ git add docs/plans/ && git commit -m "chore: archive planning docs for <topic-or-umbrella>"
47
+ ```
48
+
49
+ The `????-??-??-` glob enforces the dated filename; a bare `*<topic>*` would over-match unrelated docs (e.g. topic `auth` would also hit `feature-auth-redesign-design.md`). Verify with `ls docs/plans/` before and after. `rm -f` and each `mv … || true` handle missing files. Both paths commit the disposal so the shipped branch is clean. Neither path touches `docs/adr/`, `docs/lessons.md`, `CHANGELOG.md`, or `README.md` — those are permanent.
27
50
  3. **Curate lessons (Agile Scrum Master hat)** — if `docs/lessons.md` exists: add missed lessons, generalize domain-specific rules into generic patterns, de-duplicate, categorize, retire stale rules. None exists but lessons were learned? Create it.
28
51
  4. **Update documentation** — if the API or surface changed: `README.md`, `CHANGELOG.md`, any inline docs.
29
52
  5. **Choose a merge strategy** — ask the human:
@@ -38,6 +61,6 @@ Ship the completed work.
38
61
 
39
62
  ## Principles
40
63
 
41
- - Delete **only** the active design's artifacts un-started designs (from a split) stay in `docs/plans/`.
64
+ - Dispose of the active work's artifacts only (archive or delete, the human's choice) — for a standalone design doc its three docs; for an umbrella its overview plus every part's docs. Unrelated topics stay in `docs/plans/`.
42
65
  - ADRs are permanent institutional memory — they stay out of archive/rotation forever.
43
66
  - Bump the package version if this is a published change (major for breaking changes).
@@ -5,24 +5,23 @@ description: "Show all active pipeline topics and their phase/progress. Use when
5
5
 
6
6
  # Status
7
7
 
8
- Report on all in-flight pipelines (split designs may run in parallel across worktrees). Read-only. This skill **does not unlock the guard** — it needs no writes, so it runs fine inside the brainstorm/plan read-only phase. If you want source edits after a status check, invoke the skill for the next phase yourself (the guard follows the skill).
8
+ Report on in-flight pipelines in this working tree (a worktree has its own `docs/plans/`, so run status in each). Read-only. This skill **does not unlock the guard** — it needs no writes, so it runs fine inside the brainstorm/plan read-only phase. If you want source edits after a status check, invoke the skill for the next phase yourself (the guard follows the skill).
9
9
 
10
10
  ## Process
11
11
 
12
- 1. Glob `docs/plans/*-design.md`, `*-implementation.md`, `*-progress.md`.
13
- 2. For each `<topic>`, infer the furthest artifact present:
14
- - only `*-design.md` brainstorm done, plan next
15
- - `*-implementation.md` but no progress plan done, execute next
16
- - `*-progress.md` → execute phase — show `done/total` requirement count
17
- 3. Print a one-line table, e.g.:
12
+ 1. Glob `docs/plans/*-overview.md`, `*-design.md`, `*-implementation.md`, `*-progress.md` — this working tree only.
13
+ 2. For each topic, infer the furthest artifact: only `*-design.md` → plan next; `*-implementation.md` no progress → execute next; `*-progress.md` → execute, show `done/total`.
14
+ 3. **Group by umbrella** — for each `*-overview.md`, take its **parts** roster and roll up each part by state, inferred from artifacts (the overview is **status-free** read no status from it): **in-flight** if it has an active `*-implementation.md`/`*-progress.md` (show `done/total`); else **not-started**. Print one roll-up line (`<umbrella> (umbrella): n in-flight · n not-started`), then nest the parts under it with their phase. Once the umbrella finalizes, its docs — overview included — are disposed, so it no longer appears here. Topics not part of an overview print flat.
15
+ 4. Print a compact table, grouped under any umbrellas, e.g.:
18
16
 
19
17
  ```
20
- | Topic | Phase | Progress | Branch |
21
- |---------|---------|----------|------------------|
22
- | auth | execute | 2/3 done | auth |
23
- | billing | plan | — | ../repo-billing |
18
+ payments-revamp (umbrella): 2 in-flight · 1 not-started
19
+ payments-core execute 2/3 done
20
+ payments-ui plan —
21
+ payments-webhooks not started
22
+ auth execute 1/2 done
24
23
  ```
25
24
 
26
- 4. If none, say so and suggest `/skill:pwk-brainstorming`.
25
+ If nothing, suggest `/skill:pwk-brainstorming`.
27
26
 
28
27
  Keep it short — this is orientation, not analysis. No writes; the `<topic>` slug is the identity.
@@ -13,8 +13,8 @@ Your writes go into `docs/plans/` and nowhere else. Source code and configuratio
13
13
 
14
14
  ## Process
15
15
 
16
- 1. **Find the design doc** — glob `docs/plans/*-design.md`. If none, ask the user to run `/skill:pwk-brainstorming` first; if several, ask which. **Read `docs/lessons.md`** if it exists — known patterns belong in the acceptance criteria.
17
- 2. **Create the feature branch** — `git checkout -b <topic>` (branch creation is allowed in the plan phase). Design + plan docs live on this branch, committed at the start of `pwk-executing-tasks`.
16
+ 1. **Find the design doc** — glob `docs/plans/*-design.md`. If none, ask the user to run `/skill:pwk-brainstorming` first; if several, ask which. **Read `docs/lessons.md`** if it exists — known patterns belong in the acceptance criteria. **Umbrella part?** If `docs/plans/*-overview.md` exists and this design is one of its roster parts, read the overview for the umbrella goal + roster — plan this part as one slice, composing with what earlier parts already established in the code. Note the umbrella in the plan's Overview so the executor inherits the context.
17
+ 2. **Create or reuse the feature branch** — if you're already on a feature branch (not `main`), **reuse** it: a later umbrella part continues on the same umbrella branch. Otherwise `git checkout -b <topic>` — the umbrella's `<topic>` if this is part of an overview, else the design doc's `<topic>` (branch creation is allowed in the plan phase). Design + plan docs live on this branch, committed at the start of `pwk-executing-tasks`.
18
18
  3. **Read the `## Requirements` list** — the plan covers **all** of them. If the design has none, derive requirements from its described behaviors and confirm with the human before proceeding.
19
19
  4. **Write the plan** — for each requirement:
20
20
  - **Acceptance criteria** — `Given/When/Then` behavioral statements defining "done". Write observable behaviors, not implementation steps; cover edge and error cases.
@@ -33,6 +33,7 @@ Your writes go into `docs/plans/` and nowhere else. Source code and configuratio
33
33
 
34
34
  ## Overview
35
35
  Design: docs/plans/YYYY-MM-DD-<topic>-design.md
36
+ Umbrella: docs/plans/YYYY-MM-DD-<umbrella>-overview.md *(umbrella part only — else omit)*
36
37
 
37
38
  ## Requirement 1: <name>
38
39