Skip to main content

CLI Reference

This page is auto-generated from rtl-buddy --help output. Run python scripts/gen_cli_reference.py from the repo root to regenerate it.

rtl-buddy

Usage: rtl-buddy [OPTIONS] COMMAND [ARGS]...

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --debug -D Print rtl_buddy debug │
│ details to console │
│ --verbose -v Print execution details │
│ to console │
│ --machine Emit machine-oriented │
│ logs and plain console │
│ output │
│ --color --no-color Logs without ANSI color │
│ codes │
│ [default: color] │
│ --builder-mode -M TEXT Override default │
│ builder_mode │
│ --builder -B TEXT Override platform │
│ default builder │
│ --early-stop -E [pre|comp|sim|post] Run step to stop early │
│ at │
│ --version Prints version │
│ --install-completion Install completion for │
│ the current shell. │
│ --show-completion Show completion for the │
│ current shell, to copy │
│ it or customize the │
│ installation. │
│ --help Show this message and │
│ exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ test run a simple test │
│ randtest repeat a test with multiple random seeds │
│ regression run rtl regression │
│ filelist generate filelists using models.yaml │
│ hier render module hierarchy via rtl-buddy-view │
│ wave open waveform viewer for a test │
│ wave-fpv open SymbiYosys counterexample VCD for a failed FPV verification │
│ wave-install-nvim install nvim plugin for rb wave annotation │
│ synth run synthesis │
│ synth-regression run synthesis regression │
│ pnr run place-and-route │
│ power run power analysis │
│ power-regression run power analysis regression │
│ saif convert FST/VCD trace to SAIF v2.0 │
│ cdc run CDC lint │
│ cdc-regression run CDC lint regression │
│ fpv run formal property verification │
│ fpv-regression run FPV regression │
│ tool-check check installed tool dependencies and subcommand readiness │
│ axi-profile profile AXI interconnect performance via rtl-buddy-axi-profiler │
│ verible verible commands │
│ mut mutation testing │
│ hub manage the rtl-buddy-hub daemon │
│ skill manage the rtl_buddy agent skill │
│ docs browse bundled documentation │
│ spec spec traceability commands │
╰──────────────────────────────────────────────────────────────────────────────────────╯

test

Usage: rtl-buddy test [OPTIONS] [TEST_NAME]

run a simple test

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ test_name [TEST_NAME] name of test [default: (run all tests)] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --test-config -c TEXT test_config.yaml to use │
│ [default: tests.yaml] │
│ --list list tests in the selected test-config │
│ and exit │
│ --coverage-merge merge coverage across selected tests; │
│ uses raw merge for summary/html and │
│ info-process for Coverview │
│ --coverage-merge-raw use raw Verilator merge for merged │
│ summary/html/Coverview │
│ --coverage-merge-info-process use info-process merge for merged │
│ summary/Coverview; HTML merge is not │
│ supported │
│ --coverage-html generate merged LCOV HTML output in │
│ coverage_merge.html │
│ --coverage-coverview generate Coverview zip output from │
│ coverage info │
│ --coverage-dir-summary TEXT append coverage summary lines for │
│ repo-relative directory prefixes; may │
│ be repeated │
│ --coverage-dir-summary-file TEXT file containing repo-relative directory │
│ prefixes, one per line │
│ --rnd-new -n use a randomly generated seed instead │
│ of root config seed │
│ --rnd-last -l reuse last generated seed │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

randtest

Usage: rtl-buddy randtest [OPTIONS] TEST_NAME [RND_CNT]

repeat a test with multiple random seeds

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * test_name TEXT name of test [default: (run all tests)] [required] │
│ rnd_cnt [RND_CNT] number of random iterations to test [default: 2] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --test-config -c TEXT test_config.yaml to use [default: tests.yaml] │
│ --rnd-rpt -r INTEGER repeat iteration number from previous run │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

regression

Usage: rtl-buddy regression [OPTIONS]

run rtl regression

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --reg-config -c TEXT path to regressions.yaml │
│ [default: (Use ./regression.yaml if │
│ present, otherwise root_config.yaml │
│ reg-cfg-path)] │
│ --reg-level -l INTEGER regression level to stop at │
│ [default: 0] │
│ --start-level -s INTEGER regression level to start at │
│ [default: 0] │
│ --coverage-merge merge coverage across regression │
│ tests; uses raw merge for │
│ summary/html and info-process for │
│ Coverview │
│ --coverage-merge-raw use raw Verilator merge for merged │
│ summary/html/Coverview │
│ --coverage-merge-info-process use info-process merge for merged │
│ summary/Coverview; HTML merge is not │
│ supported │
│ --coverage-html generate merged LCOV HTML output in │
│ coverage_merge.html │
│ --coverage-coverview generate Coverview zip output from │
│ coverage info │
│ --coverage-per-test package one Coverview dataset per │
│ test in regression mode │
│ --coverage-dir-summary TEXT append coverage summary lines for │
│ repo-relative directory prefixes; │
│ may be repeated │
│ --coverage-dir-summary-file TEXT file containing repo-relative │
│ directory prefixes, one per line │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

filelist

Usage: rtl-buddy filelist [OPTIONS] MODEL_NAME [OUTPUT_PATH]

generate filelists using models.yaml

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * model_name TEXT name of model [required] │
│ output_path [OUTPUT_PATH] Output filename [default: run.f] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --model-config -c TEXT model_config.yaml to use [default: models.yaml] │
│ --unroll -u Recursively unroll -F in filelists │
│ --flatten -f Remove path to a file, leaving just the filename │
│ --strip -s Remove option part of a line │
│ --deduplicate -d Remove duplicates │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hier

Usage: rtl-buddy hier [OPTIONS] NAME

render module hierarchy via rtl-buddy-view

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * name TEXT with --view dut (default): model name from models.yaml; with │
│ --view tb: test name from tests.yaml (the test pins both the │
│ model + the testbench top) │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --model-config -c TEXT models.yaml to use [default: models.yaml] │
│ --test-config TEXT tests.yaml to use (--view tb) [default: tests.yaml] │
│ --view TEXT what to render: 'dut' (default) renders the model │
│ hierarchy rooted at --top; 'tb' renders the │
│ testbench hierarchy with the DUT called out as a │
│ subtree. With --view tb the positional argument is │
│ a test name. │
│ [default: dut] │
│ --format TEXT output format: tree, dot, mermaid, json │
│ [default: tree] │
│ --output -o TEXT write renderer output to file instead of stdout │
│ --frontend TEXT parser frontend (verible|slang) │
│ --cdc-annotations TEXT clock-domain map JSON from `rtl-buddy-cdc │
│ --emit-domain-map` │
│ --rdc-annotations TEXT reset-domain map JSON from `rtl-buddy-cdc │
│ --emit-reset-domain-map` │
│ --clock-legend dot format only: emit a side legend of clock colors │
│ --tool TEXT path to the rtl-buddy-view binary │
│ [default: rtl-buddy-view] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

wave

Usage: rtl-buddy wave [OPTIONS] TEST_NAME

open waveform viewer for a test

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * test_name TEXT name of test to open waveform for [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --test-config -c TEXT tests.yaml to use [default: tests.yaml] │
│ --surfer TEXT cfg-surfer entry name [default: surfer-default] │
│ --resim force re-run of debug sim even if FST exists │
│ --focused-signal annotate only the signal selected via Go to │
│ declaration; default annotates all signals in scope │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

wave-fpv

Usage: rtl-buddy wave-fpv [OPTIONS] VERIF_NAME

open SymbiYosys counterexample VCD for a failed FPV verification

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * verif_name TEXT name of FPV verification to open CEX for [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --fpv-config -c TEXT fpv.yaml to use [default: fpv.yaml] │
│ --surfer TEXT cfg-surfer entry name [default: surfer-default] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

wave-install-nvim

Usage: rtl-buddy wave-install-nvim [OPTIONS]

install nvim plugin for rb wave annotation

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --force overwrite existing installation │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

synth

Usage: rtl-buddy synth [OPTIONS] [SYNTH_NAME]

run synthesis

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ synth_name [SYNTH_NAME] name of synthesis to run │
│ [default: (run all syntheses)] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --synth-config -c TEXT synth.yaml to use [default: synth.yaml] │
│ --list list syntheses in the selected config and exit │
│ --effort TEXT override synthesis effort (must match │
│ cfg-synth-efforts entry) │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

synth-regression

Usage: rtl-buddy synth-regression [OPTIONS]

run synthesis regression

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --reg-config -c TEXT path to synth_regression.yaml │
│ [default: (Use ./synth_regression.yaml if present)] │
│ --reg-level -l INTEGER synthesis regression level to stop at [default: 0] │
│ --effort TEXT override synthesis effort (must match │
│ cfg-synth-efforts entry) │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

pnr

Usage: rtl-buddy pnr [OPTIONS] [PNR_NAME]

run place-and-route

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ pnr_name [PNR_NAME] name of pnr run │
│ [default: (run all entries in the suite)] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --pnr-config -c TEXT pnr.yaml to use [default: pnr.yaml] │
│ --list list pnr runs in the selected config and exit │
│ --reg-level -l INTEGER run only entries with reglvl at or below this value │
│ [default: 0] │
│ --gds stream out GDS via KLayout after a successful P&R │
│ --png render a PNG of the routed GDS via KLayout (implies │
│ --gds) │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

power

Usage: rtl-buddy power [OPTIONS] [POWER_NAME]

run power analysis

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ power_name [POWER_NAME] name of power run │
│ [default: (run all entries in the suite)] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --power-config -c TEXT power.yaml to use [default: power.yaml] │
│ --list list power runs in the selected config and exit │
│ --reg-level -l INTEGER run only entries with reglvl at or below this value │
│ [default: 0] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

power-regression

Usage: rtl-buddy power-regression [OPTIONS]

run power analysis regression

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --reg-config -c TEXT path to power_regression.yaml │
│ [default: (Use ./power_regression.yaml if present)] │
│ --reg-level -l INTEGER power regression level to stop at [default: 0] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

saif

Usage: rtl-buddy saif [OPTIONS] TRACE OUTPUT

convert FST/VCD trace to SAIF v2.0

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * trace TEXT path to input FST or VCD trace [required] │
│ * output TEXT path to write SAIF v2.0 file [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

cdc

Usage: rtl-buddy cdc [OPTIONS] [CDC_NAME]

run CDC lint

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ cdc_name [CDC_NAME] name of CDC analysis to run │
│ [default: (run all analyses)] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --cdc-config -c TEXT cdc.yaml to use [default: cdc.yaml] │
│ --list list analyses in the selected config and exit │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

cdc-regression

Usage: rtl-buddy cdc-regression [OPTIONS]

run CDC lint regression

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --reg-config -c TEXT path to cdc_regression.yaml │
│ [default: (Use ./cdc_regression.yaml if present)] │
│ --reg-level -l INTEGER CDC regression level to stop at [default: 0] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

fpv

Usage: rtl-buddy fpv [OPTIONS] [FPV_NAME]

run formal property verification

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ fpv_name [FPV_NAME] name of FPV verification to run │
│ [default: (run all verifications)] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --fpv-config -c TEXT fpv.yaml to use [default: fpv.yaml] │
│ --list list verifications in the selected config and exit │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

fpv-regression

Usage: rtl-buddy fpv-regression [OPTIONS]

run FPV regression

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --reg-config -c TEXT path to fpv_regression.yaml │
│ [default: (Use ./fpv_regression.yaml if present)] │
│ --reg-level -l INTEGER FPV regression level to stop at [default: 0] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

tool-check

Usage: rtl-buddy tool-check [OPTIONS]

check installed tool dependencies and subcommand readiness

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --format TEXT text | json [default: text] │
│ --required-for TEXT check only what `rb │
│ <subcommand>` needs │
│ --explain TEXT show install instructions for a │
│ single tool and exit │
│ --strict exit non-zero if any required │
│ tool is missing/outdated │
│ --include-optional --no-include-optional include optional tools │
│ (default: yes) │
│ [default: include-optional] │
│ --probe-versions --no-probe-versions run `<tool> --version` to │
│ capture installed version │
│ (default: yes) │
│ [default: probe-versions] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

axi-profile

Usage: rtl-buddy axi-profile [OPTIONS] COMMAND [ARGS]...

profile AXI interconnect performance via rtl-buddy-axi-profiler

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ run ingest a test's FST and emit per-test axi-perf.json │
│ discover parse RTL to (re)generate the model's axi-bundles.yaml manifest │
│ gen-monitor emit the SV bind-style AXI monitor for the model's testbench │
│ notebook launch the packaged marimo notebook against a test's per-txn parquet │
╰──────────────────────────────────────────────────────────────────────────────────────╯

axi-profile run

Usage: rtl-buddy axi-profile run [OPTIONS] TEST_NAME

ingest a test's FST and emit per-test axi-perf.json

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * test_name TEXT test from tests.yaml [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --test-config -c TEXT tests.yaml to use [default: tests.yaml] │
│ --output -o TEXT output path for axi-perf.json (default: │
│ artefacts/axi/<test>/axi-perf.json) │
│ --tb-prefix TEXT Override the testbench top scope name used │
│ as the hierarchical prefix in the FST. │
│ Default is the test's tb name from │
│ tests.yaml. Pass empty string to disable. │
│ --emit-txns-parquet Also emit a per-transaction parquet artifact │
│ at artefacts/axi/<test>/axi-txns.parquet — │
│ the canonical location `rb axi-profile │
│ notebook` reads. Requires the axi-profiler │
│ extra (pyarrow). │
│ --emit-txns-parquet-path TEXT Explicit path for the per-transaction │
│ parquet artefact. Implies │
│ --emit-txns-parquet. │
│ --tool TEXT path to the axi-profiler binary │
│ [default: axi-profiler] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

axi-profile discover

Usage: rtl-buddy axi-profile discover [OPTIONS] MODEL_NAME

parse RTL to (re)generate the model's axi-bundles.yaml manifest

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * model_name TEXT model from models.yaml [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --model-config -c TEXT models.yaml to use [default: models.yaml] │
│ --output -o TEXT output path for axi-bundles.yaml (default: the model's │
│ `axi_bundles:` from models.yaml when set, else │
│ artefacts/axi/<model>/axi-bundles.yaml) │
│ --amend TEXT existing axi-bundles.yaml to merge user edits from │
│ (deferred to a follow-up; warns if passed) │
│ --tool TEXT path to the axi-profiler binary │
│ [default: axi-profiler] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

axi-profile gen-monitor

Usage: rtl-buddy axi-profile gen-monitor [OPTIONS] MODEL_NAME

emit the SV bind-style AXI monitor for the model's testbench

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * model_name TEXT model from models.yaml [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --model-config -c TEXT models.yaml to use [default: models.yaml] │
│ --output -o TEXT output path for the generated SV monitor │
│ (default: the model's `axi_monitor_out:` from │
│ models.yaml) │
│ --time-precision TEXT IEEE-1800 timeprecision atom (1ns / 100ps / 1ps / │
│ ...). Must match the testbench's `timeprecision. │
│ --buffer-cap INTEGER Per-bundle FIFO depth cap. Drained only at │
│ $finish. │
│ --tool TEXT path to the axi-profiler binary │
│ [default: axi-profiler] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

axi-profile notebook

Usage: rtl-buddy axi-profile notebook [OPTIONS] TEST_NAME

launch the packaged marimo notebook against a test's per-txn parquet

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * test_name TEXT test from tests.yaml [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --test-config -c TEXT tests.yaml to use [default: tests.yaml] │
│ --port INTEGER TCP port for marimo's edit server (default: │
│ OS-assigned) │
│ --foreground --daemon Run marimo in the foreground (default). │
│ --daemon is accepted but currently falls │
│ back to foreground; background detach is a │
│ follow-up. │
│ [default: foreground] │
│ --headless Forward `--headless --no-token` to marimo. │
│ Used by the hub-initiated 'Open in marimo' │
│ flow (Phase 2 of the marimo umbrella) — the │
│ SPA opens the URL itself, so marimo │
│ shouldn't auto-pop a browser and the auth │
│ token is disabled for the loopback-only │
│ handoff. │
│ --marimo TEXT path to the marimo binary (default: 'marimo' │
│ on PATH) │
│ [default: marimo] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

verible

Usage: rtl-buddy verible [OPTIONS] COMMAND [ARGS]...

verible commands

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ lint run verible-verilog-lint │
│ syntax run verible-verilog-syntax │
│ format run verible-verilog-format │
│ preprocessor run verible-verilog-preprocessor │
│ filelist generate verible.filelist from models.yaml so verible-verilog-ls can │
│ resolve cross-file symbols │
╰──────────────────────────────────────────────────────────────────────────────────────╯

verible lint

Usage: rtl-buddy verible lint [OPTIONS] [VERIBLE_ARGS]...

run verible-verilog-lint

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ verible_args [VERIBLE_ARGS]... │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

verible syntax

Usage: rtl-buddy verible syntax [OPTIONS] [VERIBLE_ARGS]...

run verible-verilog-syntax

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ verible_args [VERIBLE_ARGS]... │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

verible format

Usage: rtl-buddy verible format [OPTIONS] [VERIBLE_ARGS]...

run verible-verilog-format

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ verible_args [VERIBLE_ARGS]... │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

verible preprocessor

Usage: rtl-buddy verible preprocessor [OPTIONS] [VERIBLE_ARGS]...

run verible-verilog-preprocessor

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ verible_args [VERIBLE_ARGS]... │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

verible filelist

Usage: rtl-buddy verible filelist [OPTIONS]

generate verible.filelist from models.yaml so verible-verilog-ls can resolve
cross-file symbols

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --model TEXT Model name(s) to include. May be repeated. Default: union of │
│ every model declared in any models.yaml under the project │
│ root. │
│ --output -o TEXT Output path. Defaults to <project_root>/verible.filelist so │
│ verible-verilog-ls auto-discovers it. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

mut

Usage: rtl-buddy mut [OPTIONS] COMMAND [ARGS]...

mutation testing

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ list enumerate mutation candidate sites without mutating │
│ run generate mutants, score against an FPV proof, report │
│ score recompute mutation score from a saved report │
╰──────────────────────────────────────────────────────────────────────────────────────╯

mut list

Usage: rtl-buddy mut list [OPTIONS]

enumerate mutation candidate sites without mutating

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --mut-config -c TEXT mut.yaml to use [default: mut.yaml] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

mut run

Usage: rtl-buddy mut run [OPTIONS]

generate mutants, score against an FPV proof, report

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --mut-config -c TEXT mut.yaml to use [default: mut.yaml] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

mut score

Usage: rtl-buddy mut score [OPTIONS] REPORT

recompute mutation score from a saved report

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * report TEXT path to a mut_report.json from a previous run [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub

Usage: rtl-buddy hub [OPTIONS] COMMAND [ARGS]...

manage the rtl-buddy-hub daemon

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ start start the rtl-buddy-hub daemon for this project │
│ stop ask the running hub to shut down │
│ status print the running hub's discovery record │
│ log tail the hub log │
│ install-launchagent install the macOS LaunchAgent so the hub auto-starts at login │
│ uninstall-launchagent remove the macOS LaunchAgent │
│ config hub.toml utilities │
│ send One-shot peer for the running rtl-buddy-hub. Connects as │
│ origin=cli. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub start

Usage: rtl-buddy hub start [OPTIONS]

start the rtl-buddy-hub daemon for this project

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --foreground --daemon Run in the foreground │
│ (default). │
│ [default: foreground] │
│ --serve-viewer --no-serve-viewer Also serve the viewer │
│ HTTP+WebSocket layer │
│ at the http_port. │
│ When no │
│ --viewer-bundle is │
│ given, the hub │
│ auto-discovers the │
│ SPA shipped by │
│ rtl-buddy-view (if │
│ installed) and falls │
│ back to a placeholder │
│ page if neither is │
│ available. │
│ [default: │
│ no-serve-viewer] │
│ --viewer-bundle PATH Override the │
│ auto-discovered SPA │
│ with this path │
│ (directory containing │
│ index.html, or a path │
│ to a single │
│ index.html). Use this │
│ when iterating on the │
│ SPA from a checkout — │
│ the auto-discovered │
│ bundle ships with the │
│ installed wheel and │
│ won't reflect │
│ uncommitted viewer/ │
│ changes. Only used │
│ with --serve-viewer. │
│ --listen-port INTEGER RANGE TCP port for adapter │
│ [0<=x<=65535] peers (nvim, rb │
│ wave). Overrides │
│ .listen_port from │
│ hub.toml. 0 = │
│ OS-assigned. Pin to a │
│ specific number so │
│ peers' discovery │
│ records stay stable │
│ across restarts. │
│ --http-port INTEGER RANGE HTTP/WS port for the │
│ [0<=x<=65535] browser-side SPA. │
│ Overrides .http_port │
│ from hub.toml. 0 = │
│ OS-assigned. Pin to a │
│ specific number so │
│ the SPA URL stays the │
│ same across restarts. │
│ Only used with │
│ --serve-viewer. │
│ --model TEXT Generate view.json on │
│ hub start for this │
│ model name (looked up │
│ in models.yaml). │
│ Replaces the legacy │
│ workflow of running │
│ `rb hier <model> │
│ --format json -o │
│ .rtl-buddy/view.json` │
│ manually before each │
│ hub start. When unset │
│ the hub falls back to │
│ .view_json from │
│ hub.toml. Requires │
│ --serve-viewer. │
│ --models-file PATH Explicit models.yaml │
│ that owns the --model │
│ entry. Skips the │
│ project-tree │
│ discovery walk. Use │
│ this to disambiguate │
│ when the same model │
│ name exists in more │
│ than one models.yaml. │
│ --axi-perf-from PATH Path to an │
│ axi-perf.json (output │
│ of `rb axi-profile │
│ run`). The hub bakes │
│ its │
│ per-bundle/interconn… │
│ throughput overlay │
│ into every generated │
│ view.json AND records │
│ the source's │
│ test/suite_dir so the │
│ SPA's 'Open in │
│ marimo' button skips │
│ its prompt. Use the │
│ canonical │
│ <suite>/artefacts/ax… │
│ layout so the │
│ test/suite_dir │
│ derivation lands. │
│ Only used with │
│ --serve-viewer. │
│ --help Show this message and │
│ exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub stop

Usage: rtl-buddy hub stop [OPTIONS]

ask the running hub to shut down

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub status

Usage: rtl-buddy hub status [OPTIONS]

print the running hub's discovery record

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub log

Usage: rtl-buddy hub log [OPTIONS]

tail the hub log

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --lines -n INTEGER Trailing lines to print before following. │
│ [default: 50] │
│ -f --no-follow Follow the log (tail -f). [default: no-follow] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub install-launchagent

Usage: rtl-buddy hub install-launchagent [OPTIONS]

install the macOS LaunchAgent so the hub auto-starts at login

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub uninstall-launchagent

Usage: rtl-buddy hub uninstall-launchagent [OPTIONS]

remove the macOS LaunchAgent

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub config

Usage: rtl-buddy hub config [OPTIONS] COMMAND [ARGS]...

hub.toml utilities

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ validate schema-check .rtl-buddy/hub.toml │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub config validate

Usage: rtl-buddy hub config validate [OPTIONS]

schema-check .rtl-buddy/hub.toml

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --path PATH Override the default project hub.toml path. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send

Usage: rtl-buddy hub send [OPTIONS] COMMAND [ARGS]...

One-shot peer for the running rtl-buddy-hub. Connects as origin=cli.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ select Broadcast selection_changed{instance_path}. │
│ signal Broadcast signal_selected{signal, wave_scope}. │
│ cursor Broadcast cursor_time_changed{t_fs}. │
│ scope Broadcast scope_changed{wave_scope}. │
│ open Broadcast source_focused{file, line, col}. │
│ diagnose Push a diagnostics_set bundle for SOURCE. Each ITEM is │
│ <file>:<line>:<severity>:<code>:<message>. --clear sends an empty set │
│ (clears any cached diagnostics from SOURCE). Use --instance to attach │
│ a view.json instance_path hint that consumers (the SPA's on-canvas │
│ badge layer in particular) use as a fast path instead of the │
│ file+line resolver. │
│ state Snapshot the hub's cached state (active model, selection, cursor, │
│ scope, peers). │
│ wave-add Ask the wave peer (surfer) to add one or more signals to the view. │
│ wave-cursor Ask the wave peer (surfer) to move its cursor to T_FS. │
│ wave-scope Ask the wave peer (surfer) to switch its active scope without │
│ populating the variable panel (maps to WCP set_scope). │
│ wave-pan Pan surfer's viewport to center on T_FS (zoom unchanged). Maps to WCP │
│ set_viewport_to. │
│ wave-zoom Zoom + pan surfer to fit [START_FS, END_FS]. Maps to WCP │
│ set_viewport_range. │
│ wave-zoom-fit Zoom surfer out to fit the whole waveform. Maps to WCP zoom_to_fit. │
│ view-pan Ask the view peer (SPA) to pan/center on INSTANCE_PATH. │
│ overlay Flip an overlay's enabled state on the SPA. Built-in NAMES are │
│ 'clock', 'reset', 'axi-perf', 'wave'; an unknown name is a no-op. Use │
│ --on / --off (default --on). Useful for agents or scripted demos that │
│ want to direct the user's attention to a specific overlay layer │
│ without a UI click. │
│ capture Ask the view peer (SPA) to snapshot the current graph and write it to │
│ --out. Graph-only — surrounding panels are not captured. Useful for │
│ agents that want to look at what the user is seeing without a browser │
│ screenshot tool. │
│ open-source Ask the src peer (nvim) to open FILE at line+col. │
│ resolve resolve coordinates via the hub's view.json + tb_prefix mapping │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send select

Usage: rtl-buddy hub send select [OPTIONS] INSTANCE_PATH

Broadcast selection_changed{instance_path}.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * instance_path TEXT view.json instance_path, e.g. top.u_fifo.u_wr_ptr │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send signal

Usage: rtl-buddy hub send signal [OPTIONS] SIGNAL

Broadcast signal_selected{signal, wave_scope}.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * signal TEXT signal name, e.g. wr_ptr_q [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ * --wave-scope TEXT surfer/VCD scope owning the signal, e.g. tb.dut.u_fifo │
│ [required] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send cursor

Usage: rtl-buddy hub send cursor [OPTIONS] T_FS

Broadcast cursor_time_changed{t_fs}.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * t_fs INTEGER cursor time in femtoseconds (decimal integer) [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send scope

Usage: rtl-buddy hub send scope [OPTIONS] WAVE_SCOPE

Broadcast scope_changed{wave_scope}.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * wave_scope TEXT surfer/VCD scope, e.g. tb.dut.u_fifo [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send open

Usage: rtl-buddy hub send open [OPTIONS] SPEC

Broadcast source_focused{file, line, col}.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * spec TEXT file:line[:col], e.g. design/dma/dma.sv:42:7 [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send diagnose

Usage: rtl-buddy hub send diagnose [OPTIONS] SOURCE [ITEMS]...

Push a diagnostics_set bundle for SOURCE. Each ITEM is
<file>:<line>:<severity>:<code>:<message>. --clear sends an empty set (clears any
cached diagnostics from SOURCE). Use --instance to attach a view.json instance_path
hint that consumers (the SPA's on-canvas badge layer in particular) use as a fast path
instead of the file+line resolver.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * source TEXT producer key (e.g. 'rtl-buddy-cdc', 'claude-analysis'); │
│ latest-writer-wins per source on the hub's cache │
│ [required] │
│ items [ITEMS]... <file>:<line>:<sev>:<code>:<msg> ... │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --clear Send an empty items list (clears SOURCE). │
│ --instance TEXT Optional view.json instance_path to attach to every ITEM in │
│ this push. Use when the producer knows which instance a │
│ finding pertains to (most one-shot agent calls do); skip for │
│ batch lint output where each item lives at a different │
│ file:line. │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send state

Usage: rtl-buddy hub send state [OPTIONS]

Snapshot the hub's cached state (active model, selection, cursor, scope, peers).

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send wave-add

Usage: rtl-buddy hub send wave-add [OPTIONS] VARIABLES...

Ask the wave peer (surfer) to add one or more signals to the view.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * variables VARIABLES... fully-scoped variable names, e.g. │
│ tb.dut.u_fifo.wr_ptr_q │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send wave-cursor

Usage: rtl-buddy hub send wave-cursor [OPTIONS] T_FS

Ask the wave peer (surfer) to move its cursor to T_FS.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * t_fs INTEGER cursor time in femtoseconds (decimal integer) [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send wave-scope

Usage: rtl-buddy hub send wave-scope [OPTIONS] WAVE_SCOPE

Ask the wave peer (surfer) to switch its active scope without populating the variable
panel (maps to WCP set_scope).

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * wave_scope TEXT surfer/VCD scope [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send wave-pan

Usage: rtl-buddy hub send wave-pan [OPTIONS] T_FS

Pan surfer's viewport to center on T_FS (zoom unchanged). Maps to WCP set_viewport_to.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * t_fs INTEGER center time in femtoseconds [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send wave-zoom

Usage: rtl-buddy hub send wave-zoom [OPTIONS] START_FS END_FS

Zoom + pan surfer to fit [START_FS, END_FS]. Maps to WCP set_viewport_range.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * start_fs INTEGER range start in femtoseconds [required] │
│ * end_fs INTEGER range end in femtoseconds [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send wave-zoom-fit

Usage: rtl-buddy hub send wave-zoom-fit [OPTIONS]

Zoom surfer out to fit the whole waveform. Maps to WCP zoom_to_fit.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send view-pan

Usage: rtl-buddy hub send view-pan [OPTIONS] INSTANCE_PATH

Ask the view peer (SPA) to pan/center on INSTANCE_PATH.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * instance_path TEXT view.json instance_path [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send overlay

Usage: rtl-buddy hub send overlay [OPTIONS] NAME

Flip an overlay's enabled state on the SPA. Built-in NAMES are 'clock', 'reset',
'axi-perf', 'wave'; an unknown name is a no-op. Use --on / --off (default --on).
Useful for agents or scripted demos that want to direct the user's attention to a
specific overlay layer without a UI click.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * name TEXT overlay name [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --on --off Enable (default) or disable the named overlay. [default: on] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send capture

Usage: rtl-buddy hub send capture [OPTIONS]

Ask the view peer (SPA) to snapshot the current graph and write it to --out.
Graph-only — surrounding panels are not captured. Useful for agents that want to look
at what the user is seeing without a browser screenshot tool.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ * --out -o PATH Destination file. Extension │
│ determines format if --format │
│ omitted. │
│ [required] │
│ --format -f TEXT png (default) or svg. Inferred │
│ from --out suffix if not given. │
│ --scale FLOAT RANGE [0.1<=x<=8.0] PNG upscale factor (1.0 = │
│ native). Ignored for SVG. │
│ [default: 1.0] │
│ --timeout FLOAT RANGE [1.0<=x<=120.0] Seconds to wait for the SPA to │
│ reply. Large designs may need │
│ longer. │
│ [default: 15.0] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send open-source

Usage: rtl-buddy hub send open-source [OPTIONS] SPEC

Ask the src peer (nvim) to open FILE at line+col.

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * spec TEXT file:line[:col], e.g. design/dma/dma.sv:42:7 [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send resolve

Usage: rtl-buddy hub send resolve [OPTIONS] COMMAND [ARGS]...

resolve coordinates via the hub's view.json + tb_prefix mapping

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ view-to-wave instance_path → wave_scope │
│ wave-to-view wave_scope → instance_path │
│ signal-to-view signal + wave_scope → driver instance_path(s) and driven port │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send resolve view-to-wave

Usage: rtl-buddy hub send resolve view-to-wave [OPTIONS] INSTANCE_PATH

instance_path → wave_scope

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * instance_path TEXT view.json instance_path [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send resolve wave-to-view

Usage: rtl-buddy hub send resolve wave-to-view [OPTIONS] WAVE_SCOPE

wave_scope → instance_path

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * wave_scope TEXT surfer/VCD wave_scope [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

hub send resolve signal-to-view

Usage: rtl-buddy hub send resolve signal-to-view [OPTIONS] SIGNAL

signal + wave_scope → driver instance_path(s) and driven port

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * signal TEXT signal name (e.g. wr_ptr_q) [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ * --wave-scope TEXT enclosing wave scope [required] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

skill

Usage: rtl-buddy skill [OPTIONS] COMMAND [ARGS]...

manage the rtl_buddy agent skill

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ install Install the bundled rtl_buddy skill. │
│ uninstall Remove the installed rtl_buddy skill files from the selected scope. │
│ status Report whether the skill is installed and whether it matches the │
│ current package version. │
│ view Print the bundled rtl_buddy skill to stdout. │
│ print-gitignore Print the gitignore lines for project-level skill installs. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

skill install

Usage: rtl-buddy skill install [OPTIONS]

Install the bundled rtl_buddy skill.

Default scope is user-level (`~/.claude/skills/rtl_buddy/` and
`~/.codex/skills/rtl_buddy/`). Use `--project` to install into the
discovered project root instead; project-level copies take precedence
over user-level when both exist.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --project install into the discovered project root instead of the │
│ user home │
│ --root PATH explicit target root (implies project-level layout) │
│ --no-claude skip writing the Claude Code target │
│ --no-codex skip writing the Codex target │
│ --dry-run print what would be written and exit │
│ --force overwrite even when content matches │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

skill uninstall

Usage: rtl-buddy skill uninstall [OPTIONS]

Remove the installed rtl_buddy skill files from the selected scope.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --project uninstall from the discovered project root instead of the │
│ user home │
│ --root PATH explicit target root (implies project-level layout) │
│ --no-claude skip the Claude Code target │
│ --no-codex skip the Codex target │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

skill status

Usage: rtl-buddy skill status [OPTIONS]

Report whether the skill is installed and whether it matches the current package
version.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --project report status for the discovered project root instead of the │
│ user home │
│ --root PATH explicit target root (implies project-level layout) │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

skill view

Usage: rtl-buddy skill view [OPTIONS]

Print the bundled rtl_buddy skill to stdout.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

skill print-gitignore

Usage: rtl-buddy skill print-gitignore [OPTIONS]

Print the gitignore lines for project-level skill installs.

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

docs

Usage: rtl-buddy docs [OPTIONS] COMMAND [ARGS]...

browse bundled documentation

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ list list bundled documentation pages │
│ show show a bundled documentation page │
╰──────────────────────────────────────────────────────────────────────────────────────╯

docs list

Usage: rtl-buddy docs list [OPTIONS]

list bundled documentation pages

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

docs show

Usage: rtl-buddy docs show [OPTIONS] SLUG

show a bundled documentation page

╭─ Arguments ──────────────────────────────────────────────────────────────────────────╮
│ * slug TEXT MkDocs path slug or slug#section-anchor, for example │
│ concepts/root-config or agents#local-docs-access │
│ [required] │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

spec

Usage: rtl-buddy spec [OPTIONS] COMMAND [ARGS]...

spec traceability commands

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────╮
│ list list all spec blocks discovered in the project │
│ check-design show which spec blocks have design models referencing them │
│ check-coverage show which spec coverage items are addressed by tests │
╰──────────────────────────────────────────────────────────────────────────────────────╯

spec list

Usage: rtl-buddy spec list [OPTIONS]

list all spec blocks discovered in the project

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --spec-dir TEXT Directory to search for specs.yaml files │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

spec check-design

Usage: rtl-buddy spec check-design [OPTIONS]

show which spec blocks have design models referencing them

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --spec-dir TEXT Directory to search for specs.yaml files │
│ --design-dir TEXT Directory to search for models.yaml files │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯

spec check-coverage

Usage: rtl-buddy spec check-coverage [OPTIONS]

show which spec coverage items are addressed by tests

╭─ Options ────────────────────────────────────────────────────────────────────────────╮
│ --spec-dir TEXT Directory to search for specs.yaml files │
│ --verif-dir TEXT Directory to search for tests.yaml files │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────╯