From r2g-skills
Detect a machine's environment and install + verify the open-source EDA toolchain that the signoff-loop and def-graph skills need — OpenROAD-flow-scripts (openroad/yosys), iverilog, KLayout, Magic, Netgen, OpenSTA, the sky130A PDK, and the torch+torch_geometric graph venv. Use when setting up a new machine, when `check_env.sh` reports missing tools, when the user asks to install/bootstrap/provision the EDA tools or "set up the environment", or when a flow fails because a tool or PDK is absent. Without root it automatically installs a no-sudo path (pre-built conda litex-hub binaries + a venv on a big volume). Produces references/env.local.sh so a bootstrapped toolchain is auto-discovered by the flow skills.
How this skill is triggered — by the user, by Claude, or both
Slash command
/r2g-skills:eda-installThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Provision the open-source EDA toolchain, then get out of the way.** This is the setup companion to
bootstrap.shreferences/setup.mdscripts/flow/_env.shscripts/flow/check_env.shscripts/setup/_setup_lib.shscripts/setup/detect_env.shscripts/setup/install_core.shscripts/setup/install_frontend.shscripts/setup/install_graph.shscripts/setup/install_klayout.shscripts/setup/install_pdk.shscripts/setup/install_platform_rules.shscripts/setup/install_sky130.shscripts/setup/write_env_local.shtests/test_bootstrap.pytests/test_install_tiers.pyProvision the open-source EDA toolchain, then get out of the way. This is the setup companion to
the two working skills: signoff-loop (RTL→GDS + signoff) and def-graph (graph datasets). It
answers one question — "are the tools this machine needs present, and if not, how do I get them
without breaking anything?" — and acts on the answer.
bash r2g-skills/eda-install/bootstrap.sh --dry-run # detect + plan, install NOTHING
bash r2g-skills/eda-install/bootstrap.sh # install missing tiers + pin env.local.sh + verify
bash r2g-skills/bootstrap.sh is a shim to the same script.
scripts/setup/detect_env.sh) — a clean KEY=VALUE snapshot of the machine: OS +
package manager, HAVE_SUDO, HAVE_CONDA, a big writable volume (≥15 GB, preferring /proj),
plus every tool + PDK the shared scripts/flow/_env.sh resolver already discovers, and a
torch-capable python. Absence is data, never an error.bootstrap.sh prints a per-tier table (core / frontend / sky130 / klayout / pdk /
graph), each OK / MISS (required, absent) / OPT (optional, installable), with the exact
action it would take. The install channel is chosen by HAVE_SUDO (see below).scripts/setup/install_<tier>.sh; bootstrap.sh dispatches to one the
moment it exists (and until then prints the command it would run). The platform_rules tier is
in the default plan (2026-07-20, round-2 pilot P0-3 — a stock nangate45 checkout has no LVS
deck and an unusable 0-area antenna diode, so strict signoff is impossible while every tool reads
green): the plan probes platform_capability.py --platform nangate45 --strict and shows OK/OPT;
being ORFS-mutating it still installs only when named (--tiers platform_rules), materializing
the repo's bundled nangate45 DRC/LVS/antenna rule decks into the ORFS checkout
(install_platform_rules.sh, best-effort, HINTs when the repo tools/ installers are
unreachable). check_env.sh prints the same per-platform capability table;
R2G_STRICT_PLATFORMS="nangate45" makes readiness REQUIRED there.scripts/setup/write_env_local.sh) — writes references/env.local.sh into both
signoff-loop and def-graph from the resolved paths, so the flow skills find a conda / /proj
toolchain with no manual edit. It pins only what autodetect would miss (e.g. omits openroad/yosys
already under $ORFS_ROOT/tools/install) and adds R2G_GRAPH_PYTHON.scripts/flow/check_env.sh (ORFS + required + optional + graph stage +
platforms) and reports the same table the README documents.Detection runs sudo -n true. Without root (HAVE_SUDO=0 — the common case on shared servers)
every tier routes through pre-built conda litex-hub packages + a venv, all under the big volume:
| Tool(s) | No-sudo channel |
|---|---|
| openroad, yosys, iverilog, verilator, klayout, magic, netgen, opensta | conda litex-hub (all --override-channels -c litex-hub -c conda-forge — the ToS-gate workaround) |
| ORFS flow + platforms | git clone --recursive — no build; env.local.sh points OPENROAD_EXE/YOSYS_EXE at the conda binaries |
| sky130A PDK | conda open_pdks.sky130a → the big volume (never volare — proxy/rate-limit caveat) |
| torch / torch_geometric / pandas | python3 -m venv + pip (CPU wheels) |
"No sudo" means download pre-built binaries into a user-writable prefix — not compile in userspace.
With root, core/frontend may instead build ORFS from source (--yes-gated, ~30 min); every other
tier is already root-free. What cannot be self-healed (conda/network blocked, no ≥15 GB volume, a
GLIBC too old for the conda binaries) escalates with a clear HINT — never a silent failure.
| Flag | Effect |
|---|---|
--dry-run | Detect + plan only; install nothing. Always run this first. |
--yes / -y | Non-interactive; accept the plan (incl. --yes-gated heavy tiers). |
--prefix DIR | Big-volume root for the conda install, PDK, and torch venv. |
--tiers a,b,c | Act only on a subset (core,frontend,sky130,klayout,pdk,graph). |
--graph-python P | Pin an existing torch venv (R2G_GRAPH_PYTHON) instead of building one. |
--plan-from FILE | Plan against a saved detect dump (review / tests) — implies --dry-run. |
--deploy [--link] | After provisioning, run install.sh to deploy the skills (--link recommended). |
scripts/flow/_env.sh is byte-identical across all three skills (md5 a5ac873e…) — the same
resolver the flow scripts use; edit every copy together.env.local.sh writes only what autodetect misses, so
it never fights _env.sh.--dry-run and --plan-from install nothing — the plan is always previewable before any action.references/setup.md — tiers, the no-sudo path in depth, and troubleshooting.docs/superpowers/plans/r2g-skills-bootstrap-2026-07-08.md — full design + rationale.npx claudepluginhub shenshan123/r2g-skillsGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Enforces test-driven development: write failing test first, then minimal code to pass. Use when implementing features or bugfixes.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.