@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 +1 -1
- package/docs/developer-usage-guide.md +3 -3
- package/docs/lessons.md +2 -0
- package/docs/oversight-model.md +2 -2
- package/docs/workflow-phases.md +5 -4
- package/package.json +1 -1
- package/skills/pwk-brainstorming/SKILL.md +31 -5
- package/skills/pwk-executing-tasks/SKILL.md +9 -3
- package/skills/pwk-finalizing/SKILL.md +33 -10
- package/skills/pwk-status/SKILL.md +11 -12
- package/skills/pwk-writing-plans/SKILL.md +3 -2
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**.
|
|
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.
|
|
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.
|
|
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 (
|
|
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
|
package/docs/oversight-model.md
CHANGED
|
@@ -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** —
|
|
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
|
|
package/docs/workflow-phases.md
CHANGED
|
@@ -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.
|
|
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
|
|
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
|
-
-
|
|
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
|
@@ -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
|
-
-
|
|
24
|
-
-
|
|
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:**
|
|
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
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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** —
|
|
20
|
-
|
|
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
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
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
|
|