nwave-wave-summary
Use when asked what finished work decided, rather than where it stands or what you were doing — "what did DISCUSS decide", "what did that stage settle"…
Skill by pmvanev
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/pmvanev-nwave-wave-summary
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/nwave-wave-summary
What's inside
- Skill name
nwave-wave-summary- Description
- Use when asked what finished work decided, rather than where it stands or what you were doing — "what did DISCUSS decide", "what did that stage settle", "catch me up on what this feature decided", "what did that slice actually land", "what did that slice ship as against its brief", "summarise the decisions" — in a repo holding `docs/feature/`. Two modes: a finished stage's decisions, and with --slice a finished slice's brief reconciled against what shipped. 200 words each, plain English, with no file paths, handles, card numbers or decision numbers — the decision itself, never the label pointing at it. Reads and prints; writes nothing and derives no status. For where a slice STANDS use phil:nwave-slice-status; for what you personally were doing, phil:resume; for what is on the board, phil:board-snapshot.
- License
- MIT
- Instructions
- 231 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- files: referenced but missing: scripts/plain_language.py, scripts/check-readonly-commands.py
Files (31)
- SKILL.md
- why-these-rules.md · references/
- expected.md · self-test/01-the-largest-artifact/
- manifest.json · self-test/01-the-largest-artifact/
- expected.md · self-test/02-nothing-recorded/
- manifest.json · self-test/02-nothing-recorded/
- expected.md · self-test/03-no-target-given/
- manifest.json · self-test/03-no-target-given/
- expected.md · self-test/04-handles-everywhere/
- manifest.json · self-test/04-handles-everywhere/
- expected.md · self-test/05-tied-targets/
- manifest.json · self-test/05-tied-targets/
- expected.md · self-test/06-named-not-stated/
- manifest.json · self-test/06-named-not-stated/
- expected.md · self-test/07-named-target-missing/
- manifest.json · self-test/07-named-target-missing/
- expected.md · self-test/08-landed-differs-from-brief/
- manifest.json · self-test/08-landed-differs-from-brief/
- expected.md · self-test/09-attribution-incomplete/
- manifest.json · self-test/09-attribution-incomplete/
- expected.md · self-test/10-brief-and-outcome-agree/
- manifest.json · self-test/10-brief-and-outcome-agree/
- expected.md · self-test/11-nothing-the-brief-does-not-say/
- manifest.json · self-test/11-nothing-the-brief-does-not-say/
- expected.md · self-test/12-the-longest-brief/
- manifest.json · self-test/12-the-longest-brief/
- expected.md · self-test/13-promised-but-not-landed/
- manifest.json · self-test/13-promised-but-not-landed/
- expected.md · self-test/14-slice-number-not-found/
- manifest.json · self-test/14-slice-number-not-found/
- README.md · self-test/
SKILL.md (first lines)
# Wave summary — what the thinking decided, not where the work stands A finished artifact is written for the wave that produced it: thousands of words whose load-bearing sentences are keyed on identifiers the reader must resolve first (measurements in `references/why-these-rules.md`). **A record nobody opens is not meaningfully different from one nobody wrote.** ## What this answers, and what it does not | Question | Command | |---|---| | What did this stage decide? | **this one** | | Where does the work stand? | `phil:nwave-slice-status` | | What was *I* doing? | `phil:resume` | | What is on the board? | `phil:board-snapshot` | | What is wrong with the cards? | `phil:groom-issues` | **Never derive a status.** `phil:nwave-slice-status` owns every derivation over these files, and two derivations over one source drift. Where the reader wants position, name that skill and stop. ## Resolving the target **With a name, read `docs/feature/<name>/feature-delta.md`.** **With no name, take the most recently touched feature** — and say that is what was taken: ```sh git log -1 --format=%cI -- docs/feature/<id>/ ``` **"Most recently completed" is not recorded anywhere, so it is not what this resolves.** No artifact carries a completion marker; the newest commit touching a feature directory is the closest honest signal, and it is not the same thing. A feature whose DISCUSS landed an hour ago sorts above one finished last week — which is usually right and is sometimes not. **Name the feature and its artifact's date in the output** so a wrong pick is visible immediately rather than inferred from a summary that reads plausibly. **Where two features tie, say so and stop.** Do not pick. Where no `docs/feature/` exists at all, or a named feature does not, that is a different answer — see *Decision outcomes*. ## The summary **200 words or fewer, counted over the whole rendered output** — the summary, the provenance line, the outcome names, and any `ARGUMENT-DROPPED` or `ATTRIBUTION-INCOMPLETE` clause. Everything printed counts; a line outside the budget is the budget leaking. **Nothing counts it at run time**, and that is a deliberate trade rather than an oversight — see *Half enforced, half promised* below. **State what was decided and what it rules out.** A stage's value to a later reader is the decisions and their boundaries — not the argument that produced them, which is what the artifact is for. **Where the summary will not fit, cut the argument and never the decisions.** A decision named without its reasoning is still useful; reasoning without its decision is not. Say what was left out, and report `ARGUMENT-DROPPED`. **Name the feature read, and the date of the artifact** — *"the board-snapshot feature record, last changed 2026-09-08"*. The discarded 98% is then one command away and never has to be reconstructed from the summary. **Name the feature, never the path.** A path is a file-path identifier and the vocabulary rule below forbids one everywhere, this line included — there is no exemption, because a reader who knows the feature can find its record and a reader who cannot is not helped by a path either. ### State the decision, never its number **No identifier of any kind reaches the output** — no file path, no bracketed identifier, no bare handle like `D11` or `ADR-013`, and **no card number either**. **This is the strictest vocabulary rule in the plugin, and the reason is positional.** A board read prints `#34` because the number has a column of its own; forbidding it there would only launder it into *card 34*. **A summary has no column.** Every identifier in it sits mid-sentence, where it is precisely the lookup this command exists to spare the reader. **A slice's own number is the one exemption, and nothing else gained one.** A slice summary must say which slice it read, exactly as the stage summary names its feature — an identifier naming *what this output is about* is not the lookup the rule exists to remove. Commit shas stay forbidden: a sha points into history and is never the subject of a sentence. So *"per the fourth locked decision"* is not the fix, and neither is *"as recorded in the delta"*. The fix is to **say the thing**: *"the board's order is consumed and never recomputed, because a second producer would make neither answer trustworthy."* **Half enforced, half promised, and which is which matters — including inside the enforced half.** `scripts/plain_language.py` holds both the counter and the forbidden list. **The fixtures apply the forbidden list and do not apply the counter**: no fixture here can fail because something was too long, and the counter appears in the suite only to prove a counterexample is *short* enough to fail for the right reason. So the word ceiling is prose at run time and prose at build time; only the vocabulary is checked. Nothing counts the rendered output at run time either: this command holds no interpreter, deliberately, because that is what keeps the read-only grant narrow. At run time both rules are this section. ### When the stage recorded nothing **Say so. Do not summarise.** An absent or empty artifact, or one that records only a heading, gets `NOTHING-RECORDED` and one sentence naming what was looked for and what was found. A confident 200 words about a stage that decided nothing is the worst output this command can produce, because it is indistinguishable afterwards from a real summary — and it is the failure this feature would otherwise introduce, having never existed before. ## The slice mode — `--slice` The stage summary reads one artifact. **The slice summary reads a brief and reconciles it against what shipped**, because a brief states what a slice *intended* and the useful question is what it *landed*. **200 words per slice**, same vocabulary rule. **Resolve the feature first** — by name, or as the stage mode resolves its default — because slice numbers repeat across features: a slice number names a brief inside that feature. **With a number, read that slice. With none, read the feature's most recently touched brief**, named in the output for the same reason. **Never summarise every slice at once:** a per-slice bound leaves the whole output unbounded, on a command whose one promise is a bounded read. Where briefs tie, that is `TARGET-AMBIGUOUS`; where a number names no brief, `TARGET-NOT-FOUND`. ### Attributing commits to a slice
From pmvanev/phil-claude-plugin, MIT.
More from pmvanev/phil-claude-plugin
- 0.570score
board-setup
pmvanev
Use when recording a repo's issue-board constants in its `CLAUDE.md` — the forge and repo, the project and Status field ids, every option id, the enabled…
SkillAFreshness: AClaude Code +9 - 0.570score
board-snapshot
pmvanev
Use when asked where an issue board stands right now rather than what is wrong with it — "summarise my board", "what's on the board", "where does the board…
SkillAFreshness: AClaude Code +9 - 0.570score
issue-board
pmvanev
Use when driving a GitLab or GitHub issue tracker or board from the command line with `glab` or `gh` — moving a card between board columns, reordering a…
SkillAFreshness: AClaude Code +9 - 0.570score
nwave-slice-status
pmvanev
Use when the user asks where an nWave feature stands — "how many steps are in this slice", "which ones are done", "which one are we on", "what's next", "is…
SkillAFreshness: AClaude Code +9 - 0.566score
groom-issues
pmvanev
Skill bundle for the phil:groom-issues, phil:groom-fix, phil:groom-set and phil:groom-ask commands — reads a whole issue board in one list call per forge —…
SkillAFreshness: AClaude Code +9 - 0.566score
nwave-issue-board
pmvanev
Use for any GitLab or GitHub board or tracker work in an nWave repo — one holding `.nwave/` or `docs/feature/` — including putting a feature on the tracker as…
SkillAFreshness: AClaude Code +9 - 0.565score
red-team-prose
pmvanev
Skill bundle for phil:red-team-prose command — reviews a doc, README, or release note for AI-generated tells, Elements of Style clarity, and fitness for its…
SkillAFreshness: AClaude Code +9 - 0.565score
adversarial-review
pmvanev
Skill bundle for phil:adversarial-review command — a general-purpose independent adversarial critic.
SkillAFreshness: AClaude Code +9 - 0.565score
edd
pmvanev
Skill bundle for phil:edd command — Expectation-Driven Development front-door.
SkillAFreshness: AClaude Code +9 - 0.561score
ai-eos
pmvanev
Skill bundle for phil:ai-eos command — detects the stylistic tells that mark technical prose as AI-generated, with a density verdict and ranked findings.
SkillAFreshness: AClaude Code +9 - 0.561score
redesign-tests
pmvanev
Skill bundle for phil:redesign-tests command — human-approved, behaviour-changing test redesign loop with a coverage-equivalence claim per rewrite
SkillAFreshness: AClaude Code +9 - 0.561score
refactor-loop
pmvanev
Skill bundle for phil:refactor-loop command — gated closed-loop refactoring with a separate proposer and correctness critic, hard test gates, and a DAG ledger
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 10
- Last commit (this folder)
- Oct 13, 2026 (15 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/pmvanev/phil-claude-plugin
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from pmvanev
- 0.570score
nwave-slice-status
pmvanev
Use when the user asks where an nWave feature stands — "how many steps are in this slice", "which ones are done", "which one are we on", "what's next", "is…
SkillAFreshness: AClaude Code +9 - 0.570score
board-snapshot
pmvanev
Use when asked where an issue board stands right now rather than what is wrong with it — "summarise my board", "what's on the board", "where does the board…
SkillAFreshness: AClaude Code +9 - 0.570score
board-setup
pmvanev
Use when recording a repo's issue-board constants in its `CLAUDE.md` — the forge and repo, the project and Status field ids, every option id, the enabled…
SkillAFreshness: AClaude Code +9 - 0.570score
issue-board
pmvanev
Use when driving a GitLab or GitHub issue tracker or board from the command line with `glab` or `gh` — moving a card between board columns, reordering a…
SkillAFreshness: AClaude Code +9 - 0.566score
groom-issues
pmvanev
Skill bundle for the phil:groom-issues, phil:groom-fix, phil:groom-set and phil:groom-ask commands — reads a whole issue board in one list call per forge —…
SkillAFreshness: AClaude Code +9 - 0.566score
nwave-issue-board
pmvanev
Use for any GitLab or GitHub board or tracker work in an nWave repo — one holding `.nwave/` or `docs/feature/` — including putting a feature on the tracker as…
SkillAFreshness: AClaude Code +9
Cite this page
nwave-wave-summary skill. Agent Mart. https://agentmart.dev/skills/pmvanev-nwave-wave-summary (last updated 2026-10-24)