Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/robium-ai/robium/environmentsnpx skills add robium-ai/robium --skill environmentsgit clone --depth 1 https://github.com/robium-ai/robiumWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/robium-ai/robium/environments)<a href="https://agentmods.dev/skills/robium-ai/robium/environments"><img src="https://agentmods.dev/badge/skills/robium-ai/robium/environments.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00162 | $0.05288 |
| Opus 5 | $0.00081 | $0.02644 |
| Sonnet 5 | $0.00032 | $0.01058 |
| Haiku 4.5 | $0.00016 | $0.00529 |
Grade C, and why
environments scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Hidden instructionshighPrompt injection
Directives inside HTML comments, invisible characters or bidirectional overrides are read by the model and not by the person reviewing the file.
- **Never `pip install` into the system Python.** <!-- id: never-pip-install-system-python --> Not on the host, not inside This is a copy
88% identical to environments — 64 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 333 lines — stays where its author put it; the contents beside it link to each section on GitHub.
environments
The environment-strategy umbrella for robium. Every robium build needs an answer
to "how does this run, identically, on my laptop and on whatever server it ends
up on" before the first line of application code is written. This skill decides
uv vs venv vs Docker, and, once Docker is chosen, how to get GPU passthrough
and remote/headless display right. It does not own multi-module application
Dockerfiles or compose wiring across nodes; that's integration.
When to use this skill
- Starting any new robotics project and the environment strategy isn't decided yet; this is a required early step, not an optional one.
- The trigger phrases in the description: 'uv', 'venv', 'virtualenv', 'docker for this project', 'reproducible environment', 'GPU in container'.
- Debugging "works on my machine but not on the server": almost always an environment-parity bug, not an application bug.
- Cross-references: go to the sibling skill instead when the question is:
- Wiring multiple app modules together, Dockerfiles for a multi-node app, or
compose files spanning services →
integration(this skill covers a single environment's shape;integrationcovers the app that runs in it). - Remote visualization once headless is decided →
foxglove. - ROS 2-specific package/build questions once Docker + ROS 2 is chosen →
ros2. - Picking a manipulation/training framework once the env is settled →
lerobot. - Provisioning, diagnosing, validating, or cleaning up RunPod compute after
the image/workload contract is chosen →
runpod. - Deploying a headless container to Google Cloud Run: the build → deploy path
and the sim-on-Cloud-Run gotchas →
cloud-run. - The whole-stack decision this feeds into →
architect(load that first if you haven't; it routes here).
- Wiring multiple app modules together, Dockerfiles for a multi-node app, or
compose files spanning services →
Key directives
- Delegation posture: embed. The decision logic (uv vs venv vs Docker) and the concrete patterns (pyproject.toml shape, Dockerfile shape, GPU/display flags) live in this skill and its references; this is a foundational, every-build concern, not a thin pointer to someone else's docs.
- Environment before code. Decide and record the environment strategy before writing application code. An undecided environment is an open risk, not a detail to fix later.
- Preflight the machine before deciding. Run
npx robium-ai doctor --json(the robium CLI, npm package robium-ai) at the start of an environment decision and read the report (platform/Apple Silicon, Docker daemon state, GPU, free disk, python3/uv) instead of re-deriving those facts with ad-hoc shell probes.npx robium-ai doctoris the human-readable variant. If npx is unavailable, fall back to probing manually; the decision logic below is unchanged either way. - Never
pip installinto the system Python. Not on the host, not inside a container's base image. Every install goes into a project-scoped uv environment (uv sync,uv run) or, inside Docker, a venv managed the same way. The only sanctioned exception is a deliberate, explicit--systemflag (orUV_SYSTEM_PYTHON=1) inside a container build stage that is itself disposable; seereferences/uv-patterns.md. - Every project states its env strategy in the architecture brief. If
you're routed here from
architect, write the choice (uv / venv / Docker, and why) intodocs/architecture-brief.md's env-strategy section before moving on; don't let it live only in your head or in a Dockerfile no one reads. - Local == remote is the acceptance test. An environment strategy isn't
done until you can state, concretely, why the same commands produce the
same result on a laptop and on a headless remote server (same base image
digest or lockfile, same Python/CUDA versions, no host-only assumptions). If
you can't state that, the strategy isn't finished; see the parity
checklist in
references/docker-patterns.md. - Never write image tags or version numbers from memory. Verify current
uv usage against docs.astral.sh/uv, current
ROS 2 image tags against
hub.docker.com/_/ros, and NVIDIA Container
Toolkit steps against
docs.nvidia.com
before committing them to a real project. Every example in this skill is
marked
status: unverifiedfor exactly this reason; treat it as a starting shape to re-check, not a pinned truth.
What ships with it
9 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 333 lines · 162 tokens per session scan C 9159d1f2e027
environments is a skill published in the GitHub repository robium-ai/robium (9 stars, last pushed 5d ago), licensed MIT. It adds 162 tokens to every session and 5,288 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it C with 1 finding (hidden instructions). It is 88% identical to environments, differing in 64 lines, and is treated as a copy.
Other skills, from other repositories
modular-decomposition
Runs a sequenced monolith-to-modular pipeline that sizes and inventories components, finds shared domain duplication, addresses flattening and hierarchy issues, analyzes coupling, then groups components into candidate domain-aligned units, with optional embedded DDD strategic analysis for bounded contexts. Use when…
module-migrate
Read existing in-tree ODH operator component code and produce a step-by-step extraction checklist for migrating it to a standalone module. Analyzes controller logic, webhooks, RBAC, embedded manifests, and DSC field mappings. Use when extracting a component from the monolithic operator into its own module repo.
apple-firmware-inspector
Apple firmware: inspect and reverse-engineer IPSWs, kernelcaches, dyld shared caches, private headers, entitlements, Mach-O binaries, KEXTs, and security internals with ipsw.
authorized-security-router
Route authorized defensive security and reverse-analysis tasks by scope, target type, user intent, and available toolchain before taking action. Use for APK review, static binary triage, frontend JavaScript security review, firmware inventory, malware/YARA analysis, API/LLM/supply-chain audit, security report…
step5-routing
Step 5 · Routing (engineering order, net by net; bounded self-help in place; wall review report before escalation; DRC clean or gap honestly documented).
flow-guide
Methodology guide for the zero-hardware, simulation-only PCB + firmware seven-step workflow (does NOT drive execution). Use when the user asks about this workflow, asks why one of its steps works the way it does, or starts a no-hardware hardware project — in that last case route them to the step skills instead of…