Loading...
Loading...
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".
npx skill4agent add aklofas/kicad-happy datasheets| Skill | Relationship |
|---|---|
| Producers — download the PDFs under |
| 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 |
| Consumer — switching-frequency, package-Rθ_JA, and operating-voltage data sharpen EMC heuristics |
| Consumer — SPICE model presence + IBIS data feed simulation-readiness checks |
| Consumer — package Rθ_JA + junction temperature limits drive Tj estimates (TS-001..TJ-001) |
| Indirect — coverage of structured extractions affects BOM verification confidence |
distributor skill downloads PDF → datasheets skill extracts → analyzer skill queriestrust_level: low<project>/datasheets/digikeymouserlcscelement14schemas/basepinoutspec_valueregulatorextractionmanifestEXTRACTION_VERSIONscripts/datasheet_extract_cache.pydatasheet_types/DatasheetFactsSpecValuePinPinoutlookup()best()trusted()has_data()scripts/datasheet_lookup.pyscripts/datasheet_features.pyget_regulator_featuresget_mcu_featuresget_pin_functiondatasheet_verify.pydatasheet_verify_v14_extractiondigikeymouserlcscelement14<project>/datasheets/extracted/<project>/
design.kicad_sch
datasheets/
TPS61023DRLR.pdf # downloaded by distributor skills
extracted/
manifest.json # extraction manifest (legacy name: index.json)
TPS61023DRLR.json # structured extraction (this skill's output)references/extraction-schema.mdreferences/field-extraction-guide.mdreferences/quality-scoring.mdreferences/consumer-api.mdreferences/cache-layout.md_families/scripts/datasheet_extract_cache.pyscripts/datasheet_page_selector.pyscripts/datasheet_score.pyscripts/datasheet_verify.pyverify_v14_extractionscripts/datasheet_lookup.pylookup(mpn) → DatasheetFactsscripts/datasheet_features.py_derive_*_v14scripts/plan_extraction.pyscripts/merge_results.pydatasheet_types/DatasheetFactsSpecValuePinPinoutlookupbesttrustedhas_datapython3 skills/datasheets/scripts/plan_extraction.py <project>merge_results.pyreferences/extraction-pipeline.mdlookup(mpn, cache_dir=...)datasheet_typesimport sys, pathlib
sys.path.insert(0, str(pathlib.Path(__file__).parent.parent / "datasheets"))
from datasheet_types import lookup, has_data, best, trusted
# Returns Optional[DatasheetFacts]. None on cache miss / stale PDF / low quality.
facts = lookup("TPS61023DRLR", cache_dir=pathlib.Path("datasheets/extracted"))
if facts is None:
return # heuristic-only path; no datasheet evidence available
# Field-level trust gating — every SpecValue list runs through has_data() / best() / trusted().
pu_range = facts.base.recommended_pullup_range # Optional[list[SpecValue]]
if has_data(pu_range):
# Most-trusted single value (first SpecValue meeting threshold, preserves extractor order).
rec = best(pu_range, min_confidence="medium") # Optional[SpecValue]
if rec is not None and rec.min is not None:
... # use rec.min, rec.max, rec.typ, rec.unit, rec.evidence.{page,section,confidence}
# All SpecValues at threshold (for multi-value fields like absolute_max).
hi_conf = trusted(facts.base.absolute_max.get("VDD", []), min_confidence="high")kicad/SKILL.mdlookup()Noneif facts is None: returnDatasheetFactsfacts.regulatorNoneregulatorNone[]list[SpecValue]has_data()Falsebest()trusted()SpecValue.min.max.typOptional[float]typ><.min.maxTypeErroris not Noneconfidence"low""medium""high"best()trusted()ValueErrorget_regulator_features(mpn)get_mcu_features(mpn)get_pin_function(mpn, pin)scripts/datasheet_features.pylookup()sync_datasheets_digikey.pysync_datasheets_lcsc.pydatasheets/extracted/trust_level: lowmixedhigh