@omit-design/cli
v0.5.1
Published
omit-design CLI: init / dev / lint / new-page / skills / upgrade. Init scaffolds husky pre-commit + .claude/settings.json domain bounds.
Readme
@omit-design/cli
CLI for omit-design — scaffold projects, run a local dev server, run hard-rule lint.
Install
npm install -g @omit-design/cli
# or use ad-hoc
npx @omit-design/cli init my-appCommands
| | |
|---|---|
| omit-design init <name> | Scaffold a new project (Vite + React + preset-mobile + 4 ESLint hard rules + .claude/skills/ + .claude/agents/ + .claude/settings.json + husky pre-commit hook). design/ and patterns/ ship empty — patterns are produced on demand via /distill-patterns-from-prd or /add-pattern. Auto-runs git init (gated by --no-git). |
| omit-design dev | Start the local design server (Vite). |
| omit-design lint [files...] | Run the four hard rules (no-design-literal / whitelist-ds-import / require-pattern-header / require-pattern-components). With no args, scans design/**/*.tsx. With explicit positional file paths (used by lint-staged), scans only those — non-design/*.tsx paths are silently skipped. |
| omit-design skills update | Sync the cli's built-in .claude/skills/ into the current project's .claude/skills/. |
| omit-design new-page <pattern> <path> | Scaffold a design page by copying a project-local pattern template (<project>/patterns/<pattern>/template.tmpl.tsx). If patterns/ is empty or the pattern is missing, exits with a hint pointing at /distill-patterns-from-prd or /add-pattern. |
| omit-design upgrade | Bump all @omit-design/* deps to npm latest, install, scan project for removed-class references, and link the CHANGELOG. |
Quick start
npx @omit-design/cli init my-app
cd my-app
npm install
npm run devThen open http://localhost:5173/. The workspace lands on /workspace with your project. design/ and patterns/ start empty — see the main README for the PRD → distill → new-design flow.
Examples
# Scaffold a new project
npx omit-design init my-app
npx omit-design init my-app --force # overwrite existing dir
npx omit-design init my-app --no-git # skip the auto `git init`
# Dev server
omit-design dev
omit-design dev --port 3000
omit-design dev --host # expose on LAN
# Lint
omit-design lint
omit-design lint --json # raw ESLint JSON
omit-design lint --glob 'src/views/**/*.tsx' # custom glob
omit-design lint design/orders/list.tsx # explicit file (used by lint-staged)
omit-design lint design/a.tsx design/b.tsx # multiple files
# Skills (upgrade .claude/skills/ to the version shipped with this cli)
omit-design skills update
omit-design skills update --dry-run # preview only
omit-design skills update --target other/dir
# new-page (copy a project-local pattern template into design/)
# Requires patterns/<id>/template.tmpl.tsx to already exist —
# create patterns via /distill-patterns-from-prd or /add-pattern in Claude Code.
omit-design new-page list-view design/orders/list
omit-design new-page detail-view design/orders/detail --force
# upgrade (bump all @omit-design/* deps + scan project for legacy refs)
omit-design upgrade
omit-design upgrade --dry-run # preview only
omit-design upgrade --check # exit 1 if any out-of-date (CI)
omit-design upgrade --no-install # update package.json but skip install
omit-design upgrade --no-migrate # skip the legacy class/API scanAfter upgrade the command scans your .css / .tsx / .ts etc. for class
names and APIs removed in past releases (e.g. .shell-device-screen →
.shell-design-frame after engine 0.2.0) and prints a per-file migration
report. Pass --no-migrate to skip.
What init produces
Each scaffolded project is self-defending without further wiring:
.husky/pre-commit— runsomit-design linton every stageddesign/**/*.tsxvia lint-staged. Installed by husky'spreparescript onnpm install..claude/settings.json— denies AI edits toapp/,eslint.config.js,vite.config.ts,tsconfig.json,.husky/,package.json. The deny list is intentional friction; AI working on design files won't trip it..claude/skills/— 9 Claude Code skills organized as entry / make / deliver:- Entry:
start(state diagnosis),omit-design-cli - Make:
distill-patterns-from-prd(PRD → patterns),add-pattern(conversational or manual),new-design(page from pattern),bootstrap-from-figma(visual theme from Figma URL) - Deliver:
audit-design,ship-design - Plus
omit-design(philosophy + 4-layer constraint reference)
- Entry:
.claude/agents/— 2 sub-agents that take heavy work out of the main conversation:pattern-applier(Sonnet) — drafts a page in isolated context;new-designdelegates after pattern selection.audit-reviewer(Haiku) — read-only scan + structured report;audit-designandship-designdelegate.
eslint.config.js— wires up all 4 hard rules with the right options fordesign/**/*.tsx.
Skip the husky setup with --no-git if you initialize git yourself later.
License
MIT
