一键导入
embedded-verification
Use when about to claim embedded work is complete - requires build-flash-monitor output evidence, NO claims without fresh verification
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when about to claim embedded work is complete - requires build-flash-monitor output evidence, NO claims without fresh verification
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when working on embedded systems, firmware, MCU, sensors, displays, hardware drivers, or IoT applications on ESP32, STM32, RP2040, nRF52 - enforces TDD-first workflow with HAL Mock tests and build-flash-monitor verification before any completion claims
Embedded SP - Superpowers-integrated embedded development skill. Use for ESP32, STM32, RP2040, nRF52. Enforces TDD-first, Build-Flash-Monitor verification.
Use when working on embedded systems, firmware, MCU, sensors, displays, hardware drivers, or IoT applications on ESP32, STM32, RP2040, nRF52 - enforces TDD-first workflow with HAL Mock tests and build-flash-monitor verification before any completion claims
Use when working on embedded systems, firmware, MCU, sensors, displays, hardware drivers, or IoT applications on ESP32, STM32, RP2040, nRF52 - enforces TDD-first workflow with HAL Mock tests and build-flash-monitor verification before any completion claims
Use BEFORE any embedded firmware development - clarifies hardware requirements, pin assignments, interface timing, and architecture through structured questions and design approval gate
Use when hardware config detected, problem solved with evidence, or verification passed - writes to AGENTS.md for persistent project memory
| name | embedded-verification |
| description | Use when about to claim embedded work is complete - requires build-flash-monitor output evidence, NO claims without fresh verification |
Claiming firmware is complete without hardware verification is dishonesty.
Core principle: Evidence before claims, always.
Announce at start: "I'm using the embedded-verification skill to collect build-flash-monitor evidence before claiming completion."
NO COMPLETION CLAIM WITHOUT BUILD-FLASH-MONITOR OUTPUT
digraph verification_gate {
"Status claimed?" [shape=ellipse];
"IDENTIFY: What command proves this?" [shape=box];
"RUN: Build-Flash-Monitor (fresh)" [shape=box];
"READ: Full output" [shape=box];
"VERIFY: Evidence confirms claim?" [shape=diamond];
"STOP: Run verification first" [shape=octagon, style=filled, fillcolor=red, fontcolor=white];
"State actual status with evidence" [shape=box];
"State claim WITH evidence" [shape=box];
"Completion claimed" [shape=doublecircle];
"Status claimed?" -> "IDENTIFY: What command proves this?";
"IDENTIFY: What command proves this?" -> "RUN: Build-Flash-Monitor (fresh)";
"RUN: Build-Flash-Monitor (fresh)" -> "READ: Full output";
"READ: Full output" -> "VERIFY: Evidence confirms claim?";
"VERIFY: Evidence confirms claim?" -> "STOP: Run verification first" [label="no - no evidence"];
"VERIFY: Evidence confirms claim?" -> "State actual status with evidence" [label="partial - some evidence"];
"VERIFY: Evidence confirms claim?" -> "State claim WITH evidence" [label="yes - confirmed"];
"State claim WITH evidence" -> "Completion claimed";
}
| Claim | Required Evidence | Command |
|---|---|---|
| Driver compiles | idf.py build output: "Project build complete" + exit 0 | idf.py build |
| Driver flashed | Monitor output: "Hash of data verified" | idf.py -p PORT flash |
| LCD works | Monitor log: "LCD initialized" + screen photo | idf.py -p PORT flash monitor |
| Sensor reads | Monitor log: "Sensor value: X" timestamps | idf.py -p PORT flash monitor |
| Wi-Fi connects | Monitor log: "Connected to AP" + IP address | idf.py -p PORT flash monitor |
| Bug fixed | Monitor log: No crash/assert + expected behavior | idf.py -p PORT flash monitor |
# Complete verification cycle
idf.py build
idf.py -p COM3 flash monitor
# Expected output for success:
# Project build complete. 100% complete.
# Hash of data verified.
# I (100) LCD: LCD initialized successfully
make
st-flash write firmware.bin 0x8000000
st-info --probe
# Expected output:
# Build complete
# Flash written successfully
# Chip detected
cmake --build build
picotool load build/firmware.uf2
# USB CDC monitor
# Expected: UF2 written, USB serial active
Ask: "What command proves this works?"
Driver compiles → idf.py build
Driver flashes → idf.py flash
Hardware works → idf.py flash monitor
IMPORTANT: Fresh run, not cached results.
idf.py build flash monitor
Do NOT trust:
idf.py build flash monitor
# Capture ALL output
# Look for: errors, warnings, success markers
Key markers to check:
| Expected Log | Claim Supported |
|---|---|
| "LCD initialized" | LCD driver working |
| "Sensor value: X" | Sensor reading data |
| "Connected to AP" | Wi-Fi functional |
| No crash/assert | Stable operation |
If evidence confirms claim:
"Build complete. Flash verified. Monitor shows 'LCD initialized'.
LCD driver verified working."
If evidence partial:
"Build passes. Flash fails with 'timeout waiting for ACK'.
Driver NOT working. Issue: [specific error]."
If no evidence:
"Cannot claim completion. No verification run.
Run: idf.py build flash monitor"
LCD Driver Success:
- "I (xxx) LCD: LCD initialized successfully"
- "I (xxx) LCD: LCD ID: 0x7789" (ST7789)
- No "E (xxx) LCD:" error logs
Sensor Success:
- "I (xxx) IMU: Accel X=xxx Y=xxx Z=xxx"
- Regular sensor log timestamps
- No "E (xxx) IMU:" error logs
Wi-Fi Success:
- "I (xxx) wifi: Connected to AP [SSID]"
- "I (xxx) wifi: Got IP: 192.168.x.x"
- No "E (xxx) wifi:" error logs
LCD Failure:
- "E (xxx) LCD: SPI transmit failed"
- "E (xxx) LCD: Timeout waiting for response"
- "assert failed: lcd_init"
Sensor Failure:
- "E (xxx) IMU: I2C read failed"
- "E (xxx) IMU: Device not found at address 0xXX"
System Failure:
- "Guru Meditation Error"
- "Core 0 register dump"
- "assert failed"
For LCD/display verification:
# Capture screen
python scripts/camera_capture.py --session
# Expected:
# - Screenshots saved to screenshots/
# - Visible LCD content matching expected
# Analyze
read screenshots/capture_xxx.png
# Check: Layout, color, text visible
Required for LCD claims:
| Claim | Reality Check | Action |
|---|---|---|
| "Should compile now" | RUN idf.py build, show output | No guessing |
| "Driver should work" | RUN flash monitor, show logs | Evidence required |
| "LCD initialized" | Show monitor log + screen photo | Double evidence |
| "Tested on breadboard" | Show THIS session's monitor output | Fresh evidence |
| "Linter passed" | Linter ≠ compiler ≠ hardware | Run full cycle |
| "Previous session verified" | Previous ≠ current | Run fresh now |
| Excuse | Reality |
|---|---|
| "Should work now" | Run verification. Show output. |
| "I tested earlier" | Previous session ≠ current state. Run fresh. |
| "Build passed so it works" | Build ≠ Flash ≠ Monitor. Full cycle required. |
| "Mock tests passed" | Mock ≠ Hardware. Hardware verification required. |
| "Visual inspection looks right" | Photo required for GUI claims. |
| "It's just a small change" | Small changes can break. Verify. |
If you think:
STOP. You are rationalizing. Run fresh verification.
Before claiming completion:
Previous skill: embedded-tdd (tests pass)
This skill: Collect build-flash-monitor evidence
After verification: State completion WITH evidence
idf.py build
idf.py -p COM3 flash monitor
# Use ; if($?) { } for chaining
idf.py build && idf.py -p /dev/ttyUSB0 flash monitor
python scripts/serial_monitor.py -p COM3 -d 60 --json
Output: Structured JSON for AI analysis
{
"timestamp": "2026-04-13T14:30:00",
"logs": [
{"level": "I", "tag": "LCD", "message": "LCD initialized successfully"},
{"level": "I", "tag": "LCD", "message": "LCD ID: 0x7789"}
],
"errors": [],
"crashes": false
}