Init
⚗️ Experimental — A genius-builder brain for your AI coding tools: sharp defaults, real judgment, and the discipline to check their own work. For Claude Code, Codex, Cursor & Copilot. Just markdown; it improves itself over time.
npx -y skills add mehrad-dm/mastermind --skill initAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 29 days oldThe repository was created 29 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use on the first substantive work in a project MasterMind isn't set up for yet, when the user says "init", "initialize", "set up MasterMind", "onboard", "get me ready", or when no field pack matches the project's detected stack.
SKILL.md
7.4 KB, as published. Nobody here has run it
Initialize — get MasterMind ready for this project, fast
The goal: a new user goes from "installed" to "the brain is set up for my stack and knows what I'm building" in a few quick steps — a handoff, not an intake form. Detect what you can; ask the rest. Run once per project; if this project already built its field, you're set — skip this.
Nothing ships pre-baked. A fresh install carries only the engine and engineering/fields/_template/
— no field, because a pack tuned to someone else's stack is worse than none (dead weight that misleads).
So init's core job is to build this project's field from the template, tuned to the real stack. This
is where the measured quality lift comes from; without it you still apply solid general judgment, but the
domain pack is the difference.
Keep it short (the #1 rule)
Detect before asking: read the answers out of the project, and make the technical calls yourself. A developed project needs zero questions — continue with its own stack. A greenfield project needs one open question ("what do you want to build?"), answered in their own words. The whole thing should feel like 20 seconds, then you're working.
Path A — the project already has code
- Detect the stack —
package.json/lockfile, configs, framework + versions, DB, test runner, folder shape (core/agent-loop.md). This is free — read it rather than asking. - Set up its field:
- This project already built a field that fits → load it. Done. (Nothing else ships, so this only happens on a re-run of a project that was set up before.)
- Otherwise — build one from
engineering/fields/_template/, tuned to the detected stack: a one-time bootstrap (levelup bootstrap), stated as a trade-off, not a menu: "a few minutes now makes me much sharper on your stack — its real defaults, pitfalls, and review rules. It's once per field, then reused for every task." Build it to fit one real stack, and keep it lean — tailoring prunes as much as it adds (active-field.md). Fill the pack's "Where things are" section from what step 1 already detected — the half-dozen entry-point pointers (components, routes, state, tests + run command, config, the one file that explains the architecture fastest). This is the narrow exception to "skip the directory listing" below: a full tree is re-derivable noise, but these few pointers are what stop every future task from re-running discovery. Then pointactive-field.mdat it and regenerate the router from the source clone (node scripts/build-router.mjs).
- Respect the project — match its conventions and keep the stack it already chose
(
stack-defaults.md: the project wins).
Path B — greenfield (empty folder / nothing built yet)
Nothing to detect, so ask one open question, in the user's own words rather than a menu of stack options:
"What do you want to build?"
Let them describe it freely — a product, an app, a feature — technical or not. Then read their answer:
- They named the tech (a framework, language, database) → use it.
- They only described the product → assume they may not be an engineer, and make the stack call for them. You choose the architecture and tech stack that best fit what they described — that's the prime directive (decide for them) — then state the choice with a one-line why and proceed without pausing: "I'll build this as Next.js + Postgres — best fit for a realtime habit tracker." (If they later want something different, they'll say so.)
Then set up the field pack(s) for that stack — load or bootstrap all it needs (a real app needs
frontend + backend: UI and auth/tenancy/data/jobs). Offer to scaffold the starting point
(repo/toolchain/env), then hand to build / architect for the first slice.
The first result comes before setup finishes
If the user is eager to build now, start the first vertical slice on general judgment and run pack-bootstrap as an after-first-slice / background step — a multi-minute research detour waits its turn behind their first working result.
Show the plan before you write the pack
Building a field takes minutes of research and lands real files, so let the user see it as a proposal first — a few lines, not a document:
Detected: Next.js 15 · React 19 · TypeScript · Postgres/Prisma · Vitest
I'll build a `frontend` field with: stack defaults for this exact combination ·
review rules for React 19 · an empty lessons file that fills as we work.
Starting now — say the word if the stack reading is off.
State it and proceed; this announces rather than asks. It costs one line and catches the one failure worth catching — a wrong stack reading becoming a pack that's subtly wrong about everything.
Store only what can't be re-derived — plus the pack's few "Where things are" entry-point pointers (step 2's named exception). Skip the full directory listing and the dependency list — the model can read those any time. Keep the pitfalls, the non-obvious conventions, and the decisions someone would otherwise have to rediscover.
Always end with a short report
Both paths finish with a ~5-line report so the setup is visible and the user knows what's ready:
▸ MasterMind ready
stack: Next.js 15 · React 19 · Postgres/Prisma (detected)
fields: frontend + backend (built from _template for your stack)
conventions: matched your existing style
next: tell me what to build — I'll run the build loop.
Then proceed straight into their actual task — the report is a line you pass through, not a checkpoint.
Optional preferences — offer once, then remember
After the ready report, offer these once — both skippable, both default off:
"Two optional preferences, both off by default — I'll remember your answers: (1) a short written report at the end of each build/QA cycle? (markdown / html) (2) plan-first — on bigger tasks, should I show the plan and wait for your OK before editing?"
Record the answers in .mastermind/prefs.md (create it), one line each. Both preferences are defined by
their implementations — skills/build/SKILL.md (plan-first gate) and skills/report/SKILL.md
(cycle-report values); read those for the exact keys and accepted values rather than restating them here.
Ask once and let it go: a shrug or silence defaults both off and you move straight on. They can change
either anytime ("reports on", "plan first from now on"). (Keep it to this single light offer — one ask,
then work.)
Gotchas
- Run once per project — check for a matching field pack first, and load it if one is already there.
- One open question, kept open-ended — greenfield asks only "what do you want to build?"; if the user isn't technical, you pick the stack (decide for them), state it, and move — the choice is yours to make.
- Full-stack means both packs — the classic failure is a polished UI on an unguarded backend; load the backend pack whenever auth/data/tenancy/billing are in scope.
- This sets up knowledge, not your repo's config — repo edits happen only as part of doing the task.