Skip to main content

arc dsl

arc dsl validates, lints, formats, generates, and inspects AUP DSL artifacts, the language pages/layout.aup files are written in.

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.

bash
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

bash
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.

bash
arc dsl validate [path]

Example

bash
$ arc dsl validate
Passed DSL validation
  path: /path/to/your/blocklet
  files: 368
Next: arc blocklet build /path/to/your/blocklet

On 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.

bash
arc dsl schema [path]

Example

bash
$ arc dsl schema
Passed DSL schema
  path: /path/to/your/blocklet
  root: /path/to/your/blocklet
  primitives: 63
  aliases: 12
  snippets: 4
  files: 0

These 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

bash
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

bash
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

bash
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

bash
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

bash
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

bash
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.

bash
arc dsl lsp