Skip to content

Add add-board-v1 skill for adding new boards to WipperSnapper#893

Draft
tyeth wants to merge 3 commits intoadafruit:add-skillsfrom
tyeth-ai-assisted:add-skills
Draft

Add add-board-v1 skill for adding new boards to WipperSnapper#893
tyeth wants to merge 3 commits intoadafruit:add-skillsfrom
tyeth-ai-assisted:add-skills

Conversation

@tyeth
Copy link
Member

@tyeth tyeth commented Mar 19, 2026

Testing openclaw access, had a few false starts (running as root 😈 so dangerously-skip-permissions disallowed, gh permissions so via fork)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comment on lines +4 to +13
Guides adding a new board (microcontroller / development board) to Adafruit IO WipperSnapper v1
firmware and the Wippersnapper_Boards companion definition repo. Use this skill whenever the user
wants to add a new board, port WipperSnapper to a new microcontroller, support a new development
board, add a new PlatformIO environment, create a board definition for WipperSnapper, or enable
WipperSnapper on a new piece of hardware — even if they just mention a board name and
"wippersnapper" in the same breath. Covers the full workflow: platformio.ini environment,
Wippersnapper_Boards.h board ID and status LED config, network interface selection, provisioning
method (TinyUSB vs LittleFS), Wippersnapper_Networking.h updates if needed, CI workflow matrix
additions, Wippersnapper_Boards repo definition.json, build verification, clang-format, and PR
creation for both repos.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should also cover adding support for new wifi coprocessors (w/ existing main mcu or new)

network interface, provisioning, CI matrix
2. **Wippersnapper_Boards** — board `definition.json` for CI build/flash tooling

The user supplies a board name (e.g. "QT Py ESP32-C6"). Research the board, identify its MCU
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should mention specifically finding product page, documentation urls, associated schematics / wiki's / examples, and associated datasheets (often not board specific).

Comment on lines +34 to +35
- **Board ID:** A kebab-case string (e.g. `"feather-esp32s3-tft"`) defined in
`Wippersnapper_Boards.h` that uniquely identifies the hardware to Adafruit IO.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lowercase kebab-case, has max length of x, defined in boards repo PR CI validation, ideally match arduino fqbn or pio target name, include manufacturer of board (not mcu).

Comment on lines +513 to +516
3. Connect to Adafruit IO — the board should appear on the device page
4. Verify the board name and type show correctly in the UI
5. Test basic I/O: add a digital GPIO component, toggle a pin
6. Monitor serial output for initialization and connection success
Copy link
Member Author

@tyeth tyeth Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggest an alternative path via protomq for testing.
At step 3 the alternative path is to get protomq running (lorennorman/protomq gh repo) for wippersnapper v1 (branch/tag), and then apply the secrets file but with io_url defined as machine ip on local network and io_port as 1883. Then use playwright and the protomq web ui manually, or protomq with play-scripts (see readme) to test the new boards functionality (all the while monitoring the serial).

@tyeth
Copy link
Member Author

tyeth commented Mar 19, 2026

@copilot make the requested changes, and if you cannot push then just include the full content of the main file as a single codeblock in the response.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new agent skill (add-board-v1) intended to guide contributors through the full workflow of adding new hardware boards to Adafruit IO WipperSnapper v1, including companion updates in the Wippersnapper_Boards definition repo.

Changes:

  • Added a comprehensive skill guide (SKILL.md) covering research, firmware updates, CI matrix updates, and companion definition.json creation.
  • Added an evaluations file (evals.json) with prompts/expected outputs for common “add/port board” scenarios.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
.agents/skills/add-board-v1/SKILL.md New skill documentation describing the end-to-end process for adding boards across the two repos.
.agents/skills/add-board-v1/evals/evals.json New eval scenarios to validate the skill’s expected guidance/output.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

- LittleFS boards: flash via esptool or web flasher
2. Provide credentials:
- TinyUSB: drop `secrets.json` on the mounted drive
- LittleFS: use the web provisioner at https://install.wippersnappper.io
Copy link
Member Author

@tyeth tyeth Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch, but it's a made up url, https://io.adafruit.com/devices/new
Also easier to use pio uploadfs -e etc

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comment on lines +22 to +25
2. **Wippersnapper_Boards** — board `definition.json` for CI build/flash tooling
3. **Auto-config (magic config)** — for onboard components, including any non-user-facing pins
used by other onboard components (e.g. SPI pins for a WiFi coprocessor, I2C pins for an
onboard sensor)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2+3 join together as both changes needed in boards repo.
Mention folder is in gitgnore so mention git ignored like add sensor skill mentions, so with boards repo if not pushable (like in GH agent sessions) nor via fork then include board def files in summary for user to file manually.

Comment on lines +92 to +93
- **Board definition validation** — `definition.json` must include required fields for
esptool/build tooling.
Copy link
Member Author

@tyeth tyeth Mar 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mention flash offset for bootloader, user FS partition offset + size, flash size etc. Update worked example, after checking an existing board definition to clarify the possible fields (and the schema.json)

…ds, improve git-ignore note, detailed protomq instructions

- Merge steps 2+3 in intro, add prominent git-ignore warning for
  Wippersnapper_Boards folder with fallback for non-pushable envs
- Expand definition.json docs with all schema fields (offset,
  fileSystemSize, blockSize, structure, mcuRefVoltage, displayName,
  installMethod, components) based on actual boards/schema.json
- Update worked example (QT Py ESP32-C6) with real field values
- Fix provisioner URL from made-up domain to io.adafruit.com/devices/new,
  add pio uploadfs note for LittleFS serial provisioning
- Replace vague protomq mention with step-by-step setup using
  wippersnapper-v1 tag, secrets.json config, web UI, and play-scripts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@tyeth
Copy link
Member Author

tyeth commented Mar 19, 2026

Interesting to note OpenClaw used an auto email (unset config) based on the SBC linux username particle (using particle@users.gh.blah) which mapped to the real github user @particle.
Visible on this commit tyeth-ai-assisted@efa730d and the tyeth-ai-assisted/add-skills-backup branch.
Hence all the force pushes to clean it up (asking for my user.name to be correct wasn't enough).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants