sanity-check
Sanity Check
Validate a plan, design, or decision. Confirm good choices, flag real concerns, and identify blind spots.
When to use
- Before implementing a plan
- After designing an approach
- When making a non-trivial technical decision
- When you want your thinking challenged
Not for:
- Reviewing implemented code
- Generating alternative approaches
- Open-ended exploratory analysis
- Interactive adversarial stress-testing
Instructions
1 — Understand what's being checked
Gather context:
- The plan, design, or decision text
- Relevant files or code
- Any constraints or requirements
If the plan is vague or missing key details, use the AskUserQuestion tool to ask for specifics before proceeding. Present what's unclear and what you need to evaluate effectively.
2 — Evaluate
- Confirm what's good about the approach — don't skip this even if there are concerns
- Check for realistic failure scenarios (not theoretical edge cases)
- Identify blind spots — things not addressed that should be
- Assess whether the whole approach should be reconsidered
3 — Return output
Return a SanityCheckOutput conforming to the Output Schema below.
Rules
- Honest. If the plan is sound, say so — don't manufacture concerns.
- Realistic risks. Focus on realistic risks, not theoretical edge cases.
- Cite evidence. When making claims about code, read it first. No citation = not a concern.
- Direct reframes. If it needs rethinking, say so directly with a concrete alternative in the
reframefield. - P0-P2 only. Concerns use P0-P2 only — plan-level issues are either blocking or not, "nice to have" doesn't apply.
Output Schema
SanityCheckOutput
SanityCheckOutput {
verdict: "sound" | "concerns" | "rethink",
confirmation: what's good about this approach,
concerns: Concern[],
blind_spots: string[],
reframe: string | null
}
Concern
Concern {
id: sequential number starting from 1,
severity: "P0" | "P1" | "P2",
issue: description of the concern,
why_it_matters: impact if not addressed,
confidence: 0.0-1.0
}
Field notes
verdict— "sound" means proceed. "concerns" means fixable issues exist. "rethink" means the approach has fundamental problems (must populatereframe).confirmation— always say what's good, even when the verdict is "rethink." This prevents the user from throwing out the baby with the bathwater.concernsuse P0-P2 only (no P3). Plan-level issues are either blocking or not — "nice to have" doesn't apply to plan validation.blind_spots— things the plan doesn't address. Not necessarily problems — the user may have intentionally excluded them. List them so the user can confirm.reframe— required (non-null) when verdict is "rethink"; null when verdict is "sound" or "concerns". The "you're solving the wrong problem" field — populate with a concrete alternative direction, not just "reconsider".confidence— how confident you are that this concern is real. 1.0 = certain failure mode, below 0.5 = speculative risk.
More from preetamnath/agent-skills
shopify-dev-mcp
Routes Shopify Dev MCP calls for surfaces NOT covered by the bundled Shopify skills: `storefront-graphql`, `customer`, `partner`, `payments-apps`, `functions`, `hydrogen`, `liquid`, `custom-data`. SKIP for Admin GraphQL or App Home markup — the bundled `shopify-admin` and `shopify-polaris-app-home` skills cover those. SKIP entirely for `@shopify/post-purchase-ui-extensions-react` — the MCP doesn't index that legacy SDK; use `post-purchase-ui-extension` instead.
15plan-runner
Executes wave-grouped markdown plans via parallel subagents. Orchestrates implementation, per-wave review, fix cycles, and final two-pass-review. Resumable across conversations.
13interview-me
Move from ambiguity to clarity before building. Use when user says 'interview me', asks to be interviewed, or the task has ambiguous scope.
13sentry-analysis
Analyze Sentry error logs, breadcrumbs, and codebase context to diagnose and explain the root cause of issues.
13code-review
Structured code review with P0-P3 findings, confidence scores, and criteria-based analysis. Use for reviewing code changes, PRs, or specific files.
12plan-builder
Creates dependency-ordered, wave-grouped executable plans from a goal + context. Produces markdown plans with parallel execution waves compatible with plan-runner. Use when you need to break a goal into sequenced, atomic work items before execution.
10