From swe-assistant
Use when the user is about to ask a colleague for help, is hesitating to ask (worried about being annoying or seeming inexperienced), is preparing or drafting a question, has been stuck a while and wondering whether to keep digging or ask, or is reflecting on whether they ask too much or too little. Triggers include "I have a question for X", "I don't want to interrupt", "how do I ask without sounding dumb", "I've been stuck for hours", "should I ask or keep trying", "how should I frame this question", "I feel like I'm always asking my teammate things", or asking how to balance independence with getting help. Walks through the asking-for-help framework from The Missing Readme (Chapter 2) — do your research first, timebox before asking, show your work when you do, respect others' focus, prefer multicast and async communication, batch synchronous requests. Goal — be neither a drain (asks too much, never tries) nor a martyr (never asks, burns hours alone). Do not trigger when the user is asking the AI assistant directly or asking how to prompt AI tools — those have different dynamics, covered elsewhere.
How this skill is triggered — by the user, by Claude, or both
Slash command
/swe-assistant:asking-for-helpThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
*The Missing Readme*, Chapter 2, "Getting to Conscious Competence" (Section B: Asking Questions). This is the partner skill to [`learning-toolkit`](../learning-toolkit/SKILL.md) — together they cover the two halves of the chapter's goal: build the practice of learning on your own, AND get help well when you do need it.
The Missing Readme, Chapter 2, "Getting to Conscious Competence" (Section B: Asking Questions). This is the partner skill to learning-toolkit — together they cover the two halves of the chapter's goal: build the practice of learning on your own, AND get help well when you do need it.
Knowing how to ask for help well is one of the highest-leverage skills in early-career engineering — and one of the least often taught. The skill fires when the user is in (or about to enter) a moment of asking, or when they're reflecting on whether they're getting the balance right.
The goal is to be neither a drain nor a martyr.
The middle is: try first, timebox the trying, then ask well, with respect for others' focus. This skill is the operating manual for that middle.
This skill exists because it accelerates the climb from Stage 2 (conscious incompetence) to Stage 3 (conscious competence). When you're stuck, you're in Stage 2 — you can see the gap. A good question moves you toward Stage 3 in one conversation; a bad question (or no question) keeps you in Stage 2 for hours or days. See learning-toolkit for the full four-stages framework.
Follow the Output Protocol at every step: one question per turn, accept brief responses as complete, work on the draft if there is one, don't lead toward unrequested solutions.
Most asks arrive with enough context to skip the diagnostic. Look at the user's first message and choose the shortest path:
If one of the above fits, go directly to the matching step. Do not run a diagnostic just because the body lists one.
Only when Step 1 doesn't give you enough to proceed. One short question, picked from these examples (pick one, not all of them):
Then wait for the answer before continuing. Never list options for them to choose from in a single message.
Pull one or two pieces from the framework (Sections A–F below). Pick what matches their actual situation, not the whole list. Examples:
If they shared a question, work on the text directly. Don't drag them through the template section by section.
Check the draft against three things:
If something is genuinely missing, name one specific addition and suggest the wording. If the draft is fine, say so and tell them to post it.
Critical: brief is fine. A short, clear question with a hunch is a complete ask, not an incomplete one. Do not demand hypothesis. Do not demand all template sections. Senior askers (and many junior ones) show up with exactly the question they want refined — help them refine; don't restart.
Almost always one of:
One sentence. Offer to take a second look after they get a reply, then stop talking.
A quick checklist before reaching out:
Keep notes on where you looked and what you tried. When you do ask, you can show your work — and it makes the ask far better.
Set the limit before you begin researching. Otherwise you'll either ask too quickly (no research) or burn the afternoon (no asking).
Soft heuristics — adjust for your context:
Work backward from urgency. When does the answer actually need to be known? Leave enough time for: writing the question well, the responder seeing it, them responding, and you acting on what you learn.
Stopping when the timebox is up is not failure — it's data. Hitting the limit means: ask now.
The book's two examples make the difference visible.
Bad question (no context, no work shown):
"Hey Alice, any idea why
testKeyValuesis failing inTestKVStore? It really slows down our builds to rerun this. Thanks"
Alice has nothing to go on. She has to ask you four follow-up questions before she can think about the actual problem. That's an interruption with no payoff.
Good question (context, work shown, current hypothesis, clear ask):
"Hey Alice, I'm having trouble figuring out why
testKeyValuesis failing inTestKVStore(in theDistKVrepo). Shaun pointed me your way.The test fails for me about every third execution; it seems random. I tried running it in isolation and it's still failing, so I don't think it's an interaction between tests. Shaun ran the test in a loop on his machine but was unable to reproduce it. I don't see anything obvious in the source code to explain the failure. It seems like some kind of race condition. Any thoughts?
There's no terrible urgency around this — I'm told it's unlikely to be affecting production. Still, the flapping test costs us 20–30 minutes every time it happens, so I'd love to figure out how to fix it. I've attached logs that show failures and all of my current environment settings, just in case.
Thanks."
Alice can engage immediately. She has context, the work you've already done, your hypothesis, the urgency level, and supporting data.
The elements of a useful question — pick what serves the specific ask. Not all questions need all of these.
Short questions are fine if they're clear. A two-line question with the what and the ask is often better than a wall of context. Length isn't the goal; signal is.
If you want a structured scaffold for a complex ask, here's a fuller form — treat it as reference, not as a checklist to complete:
1. Context (1–2 sentences):
What I'm trying to do. Why this matters.
2. What I've tried (with results):
- [thing I tried] → [what happened]
- [thing I tried] → [what happened]
- [where I looked] → [what I found / didn't find]
3. (Optional) My current hypothesis:
"It seems like X, but I'm not sure because Y."
4. What I need from you:
A pointer? A sanity check? A fix? A review of my approach?
5. Urgency / blast radius:
How time-sensitive is this? Who else is affected?
6. (Optional) Attached: logs, screenshots, env details, links to the relevant
code or PR.
Worth saying explicitly: hypothesis is optional, not required. If the asker prefers not to lead the responder, leaving the hypothesis out is a valid choice. Don't pressure them to add one.
Respect focus. Interruption is expensive — most engineers need 15–25 minutes to fully re-enter flow after being pulled out.
Universal signals to look for and respect:
The exception is genuine urgency — prod is down, customer-facing issue, a real deadline. For those, see incident-response. Outside of true urgency, assume async unless you have a reason for sync.
Instead of DM-ing one person and asking for an answer now, post in a shared channel and let the answer arrive whenever someone has it.
Why this is almost always better:
How to do it well:
#eng-payments, not #general).When sync DM is right: sensitive topics, urgent incidents (use the incident channel, not a DM), or genuinely personal conversations.
For non-urgent questions, queue them up for a scheduled time rather than asking each one as it arises.
A side benefit: by the time the meeting arrives, you'll often have solved half the questions yourself. The list itself is a forcing function for trying first.
A surprisingly effective technique attributed to The Pragmatic Programmer (Hunt & Thomas): when you're stuck, explain the problem out loud — to a rubber duck on your desk, a notebook, a colleague who isn't listening, or the AI.
The act of articulating the problem in full sentences — "Okay, so I'm trying to do X, and I expected Y, but I'm getting Z because…" — forces your brain to clarify what you actually know and don't know. Half the time, the answer arrives mid-sentence, before you finish explaining.
Two practical ways to rubber duck:
On using the AI as a rubber duck: this is one of the legitimate ways to use AI in service of learning. Tell it what you're trying to do, what you've tried, and what you think is happening. The AI's response is sometimes useful, but the real value is that explaining to a "thoughtful listener" forces you to clarify your own thinking. See learning-toolkit's AI callout for more on this distinction.
Follow the Output Protocol. Specifically for this skill:
learning-toolkit.incident-response.growth-self-check.Surfaced as a reference but not yet folded in — see READING-LIST.md for the full entry.
npx claudepluginhub tmerrien/swe-assistantProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.