Board Selection
Choose a concrete board target from requirements rather than a marketing family
name. This skill produces a decision record that downstream skills can consume.
Boundary With Board Support
Use board-support when the user has named a board and needs its exact profile,
capabilities, pin hazards, source status, or framework compatibility. Use this
skill when the user is choosing, replacing, or comparing boards against project
requirements. Consume the board-support profile instead of repeating or
guessing its facts.
Intake
Capture required voltage and rails, inputs/outputs, PWM/ADC/timers, buses and
protocols, memory/flash/PSRAM, radio/USB, timing, power source and peak load,
physical constraints, production quantity, toolchain, library constraints,
security/update needs, and recovery access.
Read ../../references/boards/README.md and use ../board-support/SKILL.md for
the relevant exact profile. If the board is not covered, use the vendor product
page, MCU/module datasheet, board schematic, and selected framework variant
source. Label inferred values.
Process
- Turn requirements into hard constraints and preferences.
- Eliminate candidates that fail voltage, pin direction, peripheral, memory,
power, or recovery constraints.
- Compare remaining boards across exact SKU, framework/core, toolchain,
library architecture, upload path, security/update support, availability,
and maintenance horizon.
- Record the selected board, rejected alternatives, reasons, open risks, and
the exact build identifier/FQBN/environment.
- Hand the board profile to
pin-assignment, wiring-safety-check,
library-selection, memory-budgeting, and hardware-tdd as applicable.
Output
Return a compact table with requirement, constraint, candidate result,
source, and verification status, followed by the decision and open risks.
Do not present a board-family fact as a board-revision guarantee.
Anti-rationalization
| Shortcut |
Response |
| "ESP32" is precise enough. |
Ask for module suffix, DevKit revision, flash/PSRAM, and USB use. |
| "The board has enough memory." |
Separate nominal memory, application memory, heap/stack, filesystem, and OTA partitions. |
| "USB power will run it." |
Check rail voltage, regulator headroom, startup peaks, and external loads. |
| "Any Arduino library will work." |
Check architecture, framework, version, API, and dependency compatibility. |
| "It compiles, so it is the right board." |
Keep electrical, hardware, system, and deployment proof open. |
Verification
- The exact board/revision, MCU/module, framework, toolchain, and version are
recorded.
- Every chosen value has a primary source or is marked
to verify.
- A compile-only or dry-run path exists for the selected target.
- Rejected alternatives and unresolved risks remain visible.
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.
1---2name: board-selection3description: Use when choosing or replacing an Arduino Uno, Uno R4, ESP32, ESP32-S3, Raspberry Pi Pico, Pico W, or another embedded board from project requirements. Compare exact board constraints, toolchains, libraries, power, memory, peripherals, recovery, and lifecycle fit before implementation.4---5
6# Board Selection
7
8Choose a concrete board target from requirements rather than a marketing family
9name. This skill produces a decision record that downstream skills can consume.
10
11## Boundary With Board Support
12
13Use `board-support` when the user has named a board and needs its exact profile,
14capabilities, pin hazards, source status, or framework compatibility. Use this
15skill when the user is choosing, replacing, or comparing boards against project
16requirements. Consume the board-support profile instead of repeating or
17guessing its facts.
18
19## Intake
20
21Capture required voltage and rails, inputs/outputs, PWM/ADC/timers, buses and
22protocols, memory/flash/PSRAM, radio/USB, timing, power source and peak load,
23physical constraints, production quantity, toolchain, library constraints,
24security/update needs, and recovery access.
25
26Read `../../references/boards/README.md` and use `../board-support/SKILL.md` for
27the relevant exact profile. If the board is not covered, use the vendor product
28page, MCU/module datasheet, board schematic, and selected framework variant
29source. Label inferred values.
30
31## Process
32
331. Turn requirements into hard constraints and preferences.
342. Eliminate candidates that fail voltage, pin direction, peripheral, memory,
35 power, or recovery constraints.
363. Compare remaining boards across exact SKU, framework/core, toolchain,
37 library architecture, upload path, security/update support, availability,
38 and maintenance horizon.
394. Record the selected board, rejected alternatives, reasons, open risks, and
40 the exact build identifier/FQBN/environment.
415. Hand the board profile to `pin-assignment`, `wiring-safety-check`,
42 `library-selection`, `memory-budgeting`, and `hardware-tdd` as applicable.
43
44## Output
45
46Return a compact table with `requirement`, `constraint`, `candidate result`,
47`source`, and `verification status`, followed by the decision and open risks.
48Do not present a board-family fact as a board-revision guarantee.
49
50## Anti-rationalization
51
52| Shortcut | Response |
53|---|---|
54| "ESP32" is precise enough. | Ask for module suffix, DevKit revision, flash/PSRAM, and USB use. |
55| "The board has enough memory." | Separate nominal memory, application memory, heap/stack, filesystem, and OTA partitions. |
56| "USB power will run it." | Check rail voltage, regulator headroom, startup peaks, and external loads. |
57| "Any Arduino library will work." | Check architecture, framework, version, API, and dependency compatibility. |
58| "It compiles, so it is the right board." | Keep electrical, hardware, system, and deployment proof open. |
59
60## Verification
61
62- The exact board/revision, MCU/module, framework, toolchain, and version are
63 recorded.
64- Every chosen value has a primary source or is marked `to verify`.
65- A compile-only or dry-run path exists for the selected target.
66- Rejected alternatives and unresolved risks remain visible.
67
68## Shared output contract
69
70Use [the shared Arduino skill contract](../../docs/arduino-skill-contract.md):
71state assumptions, required tools and versions, implementation steps,
72tests/evidence by proof stage, known limitations, and recovery/security notes.