
datasheet-interpreter
Extracts key specifications from component datasheet PDFs for maker projects. Use when user shares a datasheet PDF URL, asks about component specs, needs pin assignments, I2C addresses, timing requirements, or register maps. Downloads and parses PDF to extract essentials. Complements datasheet-parser for quick lookups.
- Installs
- 159
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/wedsamuel1230/embedded-engineering-skills --skill datasheet-interpreter- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads datasheet-interpreter automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Datasheet Interpreter
Extracts actionable specifications from component datasheet PDFs.
Resources
Scripts
- scripts/extract_specs.py - Downloads datasheet PDFs from URLs and extracts specs using pattern matching
References
- references/common-parameters.md - Guide to understanding datasheet parameters
Quick Start
# Extract specs from a datasheet URL
uv run --no-project scripts/extract_specs.py --url "https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf"
# Extract specs with markdown output
uv run --no-project scripts/extract_specs.py --url "https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf" --format markdown
# Extract from local PDF file
uv run --no-project scripts/extract_specs.py --file "local_datasheet.pdf"
# Interactive mode
uv run --no-project scripts/extract_specs.py --interactive
When to Use
- "What's the I2C address for this chip?"
- "How do I connect this sensor?"
- "What pins do what on this module?"
- User shares a PDF datasheet URL
- Need timing specs or register info
- Quick reference without full driver generation
Relationship to Other Skills
- datasheet-parser: Full driver library generation (lexus2k-style)
- datasheet-interpreter (this): Quick spec extraction for immediate use
Information Extraction Workflow
Step 1: Request Datasheet
Please provide:
1. Component name (e.g., "BME280", "MPU6050")
2. Datasheet PDF file or URL (manufacturer version preferred)
3. What specific information you need:
□ Pin assignments / pinout
□ I2C/SPI address and protocol
□ Operating conditions (voltage, current)
□ Timing requirements
□ Register map
□ Example circuit
□ All of the above
Step 2: Validate PDF Quality
Check For:
- Searchable text (not scanned image)
- Official manufacturer datasheet (not clone/distributor summary)
- Revision/version number noted
- Complete document (includes register tables if applicable)
If PDF Issues:
⚠️ This appears to be a [scanned image | partial datasheet | third-party summary].
For best results, please provide the official manufacturer datasheet from:
- [Manufacturer website link]
- Or search: "[component] datasheet pdf site:manufacturer.com"
Extraction Templates
Quick Reference Card
Generate this for any component:
# [Component Name] Quick Reference
## Basic Info
- **Manufacturer:** [name]
- **Part Number:** [full part number with variants]
- **Datasheet Version:** [rev/date]
- **Description:** [one-line description]
## Electrical Characteristics
| Parameter | Min | Typ | Max | Unit |
|-----------|-----|-----|-----|------|
| Supply Voltage (VDD) | | | | V |
| Operating Current | | | | mA |
| Sleep Current | | | | µA |
| Operating Temp | | | | °C |
## Communication Interface
- **Protocol:** [I2C / SPI / UART / GPIO]
- **Address:** [0xNN (7-bit)] or [selectable via pin]
- **Max Clock:** [frequency]
- **Logic Levels:** [3.3V / 5V tolerant]
## Pinout
| Pin | Name | Type | Description |
|-----|------|------|-------------|
| 1 | VDD | Power | Supply voltage |
| 2 | GND | Power | Ground |
| ... | ... | ... | ... |
## Key Registers (if applicable)
| Address | Name | R/W | Description |
|---------|------|-----|-------------|
| 0x00 | WHO_AM_I | R | Device ID (expect 0xNN) |
| ... | ... | ... | ... |
## Arduino Wiring
| Component Pin | Arduino Uno | ESP32 | Pico |
|---------------|-------------|-------|------|
| VCC | 3.3V | 3.3V | 3V3 |
| GND | GND | GND | GND |
| SDA | A4 | GPIO21 | GP4 |
| SCL | A5 | GPIO22 | GP5 |
## Important Notes
- [Critical warnings from datasheet]
- [Application notes]
Common Component Categories
I2C Sensors
Extract:
□ I2C address (7-bit format, note if configurable)
□ WHO_AM_I register address and expected value
□ Configuration register settings
□ Data registers (where to read measurements)
□ Resolution and range options
□ Conversion time / measurement rate
I2C Address Quick Reference:
| Component | Address (7-bit) | Config Pin | Alt Address |
|---|---|---|---|
| BME280 | 0x76 | SDO→GND | 0x77 (SDO→VDD) |
| BME680 | 0x76 | SDO→GND | 0x77 (SDO→VDD) |
| MPU6050 | 0x68 | AD0→GND | 0x69 (AD0→VDD) |
| SHT30 | 0x44 | ADDR→GND | 0x45 (ADDR→VDD) |
| BH1750 | 0x23 | ADDR→GND | 0x5C (ADDR→VDD) |
| VL53L0X | 0x29 | - | Configurable via software |
| INA219 | 0x40 | A0,A1 | 0x40-0x4F |
| ADS1115 | 0x48 | ADDR→GND | 0x49-0x4B |
SPI Devices
Extract:
□ SPI mode (CPOL, CPHA)
□ Max clock frequency
□ Data order (MSB/LSB first)
□ Command format
□ Chip select behavior (active low?)
Motor Drivers
Extract:
□ Logic voltage (VCC)
□ Motor voltage range (VM)
□ Current per channel (continuous/peak)
□ Control interface (PWM frequency, step/dir)
□ Protection features (thermal, overcurrent)
□ H-bridge or half-bridge
Display Modules
Extract:
□ Resolution (width x height)
□ Controller IC (SSD1306, ILI9341, etc.)
□ Interface (I2C, SPI, parallel)
□ Memory map / pixel format
□ Initialization sequence
□ Refresh rate
Critical Spec Finder
For Power Planning
Search datasheet for:
- "Electrical Characteristics" table
- "Power Consumption" or "Current Consumption"
- "Typical Operating Conditions"
- Sleep/standby modes and their currents
Template Output:
## Power Specs for [Component]
### Operating Modes
| Mode | Typical Current | Conditions |
|------|-----------------|------------|
| Active | XXX mA | [freq, voltage, etc.] |
| Idle | XXX µA | |
| Sleep/Standby | XXX µA | |
| Deep Sleep | XXX nA | |
### Wake-up Time
- From sleep: XXX ms
- From deep sleep: XXX ms
For Timing Requirements
Search datasheet for:
- "Timing Characteristics"
- "AC Characteristics"
- Setup/hold times
- Clock specifications
For Pin Tolerance
Search datasheet for:
- "Absolute Maximum Ratings"
- "ESD protection"
- "5V tolerant" mentions
- Input voltage specifications
Register Map Extraction
Structured Format
// [Component] Register Definitions
// Extracted from datasheet v[X.Y], p.[N]
// === REGISTER ADDRESSES ===
#define REG_NAME 0x00 // Description
// === BITFIELD DEFINITIONS ===
// REG_NAME (0x00) - [Description]
// Bit 7-6: FIELD_A - [description]
// Bit 5: FIELD_B - [description]
// Bit 4-0: FIELD_C - [description]
#define REG_NAME_FIELD_A_MASK 0xC0
#define REG_NAME_FIELD_A_POS 6
#define REG_NAME_FIELD_B_BIT 5
#define REG_NAME_FIELD_C_MASK 0x1F
Common Register Patterns
Configuration Register:
- Enable/disable features
- Set operating mode
- Configure interrupt behavior
Status Register:
- Data ready flags
- Error/fault indicators
- Interrupt sources
Data Registers:
- Usually consecutive addresses
- Note byte order (MSB first or LSB first)
- Signed vs unsigned interpretation
Wiring Diagram Generator
Generate text-based wiring diagrams:
[Component] [Arduino Uno]
┌─────────┐ ┌───────────┐
│ VCC ────┼─────────┤ 3.3V │
│ GND ────┼─────────┤ GND │
│ SDA ────┼─────────┤ A4 (SDA) │
│ SCL ────┼─────────┤ A5 (SCL) │
│ INT ────┼─────────┤ D2 (INT0) │
└─────────┘ └───────────┘
Notes:
- Add 4.7kΩ pull-ups on SDA/SCL if not on module
- INT is open-drain, needs pull-up
Example Code Generator
Based on extracted specs, generate minimal working example:
/*
* [Component] Basic Example
* Generated from datasheet interpretation
*
* Wiring:
* - VCC → 3.3V
* - GND → GND
* - SDA → A4 (Arduino Uno) / GPIO21 (ESP32)
* - SCL → A5 (Arduino Uno) / GPIO22 (ESP32)
*/
#include <Wire.h>
#define COMPONENT_ADDR 0x00 // From datasheet p.X
#define REG_WHO_AM_I 0x00 // Expected: 0xNN
#define REG_CTRL 0x00 // Configuration
#define REG_DATA 0x00 // Data output
void setup() {
Serial.begin(115200);
Wire.begin();
// Verify communication
Wire.beginTransmission(COMPONENT_ADDR);
if (Wire.endTransmission() != 0) {
Serial.println("Component not found!");
while(1);
}
// Read device ID
uint8_t id = readReg(REG_WHO_AM_I);
Serial.print("Device ID: 0x");
Serial.println(id, HEX);
// Initialize
writeReg(REG_CTRL, 0x00); // [Configuration value from datasheet]
}
void loop() {
// Read data
int16_t data = readReg16(REG_DATA);
Serial.println(data);
delay(100);
}
uint8_t readReg(uint8_t reg) {
Wire.beginTransmission(COMPONENT_ADDR);
Wire.write(reg);
Wire.endTransmission(false);
Wire.requestFrom(COMPONENT_ADDR, (uint8_t)1);
return Wire.read();
}
void writeReg(uint8_t reg, uint8_t val) {
Wire.beginTransmission(COMPONENT_ADDR);
Wire.write(reg);
Wire.write(val);
Wire.endTransmission();
}
int16_t readReg16(uint8_t reg) {
Wire.beginTransmission(COMPONENT_ADDR);
Wire.write(reg);
Wire.endTransmission(false);
Wire.requestFrom(COMPONENT_ADDR, (uint8_t)2);
int16_t val = Wire.read() << 8; // MSB first (check datasheet!)
val |= Wire.read();
return val;
}
Quick Lookup Database
Common Questions Answered
"What voltage does [component] need?" → Check "Absolute Maximum Ratings" and "Recommended Operating Conditions"
"Is it 3.3V or 5V?" → Look for "VDD" or "VCC" in electrical characteristics → Check if I/O pins are "5V tolerant"
"How fast can I run the I2C?" → Find "I2C Clock Frequency" in timing specs (usually 100kHz standard, 400kHz fast)
"How do I wake it from sleep?" → Look for "Power Management" or "Operating Modes" section
"Why won't it respond at the address I expected?" → Check address selection pins (AD0, ADDR, SA0) → Some datasheets show 8-bit address (divide by 2 for 7-bit)
Datasheet Reading Tips
Where to Find Key Info
| Information | Section Name |
|---|---|
| I2C Address | "Serial Interface" or "Communication" |
| Voltage/Current | "Electrical Characteristics" |
| Pinout | "Pin Configuration" or "Package Information" |
| Registers | "Register Map" or "Memory Map" |
| Timing | "Timing Characteristics" or "AC Characteristics" |
| Example Circuit | "Application Information" or "Typical Application" |
Red Flags in Datasheets
- 🚩 Missing absolute maximum ratings
- 🚩 No version/revision number
- 🚩 Inconsistent register descriptions
- 🚩 Machine-translated text
- 🚩 Missing timing diagrams for protocols
→ If you see these, try to find a better quality datasheet from the original manufacturer
Shared Output Contract
Use the shared Arduino skill contract: state assumptions, required tools and versions, implementation steps, tests/evidence by proof stage, known limitations, and recovery/security notes.
FAQ
What does the datasheet-interpreter skill do?
Extracts key specifications from component datasheet PDFs for maker projects. Use when user shares a datasheet PDF URL, asks about component specs, needs pin assignments, I2C addresses, timing requirements, or register maps. Downloads and parses PDF to extract essentials. Complements datasheet-parser for quick lookups.
How do I install datasheet-interpreter?
Run npx skills add https://github.com/wedsamuel1230/embedded-engineering-skills --skill datasheet-interpreter in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/datasheet-interpreter/ (personal) or .claude/skills/datasheet-interpreter/ (project).
Which AI agents can use datasheet-interpreter?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is datasheet-interpreter safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains datasheet-interpreter?
It is published by wedsamuel1230 in wedsamuel1230/embedded-engineering-skills. It has 159 recorded installs.
More from wedsamuel1230/embedded-engineering-skills
arduino-project-builder
wedsamuel1230/embedded-engineering-skills
Build complete Arduino and embedded projects across Arduino IDE, Arduino CLI, PlatformIO, and vendor-specific toolchains. Use when users request an application combining firmware, sensors, actuators, networking, power, or deployment rather than a code snippet. The bundled scaffold targets UNO, ESP32, and Raspberry Pi Pico; use the board profile and document limitations for other targets.
arduino-code-generator
wedsamuel1230/embedded-engineering-skills
Generate Arduino and embedded C++ snippets for sensors, actuators, buses, state machines, timing, data logging, and hardware abstraction. Use when a user requests implementation code and provide the exact board, framework, toolchain, pins, voltage, memory, and library versions first. Bundled templates target UNO, ESP32, and RP2040; document unsupported board or vendor-framework behavior instead of guessing.
circuit-debugger
wedsamuel1230/embedded-engineering-skills
Systematic hardware debugging guide for Arduino/ESP32/RP2040 circuits. Use when user reports: circuit not working, components getting hot, no power, intermittent failures, unexpected behavior, sensor not responding, LED not lighting, motor not spinning. Guides through power checks, continuity testing, signal tracing, and component isolation using multimeter techniques.
arduino-serial-monitor
wedsamuel1230/embedded-engineering-skills
Read and analyze Arduino or embedded serial output for structured runtime debugging across Arduino IDE, Arduino CLI, PlatformIO, and vendor-specific monitor tools. Use when boot output, sensor data, resets, communication failures, timing symptoms, or field behavior need evidence rather than compile-only reasoning.
error-message-explainer
wedsamuel1230/embedded-engineering-skills
Explain Arduino and embedded compiler, upload, boot, power, and runtime errors in plain English. Use when a user shares an error or failure from Arduino IDE, Arduino CLI, PlatformIO, or a vendor-specific tool. Separate build, upload, hardware, and system evidence and give a board-specific recovery path without assuming UNO, ESP32, or RP2040 behavior.
enclosure-designer
wedsamuel1230/embedded-engineering-skills
Use when users need a 3D-printable enclosure for an Arduino, ESP32, or RP2040 project and need help with measurements, cutouts, print settings, or environmental protection.
Popular frontend & design skills
setup-matt-pocock-skills
mattpocock/skills
Configure this repo for the engineering skills: set up its issue tracker, triage label vocabulary, and domain doc layout. Run once before first use of the other engineering skills.
frontend-design
anthropics/skills
Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
hyperframes-animation
heygen-com/hyperframes
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.
prototype
mattpocock/skills
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
hyperframes-core
heygen-com/hyperframes
The HyperFrames composition contract — build one renderable project. Use for composition structure, the data- timing attributes, class="clip", tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Read before writing composition HTML.
vercel-react-best-practices
vercel-labs/agent-skills
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.