The chapter opens with a short story. On the day the author's app Kitty Light launched, someone asked how long it took to go from idea to finished product. The answer was about one hour: five minutes to check that people actually wanted it, then a few rounds of conversation with an AI coding tool.
The key point the book draws from this: you did not need three months of learning to code first. You did not need to understand SwiftUI or React Native. You only needed to know what you wanted to make.
Chapter 1 and Chapter 2 were about understanding and installing. This is the first chapter where you actually build something end to end. It matters because:
Esc twice to open a menu that can roll back the conversation, the file changes, or both.Before the main project, the book suggests a tiny warm-up so you feel one full "say → build → see" cycle.
mkdir my-homepage && cd my-homepage
claude
Line 1 makes a new empty folder and moves into it. Line 2 launches Claude Code, which uses your current folder as its workspace.
Build me a personal homepage. Single-page HTML, make it look good.
Content: my name is [your name], and I'm a [your role/identity].
Add a tagline, an about section, and placeholder social media links at the bottom.
Use a modern minimalist style with responsive layout.
What this demonstrates: the request names the deliverable (single-page HTML), the content (name, role, tagline, about, links), and the style (modern minimalist, responsive). Concrete instructions produce a usable first result.
open index.html # macOS
xdg-open index.html # Linux
start index.html # Windows
These three commands each open a file in the default browser — one per operating system.
Change the color scheme - use a dark background with light text. Switch to a serif font.
Add an animated gradient background effect.
Claude updates the file; you refresh the browser and see the change. Repeat until you are happy. The book notes the whole warm-up takes under five minutes, but you have now done one complete loop: describe → Claude implements → review → suggest changes → Claude adjusts.
What you are building: a command-line tool that:
Why this project? The book picks it because it is small enough to finish in an afternoon, yet complete enough to touch networking, data processing, AI API calls, and file output — the full range of what Claude Code can do.
mkdir ai-news-digest && cd ai-news-digest
claude
Then, in plain language, describe the requirement:
# What you type into Claude Code:
Build me an AI news aggregator CLI tool. Here's what I need:
1. Fetch articles from the last 24 hours from these RSS feeds:
- TechCrunch AI (https://techcrunch.com/category/artificial-intelligence/feed/)
- The Verge AI (https://www.theverge.com/rss/ai-artificial-intelligence/index.xml)
- Hacker News top 30 (https://hnrss.org/newest?q=AI&count=30)
2. Extract title, link, publish time, and source for each article
3. Sort by time descending, and output a Markdown digest to the output/ directory
4. Write it in TypeScript, run directly with tsx
Don't start coding yet - give me an implementation plan first.
| Part of the request | Why it is written this way |
|---|---|
| "last 24 hours" + exact feed URLs | Gives concrete data sources instead of a vague "a few RSS feeds", so Claude does not have to guess. |
| "Extract title, link, publish time, and source" | Defines exactly which fields the output must contain. |
| "Sort by time descending … Markdown digest to the output/ directory" | Describes the final deliverable and where it goes. |
| "Write it in TypeScript, run directly with tsx" | Fixes the tech stack so the plan is predictable. |
| "Don't start coding yet - give me an implementation plan first" | The important technique: force Claude to think it through before acting. |
Claude does not code immediately. It replies with a plan that looks roughly like this:
Here's my plan for the AI news aggregator:
Project structure:
ai-news-digest/
├── src/
│ ├── index.ts # Entry point
│ ├── fetcher.ts # RSS fetching logic
│ ├── formatter.ts # Markdown formatting
│ └── types.ts # Type definitions
├── output/ # Digest output directory
├── package.json
└── tsconfig.json
Technical approach:
- RSS parsing via rss-parser
- HTTP requests via Node's built-in fetch
- Date handling via date-fns
- Run TypeScript directly with tsx - no compile step needed
Implementation flow:
1. Fetch all three RSS feeds in parallel
2. Normalize format, filter to articles within 24 hours
3. Sort by time
4. Generate Markdown digest
5. Write to output/YYYY-MM-DD.md
Ready to start implementing?
What to do now: read it like an engineering proposal. If it looks right, say OK.
If you want changes, say so plainly. The book's example feedback:
# Your feedback:
The plan looks good. Two additions:
1. For each article in the digest, include a one-sentence summary (first 100 chars from the article)
2. Add a stats header at the top of the digest: "X articles collected from Y sources"
This back-and-forth — Claude proposes, you add details, Claude refines — is described as the core of conversational programming. No flowcharts, no technical specs, just plain language.
npm init -y and installs dependencies. You see a permission prompt like Claude wants to run: npm init -y Allow? (y/n). Press y. It will ask again for rss-parser, date-fns, tsx, and others.The book says this takes about 2–5 minutes, and your job is simply to watch — like observing a new colleague the first few times before you trust their style.
/permissions (covered
in Chapter 4) or switch to Auto mode.npx tsx src/index.ts
If it worked, a Markdown file appears in output/ that looks something like this:
# AI News Digest - 2026-03-28
> 23 articles collected from 3 sources
## TechCrunch AI
### OpenAI Releases GPT-5.4 with 2M Context Window
🔗 https://techcrunch.com/2026/03/28/openai-gpt-54/
📅 2026-03-28 14:30
> OpenAI today released GPT-5.4, with the biggest change being an expanded context window...
### Anthropic Launches Claude Code Desktop App
🔗 https://techcrunch.com/2026/03/28/anthropic-desktop/
📅 2026-03-28 11:00
> Anthropic announced that Claude Code is now available as a desktop application...
## The Verge AI
...
Expected result: the book says in most cases it works on the first try. If there is an error, paste the full error message to Claude:
# When the run fails, paste the error to Claude:
Got an error when running:
TypeError: Cannot read properties of undefined (reading 'map')
at formatArticles (src/formatter.ts:15:23)
Claude reads the error, finds the issue, fixes it, and runs again. This fix loop usually takes only 1–2 rounds.
It works, but you want more. You keep talking. The book gives three improvements:
# Improvement 1: add AI summaries
Right now each article's summary is just truncated from the description - pretty rough.
Change it to use AI: for each article's title + description, call the Claude API to generate a summary.
Read the API key from the environment variable ANTHROPIC_API_KEY.
# Improvement 2: add scheduled runs
Add a cron mode that automatically runs at 8am every day, using node-cron.
Add a CLI argument:
- `npx tsx src/index.ts` runs once immediately
- `npx tsx src/index.ts --cron` enables scheduled mode
# Improvement 3: add deduplication
Some articles appear across multiple sources. Add URL-based deduplication.
What each round demonstrates: Claude updates the code, runs the tests, and confirms the result. You only ever do two things — say what you want, and verify that it is right.
You: "Build X. Give me a plan first."
↓
Claude: proposes a plan
↓
You: "OK" (or "change these 2 things")
↓
Claude: writes files, runs tests, self-fixes
↓
You: run it, check the output
↓
You: "Now also add Y" ──────► (loop back)
After finishing the project, the book wants you to feel one thing: your value is not in writing code — it is in defining what to build and judging whether it was built right.
Many engineers instinctively want to read every line and understand every detail. That is natural, but it slows you down. A better approach is to manage Claude like a team member:
| Traditional programming | Programming with Claude Code |
|---|---|
| Design the solution yourself, write the code yourself | Describe the need; Claude produces the plan and code |
| Debug line by line | Give Claude the error message; it debugs itself |
| Read docs, search Stack Overflow | Ask Claude directly: "how do I implement X?" |
| Code review done manually | Ask Claude to explain what it wrote |
| Refactoring requires understanding all the code first | Tell Claude: "refactor this into the X pattern" |
This does not mean ignoring the code entirely. It means your attention operates at a higher level: Are the requirements accurate? Is the approach sound? Does the result match expectations?
Just ask. "Explain the implementation logic in fetcher.ts" — Claude explains it in plain language. You can follow up: "Why use Promise.allSettled instead of Promise.all?" The book's analogy: you do not need to know how to rebuild an engine — you just need to know when the car is running normally.
Describing the symptom is more effective than pointing at a line number. The real cause may be somewhere you would not expect.
Four words: trust, but verify. Read carefully during planning. A quick scan of the file structure is enough during coding. Check the output against expectations during execution. Test edge cases thoroughly during iteration — empty data, network timeouts, malformed input.
If it is slightly off, correct it: "Stop — don't use the XXX library, switch to YYY." If it is badly off,
press Esc to stop and re-describe the requirement from scratch. Pressing Esc twice opens
the Rewind menu: roll back the conversation, roll back file changes, or both.
| Vague (weak result) | Specific (strong result) |
|---|---|
| "Make it look nice" | "Dark background, large headline, card layout, rounded corners" |
| "Add that feature" | A self-contained sentence naming exactly which feature and where |
| Ten requirements in one message | 2–3 short messages, a few requirements each |
| Step | Your attention level | Why |
|---|---|---|
| Describe requirements | High | Everything downstream depends on this being clear. |
| Review plan | High | Cheapest place to fix a wrong direction. |
| Confirm execution | Low–medium | Glance at commands early; scan file structure. |
| Verify output | High | Does the real result match what you asked for? |
| Iterate | Medium–high | Test edge cases: empty data, timeouts, bad input. |
Esc) so you can work without anxiety.| Symptom | Usual cause | Standard fix |
|---|---|---|
| Files were created but running throws an error | Missing dependency or unset environment variable | Paste the full error to Claude: "Got an error when running: [paste]. Please fix it." One round fixes it about 90% of the time. |
| Still broken after two fix attempts | Environment issue (Node.js version, permissions) | Tell Claude your setup: OS version, Node.js version, npm version, and ask if it could be an environment issue. |
| Claude seems to "think" and nothing happens for over a minute | Interrupted flow, network issue, or the request is too large | Press Esc to interrupt and resend. Check your connection. Break large files into pieces: "Just look at the first 100 lines — any issues?" |
| The result looks nothing like what you wanted | Requirements description problem | Re-read what you said. Fix vagueness, assumed context, or too-many-things-at-once. |
| Claude modified files it should not have touched | — | Press Esc twice → Rewind menu → roll back conversation, files, or both. |
| Dependency install fails / is very slow | Network (the book notes this on mainland-China networks) | Use a mirror, e.g. npm config set registry https://registry.npmmirror.com, or ask Claude for an alternative package. Python: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package-name. |
| Hit the token / usage limit (Pro plan) | Daily quota reached | Wait a few hours for the reset, upgrade to Max 5x, or stop for the day. Use /compact to compress conversation history and reduce token use. |
Esc twice, and roll back files only.Your First Project
│
├── Mindset
│ ├── You = product manager (what / whether)
│ └── Claude = engineer (how)
│
├── The 5-step loop
│ ├── 1. Describe requirements (be specific)
│ ├── 2. Review the plan ("plan first, code later")
│ ├── 3. Confirm execution (watch; approve commands)
│ ├── 4. Verify the output (does it match?)
│ └── 5. Iterate (talk; test edge cases)
│
├── Safety
│ ├── Trust, but verify
│ └── Rewind = Esc Esc (conversation / files / both)
│
└── Troubleshooting
├── Paste the FULL error (copy, don't retype)
├── Describe symptoms, not line numbers
├── Break big requests into 2-3 messages
└── Two failed fixes -> start over
/permissions or use Auto mode.Esc) can undo conversation, files, or both — your safety net.This teaching edition is based on the supplied April 2026, 2nd edition of Claude Code: The Complete Guide (§03, "Your First Project"). The source describes itself as a continuously updated guide, so specific commands, package names, plan limits and statistics can change over time.