Claude Cursor Skill

architect

Entry-point skill for shaping new robotics applications: lightweight brainstorming, project ideation, requirement/risk discovery, stack selection, comparing or choosing simulators/models/visualization, a first user-visible slice, and a concise architecture decision record. Use wh

LLM Mart · 0 points · 1 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download robium-ai-robium-archive_architect_2.0.0-498ea4e.zip · 14 KB
Part of robium-ai/robium — 44 skills

Install

skills CLI npx skills add https://github.com/robium-ai/robium/tree/main/archive/architect/2.0.0
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install robium-ai-robium@llmmart
Git git clone https://github.com/robium-ai/robium.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole robium-ai/robium collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

architect

The entry point for a new Robium application. It combines a lean design conversation with robotics stack selection, chooses the cheapest meaningful proof, records decisions without freezing provisional assumptions, and routes implementation to the skills that own each layer.

When to use this skill

  • Starting a new robotics application from a rough idea.
  • Choosing or reconsidering the stack, simulator, embodiment, environment, data path, visualization, or compute target.
  • Decomposing a multi-subsystem robotics idea into a first buildable slice.
  • Writing a durable decision record for a new app or genuine re-architecture.
  • Skip architect for a bounded change in an existing flow. Read the affected code and use the matching tool skill directly.

Key directives

  • Delegation posture: route + embed decision logic. Architect owns the product/stack choices and routing. Tool mechanics stay in the skill that owns them.
  • Brainstorm only where a real decision exists. Inspect the repository and robium-apps registry first. Ask only questions whose answers materially change the first slice. For a genuine choice, offer 2–3 approaches with trade-offs and recommend one. Never announce a process classification.
  • One direction gate, then build. A new app or material architecture gets one rough direction approval. After that, proceed through implementation and verification; pause only for a material pivot, scope expansion, paid or publishing action, deployment, or safety concern.
  • Prove the riskiest assumption cheaply. Before polishing infrastructure or scaling compute, run the smallest probe that can disprove the stack and deliver the first user-visible working slice. Label provisional choices and update them when evidence changes.
  • Use a decision record, not a contract. Create or update docs/architecture-brief.md for a new application or genuine re-architecture. It records validated decisions, provisional assumptions, risks, and authorized pivots. Bounded feature/fix work does not require a new brief or approval cycle.
  • Environment first, syntax verified. Route reproducibility to environments before substantial code. Verify volatile versions, commands, and platform constraints against current primary sources or installed CLI help; never rely on memory.

Quick start

  1. Read before asking. Inspect the app registry, closest reference app, current repository, and available hardware/compute facts.
  2. Frame the first outcome. Establish robot/embodiment, user-visible task, sim-vs-real target, and the pass/fail signal for the first slice. Record a reasonable assumption instead of asking about low-impact details.
  3. Compare only meaningful alternatives. Recommend one stack. If cost, hardware, or an unfamiliar integration is uncertain, define a cheap spike that resolves it before full implementation.
  4. Write the decision record when warranted. Use references/brief-template.md for a new app or re-architecture. Keep the core concise; add optional detail only when the system needs it.
  5. Bootstrap, then diverge. Check REGISTRY.md in the sibling robium-apps repository. Copy the closest app's environment, test, and launch shape when one exists; otherwise use references/scaffold-patterns.md.
  6. Build the first slice. Hand each phase to the lowest owning skill and update the decision record only when a decision or risk actually changes.

Use the Claude-only robium-architect agent only for an explicitly requested or genuinely ambiguous heavy comparison that would otherwise flood the main conversation. Normal new-app design stays in the main conversation.

Decision guidance

Choose the first vertical

  • Navigation: ros2 + nav2 + simulation → gazebo, then visualization → rviz2 or foxglove. Use environments before bring-up.
  • Learned manipulation: lerobot + data + huggingface, with simulation selecting MuJoCo/Gazebo/Isaac as the task requires. Add isaac-sim/isaac-lab only after their NVIDIA GPU requirements are proven.
  • Hybrid or unfamiliar stack: define module boundaries with integration, identify the costliest uncertainty, and spike that boundary before building the whole system.

Route by build phase

Decision or work Owning skill
Environment/reproducibility environments
Module boundaries, protocols, containers integration
ROS 2 substrate ros2
Mobile navigation/localization nav2
Simulator selection/sensor fidelity simulation
Modern ROS simulation gazebo
Lightweight non-ROS manipulation sim mujoco
NVIDIA photoreal simulation isaac-sim
NVIDIA RL/IL training isaac-lab
Manipulation policies/VLAs lerobot
Dataset sourcing/collection strategy data
Hub models, datasets, Jobs, Spaces huggingface
Visualization selection visualization
ROS desktop visualization rviz2
Remote/web ROS visualization foxglove
ML/data timelines rerun
Test strategy and smoke bar testing
Fixtures/worlds/datasets test-assets
Public interactive demo live-demo
Cloud Run deployment mechanics cloud-run
RunPod GPU execution runpod
External example mining mining
Learning consolidation/absorption learning-loop
Skill authoring/quality skill-author

Platform gotchas

  • Isaac Sim/Lab require a supported NVIDIA RTX-class GPU and do not run on macOS. Load isaac-sim and verify its current floor before selecting it.
  • Native ROS 2/Gazebo development is Linux-centric. On macOS, choose a container or Linux remote through environments.
  • Headless remote work needs web/recorded visualization (foxglove or rerun) rather than assuming RViz2/display forwarding.
  • Cloud/GPU inventory, pricing, quotas, and framework versions are volatile. Verify them only when they affect the selected path; do not turn every design into a broad research pass.

Customization

  • Scale the decision record to the project. A small one-process demo may need only outcome, chosen stack, environment, pass bar, and risks. Add modules, communications, data, or rollout sections only when they contain decisions.
  • A discovered constraint may change a provisional choice without invalidating the whole design. Record the evidence and pivot; request another direction decision only when the user-visible outcome or material scope changes.
  • Decompose an idea with several independent products into ordered slices. Fully design only the first slice; record later slices as non-binding follow-ups.

References

  • references/stack-selection.md: simulator, middleware, and training decision trees; verify volatile defaults before use.
  • references/scaffold-patterns.md: starting layouts for navigation and manipulation applications.
  • references/brief-template.md: concise decision-record template with optional depth.
  • examples/architecture-brief-example.md: filled hypothetical brief (status: unverified).
  • Upstream: ROS 2, Nav2, Gazebo, LeRobot, Isaac Sim, and the MIT-licensed Superpowers brainstorming skill, whose useful exploration/alternatives/YAGNI principles were adapted here without its global classification and repeated-approval gates.

Changelog

  • 2.0.0 (2026-08-27): absorbed lightweight brainstorming into architect; replaced global classification/repeated approval with one direction gate; made the brief a scalable decision record; added risk-first/user-visible slicing; narrowed the heavy Claude architect agent; repointed bootstrapping to robium-apps.
  • 1.9.0 (2026-08-24): route RunPod inventory, provisioning, diagnostics, validation, billing, and cleanup to the new generic runpod skill.
  • 1.8.1 (2026-08-03): style pass; removed em dashes throughout.
  • 1.8.0 (2026-08-02): routing: learning-loop added; retired skill-updater.
  • 1.7.0 (2026-08-02): routing table gained mining; skill-author narrowed.
  • 1.6.1 (2026-08-01): anchor IDs added to claim-bearing items.
  • 1.6.0 (2026-08-01): routing table gained cloud-run.
  • 1.5.0 (2026-07-31): routed MuJoCo manipulation simulation.
  • 1.4.0 (2026-07-18): routing table gained test-assets.
  • 1.3.1 (2026-07-18): refreshed transferred repository links.
  • 1.3.0 (2026-07-15): added backlog kickoff triggers and prior brainstorming handoff.
  • 1.2.0 (2026-07-13): routing map gained live-demo.
  • 1.1.1 (2026-07-12): clarified dated provenance.
  • 1.1.0 (2026-07-12): made scaffolding bootstrap-first.
Files (robium)
  • examples
    • architecture-brief-example.md 5.6 KB
      <!-- status: unverified -->
      <!-- A filled architecture brief for a hypothetical robot, illustrating the
           brief-template. Not from a real trial run; promote to verified once an
           actual app is built from a brief like this. -->
      
      # Architecture Brief: WarehouseBot (diff-drive warehouse navigator)
      
      **Date:** 2026-07-10   **Status:** draft
      **Author:** robium-architect subagent
      
      ## 1. Requirements
      
      - **Robot type:** differential-drive mobile base (~40 cm footprint), 2D lidar +
        wheel odometry, no manipulator.
      - **Task:** navigate autonomously between named pick/drop stations in a
        warehouse, avoiding dynamic obstacles (people, carts).
      - **Hardware:** none yet, **sim-first**; a real base is a later phase.
      - **Sim vs real:** MVP must run entirely in simulation.
      - **GPU:** *assumed none* on the dev machine (laptop). **Assumption**: not
        confirmed; feeds open risks.
      - **Local vs remote:** developed on a macOS laptop, so the stack runs in Docker;
        a headless workstation is a possible later target.
      
      ## 2. Chosen stack + reasoning
      
      | Layer | Choice | Version | Why (and what was rejected) |
      |---|---|---|---|
      | Middleware | ROS 2 | Jazzy Jalisco | LTS to 2029; standard nav ecosystem. Lyrical Luth (newer LTS, to 2031) rejected for now: Nav2 has no released binaries for it yet. Kilted rejected: non-LTS, ends 2026. |
      | Simulator | Gazebo | Harmonic | Officially paired with Jazzy; no GPU needed. Isaac Sim rejected: GPU-gated, overkill for a lidar nav demo. |
      | Navigation | Nav2 | (Jazzy release) | The standard ROS 2 nav stack; costmaps + planners + BT out of the box. Rolling our own rejected: no reason to. |
      | Visualization | RViz2 (dev) + Foxglove (remote) | n/a | RViz2 locally for quick checks; Foxglove for the eventual headless workstation. Rerun rejected: not needed for classical nav. |
      | Environment | Docker | Jazzy base image | Dev machine is macOS, which can't run the native ROS 2 + Gazebo desktop cleanly; Docker gives identical local/remote repro. uv rejected: this is a compiled ROS 2 workspace, not pure Python. |
      
      Decisions trace to the architect trees: middleware → ROS 2 (mobile multi-node
      system); simulator → Gazebo (no GPU); no training framework (classical nav).
      
      ## 3. Module breakdown
      
      - **warehousebot_description**: URDF/xacro of the diff-drive base, lidar + wheel
        frames, meshes. Publishes the robot model. In/out: none / `robot_description`,
        TF.
      - **warehousebot_sim**: Gazebo world (warehouse layout, shelves, spawn points)
        and spawn glue. In/out: `robot_description` / simulated `/scan`, `/odom`, TF.
      - **warehousebot_navigation**: Nav2 config with costmaps (lidar-based obstacle
        layer + inflation), NavFn/Smac planner, DWB/MPPI controller, behavior tree,
        saved warehouse map. In/out: `/scan`,`/odom`,`/map`,goal / `/cmd_vel`.
      - **warehousebot_bringup**: top-level launch (sim + nav + viz) and params.
        In/out: launch args / the running system.
      
      ## 4. Comms plan
      
      Standard ROS 2 topics, single robot, all in-process for the MVP.
      
      | Topic | Type | Rate | Producer → Consumer |
      |---|---|---|---|
      | `/scan` | `sensor_msgs/LaserScan` | ~10 Hz | Gazebo lidar → Nav2 costmap |
      | `/odom` | `nav_msgs/Odometry` | ~30 Hz | Gazebo diff-drive → Nav2, TF |
      | `/cmd_vel` | `geometry_msgs/Twist` | ~20 Hz | Nav2 controller → base |
      | `/map` | `nav_msgs/OccupancyGrid` | latched | map_server → Nav2 |
      | goal | `nav2` action (`NavigateToPose`) | on demand | app → Nav2 BT |
      
      No cross-host transport needed for the MVP. If the fleet grows to multiple
      robots later, revisit with the `integration` skill (namespacing, DDS discovery).
      
      ## 5. Environment strategy
      
      Docker, single `Dockerfile` on a ROS 2 Jazzy base plus Gazebo Harmonic and Nav2
      from ROS vendor packages; a `compose.yaml` running sim + nav + viz. macOS dev
      uses an X/Wayland forward or Foxglove for viewing. The same image runs on the
      headless workstation later; identical repro is the reason Docker was chosen
      over a native workspace. No GPU passthrough (none required). Detail: route to
      the `environments` skill.
      
      ## 6. Data plan
      
      No learned components → no datasets. Data artifacts are: the saved warehouse
      occupancy `map` (built once via SLAM in sim, then reused), Nav2 param YAMLs, and
      recorded rosbags for regression. Rosbags and maps are versioned in-repo; large
      bags gitignored. No Hub involvement.
      
      ## 7. Robium skills per build phase
      
      | Phase | Skill(s) |
      |---|---|
      | Environment setup | environments |
      | Robot model + bringup | ros2 |
      | Simulation world | gazebo |
      | Mapping + navigation | nav2 |
      | Visualization | visualization → rviz2 (local), foxglove (remote) |
      | Smoke/regression tests | testing |
      
      ## 8. Open risks
      
      - **GPU availability unconfirmed**: the design assumes no GPU and stays on
        Gazebo, which is fine. Blocks nothing for this app, but confirm before any
        future perception/learning phase that might want Isaac. *Resolve:* check
        `nvidia-smi` on the dev/target machine.
      - **Dynamic-obstacle avoidance in sim ≠ real**: Gazebo pedestrians are scripted;
        real warehouse traffic is messier. Blocks confidence in the avoidance tuning.
        *De-risk:* keep the costmap/controller params in `warehousebot_navigation`
        easy to retune; plan a hardware validation phase.
      - **macOS + Gazebo rendering**: GUI rendering under Docker on macOS can be slow
        or flaky. Blocks smooth local dev. *De-risk:* prefer Foxglove/headless sim for
        day-to-day; use RViz2 sparingly, or move dev to the Linux workstation early.
      - **ROS 2 Jazzy version pins**: Nav2/Gazebo package versions assumed compatible
        on the Jazzy line but not yet built. *Resolve:* stand up the Docker image
        first and confirm `colcon build` is clean before writing app code.
      
  • references
    • brief-template.md 2.6 KB
      # Architecture decision record template
      
      Use `docs/architecture-brief.md` for a new application or a genuine
      re-architecture. It records decisions and uncertainty; it is not an immutable
      contract. Update it when evidence authorizes a pivot.
      
      Only the four core sections are required. Add optional detail when it changes a
      decision or helps the next implementation step.
      
      ```markdown
      # Architecture Brief: <app name>
      
      **Date:** <YYYY-MM-DD>
      **Status:** <draft | active | superseded>
      
      ## Goal and constraints
      
      The user-visible outcome, robot/task, sim-vs-real target, available hardware,
      GPU/budget limits, and local/remote constraints. Mark unconfirmed inputs as
      provisional.
      
      ## Decisions
      
      | Decision | Choice | Why now | Confidence |
      |---|---|---|---|
      | First working slice | ... | Cheapest useful risk reduction | validated/provisional |
      | Environment | uv/Docker/... | ... | validated/provisional |
      | Simulator/middleware | ... | ... | validated/provisional |
      
      Include an alternative only when it was a genuine contender. Do not invent a
      rejected option to make the record look complete.
      
      ## Provisional assumptions and risks
      
      | Assumption or risk | Impact | Cheapest validation | Authorized pivot |
      |---|---|---|---|
      | ... | ... | ... | What may change without a new design gate |
      
      ## Implementation path
      
      1. The smallest user-visible or risk-reducing slice.
      2. The smoke check that proves it.
      3. The next integration step if it passes.
      ```
      
      ## Optional sections
      
      Add only those the application needs:
      
      - **Module boundaries and communications** for multi-process, ROS 2, remote, or
        multi-container systems.
      - **Environment and deployment detail** when GPU, system dependencies, or
        local/remote parity is a real risk.
      - **Data lifecycle** for dataset sourcing, storage, recording, publication, or
        model artifacts.
      - **Skill routing** when several Robium skills will be used across phases.
      - **Alternatives considered** for a material product or stack choice.
      
      ## Updating the record
      
      - Replace a provisional assumption with evidence as soon as a cheap probe
        resolves it.
      - Treat a failed probe as information, not a specification violation. Use the
        documented authorized pivot when it remains within the approved direction.
      - Ask for another direction decision only when the evidence creates a material
        product choice, scope expansion, external-cost action, or safety concern.
      - Set the record to `superseded` only for a genuine re-architecture. Ordinary
        implementation discoveries are normal edits to the active record.
      
      See `../examples/architecture-brief-example.md` for a filled instance; older
      examples may be more detailed than a small project requires.
      
    • scaffold-patterns.md 5.3 KB
      # Scaffold patterns
      
      Starting repo layouts for the two golden paths. Copy the closest verified app
      from the robium-apps registry when one exists; otherwise use these trees. Rename
      packages and prune anything the first working slice does not need.
      
      New applications keep a concise decision record at `docs/architecture-brief.md`.
      Learning capture belongs to Robium's sibling `learnings/` tree and hooks rather
      than an application-local ritual.
      
      The env layer (Dockerfile vs `pyproject.toml`) is decided by the `environments`
      skill; both trees below show the common case.
      
      ## ROS 2 application (navigation golden path)
      
      For a mobile robot navigating in Gazebo with Nav2. A ROS 2 workspace with a
      `src/` colcon layout, one package per concern.
      
      ```
      my-nav-robot/
      ├── docs/
      │   └── architecture-brief.md        # concise decision record
      ├── docker/
      │   ├── Dockerfile                   # ROS 2 Jazzy base + deps (environments skill)
      │   └── compose.yaml                 # sim + nav + viz services
      ├── src/                             # colcon workspace source
      │   ├── my_robot_description/        # URDF/xacro, meshes: the robot model
      │   │   ├── urdf/
      │   │   ├── meshes/
      │   │   └── launch/                  # spawn/description launch
      │   ├── my_robot_bringup/            # top-level launch + params, ties it together
      │   │   ├── launch/                  # bringup.launch.py (sim + nav + viz)
      │   │   └── config/                  # nav2_params.yaml, ros2 params
      │   ├── my_robot_navigation/         # Nav2 config: costmaps, planners, BT
      │   │   ├── config/
      │   │   ├── behavior_trees/
      │   │   └── maps/
      │   └── my_robot_sim/                # Gazebo worlds + spawn glue
      │       ├── worlds/
      │       └── models/
      ├── tests/                           # smoke + launch tests (testing skill)
      └── README.md
      ```
      
      **What each dir holds**
      - `*_description`: the robot's URDF/xacro, meshes, and the launch that
        publishes the model. One source of truth for the robot's geometry/frames.
      - `*_bringup`: the composition layer; the launch file that starts sim + Nav2 +
        visualization together, plus the parameter YAMLs. Where a new user starts.
      - `*_navigation`: everything Nav2 (`nav2` skill): costmap configs, planner and
        controller params, behavior trees, saved maps.
      - `*_sim`: Gazebo (`gazebo` skill): world files, spawn models, sim-only glue.
      - `docker/`: the reproducible environment (`environments` skill): a Jazzy base
        image and a compose file wiring the services.
      - `tests/`: smoke and launch tests (`testing` skill): "does the robot reach a
        goal in sim" as a regression.
      
      ## LeRobot application (manipulation golden path)
      
      For training and evaluating a manipulation policy. A Python project managed by
      `uv` (no colcon), organized around the data → train → eval loop.
      
      ```
      my-arm-policy/
      ├── docs/
      │   └── architecture-brief.md        # concise decision record
      ├── pyproject.toml                   # uv-managed deps (environments skill)
      ├── uv.lock
      ├── src/
      │   └── my_policy/
      │       ├── configs/                 # policy + training configs (ACT, Diffusion, SmolVLA…)
      │       ├── datasets/                # dataset prep / loading glue (huggingface delegation)
      │       ├── train.py                 # training entry point (lerobot)
      │       ├── eval.py                  # in-sim evaluation entry point
      │       └── env/                     # sim/hardware env wrappers
      ├── data/                            # local datasets / cache (gitignored; data skill)
      ├── outputs/                         # checkpoints, logs, eval videos (gitignored)
      ├── notebooks/                       # exploration (optional)
      ├── tests/                           # smoke tests: dataset loads, 1-step train runs
      └── README.md
      ```
      
      **What each dir holds**
      - `src/my_policy/configs`: training and policy hyperparameter configs; which
        policy family (ACT / Diffusion / SmolVLA / π0) and its settings.
      - `src/my_policy/datasets`: glue for fetching and shaping datasets; Hub
        pulls/pushes go through the `huggingface` delegation, sourcing strategy
        through the `data` skill.
      - `src/my_policy/{train,eval}.py`: the `lerobot` training and evaluation
        entry points; keep them thin, config-driven.
      - `src/my_policy/env`: wrappers around the sim (or, later, real hardware).
        Add `isaac-sim`/`isaac-lab` here **only if the GPU floor is met**; otherwise
        LeRobot's own sim.
      - `data/` and `outputs/`: large, regenerable, git-ignored.
      - `pyproject.toml` + `uv.lock`: the reproducible env (`environments` skill);
        uv is the default for the manipulation path since much of it is CPU-friendly
        Python and doesn't need the full ROS 2 Docker apparatus.
      
      ## Adapting
      
      - A real-hardware version of either app keeps the tree and swaps the `*_sim` /
        `env` directory for a hardware-driver package/module.
      - A hybrid (learned policy running inside a ROS 2 system) starts from the ROS 2
        tree and adds a `my_policy` package that wraps the LeRobot inference.
      - Prune aggressively for an MVP; a single-package ROS 2 demo doesn't need four
        packages. Keep the decision record at `docs/architecture-brief.md` for new
        applications and genuine re-architecture work.
      
    • stack-selection.md 5 KB
      # Stack selection decision trees
      
      The reasoning behind architect's routing table. Three decisions: middleware,
      simulator, training framework. Each ends at a concrete, verified default and the
      robium skill that owns the build. **Verify version facts against current docs
      before committing them to a brief**; the defaults below were current as of
      mid-2026 but robotics moves fast.
      
      ## Verified defaults (mid-2026)
      
      | Component | Default | Why |
      |---|---|---|
      | ROS 2 distro | **Lyrical Luth** (general default); **Jazzy Jalisco** for the Nav2 vertical | Lyrical Luth is the current newest LTS (GA 2026-05-22, supported to May 2031); default for new apps. Nav2 has not yet released binaries for Lyrical (tracked in `ros-navigation/navigation2#6123`), so the ROS 2 + Nav2 + Gazebo path still defaults to Jazzy Jalisco (LTS, supported to May 2029) until that lands. Kilted Kaiju is non-LTS and nearing its own EOL (~Dec 2026); don't pick it as a new default. |
      | Simulator (ROS 2) | **Gazebo Jetty** with Lyrical; **Gazebo Harmonic** with Jazzy | Each is the officially paired sim for its ROS 2 distro, installed via ROS vendor packages. Both Jetty and Harmonic are themselves LTS Gazebo releases. |
      | Manipulation learning | **LeRobot** (v0.6+) | Open, actively developed; supports ACT, Diffusion Policy, VQ-BeT, TDMPC, SmolVLA, π0/π0.5; ships sim + eval tooling; broad arm support (SO-100/101, Koch, LeKiwi, Reachy2). |
      | GPU sim / RL | **Isaac Sim + Isaac Lab** | Only when the NVIDIA RTX GPU floor is met (see below); otherwise stay in LeRobot's sim. |
      
      ## Decision 1. Middleware: ROS 2 or not?
      
      ```
      Is the robot a mobile base / arm / multi-node system that needs
      standard drivers, message passing, and an ecosystem of packages?
      ├─ Yes → ROS 2 (default Lyrical Luth; Jazzy Jalisco for the Nav2
      │        vertical; see verified defaults above).  Route: ros2
      │        Navigation on top?      → nav2
      │        Needs a simulator?      → Decision 2
      └─ No  → Is it a pure learning/policy problem with no runtime robot
               middleware (train a policy, evaluate in a learning sim)?
               ├─ Yes → skip ROS 2 for the MVP; LeRobot owns the loop. Route: lerobot
               └─ Unsure → default to ROS 2; it is the safer, more interoperable base
                           and nothing about it blocks adding a learning stack later.
      ```
      
      **Notes**
      - ROS 2 is the substrate for the navigation golden path. Even manipulation apps
        often add ROS 2 later for hardware drivers, but don't force it into an MVP
        that only needs to train and evaluate a policy.
      - Middleware/comms choices *within* a ROS 2 app (topics vs services vs zenoh vs
        gRPC across process boundaries) are the `integration` skill's job, not this
        decision.
      
      ## Decision 2. Simulator: Gazebo or Isaac?
      
      ```
      Do you have a dedicated NVIDIA RTX GPU meeting the Isaac floor?
      (RTX 4080+, 16 GB VRAM minimum, 32 GB+ system RAM, Linux; no macOS)
      ├─ No  → Gazebo Harmonic.  Route: gazebo   (the only viable ROS 2 sim here)
      └─ Yes → What do you need the sim for?
               ├─ ROS 2 robot in a physics world, sensors, nav testing
               │     → Gazebo Harmonic is still the simpler, better-integrated
               │       choice for the nav vertical. Route: gazebo
               ├─ Photorealistic rendering / synthetic perception data
               │     → Isaac Sim. Route: isaac-sim
               └─ Massively parallel RL environments (thousands of envs on GPU)
                     → Isaac Lab (on Isaac Sim). Route: isaac-lab
      ```
      
      **Notes**
      - Default to **Gazebo** unless there's a concrete reason to pay the Isaac cost
        (GPU requirement, driver setup, Linux-only, steeper learning curve). "It looks
        nicer" is not a reason for an MVP.
      - If GPU availability is unconfirmed, do **not** design the MVP around Isaac;
        pick Gazebo (or LeRobot's own sim) and log the GPU question as an open risk.
      - The `simulation` umbrella covers sensor-simulation correctness (noise, rates,
        frames) independent of which engine you pick.
      
      ## Decision 3. Training / policy framework
      
      ```
      Are you learning a control policy (imitation or RL)?
      ├─ No  → no training framework needed; classical nav/control via nav2/ros2.
      └─ Yes → What kind?
               ├─ Imitation / behavior cloning from demos (teleop or datasets),
               │  manipulation especially
               │     → LeRobot. Route: lerobot   (+ huggingface for data/models)
               ├─ Reinforcement learning at scale, GPU available
               │     → Isaac Lab. Route: isaac-lab
               └─ Small-scale RL / no GPU
                     → LeRobot's tooling or a lightweight gym; keep it CPU/uv.
      ```
      
      **Data sourcing** for any learning path is the `data` skill's call (offline
      datasets vs sim-generated vs teleop-collected), and Hub pulls/pushes go through
      the self-contained `huggingface` skill.
      
      ## Where each decision is recorded
      
      Material branches become concise decisions in `docs/architecture-brief.md`.
      Unresolved high-impact branches (GPU unknown, a version pin constrained by an
      unverified dependency) remain provisional assumptions with a cheap validation
      step and an authorized pivot. See `brief-template.md`.
      
  • evals.yaml 1.4 KB
    triggers:
      positive:
        - phrase: lets do demo 1
          source: learnings/2026-07-13.md
        - phrase: i actually meant to have ml vla based arm control here… lets decide the simulator, model, robot and how to visualize
          source: learnings/2026-07-13.md
        - phrase: we'll create a new application. I have turtlebot3 robot real robot, want to get it working and want to have a teleoperation demo page.. when run it should connet we should be able to navigate round first, lets do only navigation. later we'll do the cmaera transfer, later, we'll do mapping.. lets do the plannoing brainstorming and start working on it.
          source: learnings/2026-08-02.md
        - phrase: i think we can work on isaac lab skills now. want to do some project at the same time learn isaac lab.. what projects we can do, also how to do it.. i have my macbook air onmlu
          source: learnings/2026-08-02.md
        - phrase: help me choose between Gazebo and Isaac Sim for a new warehouse robot app, then start with the cheapest useful demo
        - phrase: we are changing this arm application from scripted control to a VLA and need to rethink the architecture
      negative:
        - phrase: fix the existing gateway CORS allowlist for our production frontend
          expect: integration
        - phrase: update this existing README typo and run the tests
          expect: none
        - phrase: diagnose why this existing ROS 2 node misses messages
          expect: ros2
    tasks: []
    
  • SKILL.md 9.9 KB
    ---
    name: architect
    version: 2.0.0
    description: >
      Entry-point skill for shaping new robotics applications: lightweight
      brainstorming, project ideation, requirement/risk discovery, stack selection,
      comparing or choosing simulators/models/visualization, a first
      user-visible slice, and a concise architecture decision record. Use when:
      starting a new robotics app; 'brainstorm a robot app', 'build a robot app',
      'which robotics stack', 'choose between simulators', 'decide the simulator,
      model, robot, and visualization', 'what robotics project can we build',
      'cheapest useful demo', 'rethink the architecture', genuine re-architecture,
      'scaffold a robotics project', 'mobile robot',
      'robot arm', 'manipulation policy', 'navigation stack', 'let's do demo 1',
      or when requirements exist but the stack is unchosen. Load first for a new
      app, then route to domain skills. Excludes narrow maintenance work after stack
      selection and skill authoring (skill-author).
    ---
    
    # architect
    
    The entry point for a new Robium application. It combines a lean design
    conversation with robotics stack selection, chooses the cheapest meaningful
    proof, records decisions without freezing provisional assumptions, and routes
    implementation to the skills that own each layer.
    
    ## When to use this skill
    
    - Starting a new robotics application from a rough idea.
    - Choosing or reconsidering the stack, simulator, embodiment, environment,
      data path, visualization, or compute target.
    - Decomposing a multi-subsystem robotics idea into a first buildable slice.
    - Writing a durable decision record for a new app or genuine re-architecture.
    - Skip architect for a bounded change in an existing flow. Read the affected
      code and use the matching tool skill directly.
    
    ## Key directives
    
    - **Delegation posture: route + embed decision logic.** Architect owns the
      product/stack choices and routing. Tool mechanics stay in the skill that owns
      them.
    - **Brainstorm only where a real decision exists.** <!-- id: lean-brainstorming --> Inspect the repository and
      `robium-apps` registry first. Ask only questions whose answers materially
      change the first slice. For a genuine choice, offer 2–3 approaches with
      trade-offs and recommend one. Never announce a process classification.
    - **One direction gate, then build.** <!-- id: one-direction-gate --> A new app or material architecture
      gets one rough direction approval. After that, proceed through implementation
      and verification; pause only for a material pivot, scope expansion, paid or
      publishing action, deployment, or safety concern.
    - **Prove the riskiest assumption cheaply.** <!-- id: risk-first-slice --> Before polishing infrastructure or
      scaling compute, run the smallest probe that can disprove the stack and
      deliver the first user-visible working slice. Label provisional choices and
      update them when evidence changes.
    - **Use a decision record, not a contract.** <!-- id: architecture-decision-record --> Create or update
      `docs/architecture-brief.md` for a new application or genuine
      re-architecture. It records validated decisions, provisional assumptions,
      risks, and authorized pivots. Bounded feature/fix work does not require a new
      brief or approval cycle.
    - **Environment first, syntax verified.** <!-- id: env-first-route-environments --> Route reproducibility to
      `environments` before substantial code. Verify volatile versions, commands,
      and platform constraints against current primary sources or installed CLI
      help; never rely on memory.
    
    ## Quick start
    
    1. **Read before asking.** Inspect the app registry, closest reference app,
       current repository, and available hardware/compute facts.
    2. **Frame the first outcome.** Establish robot/embodiment, user-visible task,
       sim-vs-real target, and the pass/fail signal for the first slice. Record a
       reasonable assumption instead of asking about low-impact details.
    3. **Compare only meaningful alternatives.** Recommend one stack. If cost,
       hardware, or an unfamiliar integration is uncertain, define a cheap spike
       that resolves it before full implementation.
    4. **Write the decision record when warranted.** Use
       `references/brief-template.md` for a new app or re-architecture. Keep the
       core concise; add optional detail only when the system needs it.
    5. **Bootstrap, then diverge.** Check `REGISTRY.md` in the sibling
       [robium-apps](https://github.com/robium-ai/robium-apps) repository. Copy the
       closest app's environment, test, and launch shape when one exists; otherwise
       use `references/scaffold-patterns.md`.
    6. **Build the first slice.** Hand each phase to the lowest owning skill and
       update the decision record only when a decision or risk actually changes.
    
    Use the Claude-only `robium-architect` agent only for an explicitly requested
    or genuinely ambiguous heavy comparison that would otherwise flood the main
    conversation. Normal new-app design stays in the main conversation.
    
    ## Decision guidance
    
    ### Choose the first vertical
    
    - **Navigation:** `ros2` + `nav2` + `simulation` → `gazebo`, then
      `visualization` → `rviz2` or `foxglove`. Use `environments` before bring-up.
    - **Learned manipulation:** `lerobot` + `data` + `huggingface`, with
      `simulation` selecting MuJoCo/Gazebo/Isaac as the task requires. Add
      `isaac-sim`/`isaac-lab` only after their NVIDIA GPU requirements are proven.
    - **Hybrid or unfamiliar stack:** define module boundaries with `integration`,
      identify the costliest uncertainty, and spike that boundary before building
      the whole system.
    
    ### Route by build phase
    
    | Decision or work | Owning skill |
    |---|---|
    | Environment/reproducibility | `environments` |
    | Module boundaries, protocols, containers | `integration` |
    | ROS 2 substrate | `ros2` |
    | Mobile navigation/localization | `nav2` |
    | Simulator selection/sensor fidelity | `simulation` |
    | Modern ROS simulation | `gazebo` |
    | Lightweight non-ROS manipulation sim | `mujoco` |
    | NVIDIA photoreal simulation | `isaac-sim` |
    | NVIDIA RL/IL training | `isaac-lab` |
    | Manipulation policies/VLAs | `lerobot` |
    | Dataset sourcing/collection strategy | `data` |
    | Hub models, datasets, Jobs, Spaces | `huggingface` |
    | Visualization selection | `visualization` |
    | ROS desktop visualization | `rviz2` |
    | Remote/web ROS visualization | `foxglove` |
    | ML/data timelines | `rerun` |
    | Test strategy and smoke bar | `testing` |
    | Fixtures/worlds/datasets | `test-assets` |
    | Public interactive demo | `live-demo` |
    | Cloud Run deployment mechanics | `cloud-run` |
    | RunPod GPU execution | `runpod` |
    | External example mining | `mining` |
    | Learning consolidation/absorption | `learning-loop` |
    | Skill authoring/quality | `skill-author` |
    
    ## Platform gotchas
    
    - Isaac Sim/Lab require a supported NVIDIA RTX-class GPU and do not run on
      macOS. Load `isaac-sim` and verify its current floor before selecting it.
    - Native ROS 2/Gazebo development is Linux-centric. On macOS, choose a
      container or Linux remote through `environments`.
    - Headless remote work needs web/recorded visualization (`foxglove` or
      `rerun`) rather than assuming RViz2/display forwarding.
    - Cloud/GPU inventory, pricing, quotas, and framework versions are volatile.
      Verify them only when they affect the selected path; do not turn every design
      into a broad research pass.
    
    ## Customization
    
    - Scale the decision record to the project. A small one-process demo may need
      only outcome, chosen stack, environment, pass bar, and risks. Add modules,
      communications, data, or rollout sections only when they contain decisions.
    - A discovered constraint may change a provisional choice without invalidating
      the whole design. Record the evidence and pivot; request another direction
      decision only when the user-visible outcome or material scope changes.
    - Decompose an idea with several independent products into ordered slices. Fully
      design only the first slice; record later slices as non-binding follow-ups.
    
    ## References
    
    - `references/stack-selection.md`: simulator, middleware, and training decision
      trees; verify volatile defaults before use.
    - `references/scaffold-patterns.md`: starting layouts for navigation and
      manipulation applications.
    - `references/brief-template.md`: concise decision-record template with
      optional depth.
    - `examples/architecture-brief-example.md`: filled hypothetical brief (status:
      unverified).
    - Upstream: [ROS 2](https://docs.ros.org/), [Nav2](https://docs.nav2.org/),
      [Gazebo](https://gazebosim.org/docs/),
      [LeRobot](https://github.com/huggingface/lerobot),
      [Isaac Sim](https://docs.isaacsim.omniverse.nvidia.com/), and the MIT-licensed
      [Superpowers brainstorming skill](https://github.com/obra/superpowers), whose
      useful exploration/alternatives/YAGNI principles were adapted here without
      its global classification and repeated-approval gates.
    
    ## Changelog
    
    - 2.0.0 (2026-08-27): absorbed lightweight brainstorming into architect;
      replaced global classification/repeated approval with one direction gate;
      made the brief a scalable decision record; added risk-first/user-visible
      slicing; narrowed the heavy Claude architect agent; repointed bootstrapping
      to robium-apps.
    - 1.9.0 (2026-08-24): route RunPod inventory, provisioning, diagnostics,
      validation, billing, and cleanup to the new generic `runpod` skill.
    - 1.8.1 (2026-08-03): style pass; removed em dashes throughout.
    - 1.8.0 (2026-08-02): routing: learning-loop added; retired skill-updater.
    - 1.7.0 (2026-08-02): routing table gained mining; skill-author narrowed.
    - 1.6.1 (2026-08-01): anchor IDs added to claim-bearing items.
    - 1.6.0 (2026-08-01): routing table gained cloud-run.
    - 1.5.0 (2026-07-31): routed MuJoCo manipulation simulation.
    - 1.4.0 (2026-07-18): routing table gained test-assets.
    - 1.3.1 (2026-07-18): refreshed transferred repository links.
    - 1.3.0 (2026-07-15): added backlog kickoff triggers and prior brainstorming
      handoff.
    - 1.2.0 (2026-07-13): routing map gained live-demo.
    - 1.1.1 (2026-07-12): clarified dated provenance.
    - 1.1.0 (2026-07-12): made scaffolding bootstrap-first.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related