name: repo-onboarding description: Systematically map an unfamiliar codebase before changing it — entry points, build/test loop, conventions, data flow. Use when starting work in a repo you haven't seen, or asked "how does this codebase work?". version: 1.0.0 license: MIT keywords: [onboarding, codebase, exploration, architecture, conventions]
repo-onboarding
Resist editing until you can answer: how do I run it, how do I test it, where does the change go, and what style does this house write in?
Procedure (15 minutes, in order)
- The README + manifest first.
README.md, then the manifest (package.json/pyproject.toml/go.mod/Cargo.toml): name, scripts, dependencies. Thescriptsblock is the repo telling you its verbs. - Find the entry points.
bin/mainfields,src/index.*,cmd/,__main__.py. Trace one request/command end-to-end at skim depth — names only, no line-reading. - Establish the test loop before touching anything. Run the test command; record how long it takes and whether it's green at HEAD. A red baseline changes everything you conclude later.
- Map the directories (one line each, only top two levels). Mark the ones that are generated/vendored so you never read them again.
- Sample the house style. Open the 2–3 most-recently-changed source files
(
git log --name-only -10): error handling pattern, naming, comment density, test structure. Your changes should be indistinguishable from these. - Find the seams. Where does config enter? Where is I/O isolated? What is the one module everything imports? That module is load-bearing — changes there need the most care.
- Check the repo's own rules:
CONTRIBUTING.md,CLAUDE.md,.github/workflows (what CI actually enforces), lint configs.
Output
Write a short map (10–20 lines) before starting the actual task:
run: npm start (src/cli.js) test: npm test, ~6s, green at HEAD
flow: cli.js → commands/* → store.js (all persistence) → index.json
style: ESM, no deps, errors thrown as plain Error, tests in test/*.test.js
care: store.js is imported everywhere; schema changes ripple
rules: CI runs lint+test on 3 OS; commits are conventional
Keep it honest — list what you didn't look at, so later-you knows where the map has blank spots.