SPEC — Mike Means Business
Mike Means Business
// payoff from the carousel

You commented SPEC. Here is the build.

Drop 13 · Claude Code

Spec-kit.
The four traps.

Spec-kit is GitHub's planning workflow for AI coding. 101k stars in weeks. It turns a two-paragraph brief into a full implementation plan in three minutes. The README skips the four traps that waste your first thirty. Below: the install, the spec I actually ran, the four traps, and the quick start so you don't repeat my mistakes.

Install

Spec-kit ships as a Python tool. You need uv first (one-line install). Then the spec-kit CLI.

~ install.sh
# 1. install uv (Mac or Linux)
$curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. install spec-kit
$uv tool install specify-cli --from git+https://github.com/github/[email protected]
# 3. scaffold a project
$specify init my-feature --ai claude

The four traps

Trap 01

The six commands are not a CLI.

You install a specify binary. That binary only does two things: init a project, and check your setup. The actual workflow lives as slash commands inside your AI agent.

After specify init, open the project in Claude Code (or Cursor, Copilot, Gemini) and type the commands there as chat messages starting with a slash.

~ wrong vs right
# wrong (command not found)
$speckit-constitution
# right (inside Claude Code's chat)
>/speckit-constitution
Trap 02

The constitution step looks optional. It is load-bearing.

It is the layer every downstream command defers to. If you write "use Python, test-first, prefer simplicity," everything downstream is generic. If you write "Python 3.12, FastAPI, Supabase, postgres-first, no Redis, no Celery, use pg_cron for background jobs, tests must hit a real Supabase project," the spec, plan, and tasks all line up with your actual stack.

Spend ten minutes on the constitution. You save an hour downstream.
Trap 03

It is project-local. Every fresh project needs specify init.

Slash commands and templates are written into .claude/skills/ and .specify/ in the project directory. They do not follow you. There is no global mode. Not a bug. Worth knowing before you go hunting for a global config.

Trap 04

The output is a plan. Not working code.

/speckit-implement hands tasks to your agent to execute. The quality of what you get is bounded by the quality of your spec and plan. Spec-kit does not replace TDD or code review. It replaces the planning-on-vibes step.

Treat the final artifact as a contract you negotiated with yourself before writing code. Not as a finished implementation.

The spec I actually ran

Two paragraphs in. The whole plan out. Here is the exact brief I gave /speckit-specify for a reply classifier confidence dashboard.

~ brief.md
# brief (what I typed into /speckit-specify)
Build a Reply Classifier Confidence Dashboard for the
outreach worker. Last week the reply classifier silently
dropped ~95% of replies into the noise bucket. Caught by
hand. Cost me days.
P1: dashboard showing last 24h replies grouped by bucket
(positive, objection, unsubscribe, auto-reply, noise) with
confidence score, 140-char snippet, and one-click reclassify
that writes back to a training corrections table.
P2: threshold sliders for positive and unsubscribe confidence
floors with preview against last 7 days before commit.
P3: daily Slack digest at 09:00 UTC with counts and
low-confidence flags.
Edge cases: zero replies, missing confidence scores (legacy
rows), simultaneous reclassifications (last-write-wins
logged), long replies (truncate to 140).
Out of scope: retraining the model, mobile UI, multi-tenant.
Success metric: time-to-detect a classifier regression drops
from 7 days to under 24 hours.

Three minutes later it returned a Postgres schema, three Supabase RPC functions, three API contracts, and 49 numbered tasks with parallelization markers. None of that was in the brief. The constitution from step one carried the stack decisions through to the implementation plan.

How to use it

  1. 1
    Install uv and spec-kit using the commands above. Two minutes.
  2. 2
    Open Claude Code in the project directory. The slash commands only exist there.
  3. 3
    Write your constitution first. Lock the stack, the test rules, the deploy gates. Be specific. This is the file that makes everything downstream specific.
  4. 4
    Run /speckit-specify with your two-paragraph brief. Include priorities, edge cases, out-of-scope, and a success metric.
  5. 5
    Then plan, tasks, implement. Each command reads what came before. By the end you have a contract you can hand to a junior dev or back to your agent.
Drop 14 → tomorrow

That is day 13.

Day 14 drops tomorrow. Same format. Different hack. Same rule: cut the bs, show what works.

Follow @mikemeansbusiness_ai