Level 3 · The Full Workflow
Part 3 of 3, for Janika_

Inside the
machine
room.

You’ve driven the car. Now let’s look under the bonnet. Feature packs, phase gates, parallel reviews, the whole workflow that makes bigger builds possible.

ProjectShip It Stage03 of 03 ScaleGraduate RevA
Chapter 01 · Welcome back

Six things you
already know.

Say the answer out loud before you reveal it. You’ve met all of these in Parts 1 and 2.

Four book-keeping files?
NOW.md, IMPLEMENTATION_PROGRESS.md, KNOWN_PITFALLS.md, DECISION_LOG.md. The project’s heartbeat. Claude reads them at session start.
tap to reveal
What a hook does?
Fires at a fixed tool-call moment. Enforces a rule automatically. Auto-format, scope-guard, no-verify blocker.
tap to reveal
What /implementation-guide enforces?
The visual-phase gate (design audit + screenshots required before greenlighting a visual phase) and a context-budget check before each phase.
tap to reveal
Worktrees, in one line?
Two copies of your project on one Mac. Two Claudes can work on different features in parallel without colliding.
tap to reveal
The 70% problem?
AI gets you 70% fast. The last 30% (edges, consistency, the details) is where projects stall. CLAUDE.md + quality gates close the gap.
tap to reveal
/wrap vs /commit?
/commit saves locally. /wrap commits + pushes + updates book-keeping at session end. Different jobs, on purpose.
tap to reveal
Self-efficacy check

You’ve already run half of the commands you’ll see in this deck. This isn’t new territory, it’s the same ground, one floor deeper.

Chapter 02 · The big picture

Three decks,
one journey.

Before we dive in, here’s where each deck lives. Part 3 is the inside of the stages Part 2 named.

PART 1 The Basics · Claude, Superset, install · Context, memory, cache · CLAUDE.md, tokens, status line · Tools, agents, skills · Prompting, hallucinations · Git, GitHub, PRs, worktrees · The widget, shipped simply PART 2 The Workflow · API keys, Doppler · The Ship It repo · Book-keeping files · 5 core skills, chained · Six stages of work · Hooks introduced · The widget, rebuilt properly PART 3 The Machine Room · Feature packs, vertical slices · Blueprint audit (A/A.5/B/C/D) · Screen inventory, design gen · Assets & platforms · 7 per-phase gates · Parallelism, worktrees · End-of-pack 4-step review

Think of it as a drawing scale: Part 1 is 1:200 (whole site). Part 2 is 1:50 (floor plans). Part 3 is 1:5 (details). Same building.

Chapter 03 · The unit of work

A product is
a stack of packs.

Trying to build a whole product at once is like laying out a whole hospital in one drawing. It doesn’t work. Ship It breaks every product into feature packs: a single feature’s worth of spec, contract, states, acceptance, and build plan, all in one folder.

01

What’s in a pack

__spec.md (what it does), __contracts.md (exact field names and API shapes), __states.md (every UI state), __acceptance.md (pass/fail tests), and, when planning begins, __build.md (the phase plan).

02

Vertical slices, not horizontal layers

Each phase inside a pack builds a vertical slice: a small end-to-end piece that works and is testable. Types + DB + backend + UI for one feature. Never “do all the backend, then all the UI”, that way lies endless integration pain.

Architectural parallel

Like issuing a single room in full: plans, sections, details, M&E, finishes schedule, the works. When it’s signed off, you move to the next room. The room is the unit of delivery, not the drawing type.

Chapter 04 · Catching the mistakes before building

Before you write
a single line, audit.

Writing a spec is not the same as writing a good spec. Ship It runs five passes over every blueprint before building begins. Each pass catches different kinds of problem.

A

Hygiene

Terminology consistent? Names match? Cross-references resolve? Every named thing defined? Catches the silly stuff before it hardens into the build.

A.5

Navigation

A dedicated sweep just for screen-to-screen flow. Does every “tap here” lead somewhere real? Any orphaned screens? This is where UX confusion is caught.

B

Contract tracing

Every field in every contract traced back to the spec. If the spec says “booking has a date” and the contract doesn’t, the contract is wrong.

C

Flow validation

End-to-end user journeys walked through. If booking requires login but login isn’t in the flow, that’s a blocker. Found at audit, not at build.

D

Dry-run buildability

Can someone build this from the docs alone, without asking you questions? If the answer is “maybe”, the blueprint isn’t ready.

Result: ready to build

(not a pass, an outcome)

Only when all five passes above are clean. This discipline is the single biggest difference between projects that ship and projects that stall.

Chapter 05 · Before you draw, list everything that needs drawing

Screen inventory,
room data sheets.

Before starting any visual build, Ship It takes a deliberate pause. Two skills fire in sequence.

01

/screen-inventory

Produces a comprehensive list of every screen in the product: what it is, which feature pack owns it, what states it has. Once per project, at the top.

Like a room data sheet before detailed design starts.

02

/design-preflight

Fires before each visual phase. Enriches the builder prompt with motion specs, touch targets, glass/material choices, asset needs, and emotional tone. Closes gaps that would otherwise get winged.

Like pre-issue checklist before any drawing set leaves your desk.

Why both

Screen inventory gives you the total picture. Design preflight makes each phase specific. Together, the design never feels improvised.

Chapter 06 · Your materials library

Every project
needs stuff.

Icons, images, illustrations, animations, screen mockups, copy. Collectively: assets. Ship It’s /asset-forge inventories what you need and writes locked prompts for each. The trick is picking the right tool for each type.

A flat-lay of design assets: colour swatches, an icon reference card, typography specimen, a pen and bulldog clip
Hero images

GPT Image 2.0

OpenAI’s latest image model. Great for atmospheric, magazine-style visuals. Best when you want something photoreal or illustrated with real style.

Paid, via OpenAI API
Variations & volume

Gemini 2.5 / Imagen

Google’s image generation. Good when you need ten variants cheaply, or want to explore styles before committing.

Free tier, then paid
Full screen mockups

Stitch (via MCP)

Claude can drive Stitch directly to generate complete screens in your design system, with layout, components, and typography applied. Best for fast visual iteration.

Subscription
Icons, always

Icons8

Curated library of thousands of icons in matching families. Drop-in consistent assets, every time. Nothing you generate will match this for uniformity.

Free tier generous
Precision diagrams

Inline SVG (from Claude)

For charts, architectural diagrams, custom shapes. Claude writes SVG directly. Sharper, lighter, more controllable than any raster alternative.

Free
Motion

CSS, Framer Motion, Lottie

CSS keyframes for simple reveals. Framer Motion for complex interactive UI animation. Lottie for designer-authored JSON animations imported from After Effects.

Free / library-dependent
The principle

Match the tool to the task. GPT Image 2.0 for a hero photo, never for a chart icon. Inline SVG for a tube roundel, never for a person’s face. Icons8 for the button glyphs, never hand-drawn.

Try this Claude, draw me an SVG of a TfL Central-line roundel. Red circle, blue bar, the word CENTRAL on the bar.
Chapter 07 · Checks that fire at every phase

Seven gates.
Plus a design loop.

Every phase of every pack passes seven gates before it can be called done. For visual phases, a small between-phase design loop fires too. This is how Ship It stops Claude from shipping mess.

The seven gates (sequential)

1
Spec check
Does the code match the spec exactly?
2
Design check
Tokens, layout, no raw hex.
3
Pitfalls
Traps from KNOWN_PITFALLS avoided?
4
Security
Auth, injection, exposed secrets.
5
Code quality
No duplicates, no dead imports.
6
Terminal
lint + typecheck + test = zero.
7
Done-when
Every done-when checklist item verified.

The visual loop (after visual phases)

/design-audit → code-only check
/design-advisor → suggest fixes
/design-build → apply them
/feel-check → on-device test

Runs between every visual phase. Small, tight, repeatable. Design never drifts.

Chapter 08 · Hooks deeper, plus parallel development

Two force
multipliers.

Hooks beyond the basics

Part 2 introduced three beginner hooks. Ship It’s starter pack adds a couple more worth knowing once you’re committing real work:

  • credential-read-guard: blocks reads of credential files
  • known-pitfalls: reminds of recorded traps before risky ops
  • playbook-capture-nudge: soft reminder to capture learnings
  • filing-scratch-guard: prevents writes to scratch paths
  • code-quality-check: runs terminal gates after edits

Grow the set by incident. Every hook that earns a place there does so because something real went wrong once.

Parallelism: two agents, two features

/parallelism-advisor studies your plan and tells you:

  • → which packs can run in parallel worktrees
  • → which phases inside a pack are independent (the Diamond Pattern)
  • → a ready-made worktree setup command
  • → sequential vs parallel timeline comparison
Diamond Pattern example
Phase 1 (types + DB)
↓ fan out
Phase 2 (backend)
Phase 3 (UI shell)
↓ converge
Phase 4 (integration)
Chapter 09 · The truth about AI-written code

LLMs make
the same mistakes
every human does.

Just faster. Dead code, repeated logic, silent failures, drifted names, scope creep. Ship It’s whole pipeline is, in effect, a set of specialised mistake-catchers. Here’s what each one catches.

Dead code (never-run branches)
caught by /pr-review-toolkit:code-simplifier (every 3rd phase)
Duplicated logic across files
caught by /pr-review-toolkit:code-reviewer
Silent failures (try/catch swallow)
caught by /pr-review-toolkit:silent-failure-hunter
Field names drift from spec
caught by /review-diff
Security holes (auth bypass, injection)
caught by /security-review (required every pack)
Scope creep (edits outside phase)
caught by scope-guard hook + /diff-audit
Missing tests
caught by /pr-review-toolkit:test-coverage-analyzer
Comments that lie about the code
caught by /pr-review-toolkit:comment-accuracy-checker
The real win

These don’t run one by one. At the end of a pack, /pr-review-toolkit:review-pr spawns its six specialists in parallel, and the other three skills (/review-diff, /security-review, /diff-audit) run alongside. Most of the team reviews your work at once, in about a minute. Then you read the reports.

Chapter 10 · The gate at the end

Four specialists.
In parallel.

At the end of every pack, Ship It runs a 4-step review. Steps 1 to 3 fire in parallel. Step 4 runs last. The whole thing takes about as long as one specialist working alone.

01

/pr-review-toolkit:review-pr

Six review specialists spawn in parallel: simplifier, reviewer, silent-failure hunter, test coverage, type design, comment accuracy.

02

/review-diff

Spec-compliance check. Catches naming drift, invented fields, and contract mismatches.

03

/security-review

Injection, auth bypass, crypto, data exposure, service-account leaks, dependency vulnerabilities.

04

/diff-audit

Scope sanity. Only intended files changed? No accidental formatting churn? File count matches the plan? Runs after the first three.

Why this exists

Research found AI-generated code has 2.74× higher security vulnerability rates. You can’t eye-review your way out of that. You need specialists.

Chapter 11 · Quick check

What would you
do if...

One scenario. Pick your answer. Reveal to check. No grade, just noticing.

You’re at Phase 4. Gate 3 (Pitfalls) flags a trap recorded from a previous project, but the fix adds a day to your schedule. Do you:
A. Fix it now before moving on.
B. Log it in DECISION_LOG.md with reasoning and continue.
Answer: it depends. If the pitfall is on the critical path (touches code you’re about to build on), fix it now, your Phase 5 builds on this. If it’s cosmetic or touches an area you’re not editing this phase, log it in DECISION_LOG with “deferred, will address in Phase N” and move on. The rule: never ignore a pitfall silently. You either fix it or you explicitly defer it.
tap to reveal
Chapter 12 · Now, the real thing

Plan your widget
with the real tools.

This is not a rebuild. You’ve already built it twice. This is a planning exercise, seeing what /spec-writer and /build-pack produce when you point them at a real idea. Takes fifteen minutes.

Step 1 of 3 · Run /spec-writer

Feed it the widget, see what comes back.

Open Claude in your tfl-widget workspace. Paste this. Answer its questions honestly. At the end you’ll have a SPECS.md that’s better than anything you’ve written for this project before.

Paste /spec-writer

I want to build a TfL tube widget for iPhone showing next arrivals and line status for my regular lines. Walk me through the five-phase spec flow.
Step 2 of 3 · Run /build-pack

Turn the spec into a phase plan.

Paste /build-pack

Use the SPECS.md you just wrote. Plan the widget as a single pack, kept small, no more than 5 phases.

Read what it produces. Notice: done-when checklists for each phase, context budgets, pitfalls flagged from KNOWN_PITFALLS. This is what a production plan looks like.

Scale contrast

Your widget plan probably came out with 3, 4, or 5 phases. The same tool produced a 15-phase plan for the finance dashboard build, about 8,400 lines of code when it was done. Same workflow, different scale. The tools adjust; the discipline doesn’t.

Step 3 of 3 · Look at the difference

Three things you couldn’t do in Part 2.

Take two minutes. Type what’s genuinely new.

01
02
03

(Saved in your browser.)

Chapter 13 · Starting your own project

Ship It
is a template.

The widget was your practice. Now you take the same playbook and start something you actually care about. Six steps.

01

Get the playbook onto your Mac

Ship It is already at /Users/munim/ship-it/ on the machine you’ve been using. For a fresh Mac, ask Claude: “clone the Ship It repo into my home folder”.

02

Make a project folder

Decide the one thing you’re building (nothing too big, a tiny first feature is fine). Tell Claude: “make a new folder called my-project next to ship-it and start me in it”.

03

Copy the starter kit

One prompt does this:

Copy everything from ship-it/templates/ into here. Also copy ship-it/skills/ into .claude/commands/. Tell me when done.
04

Write your CLAUDE.md

Run /init to get a first draft. Then copy in the five Tier 1 rules from templates/CLAUDE.md.starter. Delete anything you’re not ready for. Keep it under 60 lines.

05

Spec it, then plan it

Same chain you saw in the widget demo. Run each in order, read the file it writes, then run the next:

  • /spec-writer (writes SPECS.md)
  • /feature-plan (writes the feature pack)
  • /build-pack (writes the phase plan)
06

Build, commit, review, repeat

For each phase: /build-team writes the code and Claude runs the 7 quality checks automatically. Say /commit when it works. End of pack: run the mandatory review checklist (Claude knows it). Then merge and start the next pack. Same loop, forever.

Remember

Ship It doesn’t build for you, it gives you the scaffolding and the discipline. The muscle you’ve built across these three decks, that is the thing that ships your project.

When you want it saved online · GitHub

Local commits live on your Mac only. GitHub is where you put them to back up, share, and (eventually) collaborate. Three one-time steps, then it’s one prompt away for every future project.

One-time · 1. Make a GitHub account Open github.com and click Sign up. Free is fine. Pick a username you don’t mind being public (e.g. your first name plus a number). One-time · 2. Install the GitHub CLI A clean way to talk to GitHub from your project folder. In Terminal (or ask Claude to run it for you), paste:
brew install gh
If Terminal says brew: command not found, ask Claude “install Homebrew for me” and it will walk you through it. One-time · 3. Pair the CLI with your account
gh auth login
Accept the defaults (GitHub.com, HTTPS, Login via web browser). It shows a one-time code, click the link, paste it into the browser, authorise. Come back to Terminal. You’re paired. From now on · Publish any project Open Claude inside the project folder and say:
create a private github repo for this project and push everything to it
Claude runs the right commands (gh repo create --private --push --source=.) and you have a backed-up repository in under a minute. From then on, after any /commit, just say “push” and your latest work lands on GitHub.

Start every repo private by default. You can flip it public later. Anything with an API key, a draft, or anyone else’s data stays private, always.

When you want to put it live on the web

Static sites (decks, demos, landing pages) deploy to Cloudflare Pages in one command: wrangler pages deploy <folder> --project-name=<name>. The deploy script at scripts/deploy-decks.sh in Ship It is the pattern, copy and adapt.

You’re actually ready now.

You know what happens inside each stage. You know why the gates exist. You know which skill catches which kind of mistake. Nothing in a real project will be a surprise.

Your one next action
Pick one real project you care about. Run /spec-writer on it. Ship a single pack. Notice the difference.

For monthly maintenance, a quick ten minutes with /tidy /prune /playbook-feedback keeps the repo breathing.

End of the series. Go build something.