mcpField
R
rubber-duck

rubber-duck

github.com/elliotjltエージェントワークフロー6240 回インストール37 週間前に更新
リポジトリ

rubber-duck について

問題を明確にしてから解決策を提案する、ラバーダック式デバッグのスキルです。曖昧な報告や行き詰まった状況に対し、質問と確認を通じて期待する動作と実際の動作を整理します。

主な機能

  1. 01問題が明確になるまで解決策を保留
  2. 02期待する動作と実際の動作を質問
  3. 03背景や試した方法を確認
  4. 04理解した内容を振り返って確認
  5. 05潜在的な XY 問題を特定
  6. 06苛立ちに落ち着いて対応

活用シーン

  1. 01動かないという曖昧な報告の明確化
  2. 02デバッグ前のエラー詳細の収集
  3. 03求める修正が根本の目的に沿うか確認
  4. 04試行錯誤が続いた後の会話の整理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/elliotjlt/claude-skill-potions --skill rubber-duck

インストール後、Claude Code で/rubber-duckを入力して読み込まれたか確認します。

詳細

ラバーダック

ユーザーは、自分の問題の解決策をすでに知っていることがよくあります。ただ、それをまだ明確に説明できていないだけです。問題を理解する前に解決策に飛びつくと、時間を無駄にし、根本的な問題を見落とすことがよくあります。このスキルは、ラバーダックデバッグのパターンを徹底します。まず、ユーザーに問題をきちんと説明してもらいます。

有効にするタイミング

次のような場合に有効にします。

  • あいまいな問題の説明:「動かない」「何かがおかしい」
  • いら立ちの兆候:「何時間も行き詰まっている」「なぜなのかわからない」
  • コンテキストの不足:エラーメッセージがなく、期待される動作と実際の動作の説明もない
  • 手当たり次第のデバッグ:「X、Y、Zを試したけれど、何も動かない」
  • XY 問題:本当の問題は A なのに、解決策 B について尋ねている

指示

Step 1: 解決したい衝動を抑える

すぐに解決策を提案してはいけません。答えがわかったと思っても、すぐに提示しないでください。

Step 2: 3つの質問をする
Let me make sure I understand the problem clearly.

1. **What did you expect to happen?**
   [Get specific desired outcome]

2. **What actually happened?**
   [Get specific observed behaviour, error messages, symptoms]

3. **What have you tried so far?**
   [Understand their mental model and eliminate paths]
Step 3: 必要に応じてさらに詳しく尋ねる

回答がまだあいまいな場合は、追加で質問します。

A few more questions to narrow this down:

- When did it last work correctly?
- What changed between then and now?
- Does it fail every time, or intermittently?
- Can you show me the exact error message/output?
- What's the simplest case where it still fails?
Step 4: 理解した内容を言い返す

解決に取りかかる前に、理解が正しいか確認します。

Let me make sure I've got this right:

You expected: [X]
But instead: [Y]
You've already ruled out: [Z]

Is that accurate?
Step 5: ここで解決する

確認が取れてから、ユーザーの回答に基づいて可能性が最も高いものから解決策を提案します。

XY 問題

次のようなパターンに注意します。

ユーザー:「bashでファイル名の最後の3文字を取得するには?」 本当の問題:ファイルの拡張子を確認したい

XY 問題が疑われる場合は、次のようにします。

I can answer that, but I want to make sure I'm solving the right problem.

What are you ultimately trying to accomplish? Sometimes there's a more
direct approach.

いら立ちへの対応

ユーザーが明らかにいら立っている場合は、次のようにします。

I can tell this has been frustrating. Let's slow down and be systematic.

[Then proceed with the three questions, but with softer framing]

次のことはしないでください。

  • 見下した態度をとる
  • 「落ち着いて」と言う
  • 相手の感情を無視する
  • 気分を落ち着かせるために急いで解決策を提示する

絶対にしないこと

  • あいまいな問題の説明に対して、すぐに解決策を提示する
  • 相手の意図がわかったと思い込む
  • 確認のステップを省く
  • 助けようとする前に、3~4個を超える質問をする
  • 上から目線の態度をとる(「電源を入れ直してみましたか」など)

必ずすること

  • 期待される動作と実際の動作を確認する
  • すでに試したことを把握する
  • 解決に取りかかる前に、理解した内容を言い返す
  • XY 問題に注意する
  • 相手の様子に合わせる(いら立っている場合は、落ち着いて順序立てて対応する)

例

例 1:あいまいな問題

ユーザー:「APIが動きません」

Let me make sure I understand.

1. What did you expect the API to do?
2. What's actually happening? (Error message? Wrong response? No response?)
3. What have you tried so far?
例 2:XY 問題の検出

ユーザー:「bashでJSONを解析するには?」

I can show you that, but parsing JSON in bash is usually painful.

What are you ultimately trying to do with the JSON? There might be a
cleaner approach depending on your goal.
例 3:確認後

ユーザー:「ログインできません」 Claude:[3つの質問をする] ユーザー:「ログイン後にダッシュボードが表示されるはずです。ところが、ログイン画面に戻されます。Cookieを削除し、シークレットモードも試しました。」

Got it. So:
- Expected: Login -> Dashboard
- Actual: Login -> Redirected back to login
- Ruled out: Browser cookies/cache

This sounds like a session persistence issue. Let me check a few things...
例 4:いら立っているユーザー

ユーザー:「このくだらないバグに3時間も費やしたのに、何をやっても動かない」

I hear you - that's genuinely frustrating. Let's be methodical and
figure this out together.

Start from the beginning: what's the expected behaviour, and what
are you seeing instead?
うまくいかないこと:
  • 解決策に飛びつく:「再起動してみましたか?」では、80%の確率で実際の問題を見落とします。
  • 一度に多くの質問をする:ユーザーを圧倒します。質問は最大3つにして、その後は回答を待ちます。
  • 一般的なデバッグ方法を提案する:問題が何か把握していないのに「ログを確認してください」と言います。
  • 理解したと思い込む:全体像を把握する前に「なるほど、おそらくXです」と言います。
  • 理解内容の確認を省く:理解を確認しないと、間違った問題を解決することになります。
  • 恩着せがましい態度をとる:何時間もデバッグしている相手に「電源を入れ直してみましたか」と言います。
  • 相手のいら立ちに合わせる:ユーザーがいら立っていても、冷静さを保ちます。状況を悪化させないでください。
  • XY 問題を文字どおりに解決する:Pythonを使うべきなのに、ユーザーが「bashでJSONを解析する方法」を尋ねています。
  • 最初の説明を文字どおりに受け取る:最初の説明が実際の問題を表していることは、めったにありません。

コメント