{
  "schema_version": 1,
  "type": "app",
  "slug": "adom-lbr",
  "title": "adom-lbr",
  "brief": "EAGLE .lbr generator, 7-check linter, and bidirectional KiCad converter",
  "version": "0.1.1",
  "tags": [],
  "license": "MIT",
  "sample_prompts": [
    {
      "label": "Generate lbr",
      "prompt": "Convert RP2040.kicad_sym to an EAGLE .lbr"
    },
    {
      "label": "Lint",
      "prompt": "Lint this .lbr file for Fusion compatibility"
    },
    {
      "label": "Import",
      "prompt": "Convert this .lbr back to KiCad format"
    },
    {
      "label": "Check",
      "prompt": "Validate the .kicad_sym with kicad-cli"
    }
  ],
  "install": {
    "binary_name": "adom-lbr",
    "install_dir": "",
    "install_hint": "",
    "version_cmd": ""
  },
  "readme": "# adom-lbr\n\nEAGLE .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.\n\n![adom-lbr lint output](docs/screenshot-lint.png)\n\n## Demo video\n\nhttps://wiki-ufypy5dpx93o.adom.cloud/static/apps/adom-lbr/eda-tools-tour-v4.webm\n\n82-second narrated tour: lint a broken .lbr (catches errors), generate a valid one, then deliver symbols and footprints to KiCad 10 and Fusion 360.\n\n## Why this exists\n\nFusion 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.\n\nKiCad users can import any `.lbr` back to `.kicad_sym` with `adom-lbr import`, validated via kicad-cli.\n\n## Install\n\n```\nadompkg install adom-lbr\n```\n\n## Quick start\n\n```bash\n# Fusion user: KiCad symbol to EAGLE .lbr\nadom-lbr generate --sym RP2040.kicad_sym -o RP2040.lbr\n\n# KiCad user: EAGLE .lbr to KiCad symbol\nadom-lbr import RP2040.lbr -o RP2040.kicad_sym\nadom-lbr check RP2040.kicad_sym\n\n# Lint any .lbr for Fusion compatibility\nadom-lbr lint suspicious.lbr\n```\n\n## Screenshots\n\n### RP2040 in Fusion 360 Electronics\n\nThe generated `.lbr` opens in Fusion with all 57 pins, complete deviceset, and the symbol rendering correctly. The device table shows the package and connect mappings that make Fusion recognize the component.\n\n### Linting the old broken .lbr\n\nThe linter catches the exact bugs that cause Fusion to show \"No Components\":\n\n```json\n{\n  \"passed\": false,\n  \"errors\": [\n    {\"code\": \"empty-packages\", \"message\": \"Packages section is empty\"},\n    {\"code\": \"empty-connects\", \"message\": \"Device has no pin-to-pad connect mappings\"},\n    {\"code\": \"device-no-package\", \"message\": \"Device has no package attribute\"}\n  ]\n}\n```\n\n### Round-trip into KiCad 10\n\nThe same `.lbr` imported back to `.kicad_sym`, validated by kicad-cli, and installed as a KiCad 10 symbol library. Renders with all pins, body rectangle, and description.\n\n## Dependencies\n\n| Dependency | Required? | Why |\n|---|---|---|\n| None (runtime) | -- | Standalone Rust binary with no runtime dependencies |\n| kicad-cli | Optional | Used by `check` command to validate `.kicad_sym` output via headless SVG export |\n| adom-desktop | Optional | Used by adom-symbol's \"Send to\" button to deliver `.lbr` files to Fusion 360 on the user's desktop |\n\n**Upstream**: adom-symbol creates the `.kicad_sym` input. chip-fetcher downloads `.lbr` files from manufacturer sites.\n\n**Downstream**: generated `.lbr` opens directly in Fusion 360 Electronics. Imported `.kicad_sym` installs into KiCad via `kicad_install_library`.\n\n## Features\n\n- Bidirectional conversion: `.kicad_sym` to `.lbr` and `.lbr` to `.kicad_sym`\n- Generates complete EAGLE `.lbr` with symbol + placeholder SMD package + connect mappings\n- Handles duplicate pin names (IOVDD x6, DVDD x2) with EAGLE `@N` suffix convention\n- 7-check linter: empty-packages, empty-connects, device-no-package, duplicate-pin-name, connect-pad-missing, malformed-xml, no-symbol-layer\n- JSON lint output for programmatic use\n- `check` validates `.kicad_sym` via headless kicad-cli\n- Shell completions (bash/zsh/fish)\n\n## Talk to the AI\n\n**Generate:**\n- \"Generate an lbr from RP2040.kicad_sym\"\n- \"Convert this KiCad symbol to EAGLE format\"\n- \"Make a Fusion 360 library from this symbol\"\n\n**Import:**\n- \"Import this .lbr to KiCad format\"\n- \"Convert EAGLE library to .kicad_sym\"\n\n**Lint:**\n- \"Lint this .lbr file\"\n- \"Check if this library will work in Fusion\"\n- \"Why does Fusion show No Components?\"\n\n## Skills\n\n| Skill | Purpose |\n|---|---|\n| adom-lbr | Generate, import, lint, validate, check EAGLE .lbr / KiCad .kicad_sym files |\n\n## CLI reference\n\n| Command | Description |\n|---|---|\n| `generate --sym <file> [-o out] [--fp <file>] [--name <name>]` | KiCad `.kicad_sym` to EAGLE `.lbr` |\n| `import <file> [-o out]` | EAGLE `.lbr` to KiCad `.kicad_sym` |\n| `lint <file>` | Lint `.lbr`, output JSON with error codes |\n| `validate <file>` | Validate `.lbr`, human-readable output |\n| `check <file>` | Validate `.kicad_sym` via kicad-cli SVG export |\n| `health` | Print version |\n| `install` | Install Claude Code skill + shell completions |\n| `completions <shell>` | Generate bash/zsh/fish completions |\n",
  "author": {
    "id": "695820315b5f1e4db2fcf602",
    "name": "Kyle Bergstedt",
    "email": "[email protected]"
  },
  "visibility": {
    "public": true
  },
  "hero": null,
  "discovery_triggers": [],
  "discovery_pitch": null,
  "metadata": {},
  "created_at": "2026-05-28T05:28:50.646Z",
  "updated_at": "2026-05-28T05:28:50.646Z",
  "skills": []
}