Skip to content
Back to skills

Build

ASecurity

Use when implementing any non-trivial feature, change, or fix: \"build me X\", \"add this feature\", \"implement this\", \"make this work\", \"can you create\". Covers new functionality, meaningful changes to existing code, and anything where quality matters: including small features, which still need verifying before \"done\". Only a literal one-line edit skips this.

  • 23 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 8, 2026
ai-agentsgocode-reviewapisecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 8, 2026

npx -y skills add mehrad-dm/mastermind --skill build --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Build?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Build
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mehrad-dm-build/badge)](https://www.skillsdirectory.com/skills/mehrad-dm-build)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: build
description: "Use when implementing any non-trivial feature, change, or fix: \"build me X\", \"add this feature\", \"implement this\", \"make this work\", \"can you create\". Covers new functionality, meaningful changes to existing code, and anything where quality matters: including small features, which still need verifying before \"done\". Only a literal one-line edit skips this."
---

# MasterMind: Build

The single "do it the genius way, end to end" workflow. It runs the loop from `~/.mastermind/engineering/core/agent-loop.md`,
pulling in the specialist agents and the field pack at each phase. Task: **$ARGUMENTS**.

Scale effort to the task (`~/.mastermind/engineering/core/principles.md`): a trivial change skips straight to implement+verify;
a foundation gets the full loop. Match the ceremony to what the task warrants.

**Spec-first work.** When the task qualifies for the full flow in
`~/.mastermind/engineering/core/spec-driven.md`, run its steps in place of steps 1 to 3: `specify`, then
`interview` on the spec, `blueprint`, `breakdown`, and `analyze` when it touches money, auth or data.
Then build from the task list below.

## Building from a task list

When the feature folder has a `tasks.md`, it is the plan. Steps 4 and 5 run per task. Step 6 runs once
per story, on that story's diff, at its checkpoint. The rules:

- **Work in order, phase by phase.** Tasks marked `[P]` may run together; everything else waits for the
  task before it.
- **Tick a box only after that task's own check passes**: the file exists, the command is green, the
  behavior is observed. Never tick ahead.
- **Stop at each story checkpoint.** Run the story's independent test and show the evidence before
  starting the next story.
- **A task that cannot be done as written** is reported, with the reason. Never improvise around it, and
  never tick it.
- **A test task's check is its failure.** Write the test, run it, and see it fail for the reason the task
  names before writing the code. A test that passes on first run proves nothing yet.
- **Plans change through their own skill.** A task that needs a different spec or plan stops and goes
  back to `specify` or `blueprint`. A product answer the user gives lands in the spec's Clarifications.
- **Record every technical ruling you make.** When the documents leave a reversible technical choice
  open, decide it and add one line under the task: `Ruling: <what> · <why> · <cost if wrong>`. List all
  of them in the final report. A product choice is never a ruling: it goes to the user.
- **Set the spec's status to `building`** at the first task. After the last task, run `converge`, and
  treat the feature as done only when it reports converged. At each story checkpoint, run `mastermind
  next` and end with the step it names.

## The loop

1. **Understand: and say how you read it.** Open with one line stating your interpretation, so a
   misread surfaces now instead of after the code exists: *"Reading this as: a bulk-import screen for
   ops staff, optimised for recovering from bad rows rather than for speed."* Then restate the real
   problem and its scope/lifespan; do the asked task and nothing more
   (`~/.mastermind/engineering/core/rigor.md` → Stay in scope). Read the relevant existing code and conventions first (delegate
   wide reading to a subagent to protect context); learn the stack if unfamiliar (`~/.mastermind/engineering/core/agent-loop.md`
   → Learn the stack first). Match the codebase.

2. **Design** (non-trivial only): invoke the **`architect`** agent to produce the blueprint:
   module/component boundaries + interfaces, state model, data flow, key types, edge-case list. For a
   multi-file or unfamiliar change, write the design/spec down before coding. Skip for a clear one-file fix.
   **Cut the work into thin vertical slices, never horizontal layers.** A slice crosses every layer
   and is visible when it lands. Left alone a model builds horizontally, all the data layer, then all
   the API, then all the UI, which is faster to write and hides every integration failure until the
   end. The rate of feedback is the ceiling on quality, so the slice exists to move that failure
   forward.
   **Show the shape before you write it, not in prose.** The types, the signatures, the call stack, the
   file layout: the forms in `~/.mastermind/skills/clarify/SKILL.md`. This is the internal detail
   that never reaches an architecture document and that a model still gets wrong, and it is far cheaper
   to correct a call tree than the code under it. One screen, then build.

3. **Decide the stack**: apply the active field's `stack-defaults.md` when a field pack exists. Choose the simplest thing that
   fully works; deviate only for a stated reason. Consult `mentors.md` if a call is contested.

> **Plan-first gate (opt-in, off by default).** If the project's **`plan-first`** preference is on
> (`.mastermind/prefs.md`: `plan-first: on`): or the user asks to "plan first": **plan first, then edit.**
> Present a concise plan from steps 1–3: the **goal**, the **approach**, the **files you'll touch**, the
> **steps**, and any risk/decision worth a look.
>
> **The bar:** clear enough for *a capable engineer with no context on this project* to follow without
> asking you anything. That means **exact file paths**, not "the auth module"; **bite-sized steps**, not
> "implement the feature"; and a stated way to **tell each step worked**. A plan records decisions, not
> code: a plan longer than the code it describes has written the code instead. If a step needs you to
> already know something the plan doesn't say, it isn't written yet. Then **stop and wait for the user's go-ahead** (this
> overrides the usual "decide and do" for this project, they opted in). If they adjust it, fold that in and
> re-show. **On approval, announce `🧠 MasterMind ▸ implementing the plan` with `└ build · implement → verify → review` beneath it, then proceed to step 4.** Skip the
> gate entirely for a trivial one-liner (match effort to stakes). It's for changes worth reviewing first.

4. **Implement to rigor** (`~/.mastermind/engineering/core/rigor.md`), build against the design. Handle the unhappy paths
   (null/empty/loading/error/zero/one/many/offline/unauthorized/malformed). Types honest, no lazy
   placeholders, no dead code. Single-purpose units. Style like the surrounding code.

5. **Verify: close the loop** (`~/.mastermind/engineering/core/agent-loop.md`; the `qa` skill): prove it works by driving
   the real thing: typecheck + lint + build, run the project's **existing** tests, and for UI exercise the
   actual flow / screenshot. Show the evidence; never assert success. If you can't verify it, it isn't
   done. Fix root causes. **Don't add tests or a test framework unprompted** (tests a task list or the
   constitution requires are not unprompted): once it works, *offer:*
   "Built and verified, want me to add tests / do this test-first?"

6. **Adversarial review**: invoke the **`code-reviewer`** agent on the diff in a fresh context. Fix
   real must-fix findings (correctness/security/a11y); treat gap-hunting nits as optional to avoid
   over-engineering. Re-verify after fixes.

   A re-review looks only at the earlier findings and the diff that fixed them. Anything new it notices
   elsewhere is reported once and does not extend the loop.

   **Close the loop in a bounded number of rounds: three.** Fix, re-review, repeat. If findings are
   still open after the third, stop looping and **decide each one in writing**: fixed · *parked* (why
   it's real but not blocking, in one line) · *blocked* (it's load-bearing and needs the human). Three
   rounds without convergence means the disagreement isn't about this diff. It's about the design, and
   more rounds just relitigate it more expensively.

   Two things this loop must never do: **adjudicate early** to escape another round. That's
   pre-judging with a nicer name: and **drop a finding silently**. Every finding exits as fixed,
   parked-with-a-reason, or escalated, and the user can see which.

7. **Capture & report**: run the **`levelup`** skill (capture) to fold any durable lesson
   or correction into the active field's `lessons.md`. Report honestly in a few lines: what shipped,
   the evidence it works, and anything deferred. Commit / open a PR only if asked. If the project's
   **`cycle-report`** preference is on (`.mastermind/prefs.md`: `markdown`/`html`, or `ask` → offer once),
   also run the **`report`** skill to write a durable file: **default is off**, so most cycles just get
   this in-chat verdict. Skip it entirely for a one-line change.

## What you noticed but left alone

You will pass broken windows on the way: a stale import, a misleading name, a function that wants
splitting. Fixing them buries the change you were asked for in a diff nobody can review. **Collect them
instead**, and hand the list back at the end:

```text
Noticed, not touched:
  · src/utils/format.ts: unused import, unrelated to this change
  · OrderRow re-renders on every parent tick: pre-existing, would need its own slice
→ Want tasks for these?
```

Costs one line, keeps the diff honest, and the user gets the observation without paying for unrequested
work: a reviewer can then see the whole change and believe it.

## Non-negotiables
Correctness, security, accessibility are never traded for speed. Speed is the reward for rigor. If an
approach is wrong or unsafe, say so once with the better option (`~/.mastermind/engineering/core/rigor.md` refuse-list), then proceed.

Files in this skill

  • ABOUT.md4.5 KB
  • SKILL.md9.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.