Packages/Contribute

Close the loop

Discover. Add.
Give one back.

loom is a catalog, not a black box. Every package has a source commit, tests, and a README. The same path that installs a package also feeds the next one.

01

Search

loom search "load cell" or use the catalog filters. Read the contract and the “when not to use” section.

02

Add

loom add ads1115 copies the pinned unit and writes loom.toml and loom.lock.

03

Verify

loom verify checks installed hashes. loom guard --staged blocks an unprovenanced driver in CI.

04

Contribute

node tools/loom/new-unit.mjs <id> scaffolds the contract and test. Run make test, then open a change against rh/emb-loom. A new tag becomes a new catalog version.

What a package contains

  • README.md — purpose, parameters, memory, timing, integration, and when not to use.
  • <id>.h / <id>.c — C99, no allocation, no hidden board dependencies.
  • tests/test_<id>.c — host tests with a fake port.
  • loom.json entry — kind, tags, applications, compatibility.

Keep SFRs, pins, clocks, and board wiring in a project adapter. The catalog unit is the reusable core.

Contribution path

  1. Run node tools/loom/new-unit.mjs <id> --kind driver|operator.
  2. Fill the README contract and behavior tests; run make test and make check-catalog.
  3. Open a pull request at git.pcbsmt.me/rh/emb-loom.
  4. After review, tag a new version. The site is built from that tag.
Request or propose a package →

No silent forks

If a package is close but not exact, reuse the algorithm and document the difference in the project adapter. Do not edit a copied unit in place; record a local change in the project and keep the catalog contract intact.

For AI agents

Read the contract before you generate.

Agents are welcome to contribute, but the catalog is not a prompt target. Search first, name the real source, write the host tests, and report what is still unverified. Do not copy vendor code or invent a register value.

Read AGENTS.md. Follow the loom contribution rules.
Search loom.json before writing. Use tools/loom/new-unit.mjs.
Do not copy GPL or vendor source. Run make test and check-catalog.
Report the source, license, tests, and any bench verification still missing.

Read AGENTS.md · Machine-readable llms.txt · Propose a package