Learn from a project → own it
Why this exists
People now ship real projects that an AI wrote for them — faster than they can
understand the code. It runs, but they can't explain how, can't tell if it's
reliable, and can't safely change it. That's fragile ownership. This skill
turns "the AI made this" into "this is mine": it reads the project the way a
patient senior would walk a teammate through it, and leaves behind a document
that lets the person explain it, trust it, and extend it.
The reader may not be a deep engineer — so concrete engineering is explained, not
assumed. When the code calls a library or API, say which one, what it's for in
general, and what this specific call does here. When it uses a higher concept
(causal intervention, a statistical test), name it and explain it. Both layers
matter: the stack (how it's built) and the ideas (why it works).
What "owning it" means (the bar to clear)
By the end, the person should be able to, without looking:
- say what the project does and how it's structured;
- point to where the important logic lives and explain how it works;
- name the main libraries/APIs/concepts it uses and what each is for;
- say which results to trust and which are shaky.
Write toward that bar. The output is a learning artifact, not an audit report —
correctness checking is included only as the "can I trust this?" part.
The method (4 steps, top-down)
The code is the main object. A paper/report/README is helpful context — read
it if it exists, but don't depend on one.
Step 1 — What is it & what does it do
One plain paragraph: what the project is for, what it produces, who/what runs it.
Get this from the README/paper if present, else infer it from the entry points
and outputs. No jargon the reader wouldn't know.
Step 2 — Map the code structure
A quick map so they can navigate: the directories/modules and what each is for
(a small tree or table). Then list the experiments/runs/entry points and what
each one is for. This is the lay of the land before any close reading.
Step 3 — Read the code in run order (the core of the skill)
Follow the actual execution / data flow, not the alphabet: entry point →
inputs/data → core transforms → run → outputs. Generate a fresh reading
itinerary in that order each time.
Split every file into core vs environment, because attention is finite
and most files don't deserve close reading:
The test: If this code had a subtle bug, would a result/output change, or
would the program just crash, slow down, or look ugly?
Output changes → 🔴 core (read closely — the real logic lives here).
Crash/slow/cosmetic → ⚪ environment (skim: confirm inputs/outputs, move on).
|
🔴 core (read closely) |
⚪ environment (skim) |
| what it is |
the logic that decides the result |
the plumbing that makes it run |
| typical |
the main algorithm/transform; the metric & statistics; how data/inputs are built; the key decision/output logic |
arg parsing, config, logging; job/SLURM scripts; paths, caching, device setup; data IO & loaders; install/deps |
For each 🔴 core file, give the reader four things — this is the payoff:
- What it does — its job in one line.
- How it works — the implementation logic in plain language, step by step
("it loads X, then for each item does Y, then computes Z"). Walk the actual
control flow of the important function(s), not a vague summary.
- Stack used here — the concrete engineering, each named and explained for a
non-expert: which library (e.g.
numpy, transformers, pandas), which
API/call (e.g. AutoModel.from_pretrained, np.random.choice), which
language feature/pattern (e.g. list comprehension, decorator, dataclass) —
what it is in general, and what it's doing here.
- Concepts it embodies — the higher ideas (e.g. causal intervention,
bootstrap CI), pointing to §5.
Environment files get one line each, grouped — no deep read.
Step 4 — Does it actually work? (trust)
Light, just enough to trust what you learned and rely on the project:
- Reconcile: do the numbers/outputs claimed (README, paper, comments) match
what the code/result files actually produce? Open one and check.
- Backing & honesty: does every claim have something real behind it? Flag
anything overstated, hardcoded, faked, or shaky. The reader needs to know which
parts to trust.
Output template
Produce one markdown document (offer to save it, e.g. LEARNING.md in the
project). Adapt depth to the project, but keep this shape:
# Owning <project name>
## 1. What it is & does
<one plain paragraph: purpose + what it produces>
## 2. Code structure
<tree or table: each dir/module → what it's for>
<entry points / experiments → what each is for>
## 3. How it works — reading itinerary (run order)
1. 🔴 `path/file.py` — <what it does>
- how it works: <plain-language logic walkthrough>
- stack here: `library` / `api_call()` / <language feature> — <each explained>
- concepts: <link to §5>
2. ⚪ `path/plumbing.py` — <role> (skim)
...
> Spend your time on: <the 2–3 真 core files>
## 4. Does it actually work?
- reconcile: <claimed number/output ↔ what the code produces>
- trust: <what's solid vs shaky / overstated / hardcoded>
## 5. Knowledge points (what you now know)
### Concepts (domain + method)
- **Name** — what it is · why used here · `file:func` · go deeper: <pointer>
### Engineering & stack (libraries · APIs · language features)
- **`library` / `api()`** — what it is in general · what it does here · `file:line`
...
## 6. Own it: can you explain it?
<3–5 sentences the reader can now say about the project as if it's theirs —
the "elevator explanation". Then: the 1–3 gaps to close to fully own it.>
How to work
- Output language: write the document in English by default. If the user
addresses you in another language (e.g. Chinese), write the whole document in
that language instead — match the language of the user's request.
- Spend the reading budget on 🔴 core files. For ⚪ environment files, one line is
enough. The goal is to teach where the ideas and the real logic are.
- Explain engineering at the right level: name the library/API/feature, say what
it's for in general, and what this call does here. Assume the reader codes with
AI but isn't a deep engineer — don't assume they know what
from_pretrained or
argparse or a list comprehension is; don't over-explain trivial syntax either.
- Keep concepts genuinely transferable: if a point only makes sense inside this
repo, lift it to the general idea it instantiates.
- The "how it works" walkthrough is the heart for ownership — actually trace the
logic of the key function, don't just restate its name.
- When asked for only part of this (e.g. "just the reading order", "just what
libraries it uses"), produce that part well rather than forcing the whole template.
See references/worked-example.md for a filled-in example.
1---2name: learn-from-project3description: Take a project an AI built for you (or any unfamiliar repo) and make it YOURS — understand it well enough to explain it, trust it, and extend it as if you wrote it. It maps the code structure, walks the implementation logic in plain language, names and explains the concrete engineering used (which libraries, which APIs, which language features), AND surfaces the higher concepts (e.g. causal intervention, bootstrap CIs). Built for people who ship fast with AI but don't have a deep engineering background and need to actually own the result. Use this whenever someone wants to UNDERSTAND or LEARN a project they didn't hand-write: "Claude built me this, help me understand it", "explain this repo / codebase to me", "break down / decompose this project", "what libraries and APIs does this use and why", "walk me through how this code works", "I vibe-coded this and don't get it", "onboard me to this code", "make this project mine", "extract the knowledge from this project". Trigger it even when they don't say "learn" 4---56# Learn from a project → own it78## Why this exists910People now ship real projects that an AI wrote for them — faster than they can11understand the code. It runs, but they can't explain *how*, can't tell if it's12*reliable*, and can't safely *change* it. That's fragile ownership. This skill13turns "the AI made this" into "this is mine": it reads the project the way a14patient senior would walk a teammate through it, and leaves behind a document15that lets the person **explain it, trust it, and extend it**.1617The reader may not be a deep engineer — so concrete engineering is explained, not18assumed. When the code calls a library or API, say which one, what it's for in19general, and what this specific call does here. When it uses a higher concept20(causal intervention, a statistical test), name it and explain it. Both layers21matter: the *stack* (how it's built) and the *ideas* (why it works).2223## What "owning it" means (the bar to clear)2425By the end, the person should be able to, without looking:26- say what the project does and how it's structured;27- point to where the important logic lives and explain *how* it works;28- name the main libraries/APIs/concepts it uses and what each is for;29- say which results to trust and which are shaky.3031Write toward that bar. The output is a learning artifact, not an audit report —32correctness checking is included only as the "can I trust this?" part.3334## The method (4 steps, top-down)3536The **code** is the main object. A paper/report/README is helpful context — read37it if it exists, but don't depend on one.3839### Step 1 — What is it & what does it do40One plain paragraph: what the project is for, what it produces, who/what runs it.41Get this from the README/paper if present, else infer it from the entry points42and outputs. No jargon the reader wouldn't know.4344### Step 2 — Map the code structure45A quick map so they can navigate: the directories/modules and what each is for46(a small tree or table). Then list the experiments/runs/entry points and what47each one is *for*. This is the lay of the land before any close reading.4849### Step 3 — Read the code in run order (the core of the skill)50Follow the **actual execution / data flow**, not the alphabet: entry point →51inputs/data → core transforms → run → outputs. **Generate a fresh reading52itinerary in that order each time.**5354Split every file into **core** vs **environment**, because attention is finite55and most files don't deserve close reading:5657> **The test:** *If this code had a subtle bug, would a result/output change, or58> would the program just crash, slow down, or look ugly?*59> Output changes → **🔴 core** (read closely — the real logic lives here).60> Crash/slow/cosmetic → **⚪ environment** (skim: confirm inputs/outputs, move on).6162| | 🔴 core (read closely) | ⚪ environment (skim) |63|---|---|---|64| what it is | the logic that decides the *result* | the plumbing that makes it *run* |65| typical | the main algorithm/transform; the metric & statistics; how data/inputs are built; the key decision/output logic | arg parsing, config, logging; job/SLURM scripts; paths, caching, device setup; data IO & loaders; install/deps |6667For each **🔴 core file**, give the reader four things — this is the payoff:681. **What it does** — its job in one line.692. **How it works** — the implementation logic in plain language, step by step70 ("it loads X, then for each item does Y, then computes Z"). Walk the actual71 control flow of the important function(s), not a vague summary.723. **Stack used here** — the concrete engineering, each named and explained for a73 non-expert: which **library** (e.g. `numpy`, `transformers`, `pandas`), which74 **API/call** (e.g. `AutoModel.from_pretrained`, `np.random.choice`), which75 **language feature/pattern** (e.g. list comprehension, decorator, dataclass) —76 what it is in general, and what it's doing *here*.774. **Concepts it embodies** — the higher ideas (e.g. causal intervention,78 bootstrap CI), pointing to §5.7980Environment files get one line each, grouped — no deep read.8182### Step 4 — Does it actually work? (trust)83Light, just enough to trust what you learned and rely on the project:84- **Reconcile**: do the numbers/outputs claimed (README, paper, comments) match85 what the code/result files actually produce? Open one and check.86- **Backing & honesty**: does every claim have something real behind it? Flag87 anything overstated, hardcoded, faked, or shaky. The reader needs to know which88 parts to trust.8990## Output template9192Produce one markdown document (offer to save it, e.g. `LEARNING.md` in the93project). Adapt depth to the project, but keep this shape:9495```markdown96# Owning <project name>9798## 1. What it is & does99<one plain paragraph: purpose + what it produces>100101## 2. Code structure102<tree or table: each dir/module → what it's for>103<entry points / experiments → what each is for>104105## 3. How it works — reading itinerary (run order)1061. 🔴 `path/file.py` — <what it does>107 - how it works: <plain-language logic walkthrough>108 - stack here: `library` / `api_call()` / <language feature> — <each explained>109 - concepts: <link to §5>1102. ⚪ `path/plumbing.py` — <role> (skim)111...112> Spend your time on: <the 2–3 真 core files>113114## 4. Does it actually work?115- reconcile: <claimed number/output ↔ what the code produces>116- trust: <what's solid vs shaky / overstated / hardcoded>117118## 5. Knowledge points (what you now know)119### Concepts (domain + method)120- **Name** — what it is · why used here · `file:func` · go deeper: <pointer>121### Engineering & stack (libraries · APIs · language features)122- **`library` / `api()`** — what it is in general · what it does here · `file:line`123...124125## 6. Own it: can you explain it?126<3–5 sentences the reader can now say about the project as if it's theirs —127the "elevator explanation". Then: the 1–3 gaps to close to fully own it.>128```129130## How to work131132- **Output language:** write the document in English by default. If the user133 addresses you in another language (e.g. Chinese), write the whole document in134 that language instead — match the language of the user's request.135- Spend the reading budget on 🔴 core files. For ⚪ environment files, one line is136 enough. The goal is to teach where the ideas and the real logic are.137- Explain engineering at the right level: name the library/API/feature, say what138 it's for in general, and what this call does here. Assume the reader codes with139 AI but isn't a deep engineer — don't assume they know what `from_pretrained` or140 `argparse` or a list comprehension is; don't over-explain trivial syntax either.141- Keep concepts genuinely transferable: if a point only makes sense inside this142 repo, lift it to the general idea it instantiates.143- The "how it works" walkthrough is the heart for ownership — actually trace the144 logic of the key function, don't just restate its name.145- When asked for only part of this (e.g. "just the reading order", "just what146 libraries it uses"), produce that part well rather than forcing the whole template.147148See `references/worked-example.md` for a filled-in example.