Standing up one micro-frontend cost about a day.
Mindtickle's frontend is a universe of 150+ micro-frontends across 50+ repos. Picking up a new one locally was a manual, error-prone gauntlet — and you paid it again on every switch:
From a project name to a running app.
Every step of that gauntlet is solved deterministically, from a single project name — and each step is skip-if-already-done and safe to re-run.
No global anything
Deterministic, collision-free ports derived from the app's name (so apps never fight), the project's own toolchain provisioned through your login shell (no global Node switch), and env files auto-generated for all four environments from the source of truth — with track inheritance.
Idempotent & safe by default
Every step is skip-if-already-done and warn-and-continue, so a single failure never leaves you half-set-up. It never clones over a different remote, writes config atomically with .bak recovery, and an editor failure never fails the setup.
One command, or one sentence.
The CLI is fully deterministic. The Claude skill sits on top: it maps natural language to flags, runs the CLI in the background, streams clean per-step progress into chat, and branches on the result. Deterministic core, conversational shell.
✓ Cloned & registered
✓ Env files generated — default .env = staging
✓ yarn install · yarn relay · opened in Cursor
The taste is in the architecture.
Zero-dependency kernel + tools
Ships src/ + bin/ as-is — no build step, no runtime deps. A dependency-free node-guard checks the Node version before anything else parses. A reusable kernel plus tools (tools/setup, tools/lifecycle) means the next tool is a new folder, not a rewrite.
Three enforced invariants
Commands never print or exit — they return {exitCode, result}; only cli.js touches the process, so every command is unit-testable. The JSON payload is the API — --json everywhere, self-described by capabilities, with an anti-drift test. The CLI surface is declared once — specs generate parsing, help, and capabilities.
AI-native by design
The capabilities contract + --json + an AGENTS.md let an agent drive it deterministically. The skill launches it in the background, long-polls an NDJSON --progress-file, renders per-step lines, and branches on status — the same machine contract a human reads as clean output.
A real error taxonomy
Distinct exit codes for every failure class — 7 prereq, 3 helm-unavailable, 4 remote-mismatch, 5 config, 6 locked, 9 env-gen — each with an actionable fix message, so it fails fast and legibly instead of dying cryptically mid-run.
Platform work, at the highest altitude.
The classic staff/principal move — build the platform other engineers build on:
Published as @mindtickle/mt-setup; a second tool (lifecycle) ships centrally-managed hooks controlled by a runtime policy repo — behaviour changes without republishing.