architect · v1.0.0 · 2026-08-03 · sha256 53b64a79dd480805

architect v1.0.0A

Immutable. This exact content is served forever at /api/v1/blob/53b64a79dd480805.

---
name: architect
version: 1.0.0
description: >
  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).
---

# 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](https://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.** Lay out the repo 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](https://docs.isaacsim.omniverse.nvidia.com/latest/installation/requirements.html)),
  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).
- Upstream: [ROS 2 docs](https://docs.ros.org/), [Nav2 docs](https://docs.nav2.org/),
  [Gazebo docs](https://gazebosim.org/docs/), [LeRobot](https://github.com/huggingface/lerobot),
  [Isaac Sim](https://docs.isaacsim.omniverse.nvidia.com/),
  [Isaac Lab](https://isaac-sim.github.io/IsaacLab/). The `robium-architect`
  subagent (`agents/robium-architect.md`) runs this skill as its playbook.

## Changelog

<!-- One dated line per battle-tested change, added by skill-author hardening sessions. -->