Vault / course/projects/p10-claude-code-onboarding.md
updated 2026-06-25Project 10 — Claude Code Onboarding
Enforces: install & launch, agentic file editing, permissions, and project memory (from claude-code-101) Surface: Claude Code (terminal) · Time: ~50 min · Difficulty: 🟢 starter
Why this project
Claude Code is not "chat with a code field." It's an agent that reads, edits, and runs commands in your repo. The only way that lands is to point it at a real codebase, let it do a real task, and then write the CLAUDE.md that makes every future session better. This project gets you from zero install to a committed memory file.
What you'll build
A real repository, onboarded for Claude Code: you'll run the agent on it, complete one guided change end-to-end, and author a hand-written CLAUDE.md (project overview, commands, conventions) that Claude reads automatically on every future session.
Steps
- Install — Install the CLI:
npm install -g @anthropic-ai/claude-code(Node 18+). Runclaudeonce and complete auth. - Pick a real repo — Use an existing project of yours (or clone a small one).
cdinto it and launchclaude. Confirm it reads your files: ask "Give me a one-paragraph tour of this repo and where the entry point is." - Run
/init— Let Claude draft a starterCLAUDE.mdby scanning the repo. Read it critically; it's a draft, not the deliverable. - Do a first guided task — Pick something small and real: fix a failing test, add a CLI flag, tidy a README. Watch how Claude proposes edits and asks before running commands. Accept/deny deliberately so you learn the permission flow.
- Author the real CLAUDE.md — By hand, rewrite the file into something tight (see claude-code-md). It must contain:
- What this is — one paragraph of orientation: what the repo does, where the entry point and core modules live.
- How to run / test — the exact commands (
pnpm test,make lint,uv run ...). No guessing. - Conventions — naming, formatting, "imports sorted by tool," language-version rules.
- Do NOT — landmines: generated dirs,
npmvspnpm, files never to touch.
- Prove it took — Start a fresh
claudesession and ask a question whose answer only comes from your CLAUDE.md (e.g., "How do I run the test suite here?"). It should answer without re-scanning.
Acceptance criteria — you're done when
-
clauderuns in a real repo and correctly summarizes it. - You completed one real change, consciously accepting/denying at least one command.
- A hand-curated
CLAUDE.mdexists with all four sections (what / run / conventions / do-NOT) and exact commands. - A fresh session answers a project question using only CLAUDE.md, no re-scan.
- CLAUDE.md is committed to the repo so teammates inherit it.
- You journaled the one thing CLAUDE.md should have said but didn't (yet) in learning-journal-template.
Stretch goals
- Add a personal
~/.claude/CLAUDE.mdwith your style preferences and confirm it merges with the project one. - Add a directory-scoped
CLAUDE.mdin a subpackage and show a rule that only applies there. - Trim a too-long CLAUDE.md and notice better adherence — bury a rule and Claude misses it.
Self-assessment rubric
| Level | Signal |
|---|---|
| 🟢 Got it | You drive Claude Code in a real repo, manage permissions intentionally, and your CLAUDE.md makes new sessions productive immediately. |
| 🟡 Almost | It works, but your CLAUDE.md is the auto-generated draft or has vague commands you re-explain each session. |
| 🔴 Revisit | Sessions feel like chat; you re-orient Claude every time. Re-watch claude-code-101 and re-read claude-code-md. |
See also
- Course: claude-code-101
- Next project: p11-custom-command-and-hook
- Deeper: claude-code-md, claude-code-settings