skills/critical-feedback/SKILL.md
Rigorous critical analysis of designs, strategies, communications, and proposals. Use when: stress-testing a design or architecture, playing devil's advocate on a strategy, poking holes in assumptions, evaluating competing arguments, challenging a proposal before it ships, reviewing a communication for logical weaknesses, pressure-testing a plan before presenting to leadership, or when someone asks "what am I missing?" Works on any artifact: technical designs, business strategies, product proposals, org changes, communications, or process decisions.
npx skillsauth add michaelsvanbeek/personal-agent-skills critical-feedbackInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Rigorous, honest analysis that prioritizes finding the best solution over comfort. The goal is not to tear things down — it's to surface weaknesses early enough to fix them.
Before critiquing, reconstruct what the author is trying to achieve and why they chose this approach. This prevents critiquing a strawman.
## Intent Reconstruction
**Goal**: <What is this trying to accomplish?>
**Chosen approach**: <What approach was selected?>
**Author's likely reasoning**: <Why this approach over alternatives?>
**Constraints the author is working within**: <Budget, timeline, team skills, org politics, tech debt>
**Success criteria**: <How would the author judge this successful?>
If you can't fill this out, ask clarifying questions before proceeding. Critiquing without understanding intent produces irrelevant feedback.
State the strongest possible case for the proposal, as the author would make it. This serves two purposes:
## Strongest Case For
- <Strength 1: why this approach genuinely makes sense>
- <Strength 2: what problem this solves well>
- <Strength 3: what constraints this respects>
Every design rests on assumptions. List them explicitly, then classify each:
## Assumptions
| # | Assumption | Validated? | Risk if Wrong |
|---|-----------|-----------|---------------|
| 1 | <e.g., "Traffic will stay under 1K rps"> | ❌ Unvalidated | High — architecture breaks at 5K |
| 2 | <e.g., "Users prefer speed over accuracy"> | ⚠️ Partially (one survey) | Medium — wrong bet inverts the value prop |
| 3 | <e.g., "Team can deliver by Q3"> | ✅ Validated (capacity plan) | Low |
Focus critique energy on unvalidated assumptions with high risk.
Evaluate the proposal through each relevant lens. Not every lens applies to every artifact — select the ones that matter.
Structure findings by severity, not by the order you found them.
| Level | Meaning | Action Required | |-------|---------|----------------| | Blocker | Fundamental flaw — the proposal shouldn't proceed as-is | Must be resolved before moving forward | | Significant | Material weakness that degrades the outcome | Should be addressed; explain the cost of ignoring | | Minor | Valid concern with limited blast radius | Note for awareness; author's judgment call | | Nitpick | Style or preference, not correctness | Flag only if asked for exhaustive feedback |
For each finding:
### [Severity] <Title>
**What**: <What is the issue?>
**Why it matters**: <What risk, cost, or failure does this create?>
**Evidence/reasoning**: <Why you believe this is a real problem, not a hypothetical>
**Steelman counterargument**: <The best argument for leaving it as-is>
**Recommendation**: <What to do instead, or how to mitigate>
When the critique surfaces a genuine tension (e.g., speed vs. quality, flexibility vs. simplicity), present both sides explicitly:
## Competing Arguments
### Argument A: <position>
- **For**: <strongest reasons>
- **Against**: <strongest objections>
- **Conditions where A wins**: <when is this the right call?>
### Argument B: <position>
- **For**: <strongest reasons>
- **Against**: <strongest objections>
- **Conditions where B wins**: <when is this the right call?>
### Assessment
<Which argument wins given the current context and constraints, and why>
End with a clear, unambiguous assessment. Don't hide the conclusion in paragraphs of nuance.
## Verdict
**Overall assessment**: <Proceed | Proceed with changes | Rethink | Stop>
**Blockers** (must resolve):
1. <blocker summary + recommendation>
**Significant concerns** (should resolve):
1. <concern summary + recommendation>
**Strengths to preserve**:
1. <what's working well and should not be changed>
**Suggested next step**: <specific action — e.g., "Spike on assumption #2 before committing to this architecture">
Every critical feedback deliverable should produce:
| Context | Tone | |---------|------| | Technical design review | Direct, precise, evidence-based. Reference specific components. | | Strategy or product direction | Analytical, scenario-driven. Focus on assumptions and second-order effects. | | Communication review | Audience-focused. "How will <stakeholder> interpret this?" | | Someone explicitly asked for hard feedback | Fully candid. Don't soften. They asked for this. | | Early-stage idea (not yet a proposal) | Constructive. Focus on "what would need to be true for this to work?" rather than "this won't work." |
Critique should be proportional to the decision's blast radius and reversibility:
| Decision Type | Suggested Critique Depth | Time Budget | |--------------|-------------------------|-------------| | Reversible config or copy change | Quick scan — skim for blockers only | 5 min | | Feature design or API contract | Full process — Steps 1–7 | 30–60 min | | Architecture or platform decision | Full process + competing arguments | 1–3 hours | | Strategy or org-level direction | Full process + pre-mortem | Half day |
When to stop: If you've completed the process and have no Blocker or Significant findings, you're done. Don't manufacture concerns to justify the time spent. "No major issues found" is a valid and useful verdict.
Artifact: A proposal to expose user data via a new public REST API.
/v1/users/{id} endpoint returning full profile JSON.| # | Assumption | Validated? | Risk if Wrong | |---|-----------|-----------|---------------| | 1 | Partners only need the fields in the internal model | ❌ | Medium — over-exposing PII | | 2 | Traffic from partners will be low | ❌ | High — no rate limiting in proposal | | 3 | Internal model is stable | ⚠️ Partially | High — model changes break partners |
[Blocker] No API contract separation from internal model
[Significant] PII exposure
[Minor] No rate limiting mentioned
Overall assessment: Proceed with changes.
| Anti-Pattern | Why It Fails | |-------------|-------------| | Critique without understanding | Attacking a strawman wastes everyone's time and destroys credibility | | "I don't like it" without reasoning | Unhelpful. Every objection needs a because. | | Nitpicking when blockers exist | Discussing variable names while the architecture is unsound signals broken priorities | | Hedging on blockers | Saying "might be an issue" when you mean "this will fail" delays necessary course corrections | | Criticism without alternatives | Pointing out problems without suggesting solutions is obstruction, not feedback | | Critiquing everything equally | If 15 findings are all "significant," none of them are. Use severity honestly. | | Ignoring constraints | Proposing the ideal solution that ignores the budget, timeline, or team capability is not useful critique | | Optimizing for being right | The goal is the best outcome, not winning the argument. If the author's response resolves your concern, accept it. |
development
TypeScript coding standards and type safety conventions. Use when: creating TypeScript files, defining interfaces and types, writing type-safe code, reviewing TypeScript for type correctness, auditing a codebase for type safety gaps, eliminating any or ts-ignore usage, or improving strict-mode compliance. Covers strict typing, avoiding any and ts-ignore, discriminated unions, Zod runtime validation, immutability patterns, and proper type definitions.
testing
Writing clear, actionable tickets in any issue tracker (Jira, Linear, GitHub Issues, ServiceNow, etc.). Use when: creating epics, stories, tasks, bugs, or spikes; writing acceptance criteria; decomposing work for a sprint; linking dependencies between tickets; auditing backlog items for clarity; or coaching a team on ticket quality. Covers title conventions, description templates, acceptance criteria, decomposition rules, dependency linking, and org-specific pluggable configuration.
development
Testing strategy, patterns, and evaluation for software and LLM/AI systems. Use when: writing tests, choosing test boundaries, designing test data, structuring test suites, evaluating LLM outputs, building evaluation pipelines, setting coverage thresholds, auditing test coverage gaps in existing projects, or improving test quality and structure.
development
Writing effective status updates for different audiences and cadences. Use when: writing a weekly status update, preparing a monthly summary, drafting a quarterly review, sending updates to leadership, sharing progress with stakeholders, or improving the clarity and impact of team communications. Covers weekly, monthly, and quarterly formats tailored for upward, lateral, and downward communication.