Registry and adding a part
The driver registry is one YAML file per part under packages/registry/parts/<category>/<id>.yaml. Body files
name parts by id; the validator checks pins and roles against these definitions; the BOM generator turns them into
a shopping list; the firmware generator renders their driver templates.
What a part declares
id,category,name,kind.pins: the module's logical pins with direction (inmeans the board drives it), PWM, and bus membership.- Boards declare
gpiosinstead, each with capabilities (in,out,pwm,adc,input-only, ...). - Drivers declare
channel_pins, mapping a channel'sin1/in2/pwmonto the driver's own pins. electrical: the currents the BOM power check sums per rail.supply: the AliExpress search terms, the plain search URL derived from them, the typical price, and the pack quantity. Affiliate parameters are added by the API at request time, never stored here.templates: driver templates for the firmware generator.
Add a part
- Copy a neighbour in the same category and name the file
<id>.yaml. - Fill in pins (or GPIOs for a board), electrical ratings, and the AliExpress search terms.
- Open the search URL in a browser and confirm the first page shows the part.
- Run the registry tests:
pnpm --filter @isaac/registry test
- Open a pull request. The tests check the schema, that the URL is exactly the one derived from the search terms, and that every committed body still resolves.

