This series teaches you how to use Claude Code for real software development — not as a feature walkthrough, but as a decision guide. We build a small app (Markd, a bookmarks API) along the way, and each post introduces a Claude Code capability at the moment you need it.

By the end, you’ll know when to reach for CLAUDE.md vs. a skill vs. a hook vs. a subagent, and more importantly, why.

Part 1: Your First Session: What Works and What Drifts

March 17, 2026 · 9 min read

This is the first post in a series about using Claude Code for real software development. This is not a detailed feature guide but rather a decision guide. By the…


Part 2: CLAUDE.md: Your Project’s Constitution

March 17, 2026 · 10 min read

In the last post, we built Markd — a bookmarks API with a CLI — by just prompting Claude Code in an empty folder. It worked. Everything ran. But if…


Part 3: Skills: Teaching Claude How Your Project Works

March 17, 2026 · 13 min read

If you tried the exercise at the end of Post 2 — adding the archive feature — you probably noticed something. Claude followed your conventions. The Pydantic models were consistent,…


Part 4: Hooks: Automated Enforcement for Your Workflow

March 17, 2026 · 9 min read

At the end of Post 3, we left you with an observation: skills work most of the time. Your add-endpoint skill tells Claude to run pytest after writing code, and…


Part 5: Subagents: Keeping Your Context Clean

March 17, 2026 · 12 min read

If you’ve been following along, your Markd project has grown. You’ve added a handful of endpoints, a CLI, tests, an archive feature, stats, and a delete endpoint. Over the course…


Part 6: MCP & The Bigger Picture: Claude in Your Toolchain

March 17, 2026 · 11 min read

Over the past five posts, we’ve built a layered system for working with Claude Code. CLAUDE.md sets conventions. Skills teach processes. Hooks enforce rules. Subagents manage context. Together, they turn…