app
Adom Library
Public Made by Adomby adom
adom-lbr — the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical adom-lbr JSON — symbol + footprint + 3D + pin↔pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.
← Commit history
Publish 1.0.0
7 files changed
+158−28
SKILL.mdadded+103@@ -0,0 +1,103 @@+---+name: adom-lbr+description: >+ EAGLE .lbr generator, linter, validator, and bidirectional KiCad converter.+ Converts .kicad_sym to .lbr and back. 7-check linter catches empty connects,+ missing pins, duplicate names. Trigger words: lbr, eagle, library, kicad+ convert, fusion library, lint lbr, generate lbr, import lbr, check lbr.+---++# adom-lbr++EAGLE .lbr generator, linter, validator, and KiCad converter. Converts between KiCad .kicad_sym and EAGLE .lbr formats so both Fusion 360 and KiCad users can share component libraries.++## Why this exists++Fusion 360 Electronics shows "No Components" when an .lbr file has an empty `<packages>` section or empty `<connects/>`. The old JS generator produced these broken files. adom-lbr generates a COMPLETE deviceset: symbol + placeholder SMD package + full pin-to-pad connect mappings.++KiCad users can import any .lbr file back to .kicad_sym with `adom-lbr import`, validated locally (Rust parser).++## Commands++```+adom-lbr generate --sym <path.kicad_sym> [-o output.lbr] [--fp <path.kicad_mod>] [--name <override>]+adom-lbr import <path.lbr> [-o output.kicad_sym]+adom-lbr lint <path.lbr>+adom-lbr validate <path.lbr>+adom-lbr check <path.kicad_sym>+adom-lbr health+adom-lbr install+adom-lbr completions <bash|zsh|fish>+```++## generate++Parses a KiCad .kicad_sym file and produces a valid EAGLE .lbr with:+- Symbol (body rectangle + pins with correct direction/rotation/length)+- Package (placeholder SMD pads for each pin number, courtyard outline)+- Deviceset with gate, device, and complete `<connect>` mappings++Auto-lints the output before writing. Exits 2 if lint fails.++## import++Parses an EAGLE .lbr and converts to KiCad .kicad_sym format. Handles:+- Pin direction mapping (EAGLE pwr/in/out/io/pas/nc → KiCad power_in/input/output/bidirectional/passive/unconnected)+- Pin rotation, length, position+- Body rectangle from layer 94 wires+- Description, reference prefix+- Pin numbers from connect mappings+- Strips EAGLE @N dedup suffixes back to clean names++## lint++Checks an existing .lbr for Fusion 360 compatibility. Outputs JSON with `passed`, `errors[]`, `warnings[]`.++Checks:+- `empty-packages` — packages section empty (fatal: Fusion shows "No Components")+- `empty-connects` — device has no connect mappings (fatal)+- `device-no-package` — device element missing package attribute (fatal)+- `duplicate-pin-name` — EAGLE requires unique pin names; use @suffix for power/NC duplicates+- `connect-pad-missing` — connect references a pad that doesn't exist in the package+- `malformed-xml` — unbalanced angle brackets+- `no-symbol-layer` — nothing on layer 94 (symbol body invisible)++## validate++Same as lint but human-readable output. Exits 0 = valid, 2 = errors found.++## check++Validates a .kicad_sym file by local Rust validation — checks structure, pins, properties, duplicate names. Use after `import` to verify the output before sending to a desktop KiCad instance.++## Duplicate pin handling++EAGLE requires unique pin names. When KiCad has multiple pins with the same name (e.g., 6 IOVDD pins), the generator appends `@N` suffixes: `IOVDD`, `IOVDD@2`, `IOVDD@3`, etc. The `import` command strips these back.++## Workflows++### Fusion 360 user (has .kicad_sym, needs .lbr)+```+adom-lbr generate --sym RP2040.kicad_sym -o RP2040.lbr+# Send to Fusion via adom-desktop send_files + fusion_open_lbr+```++### KiCad user (has .lbr, needs .kicad_sym)+```+adom-lbr import RP2040.lbr -o RP2040.kicad_sym+adom-lbr check RP2040.kicad_sym+# Send to KiCad via adom-desktop send_files + kicad_install_library+```++### Pipeline (adom-symbol → both targets)+```+adom-symbol create <mpn> → .kicad_sym+adom-lbr generate --sym <mpn>.kicad_sym → .lbr (for Fusion)+# .kicad_sym already native for KiCad+```++### Lint any .lbr before use+```+adom-lbr lint suspicious.lbr+# JSON output with error codes for programmatic handling+```
bin/adom-lbradded+2@@ -0,0 +1,2 @@+#!/bin/bash+echo "adom-lbr v0.1.0 — replace this stub with your binary or script."
install.shadded+14@@ -0,0 +1,14 @@+#!/bin/bash+# install.sh for adom-lbr (app).+# Runs from the extracted module directory (~/project/adom_modules/adom-lbr/).+set -euo pipefail++DIR="$(cd "$(dirname "$0")" && pwd)"+cd "$DIR"++# App install: link the binary onto PATH.+BIN_DIR="${HOME}/.local/bin"+mkdir -p "$BIN_DIR"+install -m 0755 "$DIR/bin/adom-lbr" "$BIN_DIR/adom-lbr"+echo "Installed adom-lbr -> $BIN_DIR/adom-lbr"+
package.jsonadded+11@@ -0,0 +1,11 @@+{+ "slug": "adom-lbr",+ "version": "1.0.0",+ "type": "app",+ "description": "An EAGLE .lbr generator, linter and converter from KiCad sources — delivers to KiCad, Fusion 360, Altium and OrCAD. Standalone Rust, no local EAGLE.",+ "dependencies": {},+ "tags": ["eda","kicad","eagle","lbr","fusion360","library"],+ "hero": { "type": "image", "path": "screenshots/hero.png" },+ "scripts": { "install": "./install.sh", "uninstall": "./uninstall.sh" },+ "needs_sudo": false+}
page.json+21−28@@ -1,36 +1,29 @@ {- "schema_version": 1, "slug": "adom-lbr",- "type": "app", "version": "1.0.0",- "title": "adom-lbr",- "brief": "An EAGLE .lbr generator, linter, and validator for Fusion 360 Electronics, built from KiCad sources.",- "readme": "# adom-lbr\n\n**An EAGLE `.lbr` generator, linter, and validator for Fusion 360 Electronics — built from KiCad sources.**\n\nadom-lbr turns a KiCad `.kicad_sym` (and optional `.kicad_mod`) into a true EAGLE `.lbr` with a complete deviceset — symbol + package + pin→pad connects — that Fusion 360 Electronics imports cleanly. It can also synthesize a placeable symbol from a footprint's pads when there's no schematic symbol, convert an `.lbr` back to KiCad, and verify a library through `service-kicad`. Standalone Rust, no Node, no gallia.\n\n## What it does\n\n- **`generate`** — `.kicad_sym` (+ `.kicad_mod`) → native `.lbr`, lint-checked for Fusion compatibility.\n- **`lint` / `validate`** — catch the things Fusion rejects: missing connects, incomplete devicesets, bad pad maps.\n- **`import`** — EAGLE `.lbr` → KiCad `.kicad_sym`.\n- **Live app** — a viewer that lints the loaded `.lbr` and shows symbols / packages / devicesets / pins / pads at a glance.\n\n## Send to\n\nFusion 360 (open the `.lbr` directly), Altium / OrCAD (download the `.lbr` + import steps; native exporters on the roadmap), KiCad (converted back to `.kicad_sym`).\n\n## Part of the Adom EDA family\n\nUsed by **chip-fetcher** and the Send-to flow across **adom-symbol** and **adom-footprint**; pairs with **ds2sf**.\n\n## Run it\n\n```bash\nadom-lbr generate --sym part.kicad_sym --fp part.kicad_mod --name PART --output part.lbr\nadom-lbr serve --port 8784 # live linter app (AI-drivable)\n```\nMIT, contributions welcome.\n",- "install": {- "binary_name": "adom-lbr",- "install_dir": "",- "install_hint": "",- "version_cmd": ""+ "type": "app",+ "description": "An EAGLE .lbr generator, linter and converter from KiCad sources — delivers to KiCad, Fusion 360, Altium and OrCAD. Standalone Rust, no local EAGLE.",+ "dependencies": {},+ "tags": [+ "eda",+ "kicad",+ "eagle",+ "lbr",+ "fusion360",+ "library"+ ],+ "hero": {+ "type": "image",+ "path": "screenshots/hero.png"+ },+ "scripts": {+ "install": "./install.sh",+ "uninstall": "./uninstall.sh" },+ "needs_sudo": false,+ "visibility": "public", "author": {- "id": "6738b00a4dc87b8adbb0a5a3", "name": "John Lauer", "email": "[email protected]"- },- "tags": [],- "license": "proprietary",- "visibility": {- "public": true- },- "hero": {- "type": "image",- "path": "docs/hero.png"- },- "sample_prompts": [],- "discovery_triggers": [],- "discovery_pitch": null,- "metadata": {},- "created_at": "2026-06-21T21:37:23.834Z",- "updated_at": "2026-06-21T21:37:23.834Z",- "skills": []+ } }
screenshots/hero.pngadded⋯ 1 unchanged line ⋯
uninstall.shadded+7@@ -0,0 +1,7 @@+#!/bin/bash+# uninstall.sh for adom-lbr (app).+set -euo pipefail++rm -f "${HOME}/.local/bin/adom-lbr"+echo "Uninstalled adom-lbr"+