agentleFS
DexForceDexForce/EmbodiChain/AGENTS.md

EmbodiChain

AGENTS.md240 starsChanged 11 days agoApache-2.0View on GitHub

Read agent_context/MAP.yaml first for project context or code navigation, then follow .agents/skills/project-dev-context/SKILL.md. Load only the matched overview; follow its detail links when the request needs them. Verify relevant facts against current code before recommending a change. MAP.yaml is the sole topic inventory; conventions are loaded for context maintenance, not ordinary reads. Do not read docs/source/ unless the user asks for Sphinx documentation. Canonical skills live under .agents/skills/. .claude/skills/ and .github/copilot/ contain thin adapters, not independent instructions. The distribution and primary…

  • Installs packages

The file

Show its rules and text

We split this AGENTS.md into the rules it gives an agent

17 rules. About 0 are common, 3 are distinctive, and 14 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 14

    Very specific

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

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

    Read agent_context/MAP.yaml first for project context or code navigation, then follow .agents/skills/project-dev-context/SKILL.md.

    line 5
  2. Very specific:

    Keep import registration in the task-named module at extensions/embodichain_tasks/embodichain_tasks/<category-path>/<task>.py.

    line 75
  3. Very specific:

    Every inline runnable Gym config and reusable physical environment declares exactly one physics: default|newton backend.

    line 88
  4. Distinctive:

    When task analysis identifies algorithmic complexity, data layout, batching, memory use or synchronization costs as material to the …

    line 96
  5. Very specific:

    Run black==26.10.1, using black ., before every commit.

    line 102
  6. Very specific:

    Use /pre-commit-check for proportional checks.

    line 103
  7. Distinctive:

    Add only cases that close meaningful coverage gaps.

    line 107
  8. Very specific:

    Treat scripts/tutorials/ as examples, not production API test targets.

    line 108
  9. Very specific:

    When a change affects both a tutorial and production code, test the underlying production contract instead.

    line 112
  10. Very specific:

    Add from __future__ import annotations.

    line 118
  11. Very specific:

    Use @configclass for configuration objects.

    line 120
  12. Very specific:

    Update public API docs with /update-api-docs.

    line 125
  13. Very specific:

    When routed behavior changes, review affected context in the same change: python .agents/skills/project-dev-context/scripts/context.py …

    line 129
  14. Very specific:

    Follow the context skill's no-update/revise/add decision.

    line 131
  15. Very specific:

    Use .github/ISSUE_TEMPLATE/bug.md for [Bug Report] issues with a minimal reproduction and commit/OS/GPU/CUDA/driver details.

    line 137
  16. Very specific:

    Use .github/ISSUE_TEMPLATE/proposal.md for [Proposal] motivation and scope.

    line 139
  17. Distinctive:

    Keep branches and PRs focused on one logical change and use the PR template.

    line 140

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md 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
AGENTS.md

EmbodiChain — Developer reference

Project context

Read agent_context/MAP.yaml first for project context or code navigation, then follow .agents/skills/project-dev-context/SKILL.md. Load only the matched overview; follow its detail links when the request needs them. Verify relevant facts against current code before recommending a change. MAP.yaml is the sole topic inventory; conventions are loaded for context maintenance, not ordinary reads. Do not read docs/source/ unless the user asks for Sphinx documentation.

Canonical skills live under .agents/skills/. .claude/skills/ and .github/copilot/ contain thin adapters, not independent instructions.

Package and architecture

The distribution and primary import package are embodichain, lowercase and one word. The repository directory is EmbodiChain; the same wheel bundles official tasks as embodichain_tasks and concrete robot presets as embodichain_robots, with the same version and distribution metadata. Their sources live under extensions/, a repository container rather than a Python namespace. Keep the embodichain_ prefix for bundled extension modules.

AreaOwner
CLI dispatch / task discoveryembodichain/cli/
Shared numerical algorithmsembodichain/compute/
Shared asset downloads, cache and registryembodichain/data/
Online datasets and depth videoembodichain/data_pipeline/
Scene Engine and SimReady generationembodichain/gen_sim/
Simulation world, objects, sensors, solvers, planningembodichain/lab/sim/
Gym environments and manager functorsembodichain/lab/gym/
Task Program language, semantics, compiler, runtime and integrationsembodichain/lab/task_program/
Browser visualizationembodichain/lab/visualization/
RL algorithms, policies, collectors and trainersembodichain/learning/rl/
Real-device controllers / standalone toolsembodichain/lab/devices/, embodichain/toolkits/
Shared config and math utilitiesembodichain/utils/
Official task entry points / components / deploymentsextensions/embodichain_tasks/
Concrete robot configurations / model-owned asset definitions / calibrated defaultsextensions/embodichain_robots/

Generic robot runtime/configuration and dual-arm composition remain in embodichain/lab/sim/; lightweight catalog resolution lives in embodichain/robot_registry.py. Concrete robot presets register through the embodichain.robots catalog entry point. Concrete presets and migrated model-owned asset definitions use vendor/model namespaces in embodichain_robots. Shared download/cache machinery stays in embodichain/data; the embodichain.assets entry point registers robot assets. Concrete presets import from embodichain_robots; embodichain.lab.sim.robots owns only generic dual-arm composition.

Shared numerical algorithms belong to compute/<domain>/, with Warp kernels under private _warp/ packages. Compute must not import lab, simulation objects or environment managers. Stateful solvers remain in lab/sim/motion/solvers; contact-data adaptation belongs to sensors. New trajectory consumers import embodichain.compute.trajectory; existing utils/warp and pure lab/sim/utility/action_utils exports remain compatibility surfaces.

Motion APIs live under embodichain.lab.sim.motion.{solvers,planners,workspace,expansion}. motion/motion_generator.py owns MotionGenerator, MotionGenCfg, and MotionGenOptions, composing the planner backends. Planners do not re-export it. The motion parent and workspace analyzer exports remain lazy to preserve Robot initialization. Trajectory augmentation owns candidates, operators, coverage and generation bookkeeping; execution, reset and persistence belong to host integrations.

Task ownership

Official robot defaults and examples name end-effector control groups eef (single arm) or left_eef / right_eef (dual arm), alongside arm or left_arm / right_arm. This is a naming convention, not a schema restriction: custom control-part names remain valid and must not be automatically rewritten. URDF component, link and joint names are separate identifiers and retain their asset-defined spelling. Capabilities come from explicit configuration, not names.

Organize official tasks by family, optional subdomain and task identity. Keep import registration in the task-named module at extensions/embodichain_tasks/embodichain_tasks/<category-path>/<task>.py; configs belong under extensions/embodichain_tasks/configs/tasks/<category-path>/<task>/. Do not add a same-named Python package for one entry point or scenario / mdp modules when existing config fields and manager functors express the task.

Physical environments, robot/sensor embodiments, and Task Program semantic integration have separate owners. Component selections cannot duplicate the inline fields they own. A supported configuration-defined Task Program may omit the Python task module. Follow the authoritative configuration and registration contract and /add-task-env before adding a deployment.

Every inline runnable Gym config and reusable physical environment declares exactly one physics: default|newton backend. An environment component owns its optional matching physics_config; a deployment cannot repeat or override either field. Launcher --physics may confirm the file-owned backend but does not switch it. Use a separate environment config for each backend.

Code and validation

  • When task analysis identifies algorithmic complexity, data layout, batching, memory use or synchronization costs as material to the implementation, design and implement from a systems and HPC engineering perspective using implement-performance. Preserve numerical correctness and public contracts; validate material performance claims with representative measurements using /benchmark.
  • Run black==26.10.1, using black ., before every commit.
  • Use /pre-commit-check for proportional checks. Production fixes/features need focused behavioral coverage; existing tests may suffice. Before and after adding or extending tests, apply the test necessity review. Add only cases that close meaningful coverage gaps.
  • Treat scripts/tutorials/** as examples, not production API test targets. Do not create or expand tests whose primary subject is a tutorial, and do not import tutorial scripts into new tests, unless the user explicitly requests tutorial test coverage.
  • When a change affects both a tutorial and production code, test the underlying production contract instead. For tutorial-only changes, use existing syntax/import/static checks and do not add a new test file unless requested.
  • New source files use the Apache 2.0 copyright header from .agents/skills/pre-commit-check/SKILL.md, with DexForce's 2021–2026 copyright. Preserve existing third-party licenses.
  • Add from __future__ import annotations; fully annotate public APIs, prefer A | B, and guard circular imports with TYPE_CHECKING.
  • Use @configclass for configuration objects. Annotated MISSING defaults require cfg.validate() after assembly; construction may leave them unresolved.
  • Define __all__ for public modules. Use Google-style docstrings with Sphinx directives where they explain non-obvious behavior.
  • Manager functors have manager-specific signatures; use /add-functor.
  • Update public API docs with /update-api-docs; the read-only coverage gate is python docs/scripts/check_api_docs.py. Sphinx sources live in docs/source/; build with pip install -r docs/requirements.txt, then make -C docs html. For locale errors use LC_ALL=C.UTF-8 and LANG=C.UTF-8.
  • When routed behavior changes, review affected context in the same change: python .agents/skills/project-dev-context/scripts/context.py affected --base origin/main --explain. Follow the context skill's no-update/revise/add decision. Review does not require an edit when guidance remains accurate and sufficient; state the reason in the PR or task result.

Contribution routes

Use .github/ISSUE_TEMPLATE/bug.md for [Bug Report] issues with a minimal reproduction and commit/OS/GPU/CUDA/driver details; check duplicates first. Use .github/ISSUE_TEMPLATE/proposal.md for [Proposal] motivation and scope. Keep branches and PRs focused on one logical change and use the PR template.

SkillUse
/project-dev-contextNavigate, read, refresh or add project context
/add-task-envSelect environment-only, handwritten expert, Task Program or RL task route
/add-task-programAuthor, integrate, deploy, validate or repair a program
/add-embodiment-componentReuse a robot, sensors and optional skill profile
/add-semantic-callExpose an Atomic Skill as a Semantic Call
/add-atomic-actionAdd typed action planning/execution
/add-robotAdd robot config and kinematic-chain wiring
/add-solverAdd IK/FK solver, docs, tests and benchmark
/add-functorAdd observation, reward, event, action, dataset or randomization operation
/add-testAdd focused tests with project conventions
/benchmarkWrite a benchmark using project patterns
/implement-performanceDesign and implement performance-sensitive computation
/update-api-docsSynchronize public API documentation
/pre-commit-checkValidate readiness proportionally
/review-prReview a change for evidence-backed regressions
/prDraft or create a single or stacked PR
/releasePrepare or publish release artifacts

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.