architect
The entry point to robium. Given a robotics application idea, this skill turns
requirements into a concrete stack decision — middleware, simulation, data,
visualization, and training frameworks — plus a scaffold plan and a written
architecture brief. It is the only skill that knows the whole robium
catalog; everything else is reached by routing from here. Load it first on any
new robotics app, then hand off to the domain skills for the actual build.
When to use this skill
- Starting a brand-new robotics application from a rough idea ("build a mobile
robot that navigates a warehouse", "train a manipulation policy on an arm").
- The requirements exist but the stack is unchosen, or half-chosen and you want
a sanity check before committing.
- You need a durable, written architecture record the whole project builds from.
- You want the routing map: "which robium skill do I load for phase X?"
- Cross-references — go straight to the tool skill, skipping architect, when the
stack is already chosen and the question is narrow:
- Debugging or configuring an existing stack → the matching tool skill
(
nav2, ros2, gazebo, lerobot, …). "My costmap isn't updating" is a
nav2 question, not an architect question.
- Authoring or improving robium skills themselves →
skill-author.
- Deep-diving one decision (uv vs Docker, which visualizer) → the umbrella
that owns it (
environments, visualization); architect points you there.
Key directives
- Delegation posture: route + embed the decision logic. The decisions
(which stack, why) live here; the how-to lives in the skill each decision
routes to. Never duplicate a tool skill's content — link to it.
- Always produce or update
docs/architecture-brief.md in the app repo. It
is the living architecture contract — every later build step reads from it,
and refinements edit it in place. No brief, not done. Use
references/brief-template.md for its required sections.
- Virtual-environment-first. Reproducibility is decided before code: route
the env question to the
environments skill (uv/venv vs Docker) and record
the choice in the brief. Do not let a project start with an ad-hoc setup.
- Never invent syntax or tools. Recommend only real, current tools at
versions you have verified — robium ships curation, not a framework. When a
version fact matters (ROS 2 distro, Gazebo pairing, GPU floor), confirm it
against current docs (e.g. docs.ros.org for ROS 2
distro/EOL status) rather than memory. See
references/stack-selection.md
for the verified defaults this skill ships with.
- State open risks explicitly in the brief. Unverified assumptions (GPU
availability, hardware you can't see, sim-to-real gaps) go in the brief's
open-risks section, not silently into a decision.
Quick start
1. Collect the requirement checklist (ask for anything missing; if a
critical item is still unknown, record the assumption in the brief rather than
guessing silently):
- Robot type — mobile base, arm/manipulator, humanoid, drone, custom?
- Task — navigate, manipulate/grasp, inspect, learn a policy, teleop?
- Hardware — real robot (which?), sim only, or sim-first then real?
- Sim vs real — where does the MVP need to run?
- GPU — is an NVIDIA RTX GPU available? VRAM? (gates Isaac Sim / Lab.)
- Local vs remote — laptop, workstation, or headless remote server?
(drives the visualization choice — remote favors
foxglove.)
2. Pick a golden path. The two MVP verticals:
Navigation (mobile robot, autonomous nav in sim):
ros2 + nav2 + gazebo + visualization
→ ROS 2 Jazzy (LTS) middleware, Nav2 for the nav stack, Gazebo Harmonic as
the paired simulator, an RViz2 or Foxglove view. Dockerized env via
environments. This is the classic, well-supported path — favor it when the
task is "get from A to B autonomously."
Manipulation (arm, learned policy):
lerobot (+ isaac-sim / isaac-lab if a capable GPU is available) +
huggingface + data
→ LeRobot for policy training/eval (ACT, Diffusion, SmolVLA, π0), datasets
and models sourced through the huggingface delegation, data for the
sourcing strategy. Add isaac-sim/isaac-lab only when the GPU floor is
met (see Platform gotchas); otherwise stay in LeRobot's own sim/eval tools
and a CPU/uv env. Favor this when the task is "learn to grasp / manipulate."
3. Write the brief. Fill docs/architecture-brief.md from
references/brief-template.md — chosen stack + reasoning, module breakdown,
comms plan, env strategy, data plan, robium skills per phase, open risks.
4. Scaffold — bootstrap-first. Before laying anything out from scratch,
check the battle-tested sample registry: REGISTRY.md at the root of the
companion robium-applications repo
(github.com/robium-ai/robium-applications;
locally a sibling checkout when present). Each card names the stack an app
proves, what it can bootstrap, and its encoded battle scars. If an existing
app resembles the target (same vertical, overlapping stack), bootstrap
from it — copy its structure, env shape, and test shape, then diverge —
and note the donor app in the brief. Only when no card is close, lay out
the repo fresh per references/scaffold-patterns.md (ROS 2 app layout or
LeRobot app layout). Then hand each phase to its skill.
For the heavy version of step 2 (a full stack-comparison research burst that
keeps the noise out of the main conversation), launch the robium-architect
subagent; it runs this skill as its playbook and writes the brief.
Decision guidance
The routing map. Architect is the only skill that sees the whole catalog; it
hands each build phase to the skill below. Grouped by phase.
Design / architecture
| Skill |
Hand off when… |
architect |
You are here — requirements → stack → brief → scaffold, and routing to everything below. |
integration |
Module boundaries and comms are the question: topics/services vs zenoh/gRPC, Dockerfiles, compose wiring across nodes. |
environments |
Deciding reproducibility: uv/venv vs Docker, identical local/remote repro, GPU passthrough. Resolve this early, per the env-first directive. |
Middleware & motion
| Skill |
Hand off when… |
ros2 |
The app uses ROS 2 — core usage, packages, nodes, launch files, message/topic wiring. The substrate for the nav vertical. |
nav2 |
Autonomous navigation for a mobile base — costmaps, planners, controllers, behavior trees, localization. |
Simulation
| Skill |
Hand off when… |
simulation |
Choosing a simulator or getting sensor simulation right, before committing to a specific engine. |
gazebo |
Simulating a ROS 2 robot — the paired sim for the nav vertical (Gazebo Harmonic ↔ ROS 2 Jazzy). |
isaac-sim |
Photoreal / GPU-accelerated sim or synthetic data — only when the NVIDIA RTX GPU floor is met. |
isaac-lab |
GPU-parallel reinforcement-learning environments on top of Isaac Sim — same GPU gate. |
Learning & data
| Skill |
Hand off when… |
lerobot |
Training or running a manipulation/imitation policy — the substrate for the manipulation vertical. |
huggingface |
Pulling datasets/models or pushing artifacts to the Hub — delegate to hf-cli@huggingface-skills; robium adds only the robotics glue. |
data |
Deciding where data comes from: offline datasets vs sim generation vs teleop collection. |
Visualization
| Skill |
Hand off when… |
visualization |
Choosing a viz tool or applying viz best practices, before picking a specific one. |
rviz2 |
Classic ROS 2 visualization on a local Linux machine with a display. |
foxglove |
Web-based viz — the go-to for a headless remote server or cross-platform team viewing. |
rerun |
Timeline/multimodal logging for ML and perception debugging (heavy pointer to Rerun's own docs). |
Verification & meta
| Skill |
Hand off when… |
testing |
Standing up smoke tests, sim-based regression, or launch testing — plan this into the brief, don't bolt it on later. |
skill-author |
Editing robium's own skills (fresh authoring, mining, hardening from learnings). Not an app-building skill. |
skill-updater |
End-of-session absorption: folding this session's gotchas back into the robium skills. Not an app-building skill. |
See references/stack-selection.md for the decision trees behind these
hand-offs (middleware yes/no, simulator gazebo-vs-isaac, training framework).
Platform gotchas
- Isaac Sim / Isaac Lab are GPU-gated. Per NVIDIA's current requirements
(docs.isaacsim.omniverse.nvidia.com),
the floor is an RTX 4080 with 16 GB VRAM (minimum), an RTX 5080 or
better recommended (16 GB+ VRAM), and 32 GB+ system RAM (64 GB recommended;
Isaac Lab RL training wants more of both). Linux (Ubuntu) is the primary
target; there is no macOS support. If the GPU floor isn't met, do not
route to Isaac — keep the manipulation path in LeRobot's own sim/eval
tooling. Verify the current floor in
isaac-sim before committing; treat
GPU availability as an open risk if unconfirmed.
- macOS / Apple Silicon cannot run the native ROS 2 + Gazebo desktop stack
cleanly — plan for Docker (route to
environments) or a Linux remote.
- Remote / headless servers have no display for RViz2 — default the viz
choice to
foxglove (web UI) in that case, and note it in the brief.
- ROS 2 distro choice: Lyrical Luth (LTS, GA 2026-05-22, supported to
May 2031) is the current newest LTS — default new apps to it unless a
dependency forces otherwise. Exception: the ROS 2 + Nav2 + Gazebo navigation
vertical still defaults to Jazzy Jalisco (LTS, supported to May 2029) for
now, because Nav2 has not yet shipped binary packages for Lyrical (tracked in
ros-navigation/navigation2#6123 as of 2026-07) — re-check before picking
Lyrical for that path. Kilted Kaiju is non-LTS and nearing its own EOL
(~Dec 2026); don't pick it as a new default. Record the chosen distro in the
brief.
Customization
- Different robot/task: re-run the requirement checklist and the decision
trees in
references/stack-selection.md. The two golden paths are starting
points, not the only shapes — a drone-inspection app is still ROS 2 + a sim +
viz, just with different nodes; a real-hardware manipulation app is LeRobot
with the sim swapped for a hardware driver.
- Adapt the scaffold:
references/scaffold-patterns.md gives a ROS 2 layout
and a LeRobot layout; rename packages and prune directories your app doesn't
need, but keep the docs/architecture-brief.md location fixed — tooling and
every later phase expect it there.
- Adapt the brief: every section in
references/brief-template.md is
required, but its depth scales with the project — a one-robot sim demo needs a
short comms plan; a multi-robot fleet needs a real one.
References
references/stack-selection.md — the decision trees: middleware (ROS 2
yes/no), simulator (Gazebo vs Isaac), and training framework, with the
verified version defaults this skill ships.
references/scaffold-patterns.md — repo layouts for a ROS 2 app and a
LeRobot app: directory trees plus what each directory holds.
references/brief-template.md — the required sections of
docs/architecture-brief.md (chosen stack + reasoning, module breakdown,
comms plan, env strategy, data plan, robium skills per phase, open risks).
examples/architecture-brief-example.md — a filled brief for a hypothetical
diff-drive warehouse robot (status: unverified).
- Battle-tested sample apps + registry:
robium-applications —
REGISTRY.md indexes every app (stack, pass bar, bootstrap-for, battle
scars); the bootstrap-first source for Quick start step 4.
- Upstream: ROS 2 docs, Nav2 docs,
Gazebo docs, LeRobot,
Isaac Sim,
Isaac Lab. The
robium-architect
subagent (agents/robium-architect.md) runs this skill as its playbook.
Changelog
- 1.1.0 (2026-07-12): scaffold step made bootstrap-first — check
robium-applications' REGISTRY.md for a resembling battle-tested app
before scaffolding fresh; registry link added to References.
1---2name: architect-33description: Entry-point skill for designing robotics applications with AI agents. Turns requirements (robot type, task, hardware, sim-vs-real, GPU/budget) into a full stack decision — middleware, simulation, data, visualization, training frameworks — plus a scaffold plan and a written architecture brief. Use when: starting any new robotics app; 'build a robot app', 'which robotics stack', 'scaffold a robotics project', 'mobile robot', 'robot arm', 'manipulation policy', 'navigation stack'; or when requirements exist but the stack is unchosen. This is the entry-point skill of the robium plugin: load it first; it routes to every other robium skill per build phase. Not for: debugging an existing stack (use the matching tool skill) or authoring robium skills (skill-author).4---56# architect78The entry point to robium. Given a robotics application idea, this skill turns9requirements into a concrete stack decision — middleware, simulation, data,10visualization, and training frameworks — plus a scaffold plan and a written11**architecture brief**. It is the only skill that knows the whole robium12catalog; everything else is reached by routing from here. Load it first on any13new robotics app, then hand off to the domain skills for the actual build.1415## When to use this skill1617- Starting a brand-new robotics application from a rough idea ("build a mobile18 robot that navigates a warehouse", "train a manipulation policy on an arm").19- The requirements exist but the stack is unchosen, or half-chosen and you want20 a sanity check before committing.21- You need a durable, written architecture record the whole project builds from.22- You want the routing map: "which robium skill do I load for phase X?"23- Cross-references — go straight to the tool skill, skipping architect, when the24 stack is already chosen and the question is narrow:25 - Debugging or configuring an existing stack → the matching tool skill26 (`nav2`, `ros2`, `gazebo`, `lerobot`, …). "My costmap isn't updating" is a27 `nav2` question, not an architect question.28 - Authoring or improving robium skills themselves → `skill-author`.29 - Deep-diving one decision (uv vs Docker, which visualizer) → the umbrella30 that owns it (`environments`, `visualization`); architect points you there.3132## Key directives3334- **Delegation posture: route + embed the decision logic.** The *decisions*35 (which stack, why) live here; the *how-to* lives in the skill each decision36 routes to. Never duplicate a tool skill's content — link to it.37- **Always produce or update `docs/architecture-brief.md` in the app repo.** It38 is the living architecture contract — every later build step reads from it,39 and refinements edit it in place. No brief, not done. Use40 `references/brief-template.md` for its required sections.41- **Virtual-environment-first.** Reproducibility is decided before code: route42 the env question to the `environments` skill (uv/venv vs Docker) and record43 the choice in the brief. Do not let a project start with an ad-hoc setup.44- **Never invent syntax or tools.** Recommend only real, current tools at45 versions you have verified — robium ships curation, not a framework. When a46 version fact matters (ROS 2 distro, Gazebo pairing, GPU floor), confirm it47 against current docs (e.g. [docs.ros.org](https://docs.ros.org/) for ROS 248 distro/EOL status) rather than memory. See `references/stack-selection.md`49 for the verified defaults this skill ships with.50- **State open risks explicitly in the brief.** Unverified assumptions (GPU51 availability, hardware you can't see, sim-to-real gaps) go in the brief's52 open-risks section, not silently into a decision.5354## Quick start5556**1. Collect the requirement checklist** (ask for anything missing; if a57critical item is still unknown, record the assumption in the brief rather than58guessing silently):5960- **Robot type** — mobile base, arm/manipulator, humanoid, drone, custom?61- **Task** — navigate, manipulate/grasp, inspect, learn a policy, teleop?62- **Hardware** — real robot (which?), sim only, or sim-first then real?63- **Sim vs real** — where does the MVP need to run?64- **GPU** — is an NVIDIA RTX GPU available? VRAM? (gates Isaac Sim / Lab.)65- **Local vs remote** — laptop, workstation, or headless remote server?66 (drives the visualization choice — remote favors `foxglove`.)6768**2. Pick a golden path.** The two MVP verticals:6970- **Navigation** (mobile robot, autonomous nav in sim):71 `ros2` + `nav2` + `gazebo` + `visualization`72 → ROS 2 Jazzy (LTS) middleware, Nav2 for the nav stack, Gazebo Harmonic as73 the paired simulator, an RViz2 or Foxglove view. Dockerized env via74 `environments`. This is the classic, well-supported path — favor it when the75 task is "get from A to B autonomously."7677- **Manipulation** (arm, learned policy):78 `lerobot` (+ `isaac-sim` / `isaac-lab` *if a capable GPU is available*) +79 `huggingface` + `data`80 → LeRobot for policy training/eval (ACT, Diffusion, SmolVLA, π0), datasets81 and models sourced through the `huggingface` delegation, `data` for the82 sourcing strategy. Add `isaac-sim`/`isaac-lab` only when the GPU floor is83 met (see Platform gotchas); otherwise stay in LeRobot's own sim/eval tools84 and a CPU/uv env. Favor this when the task is "learn to grasp / manipulate."8586**3. Write the brief.** Fill `docs/architecture-brief.md` from87`references/brief-template.md` — chosen stack + reasoning, module breakdown,88comms plan, env strategy, data plan, robium skills per phase, open risks.8990**4. Scaffold — bootstrap-first.** Before laying anything out from scratch,91check the battle-tested sample registry: `REGISTRY.md` at the root of the92companion robium-applications repo93([github.com/robium-ai/robium-applications](https://github.com/robium-ai/robium-applications);94locally a sibling checkout when present). Each card names the stack an app95proves, what it can bootstrap, and its encoded battle scars. If an existing96app resembles the target (same vertical, overlapping stack), **bootstrap97from it** — copy its structure, env shape, and test shape, then diverge —98and note the donor app in the brief. Only when no card is close, lay out99the repo fresh per `references/scaffold-patterns.md` (ROS 2 app layout or100LeRobot app layout). Then hand each phase to its skill.101102For the heavy version of step 2 (a full stack-comparison research burst that103keeps the noise out of the main conversation), launch the `robium-architect`104subagent; it runs this skill as its playbook and writes the brief.105106## Decision guidance107108The routing map. Architect is the only skill that sees the whole catalog; it109hands each build phase to the skill below. Grouped by phase.110111### Design / architecture112113| Skill | Hand off when… |114|---|---|115| `architect` | You are here — requirements → stack → brief → scaffold, and routing to everything below. |116| `integration` | Module boundaries and comms are the question: topics/services vs zenoh/gRPC, Dockerfiles, compose wiring across nodes. |117| `environments` | Deciding reproducibility: uv/venv vs Docker, identical local/remote repro, GPU passthrough. Resolve this early, per the env-first directive. |118119### Middleware & motion120121| Skill | Hand off when… |122|---|---|123| `ros2` | The app uses ROS 2 — core usage, packages, nodes, launch files, message/topic wiring. The substrate for the nav vertical. |124| `nav2` | Autonomous navigation for a mobile base — costmaps, planners, controllers, behavior trees, localization. |125126### Simulation127128| Skill | Hand off when… |129|---|---|130| `simulation` | Choosing a simulator or getting sensor simulation right, before committing to a specific engine. |131| `gazebo` | Simulating a ROS 2 robot — the paired sim for the nav vertical (Gazebo Harmonic ↔ ROS 2 Jazzy). |132| `isaac-sim` | Photoreal / GPU-accelerated sim or synthetic data — **only when the NVIDIA RTX GPU floor is met**. |133| `isaac-lab` | GPU-parallel reinforcement-learning environments on top of Isaac Sim — same GPU gate. |134135### Learning & data136137| Skill | Hand off when… |138|---|---|139| `lerobot` | Training or running a manipulation/imitation policy — the substrate for the manipulation vertical. |140| `huggingface` | Pulling datasets/models or pushing artifacts to the Hub — **delegate** to `hf-cli@huggingface-skills`; robium adds only the robotics glue. |141| `data` | Deciding where data comes from: offline datasets vs sim generation vs teleop collection. |142143### Visualization144145| Skill | Hand off when… |146|---|---|147| `visualization` | Choosing a viz tool or applying viz best practices, before picking a specific one. |148| `rviz2` | Classic ROS 2 visualization on a local Linux machine with a display. |149| `foxglove` | Web-based viz — the go-to for a **headless remote server** or cross-platform team viewing. |150| `rerun` | Timeline/multimodal logging for ML and perception debugging (heavy pointer to Rerun's own docs). |151152### Verification & meta153154| Skill | Hand off when… |155|---|---|156| `testing` | Standing up smoke tests, sim-based regression, or launch testing — plan this into the brief, don't bolt it on later. |157| `skill-author` | Editing robium's own skills (fresh authoring, mining, hardening from learnings). Not an app-building skill. |158| `skill-updater` | End-of-session absorption: folding this session's gotchas back into the robium skills. Not an app-building skill. |159160See `references/stack-selection.md` for the decision trees behind these161hand-offs (middleware yes/no, simulator gazebo-vs-isaac, training framework).162163## Platform gotchas164165- **Isaac Sim / Isaac Lab are GPU-gated.** Per NVIDIA's current requirements166 ([docs.isaacsim.omniverse.nvidia.com](https://docs.isaacsim.omniverse.nvidia.com/latest/installation/requirements.html)),167 the floor is an **RTX 4080 with 16 GB VRAM** (minimum), an RTX 5080 or168 better recommended (16 GB+ VRAM), and 32 GB+ system RAM (64 GB recommended;169 Isaac Lab RL training wants more of both). Linux (Ubuntu) is the primary170 target; **there is no macOS support**. If the GPU floor isn't met, do not171 route to Isaac — keep the manipulation path in LeRobot's own sim/eval172 tooling. Verify the current floor in `isaac-sim` before committing; treat173 GPU availability as an open risk if unconfirmed.174- **macOS / Apple Silicon** cannot run the native ROS 2 + Gazebo desktop stack175 cleanly — plan for Docker (route to `environments`) or a Linux remote.176- **Remote / headless servers** have no display for RViz2 — default the viz177 choice to `foxglove` (web UI) in that case, and note it in the brief.178- **ROS 2 distro choice:** **Lyrical Luth** (LTS, GA 2026-05-22, supported to179 May 2031) is the current newest LTS — default new apps to it unless a180 dependency forces otherwise. Exception: the ROS 2 + Nav2 + Gazebo navigation181 vertical still defaults to **Jazzy Jalisco** (LTS, supported to May 2029) for182 now, because Nav2 has not yet shipped binary packages for Lyrical (tracked in183 `ros-navigation/navigation2#6123` as of 2026-07) — re-check before picking184 Lyrical for that path. Kilted Kaiju is non-LTS and nearing its own EOL185 (~Dec 2026); don't pick it as a new default. Record the chosen distro in the186 brief.187188## Customization189190- **Different robot/task:** re-run the requirement checklist and the decision191 trees in `references/stack-selection.md`. The two golden paths are starting192 points, not the only shapes — a drone-inspection app is still ROS 2 + a sim +193 viz, just with different nodes; a real-hardware manipulation app is LeRobot194 with the sim swapped for a hardware driver.195- **Adapt the scaffold:** `references/scaffold-patterns.md` gives a ROS 2 layout196 and a LeRobot layout; rename packages and prune directories your app doesn't197 need, but keep the `docs/architecture-brief.md` location fixed — tooling and198 every later phase expect it there.199- **Adapt the brief:** every section in `references/brief-template.md` is200 required, but its depth scales with the project — a one-robot sim demo needs a201 short comms plan; a multi-robot fleet needs a real one.202203## References204205- `references/stack-selection.md` — the decision trees: middleware (ROS 2206 yes/no), simulator (Gazebo vs Isaac), and training framework, with the207 verified version defaults this skill ships.208- `references/scaffold-patterns.md` — repo layouts for a ROS 2 app and a209 LeRobot app: directory trees plus what each directory holds.210- `references/brief-template.md` — the required sections of211 `docs/architecture-brief.md` (chosen stack + reasoning, module breakdown,212 comms plan, env strategy, data plan, robium skills per phase, open risks).213- `examples/architecture-brief-example.md` — a filled brief for a hypothetical214 diff-drive warehouse robot (status: unverified).215- Battle-tested sample apps + registry:216 [robium-applications](https://github.com/robium-ai/robium-applications) —217 `REGISTRY.md` indexes every app (stack, pass bar, bootstrap-for, battle218 scars); the bootstrap-first source for Quick start step 4.219- Upstream: [ROS 2 docs](https://docs.ros.org/), [Nav2 docs](https://docs.nav2.org/),220 [Gazebo docs](https://gazebosim.org/docs/), [LeRobot](https://github.com/huggingface/lerobot),221 [Isaac Sim](https://docs.isaacsim.omniverse.nvidia.com/),222 [Isaac Lab](https://isaac-sim.github.io/IsaacLab/). The `robium-architect`223 subagent (`agents/robium-architect.md`) runs this skill as its playbook.224225## Changelog226227<!-- One dated line per battle-tested change, added by skill-author hardening sessions. -->228229- 1.1.0 (2026-07-12): scaffold step made bootstrap-first — check230 robium-applications' REGISTRY.md for a resembling battle-tested app231 before scaffolding fresh; registry link added to References.