#624 by GitHub stars

aklofas/kicad-happy

AI coding agent skills for KiCad electronics design. Works with Claude Code and OpenAI Codex. Analyze schematics, review PCB layouts, EMC pre-compliance, SPICE simulation, download datasheets, source components, and prep boards for fabrication.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/bom/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/datasheets/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/digikey/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/element14/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/emc/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/jlcpcb/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/kicad/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/lcsc/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/mouser/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/pcbway/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

skills/spice/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2fd9aa0fe2d6 → 2fd9aa0fe2d6

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2fd9aa0fe2d6

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 2fd9aa0fe2d620f36627d9221e8b1393987ae38e

git clone --filter=blob:none --no-checkout https://github.com/aklofas/kicad-happy.git .hotskills/aklofas-kicad-happy && git -C .hotskills/aklofas-kicad-happy checkout --detach 2fd9aa0fe2d620f36627d9221e8b1393987ae38e # Copy each selected skill directory from .hotskills/aklofas-kicad-happy into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/aklofas/kicad-happy.git .hotskills/aklofas-kicad-happy && git -C .hotskills/aklofas-kicad-happy checkout --detach 2fd9aa0fe2d620f36627d9221e8b1393987ae38e # Copy each selected skill directory from .hotskills/aklofas-kicad-happy into .cursor/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/aklofas/kicad-happy.git .hotskills/aklofas-kicad-happy && git -C .hotskills/aklofas-kicad-happy checkout --detach 2fd9aa0fe2d620f36627d9221e8b1393987ae38e # Copy each selected skill directory from .hotskills/aklofas-kicad-happy into .gemini/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/aklofas/kicad-happy.git .hotskills/aklofas-kicad-happy && git -C .hotskills/aklofas-kicad-happy checkout --detach 2fd9aa0fe2d620f36627d9221e8b1393987ae38e # Copy each selected skill directory from .hotskills/aklofas-kicad-happy into .opencode/skills/<skill-name>/
1.6kGitHub stars
39stars in 7 days
11skills in this repository
858commits in 30 days

Heat

7.8
  • Star growth, last 7 daysAhead of 93% of tracked repositories
  • Star growth, last 24 hoursAhead of 93% of tracked repositories
  • Rank movement, last 7 daysAhead of 69% of tracked repositories
  • Commits, last 30 daysAhead of 99% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Aug 2, 2026Nov 6, 20261,601

Individual skills in this repository

How it works

bom

When your agent uses it

BOM (Bill of Materials) management for electronics projects — the workflow skill that coordinates DigiKey, Mouser, LCSC, element14, JLCPCB, PCBWay, and KiCad skills around a unified BOM lifecycle. Create, update, and maintain BOMs with part numbers, costs, quantities stored as KiCad symbol properties. ALWAYS trigger this skill for any task involving component sourcing, pricing, ordering, distributor searches, BOM export, or fabrication preparation — even if the user names a specific distributor or fab house (e.g. "search DigiKey for...", "generate JLCPCB BOM", "order from Mouser"). This skill analyzes the schematic for sourcing gaps, recommends which distributor/fab skills to call for each gap, and writes results back as symbol properties — the agent (or user) performs the actual searches via the called skills. Also trigger on phrases like "what parts do I need", "order components", "how much will this cost", "export for JLCPCB", "find parts for this board", "compare pricing", or "check stock".

What it loads into context

Frontmatter

222 tokens

Always available to the agent

SKILL.md

5,284 tokens

When the skill is activated

Reference documents

7,386 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Related Skills
  2. Scripts
  3. Workflow
  4. BOM Corner Cases & Per-Component Notes
  5. Package/Footprint Cross-Reference
  6. BOM Diffing
  7. Interactive BOM (ibom)
  8. Reference Files
  9. Production Readiness Checklist
  10. Generated Files & Cleanup
  11. Tips

Scripts executed separately

  • scripts/bom_manager.py
  • scripts/edit_properties.py
  • scripts/kicad_sexp.py
  • scripts/sync_datasheet_urls.py
  • scripts/translate_bom_pnp.py

Files

  • ../../.claude-plugin/marketplace.jsonasset775 bytes
  • ../../.claude-plugin/marketplace.jsonasset775 bytes
  • ../../.claude-plugin/plugin.jsonasset659 bytes
  • ../../.claude-plugin/plugin.jsonasset659 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • SKILL.mdcore22,076 bytes
  • references/kicad-fields.mddoc3,308 bytes
  • references/ordering-and-fabrication.mddoc4,805 bytes
  • references/part-number-conventions.mddoc18,940 bytes
  • scripts/bom_manager.pyruns50,885 bytes
  • scripts/edit_properties.pyruns15,259 bytes
  • scripts/kicad_sexp.pyruns2,555 bytes
  • scripts/sync_datasheet_urls.pyruns13,934 bytes
  • scripts/translate_bom_pnp.pyruns23,843 bytes
Read SKILL.md

# BOM Management

BOM data lives in **KiCad schematic symbol properties** as the single source of truth. This skill orchestrates the full lifecycle: analyze the schematic, search distributors, validate parts, write properties back, export tracking CSVs, and generate order files.

## Related Skills

| Skill | Purpose |
|-------|---------|
| `kicad` | Read/analyze schematics, PCB, footprints |
| `digikey` | Search DigiKey, download datasheets (primary prototype source) |
| `mouser` | Search Mouser (secondary prototype source) |
| `lcsc` | Search LCSC (production/JLCPCB parts) |
| `element14` | Search Newark/Farnell/element14 (international) |
| `jlcpcb` | PCB fabrication & assembly ordering |
View the complete source on GitHub

Skills included

  • bom
  • datasheets
  • digikey
  • element14
  • emc
  • jlcpcb
  • kicad
  • lcsc
  • mouser
  • pcbway
  • spice

Repository facts

License
MIT
Created
Mar 9, 2026
Last pushed
Nov 7, 2026
Forks
149
Open issues
6
Project activity
Active

Rank over the last 12 weeks

Now #624 · best #535 · down 35 in 30 days

  1. #623 on Nov 1
  2. #622 from Nov 2 to Nov 3
  3. #623 on Nov 4
  4. #624 on Nov 5
  5. #622 on Nov 6
  6. #624 since Nov 7
81 earlier periods
  1. #593 on Aug 2
  2. #568 on Aug 8
  3. #577 on Aug 9
  4. #600 on Aug 10
  5. #597 on Aug 11
  6. #588 on Aug 12
  7. #595 on Aug 13
  8. #591 on Aug 14
  9. #571 on Aug 15
  10. #586 on Aug 16
  11. #588 on Aug 17
  12. #602 on Aug 18
  13. #589 on Aug 19
  14. #587 on Aug 20
  15. #591 on Aug 21
  16. #569 on Aug 22
  17. #595 on Aug 23
  18. #593 on Aug 24
  19. #606 on Aug 25
  20. #589 on Aug 26
  21. #594 on Aug 27
  22. #609 on Aug 28
  23. #567 on Aug 29
  24. #565 on Aug 30
  25. #588 on Aug 31
  26. #598 on Sep 1
  27. #589 on Sep 2
  28. #585 on Sep 3
  29. #559 on Sep 4
  30. #552 on Sep 5
  31. #560 on Sep 6
  32. #564 on Sep 7
  33. #575 on Sep 8
  34. #559 on Sep 9
  35. #562 on Sep 10
  36. #551 on Sep 11
  37. #545 on Sep 12
  38. #549 on Sep 13
  39. #566 on Sep 14
  40. #551 on Sep 15
  41. #560 on Sep 16
  42. #554 on Sep 17
  43. #558 on Sep 18
  44. #543 on Sep 19
  45. #550 on Sep 20
  46. #552 on Sep 21
  47. #564 on Sep 22
  48. #555 on Sep 23
  49. #540 on Sep 24
  50. #535 on Sep 25
  51. #541 on Sep 26
  52. #557 from Sep 27 to Sep 28
  53. #576 on Sep 29
  54. #563 on Sep 30
  55. #552 on Oct 1
  56. #554 on Oct 2
  57. #538 on Oct 3
  58. #543 on Oct 4
  59. #550 on Oct 5
  60. #563 on Oct 6
  61. #565 on Oct 7
  62. #589 on Oct 8
  63. #580 on Oct 9
  64. #563 on Oct 10
  65. #564 on Oct 11
  66. #573 from Oct 12 to Oct 13
  67. #580 on Oct 14
  68. #577 on Oct 15
  69. #573 on Oct 16
  70. #564 on Oct 17
  71. #565 on Oct 18
  72. #581 on Oct 19
  73. #586 on Oct 20
  74. #589 on Oct 21
  75. #574 on Oct 22
  76. #565 on Oct 23
  77. #556 on Oct 24
  78. #614 on Oct 25
  79. #620 on Oct 28
  80. #621 from Oct 29 to Oct 30
  81. #622 on Oct 31

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 3, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 75 notes
  • .claude-plugin/marketplace.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • .claude-plugin/plugin.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/bom/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/datasheets/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/digikey/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/digikey/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/digikey/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/digikey/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/digikey/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/digikey/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 990 signals by file

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "aklofas",     "url": "https://github.com/aklofas"
  • Network accessline 6
    "name": "aklofas",     "url": "https://github.com/aklofas"   },
  • Network accessline 7
    "url": "https://github.com/aklofas"
  • Network accessline 8
    },   "repository": "https://github.com/aklofas/kicad-happy",   "license": "MIT",
  • Network accessline 9
    "repository": "https://github.com/aklofas/kicad-happy",

skills/bom/SKILL.md

  • Dangerous shell operationline 346
    rm -rf datasheets/
  • Dangerous shell operationline 349
    rm -rf bom/orders/
  • Dangerous shell operationline 352
    rm -f *.bak

skills/bom/references/kicad-fields.md

  • Network accessline 8
    | `Value` | Component value | `100nF`, `ESP32-S3-WROOM-1` | | `Footprint` | Library:footprint | `Capacitor_SMD:C_0402_1005Metric` | | `Datasheet` | URL to datasheet | `https://...` |
  • Network accessline 9
    | `Footprint` | Library:footprint | `Capacitor_SMD:C_0402_1005Metric` | | `Datasheet` | URL to datasheet | `https://...` | | `Description` | Part description | `100nF 16V X7R 0402 MLCC` |
  • Network accessline 10
    | `Datasheet` | URL to datasheet | `https://...` |

skills/bom/references/ordering-and-fabrication.md

  • Network accessline 9
    Paste into the bulk-add box at [digikey.com/ordering/shoppingcart](https://www.digikey.com/ordering/shoppingcart):
  • Network accessline 25
    https://www.digikey.com/classic/ordering/fastadd.aspx?part1=490-10698-1-ND&qty1=3&cref1=C1/C2/C5&part2=...
  • Network accessline 30
    `newcart=true` **starts a new empty cart**, and the shopping-cart page warns that creating a new cart deletes the items currently in it. Omit it to append. ([DigiKey FastAdd guide](https://forum.digikey.com/t/digikey-fastadd-bulk-add-parts-
  • Network accessline 32
    ([DigiKey FastAdd guide](https://forum.digikey.com/t/digikey-fastadd-bulk-add-parts-into-a-digikey-cart-via-third-party-tooling-and-urls/61356))
  • Network accessline 34
    **BOM Manager** — [digikey.com/en/resources/bom-manager](https://www.digikey.com/en/resources/bom-manager). Upload CSV/XLS/XLSX, map columns interactively. Accepts both DigiKey PNs and MPNs.
  • Network accessline 38
    Paste at [mouser.com/tools/part-list-import.aspx](https://www.mouser.com/tools/part-list-import.aspx) (requires login):
  • Network accessline 47
    **FORTE BOM Tool** — [mouser.com/bomtool](https://www.mouser.com/bomtool/). Upload CSV/XLS/XLSX, auto-matching MPNs.
  • Network accessline 51
    Upload at [lcsc.com/bom](https://www.lcsc.com/bom) (max 800 lines):
  • Network accessline 63
    Paste at [newark.com/quick-order](https://www.newark.com/quick-order):
  • Network accessline 72
    **BOM Upload** — [newark.com/bom-upload-landing](https://www.newark.com/bom-upload-landing). Accepts both Newark PNs and MPNs.
  • Network accessline 76
    **BOM Tool** — [arrow.com/en/bom-management-tool](https://www.arrow.com/en/bom-management-tool). Upload CSV/XLS/XLSX (max 3,000 lines). Accepts MPNs, Arrow PNs. Can purchase or request quotes directly.

skills/bom/references/part-number-conventions.md

  • Network accessline 70
    (property "Supplier 1" "Digikey" ...) (property "Supplier 1 Part #" "490-10698-1-ND" ...) (property "Supplier 1 Link" "https://www.digikey.com/..." ...)
  • Network accessline 71
    (property "Supplier 1 Part #" "490-10698-1-ND" ...) (property "Supplier 1 Link" "https://www.digikey.com/..." ...) (property "Supplier 2" "Mouser" ...)
  • Network accessline 72
    (property "Supplier 1 Link" "https://www.digikey.com/..." ...)
  • Network accessline 133
    (property "Manufacturer_Name" "Texas Instruments" ...) (property "Mouser Part Number" "595-TPS63020DSJR" ...) (property "Mouser Price/Stock" "https://www.mouser.com/..." ...)
  • Network accessline 134
    (property "Mouser Part Number" "595-TPS63020DSJR" ...) (property "Mouser Price/Stock" "https://www.mouser.com/..." ...) (property "STANDARD" "IPC 7351B" ...)
  • Network accessline 135
    (property "Mouser Price/Stock" "https://www.mouser.com/..." ...)
  • Network accessline 347
    | 2-3 digits + `-` + alphanum | Mouser | `81-GRM155R71C104KA8D`, `595-TPS63020DSJR` | | Alphanumeric 8+ chars, no hyphens | Often MPN | `GRM155R71C104KA88D`, `TPS61023DRLR` | | URL | Not a PN — datasheet or product link | `https://www.digik
  • Network accessline 348
    | Alphanumeric 8+ chars, no hyphens | Often MPN | `GRM155R71C104KA88D`, `TPS61023DRLR` | | URL | Not a PN — datasheet or product link | `https://www.digikey.com/...` | | Simple value (digits + unit) | Not a PN — component value | `100nF`, `
  • Network accessline 349
    | URL | Not a PN — datasheet or product link | `https://www.digikey.com/...` |

skills/bom/scripts/bom_manager.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/bom/scripts/edit_properties.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 29
    "C1": {             "MPN": "GRM155R71C104KA88D",             "Datasheet": "https://example.com/datasheet.pdf"
  • Network accessline 30
    "MPN": "GRM155R71C104KA88D",             "Datasheet": "https://example.com/datasheet.pdf"         }
  • Network accessline 31
    "Datasheet": "https://example.com/datasheet.pdf"

skills/bom/scripts/kicad_sexp.py

  • Executable scriptline 1
    Executable file

skills/bom/scripts/sync_datasheet_urls.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/bom/scripts/translate_bom_pnp.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3

skills/datasheets/datasheet_types/__init__.py

  • Executable scriptline 1
    Executable file

skills/datasheets/datasheet_types/base_block.py

  • Executable scriptline 1
    Executable file

skills/datasheets/datasheet_types/codec.py

  • Executable scriptline 1
    Executable file

skills/datasheets/datasheet_types/extraction.py

  • Executable scriptline 1
    Executable file

skills/datasheets/datasheet_types/pinout.py

  • Executable scriptline 1
    Executable file

skills/datasheets/datasheet_types/regulator.py

  • Executable scriptline 1
    Executable file

skills/datasheets/datasheet_types/spec_value.py

  • Executable scriptline 1
    Executable file

skills/datasheets/datasheet_types/trust_gating.py

  • Executable scriptline 1
    Executable file

skills/datasheets/examples/irlml6344.json

  • Network accessline 306
    "page_count": 10,     "sha256": "sha256:a617ed2f9bfebfa5e57d9e8e6ba8f165b6f8d88ce57f11b47aae99a8f8905d85",     "source_url": "http://www.irf.com"
  • Network accessline 307
    "sha256": "sha256:a617ed2f9bfebfa5e57d9e8e6ba8f165b6f8d88ce57f11b47aae99a8f8905d85",     "source_url": "http://www.irf.com"   },
  • Network accessline 308
    "source_url": "http://www.irf.com"
  • Network accessline 472
    "max": null,         "min": null,         "notes": "Total Gate Charge Qg; datasheet value 6.8 nC converted to C",
  • Network accessline 473
    "min": null,         "notes": "Total Gate Charge Qg; datasheet value 6.8 nC converted to C",         "typ": 6.8e-09,
  • Network accessline 474
    "notes": "Total Gate Charge Qg; datasheet value 6.8 nC converted to C",
  • Network accessline 488
    "max": null,         "min": null,         "notes": "Gate-to-Drain (Miller) Charge Qgd; datasheet value 2.4 nC converted to C",
  • Network accessline 489
    "min": null,         "notes": "Gate-to-Drain (Miller) Charge Qgd; datasheet value 2.4 nC converted to C",         "typ": 2.4e-09,
  • Network accessline 490
    "notes": "Gate-to-Drain (Miller) Charge Qgd; datasheet value 2.4 nC converted to C",

skills/datasheets/examples/mbrs540t3g.json

  • Network accessline 494
    "page_count": 5,     "sha256": "sha256:1064a599f53ed9cbb6fd5f349b98aa0bcb6eaa1cd434acec5911321a83a08f31",     "source_url": "https://www.onsemi.com"
  • Network accessline 495
    "sha256": "sha256:1064a599f53ed9cbb6fd5f349b98aa0bcb6eaa1cd434acec5911321a83a08f31",     "source_url": "https://www.onsemi.com"   }
  • Network accessline 496
    "source_url": "https://www.onsemi.com"

skills/datasheets/examples/stm32f103c8t6.json

  • Network accessline 2086
    "page_count": 116,     "sha256": "sha256:0596dd57693c93d214c9cb69186429883c853bad8650926def57c1ed3cdf2e9f",     "source_url": "https://www.st.com/resource/en/datasheet/stm32f103c8.pdf"
  • Network accessline 2087
    "sha256": "sha256:0596dd57693c93d214c9cb69186429883c853bad8650926def57c1ed3cdf2e9f",     "source_url": "https://www.st.com/resource/en/datasheet/stm32f103c8.pdf"   }
  • Network accessline 2088
    "source_url": "https://www.st.com/resource/en/datasheet/stm32f103c8.pdf"

skills/datasheets/prompts/transistor.md

  • Network accessline 51
    1. **Canonical SI units.** Resistance in Ω. Capacitance in F (NOT pF — store 650pF as `6.5e-10` with `unit: "F"`). Charge in C (NOT nC — store 6.8nC as `6.8e-9` with `unit: "C"`). Voltage in V. Current in A. Frequency in Hz (NOT MHz — store

skills/datasheets/references/extraction-schema.md

  • Network accessline 130
    | `analog` | Analog signal (feedback, sense, reference) | | `digital` | Digital signal (logic I/O, enable, clock) | | `no_connect` | NC pin — must not be connected |
  • Network accessline 131
    | `digital` | Digital signal (logic I/O, enable, clock) | | `no_connect` | NC pin — must not be connected | | `bidirectional` | Can be input or output depending on configuration |
  • Network accessline 132
    | `no_connect` | NC pin — must not be connected |
  • Network accessline 150
    - `"Bypass cap 100nF to GND, place within 3mm"` - `"Resistor divider from VOUT, Vout = 0.595 * (1 + R1/R2)"` - `"Do not connect"` (NC pins)
  • Network accessline 151
    - `"Resistor divider from VOUT, Vout = 0.595 * (1 + R1/R2)"` - `"Do not connect"` (NC pins) - `"Connect to VIN for always-on, or logic control. Do not float."`
  • Network accessline 152
    - `"Do not connect"` (NC pins)

skills/datasheets/schemas/base.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/base.schema.json",
  • Network accessline 55
    "additionalProperties": {         "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 56
    "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}       }
  • Network accessline 57
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 63
    "additionalProperties": {         "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 64
    "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}       }
  • Network accessline 65
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 71
    "additionalProperties": {         "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 72
    "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}       }
  • Network accessline 73
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 79
    "additionalProperties": {         "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 80
    "type": "array",         "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}       }
  • Network accessline 81
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 136
    },     "pinout": {       "$ref": "https://kicad-happy.local/datasheets/schemas/pinout.schema.json",
  • Network accessline 137
    "pinout": {       "$ref": "https://kicad-happy.local/datasheets/schemas/pinout.schema.json",       "description": "Full pinout array. Defers to pinout.schema.json so pin shape evolves independently."
  • Network accessline 138
    "$ref": "https://kicad-happy.local/datasheets/schemas/pinout.schema.json",

skills/datasheets/schemas/crystal.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/crystal.schema.json",
  • Network accessline 16
    "frequency": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 17
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Nominal resonant frequency in Hz. Store MHz as Hz (e.g. 12 MHz → 12000000). Store kHz as Hz (e.
  • Network accessline 18
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 21
    "frequency_tolerance": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 22
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Initial frequency tolerance at +25°C in ppm (unit: 'ppm'). Symmetric tolerance stored as min/ma
  • Network accessline 23
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 26
    "frequency_stability": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 27
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Frequency stability over the operating temperature range in ppm (unit: 'ppm'), referenced to +2
  • Network accessline 28
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 31
    "aging": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 32
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Long-term frequency aging drift in ppm (unit: 'ppm'). Condition should note the time window (e.
  • Network accessline 33
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 36
    "load_capacitance": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 37
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Specified load capacitance in Farads (unit: 'F'). Store pF as F (e.g. 12 pF → 1.2e-11, 18 pF → 
  • Network accessline 38
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 41
    "motional_capacitance": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 42
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Motional (series) capacitance C1 of the Butterworth–Van Dyke equivalent circuit in Farads (unit
  • Network accessline 43
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 46
    "motional_inductance": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 47
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Motional inductance L1 of the Butterworth–Van Dyke equivalent circuit in Henries (unit: 'H'). T
  • Network accessline 48
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 51
    "esr_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 52
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Maximum equivalent series resistance (ESR or R1) in Ohms (unit: 'Ω'). This is a maximum spec — 
  • Network accessline 53
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 56
    "drive_level_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 57
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Maximum allowable crystal excitation power in Watts (unit: 'W'). Store µW as W (e.g. 100 µW → 1
  • Network accessline 58
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 61
    "operating_temp_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 62
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Operating temperature range in degrees Celsius (unit: '°C'). Stored as min/max. Common grades: 
  • Network accessline 63
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 99
    },         "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"
  • Network accessline 100
    "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"         }
  • Network accessline 101
    "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"

skills/datasheets/schemas/diode.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/diode.schema.json",
  • Network accessline 16
    "vf": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 17
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Forward voltage drop (V). Multiple SpecValues per part when datasheet publishes at multiple If 
  • Network accessline 18
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 21
    "if_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 22
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Maximum forward current (A). Multiple SpecValues to disambiguate continuous (IF), average recti
  • Network accessline 23
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 26
    "ifsm": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 27
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Non-repetitive peak surge current (A). Single SpecValue per part typically. Condition carries p
  • Network accessline 28
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 31
    "vr_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 32
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Maximum reverse voltage (V). Multiple SpecValues to disambiguate VRRM (peak repetitive), VR (DC
  • Network accessline 33
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 36
    "breakdown_voltage": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 37
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Reverse breakdown voltage V_BR (V). Distinct from vr_max — represents the measured avalanche th
  • Network accessline 38
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 41
    "ir": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 42
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Reverse leakage current (A). Multiple SpecValues for different reverse voltage and junction tem
  • Network accessline 43
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 46
    "trr": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 47
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Reverse recovery time (s). Most relevant for switching, signal, and Schottky diodes. Typically 
  • Network accessline 48
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 51
    "cd": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 52
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Junction capacitance (F). Condition carries reverse voltage and test frequency (e.g. 'VR=0V, f=
  • Network accessline 53
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 56
    "vz": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 57
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Zener voltage (V). Null for all non-zener diode types. Condition carries test current Iz."
  • Network accessline 58
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 61
    "power_dissipation": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 62
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Continuous power dissipation (W). Condition typically carries ambient temperature Ta or lead te
  • Network accessline 63
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 66
    "tj_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 67
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Maximum operating junction temperature (°C). Both min (storage lower bound) and max populated w
  • Network accessline 68
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 76
    "rtheta_ja": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 77
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-ambient thermal resistance (K/W). Condition may specify board conditions (e
  • Network accessline 78
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 81
    "rtheta_jc": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 82
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-case thermal resistance (K/W). Null when not specified."
  • Network accessline 83
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 86
    "rtheta_jl": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 87
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-lead thermal resistance (K/W). Common for SMD packages (e.g. SMC, SMA). Nul
  • Network accessline 88
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 133
    },         "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"
  • Network accessline 134
    "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"         }
  • Network accessline 135
    "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"

skills/datasheets/schemas/extraction.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/extraction.schema.json",
  • Network accessline 81
    }     },     "base": {"$ref": "https://kicad-happy.local/datasheets/schemas/base.schema.json"},
  • Network accessline 82
    },     "base": {"$ref": "https://kicad-happy.local/datasheets/schemas/base.schema.json"},     "categories": {
  • Network accessline 83
    "base": {"$ref": "https://kicad-happy.local/datasheets/schemas/base.schema.json"},
  • Network accessline 87
    "description": "List of active category extensions for this MPN (e.g. ['regulator'] or ['regulator', 'supervisor'] for a PMIC). Each entry must match a sibling key carrying that category's extension payload."     },     "regulator": {"$ref"
  • Network accessline 88
    },     "regulator": {"$ref": "https://kicad-happy.local/datasheets/schemas/regulator.schema.json"}   }
  • Network accessline 89
    "regulator": {"$ref": "https://kicad-happy.local/datasheets/schemas/regulator.schema.json"}

skills/datasheets/schemas/fixtures/manifest.example.json

  • Network accessline 6
    "path": "LM2596-ADJ.pdf",       "mpns": ["LM2596-ADJ", "LM2596S-ADJ"],       "source_url": "https://www.ti.com/lit/ds/symlink/lm2596.pdf",
  • Network accessline 7
    "mpns": ["LM2596-ADJ", "LM2596S-ADJ"],       "source_url": "https://www.ti.com/lit/ds/symlink/lm2596.pdf",       "is_family": false
  • Network accessline 8
    "source_url": "https://www.ti.com/lit/ds/symlink/lm2596.pdf",

skills/datasheets/schemas/manifest.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/manifest.schema.json",

skills/datasheets/schemas/mcu.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/mcu.schema.json",
  • Network accessline 43
    "vdd_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 44
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Main power supply voltage range (unit: V). For most MCUs this is VDD or VCC. Condition carries 
  • Network accessline 45
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 48
    "vddio_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 49
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Separate I/O supply voltage range (unit: V), when the I/O power domain is independent of VDD. N
  • Network accessline 50
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 53
    "vdda_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 54
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Analog supply voltage range (unit: V) for ADC/DAC/PLL supplies (AVCC, VDDA, AVDD). Null when an
  • Network accessline 55
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 188
    "rtheta_ja": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 189
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-ambient thermal resistance (K/W or °C/W). Condition may specify board and c
  • Network accessline 190
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 193
    "rtheta_jc": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 194
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-case thermal resistance (K/W or °C/W). Null when not specified."
  • Network accessline 195
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 198
    "rtheta_jl": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 199
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-lead thermal resistance (K/W or °C/W). Common for some SMD packages. Null f
  • Network accessline 200
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 245
    },         "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"
  • Network accessline 246
    "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"         }
  • Network accessline 247
    "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"

skills/datasheets/schemas/opamp.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/opamp.schema.json",
  • Network accessline 31
    "vsupply_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 32
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Total supply voltage range V+ to V− (unit: V). For single-supply parts store as min/max of VDD−
  • Network accessline 33
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 40
    "iq_per_amp": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 41
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Quiescent current PER op-amp channel (unit: A). NOT total package current. Divide datasheet's t
  • Network accessline 42
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 45
    "gbw": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 46
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Gain-bandwidth product (unit: Hz — NOT MHz; store 1MHz as 1e6). The frequency at which open-loo
  • Network accessline 47
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 50
    "slew_rate": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 51
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Slew rate (unit: V/s — NOT V/µs; store 0.6V/µs as 6e5). Rate of output voltage change under lar
  • Network accessline 52
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 55
    "vos": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 56
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Input offset voltage (unit: V). Condition carries Vcm and supply. Multiple SpecValues for diffe
  • Network accessline 57
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 60
    "ib": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 61
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Input bias current (unit: A). BJT inputs are typically nA (e.g. 45nA → 4.5e-8); CMOS/JFET input
  • Network accessline 62
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 65
    "cmrr": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 66
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Common mode rejection ratio (unit: dB). Condition carries common mode input range and supply. H
  • Network accessline 67
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 70
    "psrr": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 71
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Power supply rejection ratio (unit: dB). Condition carries supply range. Higher is better."
  • Network accessline 72
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 75
    "vout_swing_high": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 76
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Output high swing headroom (unit: V — stored as positive headroom FROM V+). Rail-to-rail parts 
  • Network accessline 77
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 80
    "vout_swing_low": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 81
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Output low swing headroom (unit: V — stored as positive headroom FROM V−). Rail-to-rail parts s
  • Network accessline 82
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 85
    "output_drive_current": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 86
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Output source or sink current capability (unit: A). May be specified as short-circuit current (
  • Network accessline 87
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 103
    "rtheta_ja": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 104
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-ambient thermal resistance (K/W or °C/W). Condition may specify board and c
  • Network accessline 105
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 108
    "rtheta_jc": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 109
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-case thermal resistance (K/W or °C/W). Null when not specified."
  • Network accessline 110
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 113
    "rtheta_jl": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 114
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-lead thermal resistance (K/W or °C/W). Common for some SMD packages. Null f
  • Network accessline 115
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 160
    },         "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"
  • Network accessline 161
    "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"         }
  • Network accessline 162
    "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"

skills/datasheets/schemas/pinout.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/pinout.schema.json",
  • Network accessline 81
    "absolute_max": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 82
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Per-pin absolute-maximum ratings (voltage, current). null when the datasheet only publi
  • Network accessline 83
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 86
    "recommended": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 87
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Per-pin recommended operating ratings."
  • Network accessline 88
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 91
    "drive_strength": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 92
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Per-pin output drive strength (IOH, IOL)."
  • Network accessline 93
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},

skills/datasheets/schemas/plan.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/plan.schema.json",

skills/datasheets/schemas/regulator.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/regulator.schema.json",
  • Network accessline 16
    "vin_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 17
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Input voltage operating range. Typically a single SpecValue with min/max populated."
  • Network accessline 18
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 21
    "vout_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 22
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Output voltage range (fixed parts: single value; adjustable: min→max)."
  • Network accessline 23
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 26
    "iout_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 27
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Maximum output current. May carry multiple SpecValues for different conditions (ambient temp, p
  • Network accessline 28
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 31
    "reference_voltage": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 32
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Feedback reference voltage (adjustable parts only). Consumed by FS-001 and FB divider math."
  • Network accessline 33
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 52
    "cin_min": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 53
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Minimum input-capacitor value required for stable operation (datasheet app-info). Consumed by E
  • Network accessline 54
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 57
    "cout_min": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 58
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Minimum output-capacitor value required for stability."
  • Network accessline 59
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 62
    "inductor_range": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 63
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Recommended inductor value range (switching topologies only; null for LDO/charge-pump)."
  • Network accessline 64
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 67
    "switching_freq": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 68
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Nominal switching frequency (switching topologies only)."
  • Network accessline 69
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 72
    "dropout": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 73
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Dropout voltage (LDO only). null for switching topologies."
  • Network accessline 74
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 77
    "psrr": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 78
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Power-supply rejection ratio across frequency. May carry multiple SpecValues for different freq
  • Network accessline 79
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 82
    "line_regulation": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 83
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Line regulation across input-voltage range."
  • Network accessline 84
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 87
    "load_regulation": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 88
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Load regulation across output-current range."
  • Network accessline 89
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 103
    "type": ["array", "null"],           "description": "Permitted output-capacitor ESR window for stable operation. null when datasheet doesn't publish an ESR constraint (modern ceramic-friendly LDOs).",           "items": {"$ref": "https://ki
  • Network accessline 104
    "description": "Permitted output-capacitor ESR window for stable operation. null when datasheet doesn't publish an ESR constraint (modern ceramic-friendly LDOs).",           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/sp
  • Network accessline 105
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}
  • Network accessline 137
    "type": ["array", "null"],           "description": "Maximum allowed time gap between the rail this rail depends on and this rail coming into regulation. Consumed by ST-001 when the datasheet publishes an explicit max-delay constraint.",   
  • Network accessline 138
    "description": "Maximum allowed time gap between the rail this rail depends on and this rail coming into regulation. Consumed by ST-001 when the datasheet publishes an explicit max-delay constraint.",           "items": {"$ref": "https://ki
  • Network accessline 139
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"}

skills/datasheets/schemas/scout.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/scout.schema.json",

skills/datasheets/schemas/spec_value.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json",

skills/datasheets/schemas/transistor.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.local/datasheets/schemas/transistor.schema.json",
  • Network accessline 16
    "vceo_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 17
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Collector-Emitter breakdown voltage with base open (V). BJT only — null for FET/JFET/IGBT. Cond
  • Network accessline 18
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 21
    "vcbo_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 22
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Collector-Base breakdown voltage with emitter open (V). BJT only — null for FET/JFET/IGBT. Cond
  • Network accessline 23
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 26
    "vebo_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 27
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Emitter-Base breakdown voltage with collector open (V). BJT only — null for FET/JFET/IGBT. Cond
  • Network accessline 28
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 31
    "ic_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 32
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Continuous collector current (A). BJT only — null for FET/JFET/IGBT. Condition distinguishes co
  • Network accessline 33
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 36
    "hfe": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 37
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "DC current gain hFE (dimensionless — unit: null). BJT only — null for FET/JFET/IGBT. Multiple S
  • Network accessline 38
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 41
    "vce_sat": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 42
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Collector-Emitter saturation voltage (V). BJT only — null for FET/JFET/IGBT. Multiple SpecValue
  • Network accessline 43
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 46
    "vbe_sat": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 47
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Base-Emitter saturation voltage (V). BJT only — null for FET/JFET/IGBT. Multiple SpecValues for
  • Network accessline 48
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 51
    "ft": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 52
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Transition frequency / current gain-bandwidth product (Hz — NOT MHz; store 250MHz as 250e6). BJ
  • Network accessline 53
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 56
    "vds_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 57
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Drain-Source breakdown voltage (V). FET/JFET/IGBT only — null for BJT. Found in Absolute Maximu
  • Network accessline 58
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 61
    "vgs_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 62
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Gate-Source maximum voltage (V). FET/JFET only — null for BJT. Bipolar spec (min negative, max 
  • Network accessline 63
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 66
    "id_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 67
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Continuous drain current (A). FET/IGBT only — null for BJT. Multiple SpecValues for different a
  • Network accessline 68
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 71
    "rds_on": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 72
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Drain-Source on-resistance (Ω). MOSFET/JFET only — null for BJT/IGBT. Multiple SpecValues for d
  • Network accessline 73
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 76
    "vgs_th": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 77
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Gate threshold voltage (V). FET/IGBT only — null for BJT. Condition carries VDS=VGS and ID test
  • Network accessline 78
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 81
    "qg": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 82
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Total gate charge (C — NOT nC; store 6.8nC as 6.8e-9). FET/IGBT only — null for BJT. Condition 
  • Network accessline 83
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Total gate charge (C — NOT nC; store 6.8nC as 6.8e-9). FET/IGBT only — null for BJT. Condition carries ID, VDS, and VGS test poi
  • Network accessline 86
    "qgd": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 87
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Gate-Drain Miller charge (C — NOT nC; store 2.4nC as 2.4e-9). FET/IGBT only — null for BJT. Con
  • Network accessline 88
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Gate-Drain Miller charge (C — NOT nC; store 2.4nC as 2.4e-9). FET/IGBT only — null for BJT. Condition carries ID, VDS, and VGS t
  • Network accessline 91
    "ciss": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 92
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "MOSFET input capacitance (F — NOT pF; store 650pF as 6.5e-10). MOSFET only — null for BJT/JFET/
  • Network accessline 93
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 96
    "coss": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 97
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "MOSFET output capacitance (F — NOT pF). MOSFET only — null for BJT/JFET/IGBT. Condition carries
  • Network accessline 98
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 101
    "crss": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 102
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "MOSFET reverse transfer (Miller) capacitance (F — NOT pF). MOSFET only — null for BJT/JFET/IGBT
  • Network accessline 103
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 106
    "body_diode_vf": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 107
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Body diode forward voltage (V). MOSFET only — null for BJT/JFET/IGBT. Condition carries IS and 
  • Network accessline 108
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 111
    "power_dissipation": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 112
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Continuous power dissipation (W). Applies to all transistor types. Multiple SpecValues for diff
  • Network accessline 113
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 116
    "tj_max": {       "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 117
    "type": ["array", "null"],       "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},       "description": "Operating junction temperature range (°C). Applies to all transistor types. Populate min with l
  • Network accessline 118
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 126
    "rtheta_ja": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 127
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-ambient thermal resistance (K/W or °C/W). Condition may specify board condi
  • Network accessline 128
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 131
    "rtheta_jc": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 132
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-case thermal resistance (K/W or °C/W). Null when not specified."
  • Network accessline 133
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 136
    "rtheta_jl": {           "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 137
    "type": ["array", "null"],           "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},           "description": "Junction-to-lead thermal resistance (K/W or °C/W). Common for some SMD packages. Null f
  • Network accessline 138
    "items": {"$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json"},
  • Network accessline 183
    },         "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"
  • Network accessline 184
    "evidence": {           "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"         }
  • Network accessline 185
    "$ref": "https://kicad-happy.local/datasheets/schemas/spec_value.schema.json#/properties/evidence"

skills/datasheets/scripts/_smoke_v14_roundtrip.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/datasheets/scripts/datasheet_extract_cache.py

  • Executable scriptline 1
    Executable file

skills/datasheets/scripts/datasheet_features.py

  • Executable scriptline 1
    Executable file

skills/datasheets/scripts/datasheet_lookup.py

  • Executable scriptline 1
    Executable file

skills/datasheets/scripts/datasheet_page_selector.py

  • Executable scriptline 1
    Executable file

skills/datasheets/scripts/datasheet_score.py

  • Executable scriptline 1
    Executable file

skills/datasheets/scripts/datasheet_verify.py

  • Executable scriptline 1
    Executable file

skills/datasheets/scripts/merge_results.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/datasheets/scripts/plan_extraction.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/datasheets/scripts/validate_extraction_result.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/datasheets/scripts/validate_sanity_vector.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/digikey/SKILL.md

  • Network accessline 34
    1. **Create a DigiKey account** at [digikey.com](https://www.digikey.com) if you don't have one
  • Network accessline 35
    2. **Register an API app** at [developer.digikey.com](https://developer.digikey.com):
  • Network accessline 39
    - Select **"Product Information v4"** API    - OAuth type: **Client Credentials** (2-legged, no user login needed)    - Callback URL: `https://localhost` (not used for client credentials, but required)
  • Network accessline 40
    - OAuth type: **Client Credentials** (2-legged, no user login needed)    - Callback URL: `https://localhost` (not used for client credentials, but required)    - After creation, note the **Client ID** and **Client Secret**
  • Network accessline 41
    - Callback URL: `https://localhost` (not used for client credentials, but required)
  • Access to secretsline 46
    [Credential-related source omitted]
  • Network accessline 59
    **Base URL:** `https://api.digikey.com`
  • Network accessline 66
    [Credential-related source omitted]
  • Access to secretsline 66
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]
  • Network accessline 132
    "UnitPrice": 0.01,   "QuantityAvailable": 248000,   "ProductUrl": "https://www.digikey.com/...",
  • Network accessline 133
    "QuantityAvailable": 248000,   "ProductUrl": "https://www.digikey.com/...",   "DatasheetUrl": "https://...",
  • Network accessline 134
    "ProductUrl": "https://www.digikey.com/...",
  • Network accessline 135
    "DatasheetUrl": "https://...",
  • Network accessline 136
    "PhotoUrl": "https://...",
  • Network accessline 207
    https://www.digikey.com/en/products/result?keywords=<url-encoded-query>
  • Network accessline 210
    Examples: - `https://www.digikey.com/en/products/result?keywords=GRM155R71C104KA88D` (by MPN)
  • Network accessline 211
    - `https://www.digikey.com/en/products/result?keywords=GRM155R71C104KA88D` (by MPN)
  • Network accessline 212
    - `https://www.digikey.com/en/products/result?keywords=100nF+0402+X7R+16V` (by specs)
  • Network accessline 272
    "manufacturer": "Texas Instruments",       "description": "Boost converter",       "datasheet_url": "https://...",
  • Network accessline 273
    "description": "Boost converter",       "datasheet_url": "https://...",       "status": "ok",
  • Network accessline 274
    "datasheet_url": "https://...",
  • Network accessline 291
    # Direct URL download python3 <skill-path>/scripts/fetch_datasheet_digikey.py "https://www.ti.com/lit/gpn/tps61023" -o datasheet.pdf
  • Network accessline 292
    python3 <skill-path>/scripts/fetch_datasheet_digikey.py "https://www.ti.com/lit/gpn/tps61023" -o datasheet.pdf
  • Network accessline 298
    The script: - **OS-agnostic** — uses Python `requests` library (no wget/curl dependency). Falls back to `urllib` if `requests` isn't installed.
  • Network accessline 299
    - **OS-agnostic** — uses Python `requests` library (no wget/curl dependency). Falls back to `urllib` if `requests` isn't installed.
  • Network accessline 338
    Example message to the user: > I couldn't download the datasheet for ICE40UP5K-SG48I automatically — Lattice's site requires browser authentication. Here's the direct link: > https://www.latticesemi.com/-/media/LatticeSemi/Documents/DataShe
  • Network accessline 339
    > I couldn't download the datasheet for ICE40UP5K-SG48I automatically — Lattice's site requires browser authentication. Here's the direct link: > https://www.latticesemi.com/-/media/LatticeSemi/Documents/DataSheets/iCE/FPGA-DS-02008-1-9-iCE
  • Network accessline 340
    > https://www.latticesemi.com/-/media/LatticeSemi/Documents/DataSheets/iCE/FPGA-DS-02008-1-9-iCE40-Ultra-Plus-Family-Data-Sheet.ashx

skills/digikey/scripts/fetch_datasheet_digikey.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 15
    [Credential-related source omitted]
  • Access to secretsline 77
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 100
    [Credential-related source omitted]
  • Network accessline 101
    "grant_type": "client_credentials",         }).encode()         req = urllib.request.Request(
  • Network accessline 102
    }).encode()         req = urllib.request.Request(             "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 103
    req = urllib.request.Request(
  • Network accessline 104
    "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 106
    headers={"Content-Type": "application/x-www-form-urlencoded"},         )         with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 107
    )         with urllib.request.urlopen(req, timeout=15) as resp:             token_resp = json.loads(resp.read())
  • Network accessline 108
    with urllib.request.urlopen(req, timeout=15) as resp:
  • Access to secretsline 110
    [Credential-related source omitted]
  • Access to secretsline 135
    [Credential-related source omitted]
  • Network accessline 141
    try:         search_body = json.dumps({"Keywords": mpn, "Limit": 3}).encode()         req = urllib.request.Request(
  • Network accessline 142
    search_body = json.dumps({"Keywords": mpn, "Limit": 3}).encode()         req = urllib.request.Request(             "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 143
    req = urllib.request.Request(
  • Network accessline 144
    "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 150
    },         )         with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 151
    )         with urllib.request.urlopen(req, timeout=15) as resp:             data = json.loads(resp.read())
  • Network accessline 152
    with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 254
    req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 255
    with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 308
    if any(x in mpn_upper for x in ("ATMEGA", "ATTINY", "PIC", "SAMD", "SAM")):         alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"
  • Network accessline 309
    alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"         )
  • Network accessline 310
    f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"

skills/digikey/scripts/sync_datasheets_digikey.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 89
    [Credential-related source omitted]
  • Access to secretsline 90
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]
  • Access to secretsline 92
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Network accessline 102
    "grant_type": "client_credentials",         }).encode()         req = urllib.request.Request(
  • Network accessline 103
    }).encode()         req = urllib.request.Request(             "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 104
    req = urllib.request.Request(
  • Network accessline 105
    "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 107
    headers={"Content-Type": "application/x-www-form-urlencoded"},         )         with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 108
    )         with urllib.request.urlopen(req, timeout=15) as resp:             token_resp = json.loads(resp.read())
  • Network accessline 109
    with urllib.request.urlopen(req, timeout=15) as resp:
  • Access to secretsline 111
    [Credential-related source omitted]
  • Network accessline 123
    try:         search_body = json.dumps({"Keywords": mpn, "Limit": 3}).encode()         req = urllib.request.Request(
  • Network accessline 124
    search_body = json.dumps({"Keywords": mpn, "Limit": 3}).encode()         req = urllib.request.Request(             "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 125
    req = urllib.request.Request(
  • Network accessline 126
    "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 132
    },         )         with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 133
    )         with urllib.request.urlopen(req, timeout=15) as resp:             data = json.loads(resp.read())
  • Network accessline 134
    with urllib.request.urlopen(req, timeout=15) as resp:

skills/element14/SKILL.md

  • Network accessline 36
    1. **Register** at [partner.element14.com/member/register](https://partner.element14.com/member/register)
  • Network accessline 37
    - Free account — just username, email, password. No credit card needed.    - Provides a "courtesy usage allowance" (2 calls/sec, 1,000 calls/day — sufficient for normal use) 2. **Register an application** — after logging in, go to [My API K
  • Network accessline 38
    - Provides a "courtesy usage allowance" (2 calls/sec, 1,000 calls/day — sufficient for normal use) 2. **Register an application** — after logging in, go to [My API Keys](https://partner.element14.com/apps/mykeys) and click "Get API Keys"   
  • Network accessline 39
    2. **Register an application** — after logging in, go to [My API Keys](https://partner.element14.com/apps/mykeys) and click "Get API Keys"
  • Access to secretsline 48
    [Credential-related source omitted]
  • Access to secretsline 50
    [Credential-related source omitted]
  • Network accessline 59
    **Base URL:** `https://api.element14.com/catalog/products`
  • Network accessline 76
    GET https://api.element14.com/catalog/products
  • Network accessline 112
    "type": "TechnicalDataSheet",             "description": "Datasheet",             "url": "https://www.farnell.com/datasheets/74273.pdf"
  • Network accessline 113
    "description": "Datasheet",             "url": "https://www.farnell.com/datasheets/74273.pdf"           }
  • Network accessline 114
    "url": "https://www.farnell.com/datasheets/74273.pdf"
  • Access to secretsline 218
    [Credential-related source omitted]
  • Network accessline 243
    # Direct URL download python3 <skill-path>/scripts/fetch_datasheet_element14.py "https://www.farnell.com/datasheets/74273.pdf" -o datasheet.pdf
  • Network accessline 244
    python3 <skill-path>/scripts/fetch_datasheet_element14.py "https://www.farnell.com/datasheets/74273.pdf" -o datasheet.pdf
  • Network accessline 264
    https://www.newark.com/search?st=<query>
  • Network accessline 265
    https://uk.farnell.com/search?st=<query>

skills/element14/scripts/fetch_datasheet_element14.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 18
    [Credential-related source omitted]
  • Access to secretsline 74
    [Credential-related source omitted]
  • Access to secretsline 88
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Network accessline 111
    [Credential-related source omitted]
  • Access to secretsline 111
    [Credential-related source omitted]
  • Network accessline 113
    url = f"https://api.element14.com/catalog/products?{urllib.parse.urlencode(params)}"
  • Network accessline 115
    try:         req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 116
    req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 117
    with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 244
    req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 245
    with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 286
    if any(x in mpn_upper for x in ("ATMEGA", "ATTINY", "PIC", "SAMD", "SAM")):         alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"
  • Network accessline 287
    alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"         )
  • Network accessline 288
    f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"
  • Access to secretsline 418
    [Credential-related source omitted]
  • Access to secretsline 419
    [Credential-related source omitted]
  • Access to secretsline 421
    [Credential-related source omitted]
  • Network accessline 422
    else:                 print("Error: ELEMENT14_API_KEY environment variable not set", file=sys.stderr)                 print("Get a free key at https://partner.element14.com/member/register",
  • Network accessline 423
    [Credential-related source omitted]
  • Access to secretsline 423
    [Credential-related source omitted]
  • Network accessline 424
    print("Get a free key at https://partner.element14.com/member/register",
  • Access to secretsline 428
    [Credential-related source omitted]

skills/element14/scripts/sync_datasheets_element14.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 331
    [Credential-related source omitted]
  • Access to secretsline 379
    [Credential-related source omitted]
  • Access to secretsline 385
    [Credential-related source omitted]
  • Access to secretsline 481
    [Credential-related source omitted]
  • Access to secretsline 491
    [Credential-related source omitted]
  • Access to secretsline 492
    [Credential-related source omitted]
  • Access to secretsline 493
    [Credential-related source omitted]
  • Access to secretsline 494
    [Credential-related source omitted]
  • Access to secretsline 495
    [Credential-related source omitted]
  • Access to secretsline 606
    [Credential-related source omitted]
  • Access to secretsline 638
    [Credential-related source omitted]

skills/emc/references/emc-standards.md

  • Network accessline 9
    Source: [47 CFR §15.109](https://www.law.cornell.edu/cfr/text/47/15.109) — "Radiated emission limits."
  • Network accessline 64
    Source: [47 CFR §15.107](https://www.law.cornell.edu/cfr/text/47/15.107) — "Conducted limits."
  • Network accessline 105
    - 47 CFR Part 15 — [Cornell Law Institute](https://www.law.cornell.edu/cfr/text/47/part-15)

skills/emc/references/pcb-emc-rules.md

  • Network accessline 39
    - **Threshold:** 5mm warning, 8mm critical - **Rationale:** Connection inductance increases with trace length. For microstrip over ground, loop inductance is approximately 0.3–0.8 nH/mm (Bogatin Rule of Thumb #6: 50Ω FR4 ≈ 8.3 nH/inch ≈ 0.3
  • Network accessline 40
    - **Rationale:** Connection inductance increases with trace length. For microstrip over ground, loop inductance is approximately 0.3–0.8 nH/mm (Bogatin Rule of Thumb #6: 50Ω FR4 ≈ 8.3 nH/inch ≈ 0.33 nH/mm). However, connection inductance is
  • Network accessline 41
    - **Source:** Bogatin, E. "Total Loop Inductance per Length in 50-Ohm Transmission Lines." EDN Rule of Thumb #6. Hubing, T.H. ["Estimating the Connection Inductance of Decoupling Capacitors."](https://learnemc.com/estimating-connection-indu
  • Network accessline 120
    - **Threshold:** Average via spacing > 2× required λ/20 spacing - **Rationale:** Ground via stitching prevents parallel-plate waveguide modes from propagating between planes. λ/20 is the conservative recommendation for high-isolation applic
  • Network accessline 122
    - **Source:** [Altium — "Everything You Need to Know About Stitching Vias"](https://resources.altium.com/p/everything-you-need-know-about-stitching-vias) — λ/20 for >120 dB isolation, λ/10 for general use.
  • Network accessline 136
    - **Severity:** HIGH - **Threshold:** Two signal-type layers adjacent without ground/power plane between them - **Source:** Ott, H.W. ["PCB Stack-Up."](http://www.hottconsultants.com/techtips/pcb-stack-up-2.html) hottconsultants.com — recom
  • Network accessline 138
    - **Source:** Ott, H.W. ["PCB Stack-Up."](http://www.hottconsultants.com/techtips/pcb-stack-up-2.html) hottconsultants.com — recommended 4-layer stackup is SIG/GND/PWR/SIG with tight coupling (0.1–0.2mm) between signal and adjacent referenc
  • Network accessline 148
    - **Rationale:** Thin dielectric between power/ground pairs provides interplane capacitance for high-frequency decoupling. - **Value:** C = ε₀ × εr / d. For 0.15mm FR4 (εr=4.4): **~26 pF/cm²** (~168 pF/in²). - **Source:** [LearnEMC — "Decou
  • Network accessline 150
    - **Source:** [LearnEMC — "Decoupling for Boards with Closely-Spaced Power Planes"](https://learnemc.com/decoupling-for-boards-with-closely-spaces-power-planes). Armstrong, K. PCB EMC Design Part 4 — recommends thin prepreg between power/gr
  • Network accessline 179
    Source: Ott, *EMC Engineering*, Ch. 6; Paul, *Introduction to EMC*, Ch. 10; [LearnEMC DM Radiation Calculator](https://learnemc.com/ext/calculators/mremc/dmode.php).
  • Network accessline 189
    Source: Ott, *EMC Engineering*, Ch. 6; Paul, *Introduction to EMC*, Ch. 10; [LearnEMC CM EMI Calculator](https://learnemc.com/ext/calculators/mremc/cmode.php).
  • Network accessline 260
    - **Severity:** HIGH (external connectors), MEDIUM (general) - **Threshold:** Via spacing in 10mm radius exceeds 2× λ/20 for the connector's highest-frequency signal - **Source:** [Altium — "Everything You Need to Know About Stitching Vias"
  • Network accessline 262
    - **Source:** [Altium — "Everything You Need to Know About Stitching Vias"](https://resources.altium.com/p/everything-you-need-know-about-stitching-vias); Ott, *EMC Engineering*, Ch. 16.
  • Network accessline 367
    - Johnson, H.W. *High-Speed Signal Propagation: Advanced Black Magic.* Prentice Hall, 2003. - Bogatin, E. *Signal and Power Integrity — Simplified.* 3rd ed., Prentice Hall, 2018. - Bogatin, E. ["Rules of Thumb."](https://www.colorado.edu/fa
  • Network accessline 368
    - Bogatin, E. *Signal and Power Integrity — Simplified.* 3rd ed., Prentice Hall, 2018. - Bogatin, E. ["Rules of Thumb."](https://www.colorado.edu/faculty/bogatin/publications/rules-thumb) University of Colorado. - Hubing, T.H. [LearnEMC.com
  • Network accessline 369
    - Bogatin, E. ["Rules of Thumb."](https://www.colorado.edu/faculty/bogatin/publications/rules-thumb) University of Colorado.
  • Network accessline 370
    - Hubing, T.H. [LearnEMC.com](https://learnemc.com/) — EMC education, calculators, design guidelines.
  • Network accessline 371
    - Armstrong, K. "PCB Design Techniques for Lowest-Cost EMC Compliance." 8-part series, Cherry Clough Consultants. - Goldfarb, E. & Pucha, R. IEEE Microwave and Guided Wave Letters, Vol. 1, No. 6, 1991. - [47 CFR Part 15](https://www.law.cor
  • Network accessline 372
    - Goldfarb, E. & Pucha, R. IEEE Microwave and Guided Wave Letters, Vol. 1, No. 6, 1991. - [47 CFR Part 15](https://www.law.cornell.edu/cfr/text/47/part-15) — FCC regulations for unintentional radiators. - USB 2.0 Specification, §7.1.2 — Sig
  • Network accessline 373
    - [47 CFR Part 15](https://www.law.cornell.edu/cfr/text/47/part-15) — FCC regulations for unintentional radiators.
  • Network accessline 376
    - PCI Express Base Specification, §4.3.3 — Differential pair skew requirements. - HDMI 2.1 Specification, §4.2.1.1 — TMDS signaling requirements. - [Cadence — "Differential Pair Length Matching Guidelines"](https://resources.cadence.com/)
  • Network accessline 377
    - HDMI 2.1 Specification, §4.2.1.1 — TMDS signaling requirements. - [Cadence — "Differential Pair Length Matching Guidelines"](https://resources.cadence.com/) - [Altium — "Guide to Mode Conversion, Its Causes, and Solutions"](https://resour
  • Network accessline 378
    - [Cadence — "Differential Pair Length Matching Guidelines"](https://resources.cadence.com/)
  • Network accessline 379
    - [Altium — "Guide to Mode Conversion, Its Causes, and Solutions"](https://resources.altium.com/)

skills/emc/scripts/analyze_emc.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/emc/scripts/emc_envelope.py

  • Executable scriptline 1
    Executable file

skills/emc/scripts/emc_formulas.py

  • Executable scriptline 1
    Executable file
  • Network accessline 125
    # Source: Paul "Introduction to EMC" (Wiley, 2006) Eq. 10.12     # Verified: MSU EMC Lab Module 9 p.9-16 derives K=1.317e-14 (matches to 4 sig figs)     # URL: https://www.egr.msu.edu/emrg/sites/default/files/content/module9_radiated_emissi
  • Network accessline 127
    # URL: https://www.egr.msu.edu/emrg/sites/default/files/content/module9_radiated_emissions.pdf
  • Network accessline 185
    # Source: Paul "Introduction to EMC" (Wiley, 2006) Ch. 10     # Verified: MSU EMC Lab Module 9 p.9-20 derives coefficient 1.257e-6 exactly     # URL: https://www.egr.msu.edu/emrg/sites/default/files/content/module9_radiated_emissions.pdf
  • Network accessline 187
    # URL: https://www.egr.msu.edu/emrg/sites/default/files/content/module9_radiated_emissions.pdf
  • Network accessline 347
    # EQ-006: f_mn = (c/2√εr) × √((m/L)² + (n/W)²) (PCB cavity resonance)     # Source: Pozar "Microwave Engineering" (Wiley, 2011) Ch. 6     # URL: https://learnemc.com/ext/calculators/cavity_resonance/pcb-res.html
  • Network accessline 349
    # URL: https://learnemc.com/ext/calculators/cavity_resonance/pcb-res.html
  • Network accessline 396
    # EQ-007: BW = 0.35/t_r (3dB bandwidth from 10-90% rise time)     # Source: Bogatin "Signal Integrity - Simplified" (Prentice Hall, 2004) Ch. 1     # URL: https://www.edn.com/rule-of-thumb-1-bandwidth-of-a-signal-from-its-rise-time/
  • Network accessline 398
    # URL: https://www.edn.com/rule-of-thumb-1-bandwidth-of-a-signal-from-its-rise-time/
  • Network accessline 495
    # EQ-010: L = 0.2h(ln(4h/d)+1) nH (via self-inductance)     # Source: Goldfarb & Pucel, IEEE MGWL Vol.1 No.6 pp.135-137, June 1991     # URL: https://www.semanticscholar.org/paper/Modeling-via-hole-grounds-in-microstrip-Goldfarb-Pucel/a3f46
  • Network accessline 497
    # URL: https://www.semanticscholar.org/paper/Modeling-via-hole-grounds-in-microstrip-Goldfarb-Pucel/a3f4614877b750e7b7eec1dfa5924d5ce8b99301

skills/emc/scripts/emc_rules.py

  • Executable scriptline 1
    Executable file

skills/emc/scripts/emc_spice.py

  • Executable scriptline 1
    Executable file

skills/jlcpcb/SKILL.md

  • Network accessline 42
    - Parts library: `https://jlcpcb.com/parts/componentSearch?searchTxt=<query>`
  • Network accessline 43
    - Basic parts only: `https://jlcpcb.com/parts/basic_parts`
  • Network accessline 72
    Apply at `https://api.jlcpcb.com`. Access is gated — requires review based on order history and business profile.
  • Network accessline 152
    1. **Export gerbers** from KiCad (see `bom` skill for export settings) 2. Upload gerbers to `https://cart.jlcpcb.com/quote` — configure layers, thickness, color, qty
  • Network accessline 153
    2. Upload gerbers to `https://cart.jlcpcb.com/quote` — configure layers, thickness, color, qty
  • Network accessline 160
    2. **Export BOM** as CSV with LCSC part numbers (format above) 3. **Export CPL** (placement file) as CSV (see `bom` skill for format) 4. Upload gerbers to `https://cart.jlcpcb.com/quote` — configure layers, thickness, color, qty
  • Network accessline 161
    3. **Export CPL** (placement file) as CSV (see `bom` skill for format) 4. Upload gerbers to `https://cart.jlcpcb.com/quote` — configure layers, thickness, color, qty 5. Enable "PCB Assembly", select Economic or Standard
  • Network accessline 162
    4. Upload gerbers to `https://cart.jlcpcb.com/quote` — configure layers, thickness, color, qty

skills/kicad/SKILL.md

  • Access to secretsline 649
    [Credential-related source omitted]
  • Dangerous shell operationline 835
    `eval()`, `exec()`, or any code execution primitive. The parser produces

skills/kicad/references/oshwa-certification.md

  • Network accessline 83
    - Requirements: <https://certification.oshwa.org/requirements.html>
  • Network accessline 84
    - Certification process: <https://certification.oshwa.org/process.html>
  • Network accessline 85
    - Hardware licensing: <https://certification.oshwa.org/process/hardware.html>
  • Network accessline 86
    - Software licensing: <https://certification.oshwa.org/process/software.html>
  • Network accessline 87
    - Documentation: <https://certification.oshwa.org/process/documentation.html>
  • Network accessline 88
    - Certification mark: <https://certification.oshwa.org/mark-usage.html>
  • Network accessline 89
    - License agreement: <https://certification.oshwa.org/license-agreement.html>

skills/kicad/references/schematic-analysis.md

  • Network accessline 235
    - **Power pins:** Does every VDD pin have a decoupling cap?    - **Digital thresholds:** For digital inputs, are `threshold_high_v`/`threshold_low_v` met?    - **NC pins:** Are pins marked as no-connect actually unconnected?
  • Network accessline 236
    - **Digital thresholds:** For digital inputs, are `threshold_high_v`/`threshold_low_v` met?    - **NC pins:** Are pins marked as no-connect actually unconnected? 4. **Cite extraction data** in findings
  • Network accessline 237
    - **NC pins:** Are pins marked as no-connect actually unconnected?
  • Network accessline 882
    | **USB Type-A** | 1=VBUS, 2=D-, 3=D+, 4=GND | D+/D- swap | | **USB Type-B** | Same as Type-A | D+/D- swap | | **USB Micro-B** | 1=VBUS, 2=D-, 3=D+, 4=ID, 5=GND | D+/D- swap, ID left floating (should be NC for device) |
  • Network accessline 883
    | **USB Type-B** | Same as Type-A | D+/D- swap | | **USB Micro-B** | 1=VBUS, 2=D-, 3=D+, 4=ID, 5=GND | D+/D- swap, ID left floating (should be NC for device) | | **USB Type-C** | A6/B6=D+, A7/B7=D-, A5=CC1, B5=CC2 | Missing CC resistors (5.
  • Network accessline 884
    | **USB Micro-B** | 1=VBUS, 2=D-, 3=D+, 4=ID, 5=GND | D+/D- swap, ID left floating (should be NC for device) |

skills/kicad/references/supplementary-data-sources.md

  • Network accessline 175
    | `C` | Open collector | Requires pull-up | | `E` | Open emitter | Requires pull-down | | `N` | Not connected | NC pin |
  • Network accessline 177
    | `N` | Not connected | NC pin |

skills/kicad/review/schemas/deep_review.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",

skills/kicad/review/schemas/design_context.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.dev/schemas/design_context.schema.json",

skills/kicad/review/schemas/review_annotations.schema.json

  • Network accessline 1
    {   "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 2
    "$schema": "https://json-schema.org/draft/2020-12/schema",
  • Network accessline 3
    "$id": "https://kicad-happy.dev/schemas/review_annotations.schema.json",

skills/kicad/review/scripts/_mini_jsonschema.py

  • Executable scriptline 1
    Executable file

skills/kicad/review/scripts/build_review_plan.py

  • Executable scriptline 1
    Executable file

skills/kicad/review/scripts/deep_review_gate.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/review/scripts/merge_annotations.py

  • Executable scriptline 1
    Executable file

skills/kicad/review/scripts/run_phase4_exercise.py

  • Executable scriptline 1
    Executable file

skills/kicad/review/scripts/validate_review.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/.gitignore

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/analysis_cache.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/analyze_gerbers.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/analyze_pcb.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 1530
    # Source: Standard computational geometry. Circumscribed circle             #   from 3 points:             #   https://en.wikipedia.org/wiki/Circumscribed_circle#Circumscribed_circles_of_triangles
  • Network accessline 1531
    #   from 3 points:             #   https://en.wikipedia.org/wiki/Circumscribed_circle#Circumscribed_circles_of_triangles             #   Arc bbox via cardinal-crossing test is a well-known CAD/CAM
  • Network accessline 1532
    #   https://en.wikipedia.org/wiki/Circumscribed_circle#Circumscribed_circles_of_triangles
  • Network accessline 2347
    # Wheeler's equations     # Source: IPC-2141 Design Guide     # Verified: https://f4inx.github.io/posts/microstrip-formulas-comparison.html
  • Network accessline 2349
    # Verified: https://f4inx.github.io/posts/microstrip-formulas-comparison.html
  • Network accessline 4226
    classes = []     for nc in find_all(root, "net_class"):
  • Network accessline 4227
    for nc in find_all(root, "net_class"):
  • Network accessline 4446
    _net_class_lookup: dict[str, dict] = {}  # net_name -> class constraints     if net_classes:         for nc in net_classes:
  • Network accessline 4447
    if net_classes:         for nc in net_classes:             nc_name = nc.get('name', '')
  • Network accessline 4448
    for nc in net_classes:
  • Network accessline 4470
    all_widths.append(w)         seg_net_name = seg.get("net_name", "")         nc = _net_class_lookup.get(seg_net_name)
  • Network accessline 4471
    seg_net_name = seg.get("net_name", "")         nc = _net_class_lookup.get(seg_net_name)         if nc and nc.get('trace_width') is not None:
  • Network accessline 4472
    nc = _net_class_lookup.get(seg_net_name)
  • Network accessline 4473
    if nc and nc.get('trace_width') is not None:
  • Network accessline 4481
    all_widths.append(w)         arc_net_name = arc.get("net_name", "")         nc = _net_class_lookup.get(arc_net_name)
  • Network accessline 4482
    arc_net_name = arc.get("net_name", "")         nc = _net_class_lookup.get(arc_net_name)         if nc and nc.get('trace_width') is not None:
  • Network accessline 4483
    nc = _net_class_lookup.get(arc_net_name)
  • Network accessline 4484
    if nc and nc.get('trace_width') is not None:
  • Network accessline 5000
    net_class_summary = []     for nc in net_classes:
  • Network accessline 5001
    for nc in net_classes:
  • Network accessline 5024
    nc_by_net: dict[str, dict] = {}         for nc in net_classes:
  • Network accessline 5025
    for nc in net_classes:
  • Network accessline 5033
    for seg in tracks.get('segments', []):             net_name = seg.get('net_name', '')             nc = nc_by_net.get(net_name)
  • Network accessline 5034
    net_name = seg.get('net_name', '')             nc = nc_by_net.get(net_name)             if not nc:
  • Network accessline 5035
    nc = nc_by_net.get(net_name)
  • Network accessline 5056
    for v in vias.get('vias', []):             net_name = v.get('net_name', '')             nc = nc_by_net.get(net_name)
  • Network accessline 5057
    net_name = v.get('net_name', '')             nc = nc_by_net.get(net_name)             if not nc:
  • Network accessline 5058
    nc = nc_by_net.get(net_name)

skills/kicad/scripts/analyze_schematic.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 1189
    ncs = []     for nc in find_all(root, "no_connect"):
  • Network accessline 1190
    for nc in find_all(root, "no_connect"):
  • Network accessline 1580
    if no_connects:         for nc in no_connects:
  • Network accessline 1581
    for nc in no_connects:
  • Network accessline 1584
    # add_point() already shares the coordinate key with a pin or wire             # endpoint on the same point, which is all the absorption and NC             # tagging described above needs. Unioning the marker with every
  • Network accessline 1585
    # endpoint on the same point, which is all the absorption and NC             # tagging described above needs. Unioning the marker with every             # *overlapping* wire also caught wires passing mid-span beneath it,
  • Network accessline 1801
    # Check if any member of this group is a no-connect marker OR a         # library-defined NC pin (pin type "no_connect" in the symbol def).
  • Network accessline 1802
    # library-defined NC pin (pin type "no_connect" in the symbol def).
  • Network accessline 2262
    nc_positions = set()     for nc in no_connects:
  • Network accessline 2263
    for nc in no_connects:
  • Network accessline 2300
    # Check if pin has a no-connect marker (by position, net flag, or             # library-defined NC pin type).
  • Network accessline 2301
    # library-defined NC pin type).
  • Network accessline 2305
    # The net-level no_connect flag is set when *any* point in a net's             # union-find group is an NC marker (extract_nets line ~1490). On a
  • Network accessline 2306
    # union-find group is an NC marker (extract_nets line ~1490). On a
  • Network accessline 2307
    # genuinely-connected multi-pin net it must NOT mark every pin as             # NO_CONNECT — e.g. a stray NC marker absorbed into VBUS/GND would             # otherwise flip all of that rail's IC pins to NO_CONNECT. Only honor
  • Network accessline 2308
    # NO_CONNECT — e.g. a stray NC marker absorbed into VBUS/GND would
  • Network accessline 3346
    for j in junctions:             j["_sheet"] = sheet_idx         for nc in no_connects:
  • Network accessline 3347
    j["_sheet"] = sheet_idx         for nc in no_connects:             nc["_sheet"] = sheet_idx
  • Network accessline 3348
    for nc in no_connects:
  • Network accessline 3663
    nc_positions = set()     for nc in no_connects:
  • Network accessline 3664
    for nc in no_connects:
  • Network accessline 6199
    def verify_pin_coverage(components: list[dict], lib_symbols: dict) -> list[dict]:     """Verify that all non-NC library pins are accounted for on placed symbols.
  • Network accessline 6200
    """Verify that all non-NC library pins are accounted for on placed symbols.
  • Network accessline 9105
    for j in junctions:             j["_sheet"] = sheet_idx         for nc in no_connects:
  • Network accessline 9106
    j["_sheet"] = sheet_idx         for nc in no_connects:             nc["_sheet"] = sheet_idx
  • Network accessline 9107
    for nc in no_connects:
  • Network accessline 9580
    for j in junctions:                             j["_sheet"] = sheet_idx                         for nc in no_connects:
  • Network accessline 9581
    j["_sheet"] = sheet_idx                         for nc in no_connects:                             nc["_sheet"] = sheet_idx
  • Network accessline 9582
    for nc in no_connects:
  • Access to secretsline 10278
    [Credential-related source omitted]

skills/kicad/scripts/analyze_thermal.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/analyzer_envelope.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/bus_resolver.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/capability_mode.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/check_report_sections.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/cross_analysis.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/cross_verify.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/detection_schema.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/detector_helpers.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/diff_analysis.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/domain_detectors.py

  • Executable scriptline 1
    Executable file
  • Network accessline 50
    series_resistor = None         has_transistor_driver = False         for nc in net_comps:
  • Network accessline 51
    has_transistor_driver = False         for nc in net_comps:             if nc["type"] == "ic":
  • Network accessline 52
    for nc in net_comps:

skills/kicad/scripts/envelopes/__init__.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/envelopes/cross_analysis.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/envelopes/gerber.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/envelopes/pcb.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/envelopes/schematic.py

  • Executable scriptline 1
    Executable file
  • Network accessline 163
    "description": "KiCad library ID of the symbol."})     expected_pins: int = field(metadata={         "description": "Count of non-NC pins in the library symbol."})
  • Network accessline 164
    expected_pins: int = field(metadata={         "description": "Count of non-NC pins in the library symbol."})     placed_pins: int = field(metadata={
  • Network accessline 165
    "description": "Count of non-NC pins in the library symbol."})

skills/kicad/scripts/envelopes/thermal.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/export_issues.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 14
    Python 3.8+ stdlib only. Requires ``gh`` CLI (https://cli.github.com/).
  • Network accessline 221
    lines.append(         "*Generated by [kicad-happy](https://github.com/aklofas/kicad-happy)*"
  • Network accessline 222
    "*Generated by [kicad-happy](https://github.com/aklofas/kicad-happy)*"
  • Network accessline 426
    print(             "error: gh CLI is not available or not authenticated.\n"             "Install: https://cli.github.com/\n"
  • Network accessline 427
    "error: gh CLI is not available or not authenticated.\n"             "Install: https://cli.github.com/\n"             "Authenticate: gh auth login",
  • Network accessline 428
    "Install: https://cli.github.com/\n"

skills/kicad/scripts/fab_release_gate.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/finding_schema.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/gen_output_schema_md.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/inputs_builder.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/kicad_types.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/kicad_utils.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/lifecycle_audit.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 174
    [Credential-related source omitted]
  • Access to secretsline 175
    [Credential-related source omitted]
  • Access to secretsline 176
    [Credential-related source omitted]
  • Access to secretsline 185
    [Credential-related source omitted]
  • Access to secretsline 192
    [Credential-related source omitted]
  • Network accessline 193
    "grant_type": "client_credentials",         }).encode()         req = urllib.request.Request(
  • Network accessline 194
    }).encode()         req = urllib.request.Request(             "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 195
    req = urllib.request.Request(
  • Network accessline 196
    "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 198
    headers={"Content-Type": "application/x-www-form-urlencoded"},         )         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 199
    )         with urllib.request.urlopen(req, timeout=10) as resp:             token_data = json.loads(resp.read())
  • Network accessline 200
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 202
    [Credential-related source omitted]
  • Access to secretsline 204
    [Credential-related source omitted]
  • Network accessline 217
    try:         body = json.dumps({"Keywords": mpn, "Limit": 3}).encode()         req = urllib.request.Request(
  • Network accessline 218
    body = json.dumps({"Keywords": mpn, "Limit": 3}).encode()         req = urllib.request.Request(             "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 219
    req = urllib.request.Request(
  • Network accessline 220
    "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 226
    },         )         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 227
    )         with urllib.request.urlopen(req, timeout=10) as resp:             data = json.loads(resp.read())
  • Network accessline 228
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 270
    [Credential-related source omitted]
  • Access to secretsline 271
    [Credential-related source omitted]
  • Network accessline 279
    [Credential-related source omitted]
  • Network accessline 280
    [Credential-related source omitted]
  • Network accessline 281
    [Credential-related source omitted]
  • Access to secretsline 281
    [Credential-related source omitted]
  • Network accessline 282
    req = urllib.request.Request(url, data=body, headers={"Content-Type": "application/json"})
  • Network accessline 283
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 316
    try:         url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(mpn)}&limit=3&full=true"
  • Network accessline 317
    url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(mpn)}&limit=3&full=true"
  • Network accessline 318
    req = urllib.request.Request(url, headers={"User-Agent": "kicad-happy-lifecycle/1.0"})
  • Network accessline 319
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 355
    [Credential-related source omitted]
  • Access to secretsline 356
    [Credential-related source omitted]
  • Access to secretsline 361
    [Credential-related source omitted]
  • Network accessline 366
    "resultsSettings.responseGroup": "medium",         })         url = f"https://api.element14.com/catalog/products?{params}"
  • Network accessline 367
    })         url = f"https://api.element14.com/catalog/products?{params}"         req = urllib.request.Request(url, headers={"Accept": "application/json"})
  • Network accessline 368
    url = f"https://api.element14.com/catalog/products?{params}"         req = urllib.request.Request(url, headers={"Accept": "application/json"})         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 369
    req = urllib.request.Request(url, headers={"Accept": "application/json"})
  • Network accessline 370
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 531
    [Credential-related source omitted]
  • Access to secretsline 532
    [Credential-related source omitted]
  • Network accessline 539
    [Credential-related source omitted]
  • Network accessline 540
    [Credential-related source omitted]
  • Network accessline 541
    [Credential-related source omitted]
  • Access to secretsline 541
    [Credential-related source omitted]
  • Network accessline 542
    req = urllib.request.Request(url, data=body,
  • Network accessline 543
    headers={"Content-Type": "application/json"})                 with urllib.request.urlopen(req, timeout=10) as resp:                     data = json.loads(resp.read())
  • Network accessline 544
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 568
    time.sleep(delay)                     body = json.dumps({"Keywords": base_mpn, "Limit": 5}).encode()                     req = urllib.request.Request(
  • Network accessline 569
    body = json.dumps({"Keywords": base_mpn, "Limit": 5}).encode()                     req = urllib.request.Request(                         "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 570
    req = urllib.request.Request(
  • Network accessline 571
    "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 577
    },                     )                     with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 578
    )                     with urllib.request.urlopen(req, timeout=10) as resp:                         data = json.loads(resp.read())
  • Network accessline 579
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 605
    try:                 time.sleep(delay)                 url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(base_mpn)}&limit=5&full=true"
  • Network accessline 606
    time.sleep(delay)                 url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(base_mpn)}&limit=5&full=true"                 req = urllib.request.Request(url, headers={"User-Agent": "kicad-happy-lifecycle/1.0"})
  • Network accessline 607
    url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(base_mpn)}&limit=5&full=true"
  • Network accessline 608
    req = urllib.request.Request(url, headers={"User-Agent": "kicad-happy-lifecycle/1.0"})
  • Network accessline 609
    with urllib.request.urlopen(req, timeout=10) as resp:

skills/kicad/scripts/lookup_detectors.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/lookup_helpers.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/netlist_queries.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/output_filters.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/pcb_connectivity.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/project_config.py

  • Executable scriptline 1
    Executable file
  • Network accessline 532
    net_classes = pcb.get('net_classes', [])         non_default = [nc for nc in net_classes
  • Network accessline 533
    non_default = [nc for nc in net_classes

skills/kicad/scripts/run_id.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/schema_codec.py

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    _SCHEMA_URI = "https://json-schema.org/draft/2020-12/schema"

skills/kicad/scripts/sexp_parser.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/signal_detectors.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/summarize_findings.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/kicad/scripts/validation_detectors.py

  • Executable scriptline 1
    Executable file

skills/kicad/scripts/what_if.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/lcsc/SKILL.md

  • Network accessline 25
    - **Low MOQ** — many parts available in quantities as low as 1 - **Warehouses** — Shenzhen (JS), Zhuhai (ZH), Hong Kong (HK) - **Website**: `https://www.lcsc.com`
  • Network accessline 27
    - **Website**: `https://www.lcsc.com`
  • Network accessline 73
    **Base URL:** `https://jlcsearch.tscircuit.com`
  • Network accessline 133
    GET https://wmsc.lcsc.com/ftps/wm/product/detail?productCode=C318884
  • Network accessline 198
    # Direct URL download python3 <skill-path>/scripts/fetch_datasheet_lcsc.py "https://wmsc.lcsc.com/..." -o datasheet.pdf
  • Network accessline 199
    python3 <skill-path>/scripts/fetch_datasheet_lcsc.py "https://wmsc.lcsc.com/..." -o datasheet.pdf
  • Network accessline 216
    **Base URL:** `https://ips.lcsc.com`. Requires API key + signature authentication. Contact `support@lcsc.com` for access. Rarely needed — jlcsearch covers most use cases.
  • Network accessline 223
    https://www.lcsc.com/search?q=<query>

skills/lcsc/scripts/fetch_datasheet_lcsc.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 89
    url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(query)}&limit=5&full=true"
  • Network accessline 90
    try:         req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})         with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 91
    req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 92
    with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 137
    url = f"https://wmsc.lcsc.com/ftps/wm/product/detail?productCode={lcsc_code.upper()}"     try:         req = urllib.request.Request(url, headers={
  • Network accessline 138
    try:         req = urllib.request.Request(url, headers={             "User-Agent": _USER_AGENT,
  • Network accessline 139
    req = urllib.request.Request(url, headers={
  • Network accessline 141
    "Accept": "application/json",         })         with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 142
    })         with urllib.request.urlopen(req, timeout=15) as resp:             data = json.loads(resp.read())
  • Network accessline 143
    with urllib.request.urlopen(req, timeout=15) as resp:
  • Network accessline 328
    req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 329
    with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 370
    if any(x in mpn_upper for x in ("ATMEGA", "ATTINY", "PIC", "SAMD", "SAM")):         alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"
  • Network accessline 371
    alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"         )
  • Network accessline 372
    f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"

skills/lcsc/scripts/search_lcsc.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 44
    _USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" _JLCSEARCH_BASE = "https://jlcsearch.tscircuit.com"
  • Network accessline 45
    _JLCSEARCH_BASE = "https://jlcsearch.tscircuit.com"
  • Network accessline 66
    req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 67
    with urllib.request.urlopen(req, timeout=15) as resp:

skills/lcsc/scripts/sync_datasheets_lcsc.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/lcsc/scripts/test_search_lcsc.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 65
    "mfr": "TS-1187A-B-A-B",     "description": "Tactile Switch SPST 160gf 1.5mm 5.1mm x 5.1mm Surface Mount",     "datasheet": "https://datasheet.lcsc.com/datasheet/pdf/56c8.pdf?productCode=C318884",
  • Network accessline 66
    "description": "Tactile Switch SPST 160gf 1.5mm 5.1mm x 5.1mm Surface Mount",     "datasheet": "https://datasheet.lcsc.com/datasheet/pdf/56c8.pdf?productCode=C318884",     "stock": 597040,
  • Network accessline 67
    "datasheet": "https://datasheet.lcsc.com/datasheet/pdf/56c8.pdf?productCode=C318884",
  • Network accessline 77
    "description": "Tactile Switch SPST 160gf 1.5mm 5.1mm x 5.1mm Surface Mount",         "manufacturer": {"name": "XKB Connection"},         "datasheet": {"pdf": "https://datasheet.lcsc.com/datasheet/pdf/56c8.pdf?productCode=C318884"},
  • Network accessline 78
    "manufacturer": {"name": "XKB Connection"},         "datasheet": {"pdf": "https://datasheet.lcsc.com/datasheet/pdf/56c8.pdf?productCode=C318884"},     },
  • Network accessline 79
    "datasheet": {"pdf": "https://datasheet.lcsc.com/datasheet/pdf/56c8.pdf?productCode=C318884"},
  • Network accessline 95
    def test_general_search_reads_components(self):         with patch("urllib.request.urlopen", _mock_urlopen({"components": [SEARCH_HIT]})) as mock_open:
  • Network accessline 96
    with patch("urllib.request.urlopen", _mock_urlopen({"components": [SEARCH_HIT]})) as mock_open:
  • Network accessline 103
    def test_category_search_reads_category_key(self):         with patch("urllib.request.urlopen", _mock_urlopen({"resistors": [CATEGORY_ROW]})) as mock_open:
  • Network accessline 104
    with patch("urllib.request.urlopen", _mock_urlopen({"resistors": [CATEGORY_ROW]})) as mock_open:
  • Network accessline 111
    def test_category_search_no_list_value(self):         with patch("urllib.request.urlopen", _mock_urlopen({"error": "not found"})):
  • Network accessline 112
    with patch("urllib.request.urlopen", _mock_urlopen({"error": "not found"})):
  • Network accessline 202
    "stock": 2500000,             "price_usd": 0.0034,             "datasheet_url": "https://example.com/resistor.pdf",
  • Network accessline 203
    "price_usd": 0.0034,             "datasheet_url": "https://example.com/resistor.pdf",             "attributes": {"Resistance": "100Ω", "Power": "125mW"},
  • Network accessline 204
    "datasheet_url": "https://example.com/resistor.pdf",
  • Network accessline 227
    self.assertIn("JLCPCB Type:    Basic", output)         self.assertIn("Resistance: 100Ω", output)         self.assertIn("https://example.com/resistor.pdf", output)
  • Network accessline 228
    self.assertIn("Resistance: 100Ω", output)         self.assertIn("https://example.com/resistor.pdf", output)         self.assertIn("100+: $0.0034 USD", output)
  • Network accessline 229
    self.assertIn("https://example.com/resistor.pdf", output)

skills/mouser/SKILL.md

  • Network accessline 25
    1. Go to [mouser.com](https://www.mouser.com) → My Mouser → My Account
  • Access to secretsline 34
    [Credential-related source omitted]
  • Network accessline 229
    # Direct URL download python3 <skill-path>/scripts/fetch_datasheet_mouser.py "https://example.com/datasheet.pdf" -o datasheet.pdf
  • Network accessline 230
    python3 <skill-path>/scripts/fetch_datasheet_mouser.py "https://example.com/datasheet.pdf" -o datasheet.pdf
  • Network accessline 250
    - Search URL: `https://www.mouser.com/c/?q=<query>`

skills/mouser/scripts/fetch_datasheet_mouser.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 67
    [Credential-related source omitted]
  • Access to secretsline 70
    [Credential-related source omitted]
  • Access to secretsline 72
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]
  • Network accessline 80
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Network accessline 85
    }     }).encode("utf-8")     req = urllib.request.Request(
  • Network accessline 86
    }).encode("utf-8")     req = urllib.request.Request(         url, data=body,
  • Network accessline 87
    req = urllib.request.Request(
  • Network accessline 91
    )     try:         with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 92
    try:         with urllib.request.urlopen(req, timeout=20) as resp:             data = json.loads(resp.read())
  • Network accessline 93
    with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 168
    req = urllib.request.Request(url, headers={"User-Agent": _USER_AGENT})
  • Network accessline 169
    with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 259
    if not product_url.startswith("http"):         product_url = "https://www.mouser.com" + product_url
  • Network accessline 260
    product_url = "https://www.mouser.com" + product_url
  • Network accessline 281
    if not html:         try:             req = urllib.request.Request(product_url, headers=headers)
  • Network accessline 282
    try:             req = urllib.request.Request(product_url, headers=headers)             with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 283
    req = urllib.request.Request(product_url, headers=headers)
  • Network accessline 284
    with urllib.request.urlopen(req, timeout=20) as resp:
  • Network accessline 304
    url = match.group(1)             if url.startswith("/"):                 url = "https://www.mouser.com" + url
  • Network accessline 305
    if url.startswith("/"):                 url = "https://www.mouser.com" + url             return url
  • Network accessline 306
    url = "https://www.mouser.com" + url
  • Network accessline 321
    if any(x in mpn_upper for x in ("ATMEGA", "ATTINY", "PIC", "SAMD", "SAM")):         alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"
  • Network accessline 322
    alternatives.append(             f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"         )
  • Network accessline 323
    f"https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/{mpn}-DataSheet.pdf"
  • Access to secretsline 516
    [Credential-related source omitted]
  • Access to secretsline 517
    [Credential-related source omitted]
  • Access to secretsline 519
    [Credential-related source omitted]
  • Access to secretsline 524
    [Credential-related source omitted]

skills/mouser/scripts/sync_datasheets_mouser.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 335
    [Credential-related source omitted]
  • Access to secretsline 383
    [Credential-related source omitted]
  • Access to secretsline 389
    [Credential-related source omitted]
  • Access to secretsline 620
    [Credential-related source omitted]
  • Access to secretsline 621
    [Credential-related source omitted]
  • Access to secretsline 622
    [Credential-related source omitted]
  • Access to secretsline 639
    [Credential-related source omitted]
  • Access to secretsline 671
    [Credential-related source omitted]

skills/pcbway/SKILL.md

  • Network accessline 139
    Contact PCBWay for partner API access. Partner API at `https://api-partner.pcbway.com`.
  • Network accessline 147
    Documentation: `https://api-partner.pcbway.com/Help`
  • Network accessline 153
    1. **Export gerbers** from KiCad (see `bom` skill for export settings) 2. Upload gerbers to `https://www.pcbway.com/orderonline.aspx` — configure layers, thickness, color, qty
  • Network accessline 154
    2. Upload gerbers to `https://www.pcbway.com/orderonline.aspx` — configure layers, thickness, color, qty
  • Network accessline 155
    3. Order a **framed stencil** separately at `https://www.pcbway.com/stencil.aspx`

skills/spice/SKILL.md

  • Dangerous shell operationline 39
    - **ngspice** — `sudo apt install ngspice` (Linux) / `brew install ngspice` (macOS) / ngspice.sourceforge.io (Windows). Most common choice.

skills/spice/references/simulation-models.md

  • Dangerous shell operationline 190
    | Rm (motional resistance) | 40 kΩ | 30 Ω |
  • Dangerous shell operationline 195
    **These are generic estimates.** Real crystal parameters vary significantly between manufacturers and even batches. The datasheet specifies Rm (ESR) and CL (load capacitance) — these are the two most important parameters for oscillator desi

skills/spice/scripts/extract_parasitics.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 100
    # EQ-018: L = (µ₀H/2π)ln(2H/D) (via self-inductance)     # Source: Goldfarb & Pucel, IEEE MGWL Vol.1 No.6 pp.135-137, June 1991     # URL: https://www.semanticscholar.org/paper/a3f4614877b750e7b7eec1dfa5924d5ce8b99301
  • Network accessline 102
    # URL: https://www.semanticscholar.org/paper/a3f4614877b750e7b7eec1dfa5924d5ce8b99301

skills/spice/scripts/simulate_subcircuits.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/spice/scripts/spice_model_cache.py

  • Executable scriptline 1
    Executable file

skills/spice/scripts/spice_model_generator.py

  • Executable scriptline 1
    Executable file

skills/spice/scripts/spice_models.py

  • Executable scriptline 1
    Executable file

skills/spice/scripts/spice_part_library.py

  • Executable scriptline 1
    Executable file

skills/spice/scripts/spice_results.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 336
    rm = sim_results.get("rm")
  • Dangerous shell operationline 345
    "model_note": "generic crystal equivalent circuit — actual Rm may differ",
  • Dangerous shell operationline 382
    if rm is not None:
  • Dangerous shell operationline 386
    if rm > rm_limit:

skills/spice/scripts/spice_simulator.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 92
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 202
    [Credential-related source omitted]
  • Access to secretsline 215
    [Credential-related source omitted]
  • Access to secretsline 216
    [Credential-related source omitted]
  • Access to secretsline 217
    [Credential-related source omitted]
  • Access to secretsline 350
    [Credential-related source omitted]
  • Access to secretsline 457
    [Credential-related source omitted]

skills/spice/scripts/spice_spec_fetcher.py

  • Executable scriptline 1
    Executable file
  • Network accessline 197
    try:         url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(mpn)}&limit=5&full=true"
  • Network accessline 198
    url = f"https://jlcsearch.tscircuit.com/api/search?q={urllib.parse.quote(mpn)}&limit=5&full=true"
  • Network accessline 199
    req = urllib.request.Request(url, headers={"User-Agent": "kicad-happy-spice/1.0"})
  • Network accessline 200
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 241
    [Credential-related source omitted]
  • Access to secretsline 243
    [Credential-related source omitted]
  • Access to secretsline 244
    [Credential-related source omitted]
  • Access to secretsline 245
    [Credential-related source omitted]
  • Access to secretsline 254
    [Credential-related source omitted]
  • Access to secretsline 261
    [Credential-related source omitted]
  • Network accessline 262
    "grant_type": "client_credentials",         }).encode()         req = urllib.request.Request(
  • Network accessline 263
    }).encode()         req = urllib.request.Request(             "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 264
    req = urllib.request.Request(
  • Network accessline 265
    "https://api.digikey.com/v1/oauth2/token",
  • Network accessline 267
    headers={"Content-Type": "application/x-www-form-urlencoded"},         )         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 268
    )         with urllib.request.urlopen(req, timeout=10) as resp:             token_data = json.loads(resp.read())
  • Network accessline 269
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 272
    [Credential-related source omitted]
  • Access to secretsline 276
    [Credential-related source omitted]
  • Access to secretsline 279
    [Credential-related source omitted]
  • Access to secretsline 294
    [Credential-related source omitted]
  • Network accessline 296
    try:         body = json.dumps({"Keywords": mpn, "Limit": 5}).encode()         req = urllib.request.Request(
  • Network accessline 297
    body = json.dumps({"Keywords": mpn, "Limit": 5}).encode()         req = urllib.request.Request(             "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 298
    req = urllib.request.Request(
  • Network accessline 299
    "https://api.digikey.com/products/v4/search/keyword",
  • Network accessline 305
    },         )         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 306
    )         with urllib.request.urlopen(req, timeout=10) as resp:             data = json.loads(resp.read())
  • Network accessline 307
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 346
    [Credential-related source omitted]
  • Access to secretsline 347
    [Credential-related source omitted]
  • Access to secretsline 352
    [Credential-related source omitted]
  • Network accessline 357
    "resultsSettings.responseGroup": "medium",         })         url = f"https://api.element14.com/catalog/products?{params}"
  • Network accessline 358
    })         url = f"https://api.element14.com/catalog/products?{params}"         req = urllib.request.Request(url, headers={"Accept": "application/json"})
  • Network accessline 359
    url = f"https://api.element14.com/catalog/products?{params}"         req = urllib.request.Request(url, headers={"Accept": "application/json"})         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 360
    req = urllib.request.Request(url, headers={"Accept": "application/json"})
  • Network accessline 361
    with urllib.request.urlopen(req, timeout=10) as resp:
  • Access to secretsline 391
    [Credential-related source omitted]
  • Access to secretsline 392
    [Credential-related source omitted]
  • Network accessline 400
    [Credential-related source omitted]
  • Network accessline 401
    [Credential-related source omitted]
  • Network accessline 402
    [Credential-related source omitted]
  • Access to secretsline 402
    [Credential-related source omitted]
  • Network accessline 403
    req = urllib.request.Request(
  • Network accessline 405
    headers={"Content-Type": "application/json"},         )         with urllib.request.urlopen(req, timeout=10) as resp:
  • Network accessline 406
    )         with urllib.request.urlopen(req, timeout=10) as resp:             data = json.loads(resp.read())
  • Network accessline 407
    with urllib.request.urlopen(req, timeout=10) as resp:

skills/spice/scripts/spice_templates.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 633
    rm = 40000  # 32.768 kHz watch crystal
  • Dangerous shell operationline 638
    rm = 30  # Typical MHz crystal
  • Dangerous shell operationline 657
    Rm xtal1_int xtal2 {rm}

skills/spice/scripts/spice_tolerance.py

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 2 facts
  • Dangerous shell operation in code of the SKILL.mdbom/SKILL.md:346High confidence
  • Dangerous shell operation in code of the SKILL.mdbom/SKILL.md:349High confidence

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/bom/SKILL.md.agents/skills/<skill-name>/
CursorNativePath .cursor/rules/kicad-happy.mdc.cursor/skills/<skill-name>/
Gemini CLINativePath GEMINI.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/bom/SKILL.md.github/skills/<skill-name>/
OpenCodeNativePath .opencode/opencode.json.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

Explore alternatives and comparisons

Add this badge to your README

It updates every night and links to this page.

aklofas/kicad-happy: #624 on hotskills, 1.6k stars

[![aklofas/kicad-happy on hotskills](https://hotskills.dev/badge/aklofas-kicad-happy.svg)](https://hotskills.dev/skill/aklofas-kicad-happy/)