Library
Claude Code Mastery · Chapter 10 of 10
Chapter 10

Capstone —
Build & Launch

Take everything from this book and ship one real product from spec to first paying user.

CapstoneEnd-to-endShipPortfolio
A Handbook For Builders
Capstone —
Build & Launch
Chapter 10
The Claude Code Handbook
Prologue

Time to build the real thing.

Every chapter until now was preparation. In this final chapter you are going to design, build, deploy and launch one complete AI product. Follow the sequence, adapt the pieces to your own idea, and end this book with something you can send to a paying customer.

Part I · Idea

1. The Capstone Brief

Reference product: "Standup Studio" — a Slack bot that reads yesterday's PRs, commits, and tickets, and drafts a personalized standup post for each engineer to review and send.

You can build this one exactly, or swap in your own idea using the same skeleton.

Part I · Idea

2. Writing the Spec

mdclaude-code
# Standup Studio — Spec v1

## Users
- Engineers in 2–20 person teams.

## Value
Save 10 minutes per person per morning by drafting standup posts they only need to edit.

## Must-have
- Slack signup + OAuth
- Connect GitHub org and Linear workspace
- Nightly job builds drafts
- 07:30 local ping in DM: "Review your standup"

## Nice-to-have
- Weekly summary for managers
- Draft tone selector (casual / crisp / detailed)
Part II · Design

3. Architecture

diagramclaude-code
Slack ─── OAuth ───▶ Backend (Node/TS on Railway)
                       │
GitHub API  ─────────▶ │  ─── Postgres (Supabase)
Linear API  ─────────▶ │
                       │
                Nightly cron
                       │
                       ▼
              LLM (Claude via OpenRouter)
                       │
                       ▼
               Draft ➜ Slack DM
Part II · Design

4. Data Model

sqlclaude-code
create table teams (id uuid pk, slack_team_id text, plan text default 'free');
create table users (id uuid pk, team_id uuid fk, slack_user_id text, github_login text, timezone text);
create table drafts (id uuid pk, user_id uuid fk, for_date date, content text, status text);
create table events (id uuid pk, kind text, payload jsonb, created_at timestamptz default now());
Part III · AI

5. Prompt Templates

textclaude-code
<role>Standup coach for a fast-moving engineering team.</role>

<engineer>{{NAME}} — {{TIMEZONE}}</engineer>

<yesterday>
{{PRS_SUMMARY}}
{{COMMITS_SUMMARY}}
{{TICKETS_SUMMARY}}
</yesterday>

<style>{{STYLE}}</style>

<task>
Draft today's standup in 3 bullets: yesterday, today, blockers.
Never invent tickets that are not listed above.
</task>
Part III · AI

6. Agent Roles

  • Collector — fetches PRs, commits, tickets per user.
  • Summarizer — condenses raw events into per-user context.
  • Drafter — writes the standup draft.
  • Critic — verifies no invented tickets, one pass max.
Part III · AI

7. Tools & APIs

  1. GitHub REST — PRs, reviews, commits.
  2. Linear GraphQL — tickets moved and assigned.
  3. Slack Web API — DM the draft, handle "send" button.
  4. OpenRouter — model routing + fallback.
Part IV · Product

8. Frontend

A small settings dashboard in Next.js: connect GitHub, connect Linear, timezone, tone. Everything else happens in Slack.

Claude Code — Terminal
Screenshot placeholder
Settings dashboard showing connected integrations and a tone selector.
Figure — Settings dashboard showing connected integrations and a tone selector.
Part IV · Product

9. Backend

  • Node + TypeScript service on Railway.
  • Supabase for Postgres and OAuth token storage.
  • BullMQ for the nightly job queue.
Part V · Ship

10. Deployment

  1. Push to GitHub → Railway auto-deploys.
  2. Set env vars for Slack, GitHub, Linear, OpenRouter.
  3. Add a Slack Manifest for OAuth scopes.
  4. Point standup.studio to Vercel for the marketing page.
Part VI · Quality

11. Evals & Monitoring

  • Nightly eval: 20 synthetic engineer profiles → assert draft mentions their PRs and never invents tickets.
  • Track: draft acceptance rate, edit distance, unsubscribe rate.
  • Alert if cost per active user > $0.20/day.
Claude Code — Terminal
Screenshot placeholder
Metrics dashboard showing acceptance rate climbing from 62% to 84% after two prompt iterations.
Figure — Metrics dashboard showing acceptance rate climbing from 62% to 84% after two prompt iterations.
Part VII · Launch

12. Launch & Feedback

  1. Invite 5 friendly teams for a 2-week free trial.
  2. Weekly interviews — ask what almost made them uninstall.
  3. Fix the top complaint before onboarding the next 5 teams.
  4. Add a paid plan the day acceptance rate crosses 80%.

You now have the skills, the workflow, and a real product. The next steps are the same for every builder from here on:

  • Talk to users every single week.
  • Ship one small improvement every day.
  • Publish what you learn — teaching compounds your career.
  • Build the next thing on top of the last thing.