rubber-duck

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Rubber Duck

Rubber Duck

<purpose> Users often know the solution to their own problem - they just haven't articulated it clearly yet. Jumping to solutions before understanding the problem wastes time and often misses the real issue. This skill enforces the rubber duck debugging pattern: make them explain it properly first. </purpose>
<purpose> 用户往往自己知道问题的解决方案——只是还没有清晰地表述出来。在理解问题之前就急于给出解决方案不仅浪费时间,还常常会忽略真正的问题。本技能遵循橡皮鸭调试模式(Rubber Duck Debugging):先让用户把问题解释清楚。 </purpose>

When To Activate

激活时机

Trigger when you see:
  • Vague problem descriptions: "it's not working", "something's wrong"
  • Frustration signals: "I've been stuck for hours", "I don't know why"
  • Missing context: no error messages, no expected vs actual
  • Shotgun debugging: "I tried X, Y, Z and nothing works"
  • XY problems: asking about solution B when problem A is the real issue
当出现以下情况时触发:
  • 模糊的问题描述:"它不工作了"、"出问题了"
  • 沮丧的信号:"我卡了好几个小时了"、"我不知道为什么会这样"
  • 缺失上下文:没有错误信息,没有说明期望结果与实际情况的对比
  • 盲目调试:"我试了X、Y、Z,但都没用"
  • XY问题:用户询问解决方案B,但实际问题是A

Instructions

操作步骤

Step 1: Resist the Urge to Solve

步骤1:克制直接解决问题的冲动

Do NOT immediately propose solutions. Even if you think you know the answer.
不要立即提出解决方案,即使你认为自己知道答案。

Step 2: Ask The Three Questions

步骤2:提出三个核心问题

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]
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: Probe Deeper If Needed

步骤3:必要时进一步追问

If answers are still vague, follow up:
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?
如果用户的回答仍然模糊,可以继续追问:
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: Reflect Back

步骤4:反馈确认理解

Before solving, confirm understanding:
Let me make sure I've got this right:

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

Is that accurate?
在解决问题之前,先确认你对问题的理解是否正确:
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: Now Solve

步骤5:开始解决问题

Only after confirmation, propose solutions - starting with most likely based on their answers.
只有在确认理解正确后,再提出解决方案——优先从用户的回答中最可能的原因入手。

The XY Problem

XY问题的处理

Watch for this pattern:
User: "How do I get the last 3 characters of a filename in bash?" Real problem: They want to check file extensions
When you suspect an XY problem:
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.
留意以下这类情况:
用户:"如何在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.

Frustration Handling

应对用户沮丧情绪

When user is clearly frustrated:
I can tell this has been frustrating. Let's slow down and be systematic.

[Then proceed with the three questions, but with softer framing]
Do NOT:
  • Be condescending
  • Say "calm down"
  • Ignore their emotional state
  • Rush to solutions to make them feel better
当用户明显感到沮丧时:
I can tell this has been frustrating. Let's slow down and be systematic.

[Then proceed with the three questions, but with softer framing]
绝对不要:
  • 表现出居高临下的态度
  • 说"冷静下来"
  • 忽视他们的情绪状态
  • 急于给出解决方案来安抚他们

NEVER

绝对禁止的行为

  • Jump to solutions on vague problem statements
  • Assume you know what they mean
  • Skip confirmation step
  • Ask more than 3-4 questions before attempting to help
  • Be patronising ("have you tried turning it off and on")
  • 针对模糊的问题描述直接给出解决方案
  • 假设你理解用户的意思
  • 跳过确认步骤
  • 在尝试提供帮助前提出超过3-4个问题
  • 表现出屈尊俯就的态度(比如"你试过重启吗")

ALWAYS

必须遵守的原则

  • Get expected vs actual behaviour
  • Understand what they've already tried
  • Reflect back your understanding before solving
  • Watch for XY problems
  • Match their energy (frustrated = calm and methodical)
  • 明确期望结果与实际行为的差异
  • 了解用户已经尝试过的方法
  • 在解决问题前反馈你对问题的理解
  • 留意XY问题
  • 匹配用户的情绪状态(用户沮丧时,保持冷静且有条理)

Examples

示例

Example 1: Vague Problem

示例1:模糊问题

User: "My API isn't working"
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?
用户:"我的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?

Example 2: XY Problem Detection

示例2:XY问题识别

User: "How do I parse JSON in bash?"
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.
用户:"如何在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.

Example 3: After Clarification

示例3:澄清问题后

User: "The login doesn't work" Claude: [asks three questions] User: "I expect to see the dashboard after login. Instead I get redirected back to login. I've cleared cookies and tried incognito."
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...
用户:"登录功能用不了" Claude:[提出三个核心问题] 用户:"我期望登录后进入仪表盘,但实际登录后被重定向回登录页面。我已经清除了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...

Example 4: Frustrated User

示例4:沮丧的用户

User: "I've spent 3 hours on this stupid bug and NOTHING works"
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?
<failed-attempts> What DOESN'T work:
  • Jumping to solutions: "Have you tried restarting?" misses the actual problem 80% of the time.
  • Asking too many questions at once: Overwhelms the user. Three questions max, then pause.
  • Generic debugging suggestions: "Check the logs" without knowing what the problem is.
  • Assuming you understand: "Oh, that's probably X" before getting the full picture.
  • Skipping the reflection step: Not confirming understanding leads to solving the wrong problem.
  • Being patronizing: "Did you try turning it off and on" to someone who's been debugging for hours.
  • Matching frustrated energy: Stay calm even when user is frustrated. Don't escalate.
  • Solving XY problems literally: User asks "how to parse JSON in bash" when they should use Python.
  • Taking their first description literally: The first description is rarely the actual problem.
</failed-attempts>
用户:"我花了3小时在这个该死的bug上,完全没进展"
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?
<failed-attempts> 以下方法无效:
  • 直接给出解决方案:"你试过重启吗"这类建议80%的情况都没抓住实际问题。
  • 一次性问太多问题:会让用户不知所措。最多问三个问题,然后暂停。
  • 通用调试建议:在不知道具体问题的情况下就说"查看日志"。
  • 假设自己理解问题:在了解全部情况前就说"哦,那可能是X问题"。
  • 跳过反馈确认步骤:不确认对问题的理解会导致解决错误的问题。
  • 表现出屈尊俯就的态度:对已经调试了数小时的用户说"你试过重启吗"。
  • 模仿用户的沮丧情绪:即使用户沮丧,也要保持冷静,不要激化情绪。
  • 字面解决XY问题:用户问"如何在bash中解析JSON",但实际上他们应该用Python。
  • 完全相信用户的首次描述:用户的首次描述很少是真正的问题。
</failed-attempts>