#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
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.
skills/datasheets/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/digikey/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/element14/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/emc/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/jlcpcb/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/kicad/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/lcsc/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/mouser/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/pcbway/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
skills/spice/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
2fd9aa0fe2d6 → 2fd9aa0fe2d6
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.
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>/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
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 tokensAlways available to the agent
SKILL.md
5,284 tokensWhen the skill is activated
Reference documents
7,386 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Scripts
- Workflow
- BOM Corner Cases & Per-Component Notes
- Package/Footprint Cross-Reference
- BOM Diffing
- Interactive BOM (ibom)
- Reference Files
- Production Readiness Checklist
- Generated Files & Cleanup
- Tips
Scripts executed separately
scripts/bom_manager.pyscripts/edit_properties.pyscripts/kicad_sexp.pyscripts/sync_datasheet_urls.pyscripts/translate_bom_pnp.py
Files
../../.claude-plugin/marketplace.jsonasset775 bytes../../.claude-plugin/marketplace.jsonasset775 bytes../../.claude-plugin/plugin.jsonasset659 bytes../../.claude-plugin/plugin.jsonasset659 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesSKILL.mdcore22,076 bytesreferences/kicad-fields.mddoc3,308 bytesreferences/ordering-and-fabrication.mddoc4,805 bytesreferences/part-number-conventions.mddoc18,940 bytesscripts/bom_manager.pyruns50,885 bytesscripts/edit_properties.pyruns15,259 bytesscripts/kicad_sexp.pyruns2,555 bytesscripts/sync_datasheet_urls.pyruns13,934 bytesscripts/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 GitHubdatasheets
When your agent uses it
Extract structured specifications from electronic component datasheet PDFs — pinouts, electrical characteristics, peripherals, topology, and features. Cache extractions per project for consumption by schematic and PCB analyzers. Primary consumer infrastructure for `kicad`, `emc`, `spice`, and `thermal` analyzers. Use this skill whenever the user asks to extract, verify, or read specs from a component datasheet; when analyzers need verified IC knowledge (EN pin thresholds, PG presence, USB peripheral speed); or when a review mentions datasheet coverage, extraction quality, or per-MPN specifications. Also triggers on "extract this datasheet", "what are the specs for MPN X", "verify datasheet extraction", or "check pin functions for part Y".
What it loads into context
Frontmatter
160 tokensAlways available to the agent
SKILL.md
2,464 tokensWhen the skill is activated
Reference documents
43,441 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Purpose
- Scope
- Non-goals
- Cache location
- Reference guides
- Entry-point scripts
- Extraction workflow
- Consuming extractions (v1.4 typed API)
- v1.3 compat shim
- When to trigger this skill
Scripts executed separately
datasheet_types/__init__.pydatasheet_types/base_block.pydatasheet_types/codec.pydatasheet_types/extraction.pydatasheet_types/pinout.pydatasheet_types/regulator.pydatasheet_types/spec_value.pydatasheet_types/trust_gating.pyscripts/_smoke_v14_roundtrip.pyscripts/datasheet_extract_cache.pyscripts/datasheet_features.pyscripts/datasheet_lookup.pyscripts/datasheet_page_selector.pyscripts/datasheet_score.pyscripts/datasheet_verify.pyscripts/merge_results.pyscripts/plan_extraction.pyscripts/validate_extraction_result.pyscripts/validate_sanity_vector.py
Files
SKILL.mdcore9,877 bytesSKILL.mdcore9,877 bytesdatasheet_types/__init__.pyruns2,704 bytesdatasheet_types/base_block.pyruns6,459 bytesdatasheet_types/codec.pyruns5,686 bytesdatasheet_types/extraction.pyruns8,302 bytesdatasheet_types/pinout.pyruns5,365 bytesdatasheet_types/regulator.pyruns5,389 bytesdatasheet_types/spec_value.pyruns2,412 bytesdatasheet_types/trust_gating.pyruns4,280 bytesexamples/abm8g-106-12.000mhz-t.jsonasset9,610 bytesexamples/irlml6344.jsonasset16,368 bytesexamples/lm2596-adj.jsonasset14,690 bytesexamples/lm358.jsonasset15,925 bytesexamples/mbrs540t3g.jsonasset12,589 bytesexamples/stm32f103c8t6.jsonasset52,364 bytesprompts/base.mddoc3,774 bytesprompts/crystal.mddoc8,974 bytesprompts/diode.mddoc8,516 bytesprompts/mcu.mddoc9,842 bytesprompts/opamp.mddoc11,307 bytesprompts/pinout.mddoc3,810 bytesprompts/regulator.mddoc4,426 bytesprompts/scout.mddoc3,593 bytesprompts/transistor.mddoc12,816 bytesreferences/cache-layout.mddoc8,465 bytesreferences/consumer-api.mddoc8,834 bytesreferences/dispatch-claude-code.mddoc8,863 bytesreferences/dispatcher-contract.mddoc7,412 bytesreferences/extraction-pipeline.mddoc1,343 bytesreferences/extraction-schema.mddoc17,893 bytesreferences/field-extraction-guide.mddoc14,420 bytesreferences/quality-scoring.mddoc7,937 bytesschemas/CHANGELOG.mddoc15,835 bytesschemas/base.schema.jsonasset9,522 bytesschemas/crystal.schema.jsonasset7,410 bytesschemas/diode.schema.jsonasset8,067 bytesschemas/extraction.schema.jsonasset3,769 bytesschemas/fixtures/lm2596-adj.example.jsonasset14,690 bytesschemas/fixtures/manifest.example.jsonasset1,000 bytesschemas/fixtures/minimal.example.jsonasset2,115 bytesschemas/manifest.schema.jsonasset3,106 bytesschemas/mcu.schema.jsonasset12,664 bytesschemas/opamp.schema.jsonasset9,449 bytesschemas/pinout.schema.jsonasset6,028 bytesschemas/plan.schema.jsonasset4,810 bytesschemas/regulator.schema.jsonasset8,476 bytesschemas/scout.schema.jsonasset2,609 bytesschemas/spec_value.schema.jsonasset3,029 bytesschemas/transistor.schema.jsonasset12,280 bytesscripts/_smoke_v14_roundtrip.pyruns8,391 bytesscripts/datasheet_extract_cache.pyruns18,588 bytesscripts/datasheet_features.pyruns16,898 bytesscripts/datasheet_lookup.pyruns9,132 bytesscripts/datasheet_page_selector.pyruns17,048 bytesscripts/datasheet_score.pyruns15,907 bytesscripts/datasheet_verify.pyruns41,361 bytesscripts/merge_results.pyruns11,509 bytesscripts/plan_extraction.pyruns7,654 bytesscripts/validate_extraction_result.pyruns4,497 bytesscripts/validate_sanity_vector.pyruns6,095 bytes
Read SKILL.md
# Datasheets Skill
## Related Skills
| Skill | Relationship |
|-------|--------------|
| `digikey` / `mouser` / `lcsc` / `element14` | **Producers** — download the PDFs under `<project>/datasheets/` that this skill extracts from |
| `kicad` | **Primary consumer** — VM-001/PU-001/FS-001/PP-001/LR-001/XT-001 + Phase 4b lookup detectors (AM-001/OV-001/TJ-001/FT-001/EX-001) query extractions via `lookup(mpn)` for verified-IC knowledge |
| `emc` | **Consumer** — switching-frequency, package-Rθ_JA, and operating-voltage data sharpen EMC heuristics |
| `spice` | **Consumer** — SPICE model presence + IBIS data feed simulation-readiness checks |
| `thermal` | **Consumer** — package Rθ_JA + junction temperature limits drive Tj estimates (TS-001..TJ-001) |
| `bom` | **Indirect** — coverage of structured extractions affects BOM verification confidence |
**Handoff guidance:** This skill is consumer infrastructure. The typical flow is `distributor skill downloads PDF → datasheets skill extracts → analyzer skill queries`. Use this skill directly when (a) the user asks to extract or verify a specific MPN, (b) an analyzer reports `trust_level: low` and the gap is per-MPN extraction quality, or (c) a new MPN was added to the BOM and downstream detectors should pick up its verified specs. Don't run this skill in isolation if the user just wants a design review — call it from the kicad workflow at the "Sync datasheets" step instead.View the complete source on GitHubdigikey
When your agent uses it
Search DigiKey for electronic components and download datasheets — primary source for prototype orders and the preferred API method for fetching datasheets. Find parts by keyword or MPN, check pricing/stock, download datasheets via API, analyze specifications. Sync and maintain a local datasheets directory — extract components from schematics, download missing datasheets, keep them up to date. Also supports batch MPN-list seeding (`--mpn-list`) for bulk workflows without a KiCad project. Use when the user asks about electronic components, part specs, datasheets, pricing, stock, footprints, or needs to download a datasheet — even without mentioning "DigiKey". Also for "sync datasheets", "download datasheets for my board/project", or mentions a datasheets directory. DigiKey is the default distributor for prototyping. For BOM workflows, see the bom skill.
What it loads into context
Frontmatter
208 tokensAlways available to the agent
SKILL.md
4,596 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- API Credential Setup
- DigiKey Product Information API v4
- Fallback: Fetch DigiKey Website
- Datasheet Download & Analysis
- Tips
Scripts executed separately
scripts/fetch_datasheet_digikey.pyscripts/sync_datasheets_digikey.py
Files
SKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesSKILL.mdcore17,947 bytesscripts/fetch_datasheet_digikey.pyruns20,141 bytesscripts/sync_datasheets_digikey.pyruns35,414 bytes
Read SKILL.md
# DigiKey Parts Search & Analysis
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Schematic analysis — extracts MPNs for datasheet sync |
| `bom` | BOM management — orchestrates sourcing across distributors |
| `spice` | Uses DigiKey parametric data for behavioral SPICE models |
DigiKey is the **primary source for prototype orders** (Mouser is secondary). Its API returns direct PDF datasheet links, making it the preferred datasheet source. For production orders, see `lcsc`/`jlcpcb`. For BOM management and export workflows, see `bom`.
## API Credential Setup
View the complete source on GitHubelement14
When your agent uses it
Search Newark, Farnell, and element14 for electronic components — find parts by MPN or distributor part number, check pricing/stock, download datasheets, analyze specifications. One unified API covers all three storefronts (Newark for US, Farnell for UK/EU, element14 for APAC). Free API key, simple query-parameter auth, no OAuth. Datasheets download directly from farnell.com CDN with no bot protection. Sync and maintain a local datasheets directory for a KiCad project, or use batch MPN-list seeding (`--mpn-list`) for bulk workflows without a project. Use this skill when the user mentions Newark, Farnell, element14, needs parts from a non-US distributor, wants to compare pricing across regions, or needs datasheets from a source that doesn't require complex API auth. For package cross-reference tables and BOM workflow, see the `bom` skill.
What it loads into context
Frontmatter
192 tokensAlways available to the agent
SKILL.md
2,874 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Key Differences from DigiKey/Mouser
- API Credential Setup
- Product Search API
- Datasheet Download & Sync
- Web Search Fallback
- Tips
Scripts executed separately
scripts/fetch_datasheet_element14.pyscripts/sync_datasheets_element14.py
Files
SKILL.mdcore11,009 bytesSKILL.mdcore11,009 bytesSKILL.mdcore11,009 bytesSKILL.mdcore11,009 bytesSKILL.mdcore11,009 bytesSKILL.mdcore11,009 bytesscripts/fetch_datasheet_element14.pyruns18,304 bytesscripts/sync_datasheets_element14.pyruns28,974 bytes
Read SKILL.md
# element14 / Newark / Farnell — Component Search, Datasheets & Ordering
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Schematic analysis — extracts MPNs for part lookup |
| `bom` | BOM management — orchestrates sourcing across distributors |
| `spice` | Uses element14 parametric data for behavioral SPICE models |
One API covers three regional storefronts — same catalog, same datasheets, only pricing/stock vary by region:
| Storefront | Region | Store ID |
|------------|--------|----------|View the complete source on GitHubemc
When your agent uses it
EMC pre-compliance risk analysis for KiCad PCB designs — 18 check categories, 44 rule IDs covering ground planes, decoupling, I/O filtering, switching harmonics, clock routing, differential pair skew, board edge radiation, PDN impedance, return paths, crosstalk, ESD protection, shielding, and magnetic leakage from switching inductors. Produces severity-ranked risk report with pre-compliance test plan. Supports FCC Part 15, CISPR 32, CISPR 25 (automotive), MIL-STD-461G. SPICE-enhanced when available. Use when the user asks about EMC, EMI, radiated/conducted emissions, FCC compliance, CE marking, CISPR, ground plane issues, decoupling strategy, clock routing EMC, switching noise, differential pair skew, or whether their board will pass EMC testing. Also for "will this pass FCC?", "check my EMC", "is my ground plane okay?", "check my decoupling", or "generate an EMC test plan".
What it loads into context
Frontmatter
242 tokensAlways available to the agent
SKILL.md
2,827 tokensWhen the skill is activated
Reference documents
10,631 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Requirements
- Workflow
- What Gets Checked
- Output Format
- Interpreting Results
- EMC Standards
- Limitations
Scripts executed separately
scripts/analyze_emc.pyscripts/emc_envelope.pyscripts/emc_formulas.pyscripts/emc_rules.pyscripts/emc_spice.py
Files
SKILL.mdcore11,184 bytesSKILL.mdcore11,184 bytesSKILL.mdcore11,184 bytesSKILL.mdcore11,184 bytesSKILL.mdcore11,184 bytesreferences/emc-methodology.mddoc10,238 bytesreferences/emc-standards.mddoc5,806 bytesreferences/pcb-emc-rules.mddoc25,273 bytesscripts/analyze_emc.pyruns27,988 bytesscripts/emc_envelope.pyruns13,414 bytesscripts/emc_formulas.pyruns50,884 bytesscripts/emc_rules.pyruns186,543 bytesscripts/emc_spice.pyruns24,929 bytes
Read SKILL.md
# EMC Pre-Compliance Skill
Automated EMC risk analysis for KiCad PCB designs. Identifies the most common causes of EMC test failures using geometric rule checks, analytical emission formulas, and optional SPICE simulation.
**This is a risk analyzer, not a compliance predictor.** It catches ~70% of common EMC design mistakes before fabrication. It cannot guarantee FCC/CISPR compliance — only a calibrated measurement in an accredited lab can do that. But it can reduce the first-spin failure rate from ~50% toward ~20-30%, potentially saving $5K-$50K per avoided board respin.
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Schematic/PCB analysis — produces the analyzer JSON this skill consumes |
| `kicad` (thermal) | Thermal hotspot analysis — MLCC derating and ferrite/inductor overheating findings can amplify EMC decoupling and filter issues (an over-stressed MLCC degrades; a hot ferrite drifts impedance). Worth cross-checking when EMC flags DC-001/DC-002 or EF-001/EF-002. |
| `spice` | SPICE simulation — provides simulator backend for SPICE-enhanced PDN/filter checks |
View the complete source on GitHubjlcpcb
When your agent uses it
JLCPCB PCB fabrication and assembly — BOM/CPL generation, basic vs extended parts, assembly constraints, design rules, ordering workflow. Use with KiCad for JLCPCB manufacturing. Use this skill when the user mentions JLCPCB, wants to order PCBs or assembled boards, needs prototype bare PCBs and stencils, wants to know JLCPCB design rules and capabilities, or is asking about PCB manufacturing costs or turnaround times. For gerber/CPL export, stencil ordering, and BOM management, see the `bom` skill.
What it loads into context
Frontmatter
117 tokensAlways available to the agent
SKILL.md
2,802 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Assembly Parts Library
- BOM Format for Assembly
- JLCPCB Official API (Approval Required)
- PCB Design Rules (JLCPCB Capabilities)
- Assembly Constraints
- Rotation Offsets
- Ordering Workflow
- Tips
Scripts executed separately
../bom/scripts/translate_bom_pnp.py
Files
../bom/scripts/translate_bom_pnp.pyruns23,843 bytesSKILL.mdcore10,896 bytesSKILL.mdcore10,896 bytesSKILL.mdcore10,896 bytesSKILL.mdcore10,896 bytes
Read SKILL.md
# JLCPCB — PCB Fabrication & Assembly
JLCPCB is a PCB fabrication and assembly service based in Shenzhen, China. It is a sister company to LCSC Electronics (common ownership) — they share the same parts library.
**Typical usage**: Order bare prototype PCBs + framed stencil from JLCPCB during prototyping (parts sourced separately from DigiKey/Mouser, hand-assembled in lab). For production runs (100s qty), order fully assembled boards from JLCPCB using LCSC parts. PCBWay is an alternative assembler. For component searching, see the `lcsc` skill. For BOM management, gerber/CPL export, and stencil ordering, see the `bom` skill.
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Read/analyze KiCad project files, DFM scoring against JLCPCB capabilities |
| `bom` | BOM management, gerber/CPL export, stencil ordering |
| `digikey` | Search DigiKey (prototype sourcing, primary — also preferred for datasheet downloads via API) |
| `mouser` | Search Mouser (prototype sourcing, secondary) |View the complete source on GitHubkicad
When your agent uses it
Analyze KiCad projects and PDF schematics: schematics, PCB layouts, Gerbers, footprints, symbols, netlists, and design rules. Reviews designs for bugs, traces nets, cross-references schematic to PCB, extracts BOM data, checks DRC/ERC, DFM, power trees, and regulator circuits. Every finding carries a confidence label and evidence source with trust_summary rollup. Analyzes PDF schematics from dev boards, reference designs, eval kits, and datasheets. Supports KiCad 5–10. Use whenever the user mentions .kicad_sch, .kicad_pcb, .kicad_pro, PCB design review, schematic analysis, PDF schematics, reference designs, Gerber files, DRC/ERC, netlist issues, BOM extraction, signal tracing, power budget, DFM, or wants to understand, debug, compare, or review any hardware design. Also for "check my board", "review before fab", "what's wrong with my schematic", "is this ready to order", "check my power supply", "verify this circuit", OSHWA certification readiness, or any electronics/PCB design question.
What it loads into context
Frontmatter
268 tokensAlways available to the agent
SKILL.md
18,637 tokensWhen the skill is activated
Reference documents
139,092 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Design Review Contract
- PDF Schematic Analysis
- Analysis Scripts
- Deep Review Pass
- Reference Files
- File Types Quick Reference
- Analysis Strategies
- Security Architecture
Scripts executed separately
review/scripts/_mini_jsonschema.pyreview/scripts/build_review_plan.pyreview/scripts/deep_review_gate.pyreview/scripts/merge_annotations.pyreview/scripts/run_phase4_exercise.pyreview/scripts/validate_review.pyscripts/.gitignorescripts/analysis_cache.pyscripts/analyze_gerbers.pyscripts/analyze_pcb.pyscripts/analyze_schematic.pyscripts/analyze_thermal.pyscripts/analyzer_envelope.pyscripts/bus_resolver.pyscripts/capability_mode.pyscripts/check_report_sections.pyscripts/cross_analysis.pyscripts/cross_verify.pyscripts/detection_schema.pyscripts/detector_helpers.pyscripts/diff_analysis.pyscripts/domain_detectors.pyscripts/envelopes/__init__.pyscripts/envelopes/cross_analysis.pyscripts/envelopes/gerber.pyscripts/envelopes/pcb.pyscripts/envelopes/schematic.pyscripts/envelopes/thermal.pyscripts/export_issues.pyscripts/fab_release_gate.pyscripts/finding_schema.pyscripts/gen_output_schema_md.pyscripts/inputs_builder.pyscripts/kicad_types.pyscripts/kicad_utils.pyscripts/lifecycle_audit.pyscripts/lookup_detectors.pyscripts/lookup_helpers.pyscripts/netlist_queries.pyscripts/output_filters.pyscripts/pcb_connectivity.pyscripts/project_config.pyscripts/run_id.pyscripts/schema_codec.pyscripts/sexp_parser.pyscripts/signal_detectors.pyscripts/summarize_findings.pyscripts/validation_detectors.pyscripts/what_if.py
Files
SKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesSKILL.mdcore79,382 bytesreferences/config-reference.mddoc14,891 bytesreferences/datasheet-verification.mddoc15,401 bytesreferences/deep-review.mddoc7,671 bytesreferences/design-intent.mddoc5,519 bytesreferences/diff-analysis.mddoc14,092 bytesreferences/file-formats.mddoc13,358 bytesreferences/gerber-parsing.mddoc29,976 bytesreferences/manual-gerber-parsing.mddoc22,525 bytesreferences/manual-pcb-parsing.mddoc16,453 bytesreferences/manual-schematic-parsing.mddoc12,834 bytesreferences/net-tracing.mddoc10,973 bytesreferences/oshwa-certification.mddoc4,622 bytesreferences/output-schema.mddoc28,896 bytesreferences/pcb-layout-analysis.mddoc26,939 bytesreferences/pdf-schematic-extraction.mddoc15,537 bytesreferences/report-generation.mddoc55,948 bytesreferences/schematic-analysis.mddoc64,240 bytesreferences/standards-compliance.mddoc34,217 bytesreferences/supplementary-data-sources.mddoc12,619 bytesreferences/what-if.mddoc17,261 bytesreview/README.mddoc4,082 bytesreview/fixtures/deep_review.example.jsonasset1,265 bytesreview/fixtures/design_context.example.jsonasset388 bytesreview/fixtures/review_annotations.example.jsonasset707 bytesreview/prompts/design_context.mddoc5,016 bytesreview/schemas/deep_review.schema.jsonasset3,345 bytesreview/schemas/design_context.schema.jsonasset2,313 bytesreview/schemas/review_annotations.schema.jsonasset1,991 bytesreview/scripts/_mini_jsonschema.pyruns6,784 bytesreview/scripts/build_review_plan.pyruns1,901 bytesreview/scripts/deep_review_gate.pyruns13,590 bytesreview/scripts/merge_annotations.pyruns6,802 bytesreview/scripts/run_phase4_exercise.pyruns12,601 bytesreview/scripts/validate_review.pyruns2,272 bytesscripts/.gitignoreruns13 bytesscripts/README.mddoc23,598 bytesscripts/analysis_cache.pyruns21,996 bytesscripts/analyze_gerbers.pyruns65,652 bytesscripts/analyze_pcb.pyruns319,572 bytesscripts/analyze_schematic.pyruns451,413 bytesscripts/analyze_thermal.pyruns49,760 bytesscripts/analyzer_envelope.pyruns15,862 bytesscripts/bus_resolver.pyruns11,995 bytesscripts/capability_mode.pyruns9,171 bytesscripts/check_report_sections.pyruns9,120 bytesscripts/cross_analysis.pyruns55,743 bytesscripts/cross_verify.pyruns22,721 bytesscripts/detection_schema.pyruns23,291 bytesscripts/detector_helpers.pyruns2,645 bytesscripts/diff_analysis.pyruns61,715 bytesscripts/domain_detectors.pyruns261,588 bytesscripts/envelopes/__init__.pyruns0 bytesscripts/envelopes/cross_analysis.pyruns5,847 bytesscripts/envelopes/gerber.pyruns16,458 bytesscripts/envelopes/pcb.pyruns20,062 bytesscripts/envelopes/schematic.pyruns23,487 bytesscripts/envelopes/thermal.pyruns7,304 bytesscripts/export_issues.pyruns17,497 bytesscripts/fab_release_gate.pyruns23,532 bytesscripts/finding_schema.pyruns27,351 bytesscripts/gen_output_schema_md.pyruns8,819 bytesscripts/inputs_builder.pyruns4,085 bytesscripts/kicad_types.pyruns5,921 bytesscripts/kicad_utils.pyruns101,023 bytesscripts/lifecycle_audit.pyruns47,406 bytesscripts/lookup_detectors.pyruns30,346 bytesscripts/lookup_helpers.pyruns2,046 bytesscripts/methodology_gerbers.mddoc22,380 bytesscripts/methodology_pcb.mddoc20,674 bytesscripts/methodology_schematic.mddoc39,189 bytesscripts/netlist_queries.pyruns14,944 bytesscripts/output_filters.pyruns17,428 bytesscripts/pcb_connectivity.pyruns20,230 bytesscripts/project_config.pyruns34,990 bytesscripts/run_id.pyruns1,523 bytesscripts/schema_codec.pyruns5,312 bytesscripts/sexp_parser.pyruns7,679 bytesscripts/signal_detectors.pyruns224,569 bytesscripts/summarize_findings.pyruns17,287 bytesscripts/validation_detectors.pyruns69,844 bytesscripts/what_if.pyruns60,288 bytes
Read SKILL.md
# KiCad Project Analysis Skill
## Related Skills
| Skill | Purpose |
|-------|---------|
| `bom` | BOM extraction, enrichment, ordering, and export workflows |
| `digikey` | Search DigiKey for parts (prototype sourcing) |
| `mouser` | Search Mouser for parts (secondary prototype source) |
| `lcsc` | Search LCSC for parts (production sourcing, JLCPCB) |
| `element14` | Search Newark/Farnell/element14 (international sourcing, reliable datasheets) |
| `jlcpcb` | PCB fabrication & assembly ordering |
| `pcbway` | Alternative PCB fabrication & assembly |
| `spice` | SPICE simulation verification of detected subcircuits |View the complete source on GitHublcsc
When your agent uses it
Search LCSC Electronics for electronic components — find parts by LCSC number (Cxxxxx) or MPN, check stock/pricing, download datasheets, analyze specifications. Sister company to JLCPCB, same parts library. Sync and maintain a local datasheets directory for a KiCad project, or use batch MPN-list seeding (`--mpn-list`) for bulk workflows without a project. No API key needed — uses the free jlcsearch community API. Use this skill when the user mentions LCSC, JLCPCB parts library, JLCPCB assembly parts, production sourcing, Cxxxxx part numbers, needs to find LCSC equivalents for parts, is preparing a BOM for JLCPCB assembly, or wants to download datasheets and LCSC is available. For package cross-reference tables and BOM workflow, see the `bom` skill.
What it loads into context
Frontmatter
178 tokensAlways available to the agent
SKILL.md
3,209 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Key Differences from DigiKey/Mouser
- LCSC Part Numbers
- Component Search
- jlcsearch API Reference
- Datasheet Download & Sync
- LCSC Official API (Requires Approval)
- Web Search Fallback
- Cross-Referencing & Missing Equivalents
- Tips
Scripts executed separately
scripts/fetch_datasheet_lcsc.pyscripts/search_lcsc.pyscripts/sync_datasheets_lcsc.pyscripts/test_search_lcsc.py
Files
SKILL.mdcore11,908 bytesSKILL.mdcore11,908 bytesSKILL.mdcore11,908 bytesSKILL.mdcore11,908 bytesSKILL.mdcore11,908 bytesSKILL.mdcore11,908 bytesscripts/fetch_datasheet_lcsc.pyruns21,443 bytesscripts/search_lcsc.pyruns13,300 bytesscripts/sync_datasheets_lcsc.pyruns28,183 bytesscripts/test_search_lcsc.pyruns14,865 bytes
Read SKILL.md
# LCSC Electronics — Component Search, Datasheets & Ordering
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Schematic analysis — extracts MPNs for part lookup |
| `bom` | BOM management — orchestrates sourcing across distributors |
| `jlcpcb` | PCB assembly — shares the same parts library |
| `spice` | Uses LCSC parametric data for behavioral SPICE models (no auth needed) |
LCSC is JLCPCB's sister company — they share the same parts library and `Cxxxxx` part numbers. Use LCSC for **production sourcing** (assembled boards from JLCPCB/PCBWay). DigiKey/Mouser are for prototyping. For BOM management and export workflows, see `bom`.
## Key Differences from DigiKey/MouserView the complete source on GitHubmouser
When your agent uses it
Search Mouser Electronics for electronic components — secondary source for prototype orders. Find parts, check pricing/stock, download datasheets, analyze specifications. Use with KiCad for BOM creation and part selection. Also supports batch MPN-list seeding (`--mpn-list`) for bulk datasheet workflows without a KiCad project. Use this skill when the user specifically mentions Mouser, when DigiKey is out of stock or has worse pricing, when comparing prices across distributors, or when searching for parts that DigiKey doesn't carry. For package cross-reference tables and BOM workflow, see the `bom` skill.
What it loads into context
Frontmatter
128 tokensAlways available to the agent
SKILL.md
2,990 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- API Credential Setup
- Mouser Search API Reference
- Search Response Structure
- Datasheet Download & Sync
- Web Search Fallback
- Tips
Scripts executed separately
scripts/fetch_datasheet_mouser.pyscripts/sync_datasheets_mouser.py
Files
SKILL.mdcore11,436 bytesSKILL.mdcore11,436 bytesSKILL.mdcore11,436 bytesSKILL.mdcore11,436 bytesSKILL.mdcore11,436 bytesSKILL.mdcore11,436 bytesSKILL.mdcore11,436 bytesscripts/fetch_datasheet_mouser.pyruns20,886 bytesscripts/sync_datasheets_mouser.pyruns30,630 bytes
Read SKILL.md
# Mouser Electronics Parts Search & Analysis
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Schematic analysis — extracts MPNs for part lookup |
| `bom` | BOM management — orchestrates sourcing across distributors |
| `digikey` | Primary prototype source (prefer for datasheets — direct PDF links) |
| `spice` | Uses Mouser parametric data for behavioral SPICE models |
Mouser is the **secondary source for prototype orders** — use when DigiKey is out of stock or has worse pricing. For production orders, see `lcsc`/`jlcpcb`. For BOM management and export workflows, see `bom`. For datasheets, prefer DigiKey's API (direct PDF links) — Mouser blocks automated PDF downloads.
## API Credential SetupView the complete source on GitHubpcbway
When your agent uses it
PCBWay PCB fabrication and assembly — turnkey/consigned assembly, design rules, ordering workflow. Alternative to JLCPCB for manufacturing. Use with KiCad. Use this skill when the user mentions PCBWay, needs turnkey assembly (PCBWay sources parts by MPN), has parts not available on LCSC, needs assembled boards with non-LCSC components, wants to compare PCBWay vs JLCPCB, or needs assembly with parts sourced globally rather than from LCSC only. For gerber/CPL export, stencil ordering, and BOM management, see the `bom` skill.
What it loads into context
Frontmatter
123 tokensAlways available to the agent
SKILL.md
2,230 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Key Differences from JLCPCB
- Assembly Options
- BOM Format for Assembly
- PCB Design Rules (PCBWay Capabilities)
- Assembly Constraints
- PCBWay Partner API (Approval Required)
- Ordering Workflow
- Tips
Files
SKILL.mdcore8,572 bytesSKILL.mdcore8,572 bytes
Read SKILL.md
# PCBWay — PCB Fabrication & Assembly
PCBWay is a PCB fabrication and assembly service based in Shenzhen, China. It is an alternative to JLCPCB with similar capabilities and pricing.
**Typical usage**: Order bare prototype PCBs + framed stencil from PCBWay during prototyping (parts sourced separately from DigiKey/Mouser, hand-assembled in lab). For production runs (100s qty), order fully assembled boards from PCBWay using turnkey component sourcing (PCBWay sources parts by MPN). JLCPCB is the primary alternative. For BOM management, gerber/CPL export, and stencil ordering, see the `bom` skill.
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Read/analyze KiCad project files, DFM scoring |
| `bom` | BOM management, gerber/CPL export, stencil ordering |
| `digikey` | Search DigiKey (prototype sourcing, primary — also preferred for datasheet downloads via API) |
| `mouser` | Search Mouser (prototype sourcing, secondary) |View the complete source on GitHubspice
When your agent uses it
Run automatic SPICE simulations on subcircuits detected from KiCad schematic analysis — validates filter frequencies, divider ratios, opamp gains, LC resonance, and crystal load capacitance. Supports ngspice, LTspice, and Xyce (auto-detected). Generates testbenches, runs batch mode, produces structured pass/warn/fail report. Use when the user asks to simulate, verify, or validate any analog subcircuit — RC filters, LC filters, voltage dividers, opamp circuits, crystal oscillators. Also for "simulate my circuit", "run spice", "verify with simulation", "check my filter cutoff", "does this divider give the right voltage", "what's the bandwidth of this opamp stage". Consider suggesting simulation during design reviews when the schematic analyzer reports simulatable subcircuits and a SPICE simulator is available.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
5,363 tokensWhen the skill is activated
Reference documents
5,317 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Related Skills
- Requirements
- Workflow
- What Gets Simulated
- Output Format
- Interpreting Results
- Presenting Results to Users
- Model Accuracy Reference
- Script Reference
- Per-Part Behavioral Models
- Known Limitations
Scripts executed separately
scripts/extract_parasitics.pyscripts/simulate_subcircuits.pyscripts/spice_model_cache.pyscripts/spice_model_generator.pyscripts/spice_models.pyscripts/spice_part_library.pyscripts/spice_results.pyscripts/spice_simulator.pyscripts/spice_spec_fetcher.pyscripts/spice_templates.pyscripts/spice_tolerance.py
Files
SKILL.mdcore22,405 bytesSKILL.mdcore22,405 bytesSKILL.mdcore22,405 bytesSKILL.mdcore22,405 bytesSKILL.mdcore22,405 bytesSKILL.mdcore22,405 bytesSKILL.mdcore22,405 bytesSKILL.mdcore22,405 bytesreferences/simulation-models.mddoc20,171 bytesscripts/extract_parasitics.pyruns10,962 bytesscripts/simulate_subcircuits.pyruns27,252 bytesscripts/spice_model_cache.pyruns9,894 bytesscripts/spice_model_generator.pyruns6,978 bytesscripts/spice_models.pyruns6,568 bytesscripts/spice_part_library.pyruns28,122 bytesscripts/spice_results.pyruns46,066 bytesscripts/spice_simulator.pyruns16,990 bytesscripts/spice_spec_fetcher.pyruns22,467 bytesscripts/spice_templates.pyruns62,303 bytesscripts/spice_tolerance.pyruns11,012 bytes
Read SKILL.md
# SPICE Simulation Skill
Automatically generates and runs SPICE testbenches for circuit subcircuits detected by the `kicad` skill's schematic analyzer. Supports ngspice, LTspice, and Xyce (auto-detected). Validates calculated values (filter frequencies, divider ratios, opamp gains) against actual simulation results and produces a structured report.
This skill inverts the typical simulation workflow: instead of requiring users to create simulation sources and configure analysis (which ~2.5% of KiCad users do), it generates targeted testbenches automatically from the analyzer's subcircuit detections.
## Related Skills
| Skill | Purpose |
|-------|---------|
| `kicad` | Schematic/PCB analysis — produces the analyzer JSON this skill consumes |
| `digikey` | Parametric specs for behavioral models, datasheet downloads |
| `mouser` | Parametric specs (secondary source), datasheet downloads |
| `lcsc` | Parametric specs (no auth needed), datasheet downloads |View the complete source on GitHubSkills 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
- #623 on Nov 1
- #622 from Nov 2 to Nov 3
- #623 on Nov 4
- #624 on Nov 5
- #622 on Nov 6
- #624 since Nov 7
81 earlier periods
- #593 on Aug 2
- #568 on Aug 8
- #577 on Aug 9
- #600 on Aug 10
- #597 on Aug 11
- #588 on Aug 12
- #595 on Aug 13
- #591 on Aug 14
- #571 on Aug 15
- #586 on Aug 16
- #588 on Aug 17
- #602 on Aug 18
- #589 on Aug 19
- #587 on Aug 20
- #591 on Aug 21
- #569 on Aug 22
- #595 on Aug 23
- #593 on Aug 24
- #606 on Aug 25
- #589 on Aug 26
- #594 on Aug 27
- #609 on Aug 28
- #567 on Aug 29
- #565 on Aug 30
- #588 on Aug 31
- #598 on Sep 1
- #589 on Sep 2
- #585 on Sep 3
- #559 on Sep 4
- #552 on Sep 5
- #560 on Sep 6
- #564 on Sep 7
- #575 on Sep 8
- #559 on Sep 9
- #562 on Sep 10
- #551 on Sep 11
- #545 on Sep 12
- #549 on Sep 13
- #566 on Sep 14
- #551 on Sep 15
- #560 on Sep 16
- #554 on Sep 17
- #558 on Sep 18
- #543 on Sep 19
- #550 on Sep 20
- #552 on Sep 21
- #564 on Sep 22
- #555 on Sep 23
- #540 on Sep 24
- #535 on Sep 25
- #541 on Sep 26
- #557 from Sep 27 to Sep 28
- #576 on Sep 29
- #563 on Sep 30
- #552 on Oct 1
- #554 on Oct 2
- #538 on Oct 3
- #543 on Oct 4
- #550 on Oct 5
- #563 on Oct 6
- #565 on Oct 7
- #589 on Oct 8
- #580 on Oct 9
- #563 on Oct 10
- #564 on Oct 11
- #573 from Oct 12 to Oct 13
- #580 on Oct 14
- #577 on Oct 15
- #573 on Oct 16
- #564 on Oct 17
- #565 on Oct 18
- #581 on Oct 19
- #586 on Oct 20
- #589 on Oct 21
- #574 on Oct 22
- #565 on Oct 23
- #556 on Oct 24
- #614 on Oct 25
- #620 on Oct 28
- #621 from Oct 29 to Oct 30
- #622 on Oct 31
Before you install
Network or broad shellAutomated 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:1Analysis incomplete: Referenced executable target unavailable; not analyzed.claude-plugin/plugin.json:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/bom/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/datasheets/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/digikey/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/digikey/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/digikey/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/digikey/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/digikey/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/digikey/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 14 dangerous shell commandsin 6 files: spice/scripts/spice_results.py:336 bom/SKILL.md:346 spice/scripts/spice_templates.py:633 and 3 more
- 764 network referencesin 56 files: datasheets/schemas/transistor.schema.json:1 datasheets/schemas/diode.schema.json:1 datasheets/schemas/opamp.schema.json:1 and 53 more
- No hidden or obfuscated text
- No instruction overrides
- 100 executable scriptsin 99 files: bom/scripts/translate_bom_pnp.py:1 bom/scripts/bom_manager.py:1 bom/scripts/edit_properties.py:1 and 96 more
- 112 references to secretsin 14 files: kicad/scripts/lifecycle_audit.py:20 spice/scripts/spice_spec_fetcher.py:241 element14/scripts/fetch_datasheet_element14.py:18 and 11 more
- No requests to vote in Hot
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
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
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
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
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
skills/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
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
skills/kicad/review/schemas/deep_review.schema.json
skills/kicad/review/schemas/design_context.schema.json
skills/kicad/review/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
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
skills/kicad/scripts/run_id.py
- Executable scriptline 1
Executable file
skills/kicad/scripts/schema_codec.py
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
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 | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/bom/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Native | Path .cursor/rules/kicad-happy.mdc | .cursor/skills/<skill-name>/ |
| Gemini CLI | Native | Path GEMINI.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/bom/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Native | Path .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.
[](https://hotskills.dev/skill/aklofas-kicad-happy/)