maude CLI
The npm-published binary that scaffolds the .ai/ workspace, edits workflows.config.json, and boots the design dev server.
npm i -g @1agh/maude # installs `maude` (legacy alias: `mdcc`; also installs `claude-design-server`)
# or:
npx @1agh/maude <cmd>maude is intentionally small. Mechanical scaffolding and config. That's it. The interesting setup happens inside Claude Code via /flow:init, which calls maude init as step one.
Five subcommands: init, config, design serve, design init, version / help. Pure ESM. Zero runtime deps beyond Node 20+.
maude init
Scaffold the .ai/ second-brain workspace into the current repo.
maude init [--name <project>] [--force] [--dry-run]--name <project>. Project slug for the<project>placeholder used by flow templates (e.g..ai/<project>-prd.md). Defaults to the current directory basename.--force. Overwrite existing files. Off by default;initis idempotent.--dry-run. Print what would be written without touching the filesystem.
The skeleton lives at plugins/flow/templates/ai-skeleton/. maude init does string templating during the copy:
- Replaces
PROJECT_NAMEplaceholders with--name's value. - Rewrites the
$schemaref inworkflows.config.jsonfrom a relative path to the absolute GitHub raw URL (so it resolves afternpm install).
Does not write CLAUDE.md. Use Claude Code's built-in /init for that.
maude config
Read or write keys in .ai/workflows.config.json from the terminal.
maude config show
maude config get <dotted.key>
maude config set <dotted.key> <value>show. Pretty-print the whole config.get. Print a single key. Dotted path:maude config get motion.complex.set. Write a key. Values that parse as JSON (numbers, booleans, arrays, objects) are stored typed:
maude config set platforms '["web-desktop","web-mobile"]'
maude config set motion.complex 1200
maude config set theme darkValidates known keys against the flow plugin's config.schema.json. Unknown keys are written as-is but warned.
maude design serve
Boot the design dev server in the current repo.
maude design serve [--port N] [--root <path>]Equivalent to invoking claude-design-server directly (which is the second bin shipped by @1agh/maude). All remaining args are forwarded to the server.
--port. Listen on a specific port (default4399; falls back to a random free port if taken).--root. Serve a different repo. By default uses$CLAUDE_PROJECT_DIR, thenprocess.cwd().
The server fails loud if launched from a directory without a .design/ folder. That's deliberate. It stops you from accidentally serving the wrong project.
maude design init
Non-interactive scaffold helper for the design plugin. Writes Core files from the design-system-inspiration library into .design/ in the current repo.
maude design init [--name <slug>] [--ds <name>] [--force] [--dry-run]
[--no-discovery | --discovery-payload <path>]Refuses to run interactively. Full discovery requires Claude Code. Use /design:setup-ds <name> there. The CLI helper exists for CI / scripted contexts:
--no-discovery. Scaffold Core only (~10 files: README, INDEX, config.json, tokens, 9 specimens) with Recommended defaults (Inter + IBM Plex + JetBrains Mono, indigo accent, dark theme,standardprofile).--discovery-payload <path>. Read pre-computed answers and tokens from JSON and scaffold Core + derived specimens deterministically. This is the path skilldesign-system(bootstrap mode) uses when shelling out from Claude Code.--name <slug>. Project name token. Defaults to the current directory basename.--ds <name>. Design system name (kebab-case). Defaults toproject(single-DS convention).--force. Overwrite an existingsystem/<ds>/. Off by default.
# Quick CI scaffold (Core only)
maude design init --no-discovery --name acme
# Re-bootstrap an existing DS
maude design init --no-discovery --name acme --force
# Skill-driven scaffold from a payload file
maude design init --discovery-payload /tmp/discovery.json --name acmeFor everything beyond a Core scaffold (audience-specific specimens, platform-conditional adds, brand-color discovery), use /design:setup-ds inside Claude Code.
maude version / maude help
What they say on the tin.
maude version
maude helpWhere the source lives
cli/bin/maude.mjs(legacy alias:cli/bin/mdcc.mjs). Argv parser and subcommand dispatch.cli/commands/{init,config,design,help,version}.mjs. One file per subcommand.
Pure ESM, no deps beyond Node 20+. PRs welcome at github.com/1aGh/maude.