Brutal Feedback

VerifiedCaution

Get brutally honest, structured critique of ideas, plans, code, or proposals using an external LLM with adversarial personas.

Sby Skills Guide Bot
DevelopmentIntermediate
7/23/2026
Claude Code
#feedback#critique#adversarial#red-teaming#review

Recommended for

Automated summary

Gets brutally honest, structured critique of ideas, plans, code, or proposals by sending them to an external LLM with adversarial personas.

Strengths

  • Unbiased, direct feedback from an external model
  • Multiple personas (Devil's Advocate, Red Team, Gordon Ramsay) tailored to the need
  • Incorporates context (files, code) for precise critiques

Limitations

  • Requires an API key for the external model (default XAI)
  • Never generates critique locally if the script fails
  • May feel overly harsh if only constructive feedback is desired
When to use it

When you need a ruthless external review to uncover weaknesses in an idea, plan, or proposal.

When not to use it

When you prefer balanced, constructive feedback, or when an external LLM is unavailable.

Security analysis

Caution
Quality score90/100

The skill runs Bash commands to execute Python scripts that send user content to external LLM APIs. While the user initiates this and the scripts are within the skill bundle, network exfiltration and API key usage present caution-level risk.

Findings
  • •Executes Python scripts via uv run that make network requests to external APIs, potentially exposing user-provided content.
  • •Reads environment variables for API keys, which could be mishandled in logs or error output.
How this analysis is made

Examples

Critique a business plan
brutal feedback: I want to start a subscription box for left-handed people. Pitch: monthly curated items for lefties. Persona: red team.
Tear apart a code architecture
tear this apart: My microservice design uses event sourcing with Kafka, but I'm worried about complexity. Read the architecture.md file and critique it with Gordon Ramsay persona.
Red team a product idea
red team this: We're building a mobile app that uses AI to generate personalized workout plans. Attack the assumptions and potential failure points.

name: brutal description: Get brutally honest feedback on ideas, plans, code, or proposals from an external LLM. Triggers: "brutal feedback", "critique this", "tear this apart", "what's wrong with this idea", "red team this", or needs honest critical review of an idea or plan. allowed-tools: Bash,Read,Agent,AskUserQuestion

BRUTAL Feedback

Get brutally honest, structured critique of ideas, plans, code, or proposals by sending them to an external LLM (Grok via xAI by default) with adversarial personas and third-party framing.

Prerequisites

  • uv installed (dependencies are auto-installed via PEP 723 inline metadata)
  • For external model mode: XAI_API_KEY environment variable set (or appropriate key for chosen provider)
  • For Claude CLI mode: claude CLI installed and authenticated

Critical Rule

ALL critique content MUST come from the external model via the script. If the script fails or returns no output, report the error to the user. NEVER generate critique content yourself — not as a fallback, not as a summary, not in any form.

Workflow

1. Collect the idea

If $ARGUMENTS contains the idea, use it directly.

If $ARGUMENTS is empty or only contains a persona/modifier, ask:

header: "Idea"
question: "Paste or describe the idea, plan, or proposal you want critiqued."

2. Determine mode

No question needed — detect from $ARGUMENTS before extracting the idea text. Only match these cues when they appear as standalone directives, not embedded inside the idea content:

  • If user says "use claude", "claude cli", or passes a Claude model flag (e.g. --model sonnet-4-6) → Claude CLI mode. Use critique-claude.py.
  • Otherwise → External model mode. Use critique.py.

Do NOT match partial words inside idea text (e.g. "my opus on distributed systems" is not a Claude model cue).

3. Select persona

ALWAYS ask for persona unless $ARGUMENTS contains an explicit persona cue from the table below. Do NOT infer persona from the skill name or tone of the idea.

header: "Persona"
question: "Pick the feedback style."
multiSelect: false
options:
  - label: "Devil's Advocate"
    value: "devil"
    description: "Basic counterarguments, challenges assumptions"
  - label: "Red Team"
    value: "red-team"
    description: "Adversarial weakness hunting, thorough and methodical"
  - label: "Gordon Ramsay"
    value: "ramsay"
    description: "Surgical, no mercy, tears apart what's lazy"

Pass the selected value (not the label) as the --persona argument: devil, red-team, or ramsay.

Explicit cue detection (only these exact phrases skip the question):

| Persona | --persona value | Cues | |---------|-------------------|------| | Devil's Advocate | devil | "devil", "counterarguments" | | Red Team | red-team | "red team", "attack" | | Gordon Ramsay | ramsay | "ramsay", "tear apart" |

4. Gather context (optional)

If the idea references code, files, or domain-specific context, read relevant files and pass as --context to give the external model grounding.

5. Run the critique

Write the idea to a temp file, then run the appropriate script based on mode from step 2.

External model mode:

uv run ~/.claude/skills/brutal/scripts/critique.py \
  --idea-file /tmp/brutal-idea.txt \
  --persona PERSONA \
  [--self-critique]

Claude CLI mode:

uv run ~/.claude/skills/brutal/scripts/critique-claude.py \
  --idea-file /tmp/brutal-idea.txt \
  --persona PERSONA \
  [--model MODEL] \
  [--self-critique]

Pass --model only if the user specified a particular Claude model (e.g. claude-sonnet-4-6). If they just said "use claude", omit --model to use the default.

For both modes: write large context to a file and pass --context-file /tmp/brutal-context.txt. For short ideas, --idea "TEXT" and --context "TEXT" also work. Add --self-critique when the modifier is active.

The script outputs formatted markdown directly. Do NOT reformat, summarize, or rephrase any of it.

6. Present the output

Print the script's stdout verbatim. Do NOT add any text before, after, or around it.

Alternative Providers

When the user specifies an exact model string (e.g. "use gpt-4o"), pass it as --model PROVIDER/MODEL verbatim. When the user gives only a provider name (e.g. "use openai"), use the default model from the table below. Add the required --with extra to the uv run command.

| Provider | Default --model value | --with extra | Env var | Notes | |----------|-------------------------|----------------|---------|-------| | xAI (default) | xai/grok-4.20-0309-reasoning | (built-in) | XAI_API_KEY | | | OpenAI | openai/gpt-5.4-2026-03-05 | (built-in) | OPENAI_API_KEY | | | Anthropic | anthropic/claude-opus-4-6 | instructor[anthropic] | ANTHROPIC_API_KEY | | | Google | google/gemini-3.1-pro-preview | instructor[google-genai] | GOOGLE_API_KEY | | | Ollama | ollama/deepseek-reasoner | (built-in) | — | Defaults to http://localhost:11434/v1. Set BASE_URL in .env to override |

Example with Anthropic:

uv run --with "instructor[anthropic]" ~/.claude/skills/brutal/scripts/critique.py \
  --model anthropic/claude-sonnet-4-20250514 \
  --idea-file /tmp/brutal-idea.txt \
  --persona PERSONA

Behavioural Modifiers

| Behaviour | Cues | Default | |-----------|------|---------| | Claude CLI mode | "use claude", "claude cli", or a Claude model flag (e.g. --model sonnet-4-6) | Off (uses external model) | | External model override | "use openai", "use gemini", "use ollama", "use grok-3" | xai/grok-4.20-0309-reasoning | | Self-critique | "self-critique", "double check", "critique yourself" | Off | | Include code context | references files or code in the idea | Auto-detect |

Keywords

brutal feedback, honest review, critique, red team, devil's advocate, tear apart, roast, what's wrong, poke holes, claude cli

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/brutal-feedback-mrwakagz/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/brutal-feedback-mrwakagz' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/brutal-feedback-mrwakagz/download' --output '.skill-downloads/brutal-feedback-mrwakagz/SKILL.md.part' && mv '.skill-downloads/brutal-feedback-mrwakagz/SKILL.md.part' '.skill-downloads/brutal-feedback-mrwakagz/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Original excerpt: Prerequisites
  • uv installed (dependencies are auto-installed via PEP 723 inline metadata)
  • For external model mode: XAI_API_KEY environment variable set (or appropriate key for chosen provider)
  • For Claude CLI mode: claude CLI installed and authenticated

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/brutal-feedback-mrwakagz/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills