breakdown
Skill3 starsChanged 25 days agoMITView on GitHub
Use when someone asks to break down, trace, walk through, or show the flow of a specific file, HTTP endpoint or route, pull request or branch, and wants the real code laid out in call order instead of an explanation; also when they ask for a code storyline, a flow canvas, or an Excalidraw drawing of specific code.
14 other projects use a version of this.
Adopted by
Most recently taken up by
- mrlemoos/galiciatheir own version, first seen Nov 8, 2026
- artemnovitckii/claude-animation-skillstheir own version, first seen Nov 8, 2026
- islandhopper81/claude-skillstheir own version, first seen Nov 1, 2026
- jantichy/claudetheir own version, first seen Oct 27, 2026
- humzabuilds/claude-skillstheir own version, first seen Oct 20, 2026
- LucasCooperBey/claude-skillstheir own version, first seen Oct 20, 2026
Used with
Projects with it also use spec, ship and 2 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.
SentrySkillspec
Produce a verified spec — problem, desired outcome, and acceptance criteria — before building. Use when given a GitHub/Linear issue link, when starting from a fuzzy in-conversation idea, or asked to "figure out what to do" / "scope this" / "what should I build" — whenever the *what* isn't yet pinned down. Grills the ambiguities, checks the premise against the code, and produces acceptance criteria you sign off on — then hands to design-first.
Also in 4 projects that use this
AWSSkillship
Finalize dev work on an issue branch — update docs, push, and open a PR.
Also in 3 projects that use this
Hugging FaceSkillimplement
Make tests pass. Invoke after /write-tests produces failing tests.
Also in 3 projects that use this
MicrosoftSkillhandoff
Compact the current conversation into a handoff document for another agent to pick up.
Also in 4 projects that use this
Other versions14 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 14
- artemnovitckii/claude-animation-skills★ 500same name
- jantichy/claude★ 45same name
- dtiger1889-ops/claude-harness-toolbox★ 31same name
- mehrad-dm/mastermind★ 23same name
- gregwebs/skills-sdlc★ 20same name
- flurdy/agent-skills★ 9same name
- int2t05/engineering-skills★ 3same name
- shiggydoodah/skills★ 2same name
- LucasCooperBey/claude-skills★ 1same name
- madeordinary/serel-memory★ 1same name
4 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.
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 5 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
5
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 31
Choose blocks: Read from the entry point and follow every call into the repository's own code.
- Distinctive: line 78
When a block names a class and also calls one of its methods, draw only the arrow to the method.
- Very specific: line 80
When the code reaches a block under another spelling, add "via" with the exact text, such as "via": "this.books" or "via": "new Catalog(".
- Distinctive: line 82
Every field and every check: references/spec-format.md.
- Distinctive: line 86
Every line of code on the canvas was cut by the script.
- Distinctive: line 88
Every call and type use between chosen blocks has an arrow, and every hint is resolved or named under "Left out".
“Common” is measured: kept by at least 6 in 10 of the 13 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
Breakdown
Turn a file, an endpoint or a change into a canvas of the real code: the entry point first, then what it calls in call order, then the types they use. The canvas is the answer. You do not explain the code.
You never type code into the output. You choose blocks as file and line ranges, and declare the arrows between them. The script cuts the text out of the files and refuses any range or arrow that does not match the code.
Request: $ARGUMENTS
The script is ${CLAUDE_SKILL_DIR}/scripts/breakdown.py. If that path still shows ${CLAUDE_SKILL_DIR}, use scripts/breakdown.py in the folder that holds this SKILL.md. Run it with python3 (or python where that is the name), one command per call. Give it the absolute path of the spec; it finds the repository from there, so no cd is needed.
Steps
- Read the request.
- Target: a path is a file;
METHOD /pathis an endpoint;#123, a PR URL or a branch name is a change. With no target in the request, take it from the conversation, or ask. --excalidrawor the word Excalidraw: add--excalidrawwhen you render, now and for follow-ups.--besideor "types next to the code": add--beside.
- Target: a path is a file;
Find the entry point.
Target Entry point File The function or functions in the file that nothing else in the file calls; exported or public ones first Endpoint The handler registered for that method and path. Patterns per framework: references/entry-points.md Change Follow references/pull-requests.md; for a change, its rules for choosing blocks come first Choose blocks. Read from the entry point and follow every call into the repository's own code. One block per declaration: a function, a method, or a type. Stop at framework and library code.
The canvas reads best with 16 blocks or fewer, so trim to 16. The check warns above 20. Leave out, in this order: exception classes, small enums and constants, helpers that only compute a value, then types used by a single block. Never leave out the entry point, or the calls that lead to a write (database, network, file, queue) together with the types that write stores.
- Write
<repository root>/.breakdown/spec.json, in the format below. - Check:
python3 <script> check <root>/.breakdown/spec.json. Each error carries afix; apply it and check again until"ok": true. Then read the hints. Some name a block that mentions another block with no arrow drawn: add the arrow when the code uses it. Others name a declaration in a file you already use that no block covers: add the block, or leave it out on purpose. Render:
python3 <script> render <root>/.breakdown/spec.json --open, adding--excalidrawor--besidewhen step 1 says so. Leave out--openon a machine with no display.The first render also adds
.breakdown/to.git/info/exclude. When the user wants nothing written outside.breakdown/, add--no-exclude;.breakdown/then shows as untracked ingit status.Reply with these lines and nothing more:
- the path to
canvas.html, and on its own line the path tobreakdown.excalidrawwhen you made one; <N> blocks, <M> arrows, starting at <entry>;Left out: <names>, listing the functions, methods and types the flow reaches that you did not draw;- one line for each warning the render printed.
With nothing left out and no warnings, the reply is the path lines and the counts. The user asks follow-up questions in the chat; the canvas carries no commentary.
- the path to
spec.json
{
"kind": "endpoint",
"title": "POST /invoices",
"entry": ["create_invoice"],
"blocks": [
{"id": "create_invoice", "file": "billing/api.py", "start": 21, "end": 34, "label": "Entry point"},
{"id": "InvoiceService", "file": "billing/service.py", "start": 8, "end": 40, "role": "container"},
{"id": "InvoiceService.issue", "file": "billing/service.py", "start": 15, "end": 27, "parent": "InvoiceService", "label": "Writes DB"},
{"id": "InvoiceService.next_number", "file": "billing/service.py", "start": 29, "end": 40, "parent": "InvoiceService"},
{"id": "Invoice", "file": "billing/models.py", "start": 12, "end": 20, "role": "type", "label": "invoices table"}
],
"edges": [
{"from": "create_invoice", "to": "InvoiceService.issue"},
{"from": "InvoiceService.issue", "to": "InvoiceService.next_number"},
{"from": "InvoiceService.issue", "to": "Invoice"}
]
}kindisfile,endpointorpr.titleis what the user asked for, such asPOST /ordersorfeature/coupons vs main.idis the name in the code; a method isClass.method.fileis the path from the repository root.startandendare the 1-based lines of the whole declaration; the check pulls in decorators and doc comments above it.role: leave it out for code. Usetypefor data shapes and error types: interfaces, type aliases, enums, schemas, ORM models, exception classes. Usecontainerfor a class whose methods you list as separate blocks, each with"parent".- A constructor gets its own method block only when other chosen methods read what it sets; otherwise its lines show in the class header.
labelis optional: two to four words naming the block's role, such as Entry point, Reads DB, Writes DB, Commits, Calls API, Changes state, Request body, Response, Error type, orders table. The check rejects judging words such as robust or clean.edgesgo from the block whose code names the target:- Draw one for each call, and for each type named in a signature, annotation, construction,
raiseorexcept. - A quoted forward reference such as
list["OrderLine"]names the type. - Reading a type's fields without naming the type is not a use.
- When a block names a class and also calls one of its methods, draw only the arrow to the method.
- Skip relations that exist only as plain strings, such as
ForeignKey("products.id")or a route name. - When the code reaches a block under another spelling, add
"via"with the exact text, such as"via": "this.books"or"via": "new Catalog("; a field read this way draws as a call arrow. - Mentions in comments and docstrings never count.
- Draw one for each call, and for each type named in a signature, annotation, construction,
- Every field and every check: references/spec-format.md.
Before replying
- Every line of code on the canvas was cut by the script; none came from you.
- The entry point comes first in
entry, and every block is reached from it or listed as another entry. - Every call and type use between chosen blocks has an arrow, and every hint is resolved or named under "Left out".
- Labels name roles, never qualities.
- The reply is the paths, the counts, what you left out and the warnings.
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.

