arc dsl works with AUP DSL, the declarative language .aup files (like a page's layout.aup) are written in. Every subcommand except lsp takes a path (an .aup file or a blocklet directory) and defaults to the current directory.
Captured against arc 2.0.0-beta.50 (commit a99fb2c37, main, 2026-09-11). Run arc --version before you copy dumps; the commit is what pins the command surface.
arc dsl <subcommand> [path] [options]Global flags (see Overview): --json, --view, --instance / -i (which local ARC instance; omit for default), and --home (instance root; to pick which instance, use --instance).
arc dsl lint
Check DSL formatting and semantic validity. This is one of the four checks this repo's own merge gate runs.
Usage
arc dsl lint [path] [options]--fix: apply all safe lint fixes before linting--fix-format: rewrite DSL sources with canonical formatting--fix-ids: remove unreferenced explicit ids from page DSL sources--fix-locales: prune locale JSON keys not referenced by DSL sources
arc dsl validate
Validate an .aup file or blocklet directory. The second of the four merge-gate checks.
arc dsl validate [path]Example
$ arc dsl validate
Passed DSL validation
path: /path/to/your/blocklet
files: 368
Next: arc blocklet build /path/to/your/blockletOn success it prints a Next: hint pointing at the next command to run (arc blocklet build); on failure it reports each problem as ERROR <rule> path:line:col: message. This is the only dsl subcommand that prints a Next: hint — lint, format, generate, decompile, doctor, and migrate-i18n do not.
arc dsl schema
Print the AUP DSL language schema and primitive metadata.
arc dsl schema [path]Example
$ arc dsl schema
Passed DSL schema
path: /path/to/your/blocklet
root: /path/to/your/blocklet
primitives: 63
aliases: 12
snippets: 4
files: 0These counts are per-project: a blocklet that defines its own primitives (via .scaffold/*.dsl) reports a higher primitives number than a plain blocklet, and the built-in tally itself changes as the DSL language gains primitives across releases — run the command to see the current numbers rather than treating any fixed number here as canonical.
arc dsl format
Format page .aup files.
Usage
arc dsl format [path] [options]--check: fail if formatting would change files--write: rewrite files in place
arc dsl generate
Generate app.json and page JSON artifacts from app.aup.
Usage
arc dsl generate [path] [options]--check: fail if generated artifacts would change--write: rewrite generated artifacts in place
On a fresh minimal-app scaffold with zero edits, --check currently exits 5 (generated_changed on .aup/app.json, .aup/pages/agent.json, .aup/pages/home.json, .aup/wrapper.json). See the check chain under arc blocklet create.
arc dsl decompile
Decompile generated AUP JSON artifacts back into AUP DSL sources, the reverse of generate.
Usage
arc dsl decompile [path] [options]--check: fail if decompiled DSL would change files--write: rewrite decompiled DSL files in place--partial: write sources that can be decompiled, downgrade missing page artifacts to warnings instead of failing
arc dsl doctor
Run decompile, format, regenerate-check, and validate together, a one-command health check for DSL artifacts.
Usage
arc dsl doctor [path] [options]--check: fail if doctor would change files--write: rewrite decompiled DSL files in place before verifying
On that same zero-edit minimal-app scaffold, arc dsl doctor currently exits 5 (decompile step: failed (0 files, 0 changed)). Same transcript as the check chain under arc blocklet create.
arc dsl migrate-i18n
Move exact $t(page.key) strings into page-local inline i18n blocks.
Usage
arc dsl migrate-i18n [path] [options]--check: fail if migration would change files--write: rewrite page DSL and locale JSON files in place
arc dsl language
Inspect DSL diagnostics, completions, and hover metadata, the machinery behind editor integrations.
Usage
arc dsl language [path] [options]--line <n>: one-based line for completion/hover lookup--column <n>: one-based column for completion/hover lookup
arc dsl lsp
Start a JSON-RPC language server for AUP DSL editor integrations.
arc dsl lsp