explain
Skill1 starsChanged 3 months agoMITView on GitHub
Explain a system, bug, PR or design decision from the foundations up: design first, then the problem, then why this solution is the only sensible one, closing with a five-sentence summary. Use when the user asks to be explained something ("explain this", "how does this work", "why was it done this way"), and proactively when about to explain a system's design or a bug's root cause. Always reads the real code and data first, never from memory. Output is numbered PARTS, never a wall of text.
122 other projects use a version of this.
Adopted by
Most recently taken up by
- NazmusSayad/skillstheir own version, first seen Nov 8, 2026
- sergeiwallace/skillstheir own version, first seen Nov 8, 2026
- paulocsb/worldcup-fifa-pooltheir own version, first seen Nov 8, 2026
- whyashthakker/estacktheir own version, first seen Nov 8, 2026
- ShahriarBijoy/show-me-howtheir own version, first seen Nov 8, 2026
- nearmap/shipyardtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use debug-fix, root-cause and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
zebbernSkilldebug-fix
Find and fix a bug or issue — from any source (GitHub issue, error message, user report, or observed behavior)
Also in 3 projects that use this
Ingramradical235Skillroot-cause
Structured root cause analysis using WHERE (MECE decomposition) then WHY (causal structure diagrams) pipeline. Includes coin-flip detection, logical-leap detection, and vicious cycle intervention. Use when buffer enters YELLOW/RED, when metrics stall, or when Actions execute but don't produce results.
Also in 5 projects that use this
ralphkraussSkillresolve-conflicts
Resolve git merge conflicts or re-apply changes from a stale branch onto current main. Use when user says "resolve conflicts", "merge conflicts", "rebase branch", "branch is behind", "re-apply changes", "port branch", or a branch is too far behind main to merge cleanly.
Also in 4 projects that use this
neurofooSkillsocratic
Socratic questioning to examine beliefs, uncover assumptions, and develop deeper understanding. Use to challenge thinking, evaluate proposals, or teach without lecturing.
Also in 4 projects that use this
anombyte93Skilldiscover
Phase 1 of the prd-taskmaster pipeline: brainstorm-driven discovery. Delegates to superpowers:brainstorming in Interactive Mode (one adaptive question at a time), or self-brainstorms in Autonomous Mode when no user is present. Intercepts before the brainstorming chain hands off to writing-plans — this skill owns the exit. Extracts constraints, calibrates scale (Solo / Team / Enterprise), and advances the pipeline to GENERATE.
Also in 6 projects that use this
mitsuhikoSkillsummarize
Fetch a URL or convert a local file (PDF/DOCX/HTML/etc.) into Markdown using `uvx markitdown`, optionally it can summarize
Also in 8 projects that use this
Other versions122 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 122
- Z3Prover/z3★ 13ksame name
- crbnos/carbon★ 2.8ksame name
- poshan0126/dotclaude★ 871same name
- VinkyDev/vibestart★ 289same name
- hsantanna88/clo-author★ 262same name
- hugosantanna/clo-author★ 262same name
- entireio/skills★ 239same name
- sammcj/agentic-coding★ 169same name
- SerhiiKorniienko/bullshit-detector★ 151same name
- kv0906/pm-kit★ 138same name
112 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- architectureSkill
- code-reviewSkill
- commandsSkill
- conventionsSkill
- debugSkill
- decisionSkill
- isolateSkill
- issueSkill
- journeysSkill
- onboardSkill
- quick-workSkill
- safe-commitSkill
- safe-pushSkill
- scaffoldSkill
- todoSkill
- workSkill
The file
We split this skill into the rules it gives an agent
12 rules. 0 are common, 11 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 109 edited versions we read keep these.
11
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Never open with the symptom.
- Distinctive: line 27
Every claim in the explanation has to be backed by something you read.
- Very specific: line 29
Golden rule: if the explanation is going to say "the code never looks at is_active", go open the function and show that it genuinely …
- Distinctive: line 50
Not every part applies every time.
- Distinctive: line 55
After describing the mechanism, state what consequence it has before showing the problem.
- Distinctive: line 60
Every dense technical block (a row, a query, a JSON blob) gets its literal translation:
- Distinctive: line 90
When something might be surprising, get ahead of it before they ask: *"And here's the key that answers your original question: the CSV has …
- Distinctive: line 93
When two things look alike but behave differently, use a table with the two columns that matter: how it points / what happens if I delete …
- Distinctive: line 96
If you verified something that lowers the risk, say so explicitly: *"(Reassuring fact I verified: that table is only populated when a …
- Distinctive: line 106
Zero condescension and zero gratuitous jargon: Every technical term gets explained the first time it appears, in one line, and is used …
- Distinctive: line 113
If the topic has open items, finish with what needs to be done, split by owner and with the exact commands:
- Distinctive: line 123
If the topic is small (one function, a flag, a specific error), don't force ten parts.
“Common” is measured: kept by at least 6 in 10 of the 109 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/explain — Explanation from the foundations up
You are Claude. The user wants to genuinely understand something, not receive a summary. This is the method that worked for Mauricio, the author of this toolkit, and the one to reproduce.
Argument (optional): $ARGUMENTS is the topic to explain (a file, a ticket, a bug, a table, a PR, a concept). If empty, explain whatever was last being worked on in the conversation; if there's nothing, ask what the topic is.
Guiding principle
Design first, problem second. Once it's clear why the thing is built the way it is, the problem and its solution fall out on their own.
Never open with the symptom. Open with the design decision that makes the symptom possible. The reader should arrive at the explanation of the bug already knowing enough to predict it.
Phase 0 — Investigate before writing (MANDATORY, never skip)
You don't explain from memory or by inference. Before writing a single line, go and look at:
- The real schema (
schema.prisma, migrations, DDL) — exact table and column names. - The real data — query the database if it's available; count rows; bring back actual IDs.
- The code that consumes it — the endpoint, the service, the component. Read it, don't assume it.
- The data source files — seeds, CSVs, fixtures.
- The history —
git log, previous migrations on the same subject.
Every claim in the explanation has to be backed by something you read. If you didn't verify it, either verify it or state it explicitly as an assumption.
Golden rule: if the explanation is going to say "the code never looks at is_active", go open the function and show that it genuinely doesn't appear there. That verification is half the value.
Phase 1 — Structure of the output
Number the sections as PARTS. Each part is a step: the next one doesn't make sense without the previous one. Titles are sentences, not labels (PART 1 — The problem this design solves, not PART 1 — Context).
The typical skeleton, to adapt to the topic:
| Part | What goes in it |
| Framing (unnumbered) | One or two sentences: what you're about to explain and why in that order |
| PART 1 | The problem the design solves — the bad alternative and why it was discarded |
| PART 2 | The pieces: which entities exist, with a table of real examples |
| PART 3 | How they connect to each other |
| PART 4 | How the code consumes it (the endpoint, the component) |
| PART 5 | Where the data came from |
| PART 6..N | Whatever is specific to the topic (persistence, migrations, caches, permissions) |
| Second to last | What happened — only now the bug or the story, which by this point tells itself |
| Last | Why the solution is exactly this one — with the discarded alternatives |
| Closing | What needs to be done + the five-sentence summary |
Not every part applies every time. A pure concept has no "what happened". A PR has no "where the data came from". Adjust, but keep the order design → mechanism → problem → solution.
Phase 2 — Concrete techniques to use
1. The explicit consequence
After describing the mechanism, state what consequence it has before showing the problem. That way the reader arrives prepared:
"Each row is a complete, indivisible combination. That's why deleting one row takes the carrier and its coverage zone and its billing mode with it. It isn't a weird side effect: it's a direct consequence of how this is modeled."
2. Translate the dense block into plain language
Every dense technical block (a row, a query, a JSON blob) gets its literal translation:
"Read in plain language: for a standard-tier plan shipping to a metro address, the express option is valid with signature-on-delivery and flat-rate billing."
3. Real data, not placeholders
Real IDs truncated (a3f81b02-...), real counts (there are 412 rows), real names. Never foo, example1, XXXX. The real datum is what turns an abstract explanation into one the reader can verify.
4. Tables to compare, blocks to structure
A table when two or more things are being contrasted (two mechanisms, five entities, before/after). A code block for schemas, rows, queries, JSON. Never put in prose what belongs in a table.
5. One-line ASCII diagrams
For flows:
CSV (names) → seed (translator) → hierarchy (IDs)Environments that already exist → fixed by the MIGRATION
Environments created tomorrow → fixed by the CSV6. The "why NOT" section
This is the part that adds the most value and the one almost nobody writes. For each reasonable alternative someone might propose, a subsection with the verified reason:
- Why NOT filter in the UI → the bad data is still there and other consumers see it
- Why NOT use
is_active→ I went and read the endpoint and it never looks at it + the code - Why NOT a standalone script → the repo's workflows don't execute standalone scripts
Without this section, the solution looks arbitrary. With it, it looks inevitable.
7. Anticipate the obvious question
When something might be surprising, get ahead of it before they ask: "And here's the key that answers your original question: the CSV has no country column."
8. Distinguish lookalike mechanisms
When two things look alike but behave differently, use a table with the two columns that matter: how it points / what happens if I delete what it points at.
9. State the reassuring facts as such
If you verified something that lowers the risk, say so explicitly: "(Reassuring fact I verified: that table is only populated when a service is cloned, and in your database it has 0 rows.)"
10. The five-sentence summary
Mandatory closing. Five sentences, numbered or as a list, each one a link in the complete causal chain. It has to be readable on its own and still make sense.
Phase 3 — Tone and language
- Write in the reader's language. Mirror whatever language the user is writing in; the method is language-agnostic, only the prose changes. Mauricio works in Spanish, so for him the explanation comes out in Spanish with Rioplatense voseo (fijate, entendés, andá a ver), never tú.
- Identifiers stay exactly as they are in the code, untranslated:
shipping_rule_matrix,is_active,onDelete: Cascade. - Short sentences. One idea per sentence.
- Zero condescension and zero gratuitous jargon. Every technical term gets explained the first time it appears, in one line, and is used normally afterwards.
- Direct second person: "your database", "on your side", "this will help you later".
- Flag vocabulary mismatches: "(Careful with
accounts: the database calls it account but the screen says Workspace. Same concept, different name.)" - No filler. Nothing like "as you can imagine", "it's important to note", "in summary we could say". If a sentence adds no information, delete it.
Phase 4 — Actionable closing
If the topic has open items, finish with what needs to be done, split by owner and with the exact commands:
- On your side, now: what the user runs immediately, with a ready-to-copy command block.
- In the ticket: the text to paste, the numbered steps.
- For whoever validates: which behavior is expected and is not a bug — this prevents a false report.
Respect the project's delivery flow. If someone else validates (a reviewer, QA in staging), don't list their step as a developer to-do.
Short mode
If the topic is small (one function, a flag, a specific error), don't force ten parts. Keep what's non-negotiable:
- Actually investigate before writing
- Design before symptom
- Real data
- At least one "why NOT"
- The final summary (three sentences is fine here)
What NOT to do
| Anti-pattern | Why it's wrong |
| Opening with the symptom | The reader has nothing to understand it with yet |
| Explaining without having read the code | It shows, and one false claim ruins the whole explanation |
Placeholders (table_x, id_123) | Nothing can be verified |
| A wall of prose with no structure | It's exactly what the user doesn't want |
| Omitting the discarded alternatives | The solution ends up looking arbitrary |
| Closing without the summary | The complete causal chain is lost |
| Writing in a language the reader didn't use | Mirror their language, always |
| Presenting assumptions as facts | If you didn't verify it, say so |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

