AugmentClaude

Demand-First Review

Verify actual demand exists before reviewing code that adds new surface area.

Installation

  1. Make sure Claude is on your device and in your terminal.

    Skills load from ~/.claude/skills/ when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then run claude in any terminal to verify.

    One-time setup
    npm i -g @anthropic-ai/claude-code

    Already have it? Skip ahead.

  2. Paste into Claude Code or into your terminal.

    This copies the whole skill folder into ~/.claude/skills/demand-first-review-cherryhq/ — the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.

    Faster alternative (instruction-only skills)

    Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.

    Quick install (SKILL.md only)
    Sign up to copy
  3. Restart Claude Code.

    Quit and reopen Claude Code (or any other agent that loads from ~/.claude/skills/). New skills are picked up on startup.

  4. Just ask Claude.

    Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.

Prefer to read the source first? Open on GitHub.

When Claude uses it

Use when reviewing a PR, API, IPC channel, endpoint, parameter, type, or config that adds new surface area — BEFORE commenting on implementation quality. Also use immediately when a review surfaces signals like "no consumers yet", "unused export", "speculative", "additive", "forward-compatible", or "for future use".

What this skill does

Demand-First Review

Overview

In engineering, the first-principles starting point is the demand (the requirement). The biggest waste in review is providing high-quality polish suggestions for something that should not exist. First audit whether the demand is real (consumer archaeology); only review the implementation of what survives.

Iron ordering (the first three steps of Musk's five-step algorithm): question the requirements → delete → only then simplify/optimize. Reversing the order = optimizing something that should not exist.

Consumer Archaeology (core workflow)

For every newly added API / channel / parameter / type / field:

  1. List consumers: trace ALL real call sites across branches and repos (git grep including feature branches). Do not trust the PR description.

  2. Measure consumption: for each consumer, check which part of the return value / capability it actually reads. Consumer count ≠ consumption; a consumer that only reads one boolean consumes zero of an error taxonomy. Real consumption = the real size of the demand.

  3. Judge pseudo-demand — two checks, both required:

    • Zero consumption → pseudo-demand;
    • Non-zero consumption but policy: does this dimension move a judgment the consumer could compute in one line into the contract (e.g. an expectedKind param vs. "read kind and compare")? Contracts carry facts; policy inlines back into consumers — delete even when it has real readers.

    Either hit → challenge the whole dimension instead of polishing it.

  4. Check same-source capability: does an existing API already cover this, including "strict projection" relations (e.g. getFileSize ≡ getMetadata().size)? Never open a second entry point for the same capability.

  5. Check responsibility: is the demand leaked from another layer (e.g. renderer interpreting fs errors, UI doing business validation)? Check-then-act queries usually should become try-the-operation.

After each question eliminates a layer, apply normal implementation review (validation, tests, types, docs) only to the survivors.

Rationalization Table

ExcuseReality
"The API is clean / the types are elegant"A clean thing that shouldn't exist still shouldn't exist. Question existence first.
"It has consumers"Counting isn't enough. Check which fields each consumer reads — a zero-consumption dimension is still pseudo-demand.
"This parameter/field IS consumed"Consumed ≠ should exist. Second check: fact or policy? A dimension that moves a one-line consumer-side judgment into the contract gets inlined back, readers or not.
"Found an unused export — add a test for safety"Zero-consumption signals should trigger demand questioning, not test backfill.
"A technical constraint makes it necessary"Ask whether the demand served by that constraint is itself real. Constraints are not axioms.
"The PR is additive, it breaks nothing"Additive is exactly how pseudo-demands sneak in. New surface needs MORE existence scrutiny than modified surface.
"We may need it later / forward-compatible"Zero consumption now means pseudo-demand now. Add it when a real consumer appears.
"Existence is the author's / architect's call"Questioning demand is part of review. Downgrading existence questions to nits equals not asking.

Red Flags — stop, return to step 1

  • You have written five implementation-level comments without listing consumers
  • Your report says "speculative" / "no consumers yet" / "unused" but concludes keep / note / add test
  • You are finding reasons for an API to exist instead of finding its consumers
  • You are about to suggest "add a comment explaining why this is needed" — first confirm it is needed

Real-World Impact

PR #15695 (2 new IPC channels): six implementation-level review agents produced 30+ polish comments, zero questioning existence. Three consumer-archaeology questions later: one channel rejected as a duplicate entry point, one parameter deleted, one channel classified as debt-to-remove — invalidating most of the polish comments.

Related skills