Skip to content

Feature Overview

Everything blueprint does, with a one-line description for each — click a feature name to see how to use it.

Commands — what you run

FeatureWhat it does
init — greenfield scaffoldOne command scaffolds the whole operating contract: layer folders, config, lint, handbook, agent contracts, CI, import alias
init — brownfield authoringOn a repo with code but no config, writes an executable authoring playbook instead of guessing a preset
init --agent claude|codexLaunches your own agent CLI on that playbook — it derives the config from evidence and iterates until every finding is explainable
surveyDeterministic repo evidence: folder shapes, the import matrix, package concentration — the raw material for authoring a config
inspectScans src/ against the blueprint and lists every violation; any error-level finding exits 1 — drop it straight into CI
inspect --baselineThe brownfield ratchet: lock today's debt, fail only on new findings, tighten as debt is paid down
impactDry-run the emitted lint rules through the project's own ESLint: hits per rule, heaviest files named — rule conflicts get decided on numbers, before wiring
depsBlast radius per module — who gets hit if I change this, plus the fan-in leaderboard
doctorIs adoption finished? A read-only checklist — config, no leftover references, eslint wired, alias wired, architecture clean (with its coverage stated), suppressions ledger current
All CLI flagsThe full flag matrix for every command, including init --preset and --dry-run

Artifacts — what one config compiles into

FeatureWhat it does
eslint.config.mjsemitLint compiles the layer flow, ownership, and module boundaries into a flat config — embedded plugin included, nothing extra to install
docs/architecture-handbook.mdemitHandbook renders the human handbook (mermaid diagram, layer table, playbook) from the same source as the rules — it cannot drift
CLAUDE.md / AGENTS.md / …emitAgentFiles distributes one agent contract across Claude, AGENTS.md, Gemini, Copilot, Cursor, and Windsurf — hand-written content survives behind markers
blueprint-ci.ymlemitCi renders a GitHub Actions workflow: lint + the read-only architecture report from the first commit

The blueprint — what you declare

FeatureWhat it does
defineBlueprintThe single source of truth — validated at definition and on every load, so a structural mistake fails with a precise message
Layers & one-way flowOrdered layers where each imports only downward; allowedImporters narrows who may import, selfOnly bars re-exporting
Ownership — ownsA layer exclusively owns packages, named imports, or globals — every other layer is barred from them
Module shapefolder = one feature per folder behind a public entry; flat = the layer is one node (e.g. a Next route tree) — overridable per layer
blueprint.rulesRule ids with tiers: the machine-checkable ones become lint gates, the rest land in the handbook and agent contract as judgment
Every other config fieldsourceRoot, additionalAliases, naming, lintOverrides, emit.* — one line each, typed in full in the API reference
PresetsvuePreset / reactPreset encode the full governance handbook; nextPreset adapts to the App or Pages router, with or without src/

Checks — what gets caught

FeatureWhat it does
The nine inspect findingsUndeclared folders, flow violations, deep imports, ownership, relative escapes, selfOnly re-exports, cycles, missing entries, missing layers
The six embedded ESLint rulesrelative-escape, no-deep-watch, use-prefix (+ reactivity), test-filename-matches-source, no-typedef-only-file
The three-tier landingWhat a machine can check compiles into lint; what needs judgment compiles into the contract — a green lint run is never an architecture verdict

Trust & compatibility

FeatureWhat it does
Security & trustNo network, zero runtime dependencies, read-only checks, declared writes, --dry-run, provenance-signed releases
Field-tested setupsWhat has actually been run — production apps, all five stacks, monorepo model — plus what is unsupported (Nuxt) and why
Prior art — how it differsWhere blueprint overlaps with import-boundary linters — and what only it compiles from the same source
Programmatic APIEvery emitter and runtime is importable — emitLint in your own eslint config, runInspect / runDeps in your own tooling