rubber-duck

rubber-duck is a skill for Claude Code from thoughtbot/rails-consultant. It costs 29 tokens per session (686 once invoked), scanned A, original, MIT.

A conversational thinking aid that uses one question at a time to help clarify a problem or decision. It is based on the idea of explaining a problem aloud to expose gaps in your reasoning.

In plain words
What is it for?
Use it when you are stuck on a technical or design decision and want to examine the problem through guided questions.
Why use it?
It helps separate the actual problem from assumptions, proposed solutions, and distractions.

Skill for Claude Code

Written for Claude Code: disable-model-invocation in frontmatter.

Part of the rails-consultant plugin — 12 skills shipped together

Good fit Use it when you are stuck on a technical or design decision and want to examine the problem through guided questions.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/thoughtbot/rails-consultant/rubber-duck
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add thoughtbot/rails-consultant --skill rubber-duck
Clone the repo
git clone --depth 1 https://github.com/thoughtbot/rails-consultant

Made for: Claude Code.

Or install rails-consultant, the plugin that ships this one along with the rest of its 12 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for rubber-duck

README.md
[![agentmods](https://agentmods.dev/badge/skills/thoughtbot/rails-consultant/rubber-duck/github.svg)](https://agentmods.dev/skills/thoughtbot/rails-consultant/rubber-duck)
Your own site
<a href="https://agentmods.dev/skills/thoughtbot/rails-consultant/rubber-duck"><img src="https://agentmods.dev/badge/skills/thoughtbot/rails-consultant/rubber-duck/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for rubber-duck

Your own site · 80×15
<a href="https://agentmods.dev/skills/thoughtbot/rails-consultant/rubber-duck"><img src="https://agentmods.dev/badge/skills/thoughtbot/rails-consultant/rubber-duck.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 29 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 686 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00029 $0.00686
Opus 5 $0.00015 $0.00343
Sonnet 5 $0.00006 $0.00137
Haiku 4.5 $0.00003 $0.00069

Measured 10d ago against content hash 04f9d78c2d5a, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

rubber-duck scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/rubber-duck/SKILL.md · 54 lines

How it starts

The opening of the file, as written. The whole thing — 54 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Behavior

This is a conversation, not a form. Do not ask a list of questions upfront. Follow the thread with one question at a time, Socratically.

If the user already described their problem — in their prompt, an argument, or the conversation leading up to this — start from what they gave you. Name what you heard in your own words (briefly, to show you understood), then ask the first question that follows from it. Do not ask them to restate what you already know.

If they invoked the skill without context, open with:

"Tell me about it. What's going on?"

Ask one question at a time based on what they say. The goal is to follow the gaps in their thinking, not a predetermined script. Good questions to reach for when they naturally arise:

  • "What's the actual problem underneath that?"
  • "Whose idea was this approach?"
  • "What have you already ruled out?"
  • "What's the cost if you're wrong?"
  • "What does your gut say — and do you trust it here?"
  • "Can you say that in plain English, like you're explaining it to the client?"

When the problem is technical or design-related, reach for questions grounded in OOP principles and XP values — but ask them as questions, not lectures. Examples:

  • "Is this the simplest thing that could work?" (Beck / XP)
  • "What's the single reason this class would need to change?" (Metz / SRP)
  • "What does this code know about that it probably shouldn't?" (coupling / Law of Demeter)
  • "What's the feedback loop — how quickly will you know if this is wrong?" (XP)
  • "Are you designing for now, or for a future that might not arrive?" (YAGNI)
  • "Who owns this behaviour — does it live in the right place?" (Tell Don't Ask)

Keep asking until the shape of the problem is clear — either because they've articulated it, or because the gaps are obvious. Do not produce structured output until the conversation has run its course and you have enough to say something useful.

When the moment is right, close the conversation and reflect back what you heard. No rigid sections — just an honest synthesis:

  • What the real problem appears to be (vs. what they came in with)
  • The question they've been avoiding or haven't asked themselves
  • The trade-offs that actually matter here
  • What you'd do, directly — or what's missing before that call can be made

End by asking one final thing:

"What do you think you already knew before we started talking?"

Wait for their answer. Respond with one short paragraph: what their answer reveals about how they process ambiguity — and whether they tend to reach for clarity or complexity when they're uncertain.

Read the full file on GitHub · 54 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 54 lines · 29 tokens per session scan A 04f9d78c2d5a

Subscribe to this mod's changes

rubber-duck is a skill published in the GitHub repository thoughtbot/rails-consultant (24 stars, last pushed 1mo ago), licensed MIT. It adds 29 tokens to every session and 686 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

recursive-decomposition

Handle tasks that exceed the context window by decomposing them: size and filter the input, chunk it, run recursive sub-agents on independent parts, verify on small windows, and synthesise programmatically, following the Recursive Language Models (RLM) research by Zhang, Kraska and Khattab (2025). Use when a task…

massimodeluisa/recursive-decomposition-skill · 151 tokens

swarm

Run a multi-agent audit of a codebase by spawning specialized parallel subagents (security, performance, tests, architecture, dead-code), then synthesize their findings into a single prioritized action plan. Use this whenever the user runs /swarm, asks to "audit the repo," "review this codebase," "find issues across…

Zintellix/Claude-Skills · 138 tokens

tools-unity-behavior-designer

Behavior Designer patterns for AI behavior trees including task creation, shared variables, conditionals, and debugging.

IdoCohen560/claude-unity-game-studio · 29 tokens

tools-unity-flowcanvas

FlowCanvas visual scripting patterns for abilities, custom nodes, and graph execution.

IdoCohen560/claude-unity-game-studio · 21 tokens

tools-unity-gameplay-ability-system

Gameplay Ability System patterns for abilities, effects, attributes, and tags including recursion safety and lifecycle management.

IdoCohen560/claude-unity-game-studio · 29 tokens

eng-unity-mobile-optimization

Mobile-specific Unity optimization patterns for memory, battery, thermal, and performance.

IdoCohen560/claude-unity-game-studio · 22 tokens