agentleFS
berkeley-humanoidsberkeley-humanoids/Skills/skills/pixi-workspace/SKILL.md

pixi-workspace

Skill4 starsChanged 34 days agoCC0-1.0View on GitHub

Berkeley Humanoids pixi + ROS 2 workspace conventions. Use when creating, editing, or reviewing pixi.toml manifests, pixi tasks, or workspace scripts (activate, doctor, canup).

  • Reads credentials
  • Deletes or force-pushes

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 1

    1. berkeley-humanoids/skills★ 4100% same

    Edited · 0

    None found.

    Wrote their own version · 0

    None found.

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository8 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Every task carries description = "…": pixi task list is the menu.

    line 12
  2. Very specific:

    No rosdep, no apt — pixi.toml is the dependency source of truth.

    line 98

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Pixi Workspace

Every Berkeley Humanoids pixi workspace exposes the same pixi task interface: a universal maintenance core plus a reserved vocabulary for the deployment and utility tasks each workspace defines. Tasks are thin wrappers over canonical commands (ros2 launch/run, colcon), never a replacement layer; everything keeps working verbatim inside pixi shell.

General Guideline

  • Every task carries description = "…": pixi task list is the menu. _-prefixed tasks are hidden plumbing.
  • Launch-wrapping tasks are arg-less command strings so trailing key:=value forwards verbatim. Don't use typed args on them.
  • No deployment or utility task may auto-build — a hardware bringup must never trigger a surprise rebuild. Only build chains setup. If a prerequisite is missing, print an error that says how to fix it.
  • Where a new entry point goes (first rule that matches):
    1. operates on the workspace (fetch/build/verify) → maintenance task, universal names only;
    2. everyday robot scenario or utility → workspace task (reserved vocabulary where it applies, free kebab-case otherwise);
    3. needs root / mutates host state (CAN buses, kernel) → scripts/*.sh run with explicit sudo, never a task;
    4. rarely used / one-shot → no task; document the canonical command (pixi run ros2 … or pixi shell then ros2 …).
  • Forbidden names: install/shell (shadow pixi verbs), run/start (redundant next to the vocabulary), launch-* prefixes, colon namespacing (build:all), same-name tasks in multiple environments.

Maintenance Tasks

The universal core — every developer-facing workspace provides these five, names and semantics reserved:

TaskMeaningRules
setupfetch/prepare sources beyond pixi itself (vcs import, fetch scripts)idempotent and cached (canonical shape below); safe to re-run; chained by build
buildbuild the workspace's default libraries with colcondepends-on = ["setup"]; style flags come from config/colcon-defaults.yaml, only semantic selection flags (--packages-skip-regex, --packages-up-to) appear inline
testrun the workspace's tests, linters excludedcolcon test … --ctest-args -LE linter; omit only if the workspace truly has no tests
cleanwipe the colcon overlayexactly rm -rf build install log; never touches src/ or .pixi/
doctorworkspace health check (scripts/doctor.sh)checks: workspace root, env active, /opt/ros contamination (hard fail), sources imported, overlay built + sourced, ROS_DOMAIN_ID; warnings for fixable, non-zero for fatal

Day one is one command: pixi run build (pixi self-heals the env; setup is chained and cached), verified by pixi run doctor.

Archetype-local extras are allowed (with descriptions), never required of other workspaces — dev workspace: build-all (adds the EtherCAT/Prime lane), test-result (singular, matches the colcon verb), lint (the .githooks ament linter set), check (= test + lint), gen-dds, test-dds; buildfarm manifest: setup (hidden _import + _overlay), package, publish — the packaging verb is package, never build*.

Robot Deployment Tasks

Reserved names: a workspace that has the concept must use the name; the stack each name brings up is the workspace's own call (state it in the task description).

TaskMeaning
sim / sim-<scene>bring up the robot stack in simulation — environment only, no policy
real / real-<scene>real hardware bringup (pass hardware_config:=, calibration_file:=)
policy / policy-<task>prepare + load the control policy against an already-running stack (pass wandb_run_path:= or checkpoint_file:=)
deploy-simone-command sim2sim deployment = bringup + policy in one (pass wandb_run_path:= or checkpoint_file:=)
deploy-realone-command real deployment = hardware bringup + policy in one (pass wandb_run_path:= / checkpoint_file:=, hardware_config:=, calibration_file:=)
vizlive state viewer of a running robot (viewer:=viser default, optionally viewer:=rerun, viewer:=rviz)
calibraterun calibration procedure; writes calibration.yaml
  • Grammar: <scenario>[-<qualifier>], kebab-case, at most one qualifier, encoding only the primary task variant. All secondary parameters stay ROS launch arguments:
    • Good: pixi run sim-reach robot:=g1 policy:=latest
    • Bad: pixi run sim-unitree-g1-reach-latest
  • Unqualified = the workspace's default target.
  • deploy-* wraps a combined launch file — two blocking bringups can't be chained with depends-on.

Debugging and Utility Tasks

Free kebab-case, verb-first where natural; each is a one-line wrapper over the canonical ros2 run command, so its meaning can't drift from the tool it wraps.

TaskMeaning
ping-bussingle-actuator GetDeviceId ping — no Enable, safe on a powered robot
scan-busscan a CAN bus for Robstride device ids (read-only)
profile-buslink probe: RTT/jitter (inert) or +lumped delay (PRBS torque)

Rarely-used companions (the profile report/plot generator, the static URDF inspector, the MIT slider GUI) deliberately have no task — document their canonical ros2 run/launch forms instead.

Environment

  • The canonical setup shape (all three parts required — an uncached vcs import re-fetches every remote and fails offline; without --skip-existing it resets locally-checked-out branches to pins):
[tasks.setup]
cmd = "vcs import --skip-existing --input <repo>.repos src && mkdir -p build && touch build/.setup-stamp"
inputs = ["<repo>.repos"]
outputs = ["build/.setup-stamp"]
description = "Import third-party source deps — idempotent, cached on the .repos file"
  • Overlay sourcing via a guarded activation script (POSIX setup.sh, not setup.bash), never a bare install/setup.* entry:
[activation]
scripts = ["scripts/activate.sh"]
if [ -f "$PIXI_PROJECT_ROOT/install/setup.sh" ]; then
  . "$PIXI_PROJECT_ROOT/install/setup.sh"
fi
  • Colcon style flags (--symlink-install, compile-commands) go in config/colcon-defaults.yaml via COLCON_DEFAULTS_FILE in [activation.env], so manual colcon build == pixi run build.
  • [activation.env] always sets RCUTILS_COLORIZED_OUTPUT=1 + the console format; deployment workspaces pin their robot's ROS_DOMAIN_ID, the dev workspace leaves it unpinned.
  • Channels: https://prefix.dev/robostack-jazzy before https://prefix.dev/conda-forge (binary consumers put https://prefix.dev/berkeley-humanoids first). Single default environment; add features/environments only when dependencies genuinely diverge.
  • No rosdep, no apt — pixi.toml is the dependency source of truth.

Gotchas (verified the hard way)

  • ament_python console scripts install to lib/<pkg>/ (ros2 run location), never on PATH. If a CLI ever needs to be on PATH, also install a shim via data_files ('bin', [...]) — colcon then emits a path.sh hook for the package.
  • README quickstarts lead with the one-command tasks, then point at pixi task list instead of duplicating command tables.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.