wipnote:plan-critique
Dual-critic review pass for a drafted plan. Runs DESIGN CRITIC and FEASIBILITY CRITIC agents in parallel against the plan YAML, then writes findings as critic_revisions on the affected slices. Use when asked to critique this plan, review plan, run plan critic pass, or before human review of a multi-slice plan.
What this skill does
# wipnote Plan Critique
Invoke this skill **after** the plan is drafted via `wipnote:plan` (slices laid out, decisions_notes captured) and **before** the human review pass. It runs two critic agents in parallel against the plan YAML and bakes the findings into the affected slices as `critic_revisions`.
**Trigger keywords:** critique this plan, review plan, plan critic pass, run critics, design critique, feasibility critique
---
## When to run
| Plan shape | Critique? |
|---|---|
| Trivial single-slice plan | Skip — overhead outweighs value |
| Standard plan with 2+ slices | Run |
| Complex plan (any slice with `complexity: complex`) | **Required** before human review |
---
## Invocation
There is no `wipnote plan critique <plan-id>` subcommand. The agent invokes this skill directly, runs both critic prompts against the plan YAML, and writes findings back into the slice cards.
The agent:
1. Loads `.wipnote/plans/<plan-id>.yaml` and reads each slice card.
2. Runs two critic passes itself (no separate CLI dispatch):
- **DESIGN CRITIC** — Haiku model. Reads the plan as a design document. Looks for missing slices, scope gaps, unclear acceptance criteria, conflicting goals, undefined lifecycle states, and reviewer ergonomics issues (will a human actually understand and approve this?).
- **FEASIBILITY CRITIC** — Sonnet model. Reads the plan as an implementation contract. Verifies cited files exist, line ranges match, existing patterns are reused not reinvented, gates and regex/SQL constraints accommodate the proposed sections, and that each done_when entry is testable from the listed files alone.
3. Applies findings by editing the YAML directly and re-running `wipnote plan validate <plan-id>`, or by using `wipnote plan edit <plan-id>` to write `critic_revisions` back into the affected slice cards.
Both critics produce structured output: a list of findings tagged with a per-slice scope (the slice `num` they target), a severity (`success | warn | danger | info`), and a one-line summary.
---
## Output shape (critic_revisions)
Each finding lands on the affected slice as a `critic_revisions[]` entry. Schema mirrors `plan/planyaml/schema.go`:
```yaml
slices:
- id: slice-1
num: 1
# ... slice content ...
critic_revisions:
- source: haiku # design critic
severity: HIGH # free-form label; HIGH/LOW/DANGER convention
summary: "Section-naming contract documented but validSectionRe at api_plans.go:286 rejects the proposed pattern."
- source: sonnet # feasibility critic
severity: LOW
summary: "Minor: existing TestLimiterMetric covers the regression; no new test needed."
```
The dashboard renders each `critic_revision` as a compact badge inside the slice card so reviewers see the finding alongside the spec it modifies.
---
## Workflow
1. Agent runs both critic passes against the plan YAML (see Invocation above) — there is no `wipnote plan critique` CLI command.
2. Agent reviews each finding:
- `success` — informational, no action
- `warn` — consider addressing before human review
- `danger` / `HIGH` — must address before human review; rewrite the affected slice
3. Rewrite the plan YAML via `wipnote plan rewrite-yaml <plan-id> --file <path>` with the revised slice cards. Keep the `critic_revisions` entries so reviewers can see what changed and why.
4. Hand off to human review (`wipnote serve` → dashboard) only after `danger`/`HIGH` items are resolved.
---
## Output format (top-level critique section, optional)
For complex plans, the critics also populate a top-level `critique:` section in the plan YAML. Schema from `plan/planyaml/schema.go`:
```yaml
critique:
reviewed_at: "YYYY-MM-DD"
reviewers:
- "Haiku (design)"
- "Sonnet (feasibility)"
assumptions:
- id: A1
status: verified|plausible|unverified|questionable|falsified
text: "<assumption>"
evidence: "<file:line citation>"
critics:
- title: DESIGN CRITIC
sections:
- heading: "<theme>"
items:
- badge: "<short label>"
kind: success|warn|danger|info
text: "<finding>"
- title: FEASIBILITY CRITIC
sections:
# ... same shape ...
risks:
- risk: "<one-line risk>"
severity: High|Medium|Low
mitigation: "<concrete action>"
synthesis: |
One-paragraph summary: which blockers resolved, which remain, what
the human reviewer should focus on first.
```
The synthesis paragraph is the artifact the orchestrator reads when deciding whether the plan is ready for human review. Be concrete: name specific blockers by ID (A1/B2/Wrong-3) so the next reader can map findings back to code.
---
## Section-naming contract
Critique state stored in `plan_feedback` uses these section keys (mirrored in `plugin/skills/plan/SKILL.md`):
| Key pattern | What it stores |
|---|---|
| `slice-<num>` | Per-slice critic findings (action=`add_critic_revision`) |
| `critique` | Top-level critique section approval / acknowledgment |
The agent maps `<slice-num>` to the section key when writing findings back to the YAML.
---
## Relationship to other skills
- **`wipnote:plan`** — produces the plan being critiqued. Run that skill first.
- **`wipnote:plan-critique`** (this skill) — runs after drafting, before human review.
- **`wipnote:spec-from-slice`** — runs after human approval, before promotion. Reads `decisions_notes` written during the interview; critique findings should be merged into that prose before promotion.
Do NOT invoke this skill during the interview itself — interview-stage AUQ Q&A captures requirements; critique evaluates the resulting design. Mixing the two stages confuses the reviewer model.
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.