tapwithus/tap-web-sdk/tap-build-an-app
Claude Code and agent skill by tapwithus/tap-web-sdk
- community
Checking that the SKILL.md file is still in the repository.
Build a complete browser app or interactive experience controlled by a Tap - games, pages, presentations, or creative tools. Use when the user asks to build, make, or create something with their Tap, especially if they are not a developer.
Install
npx vskill@latest install tapwithus/tap-web-sdk/tap-build-an-appSKILL.md
Build an app with a Tap
The user may not be a developer. Keep the project small, explain how to run it in plain words, and test with the real device.
Workflow
- Ask (only what is missing): device (Tap Strap / Tap Strap 2 / TapXR) and what the app should do. TapBand uses the same BLE API and is coming soon (waitlist). Never call it unsupported or buyable.
- Connect first. Use the
tap-getting-startedquickstart and confirm taps arrive before you build anything else. - Pick the input (load the matching skill):
- finger taps and combos:
tap-tapping - raw swipes, pinches, fist:
tap-vision-models - pointer, tilt, rotation:
tap-imu-motion - twist-to-adjust value:
tap-knob(TapSDKWeb2app recipe) - directions + select + drag/rotate:
tap-dpad(TapSDKWeb2app recipe) - data recording:
tap-raw-sensors
- Put the output on the same page.
- Build one interaction, test it with the user, then add the next.
- Give feedback: haptics (
sendVibrationSequence) and on-screen state, so the user knows the gesture was seen. - Deliver: one folder, a
package.jsonthat depends on@tapwithus/tapsdk, one HTML page, and one run command (npx serveornpx vite, on localhost).
Core pattern
Call connect() from a button click. It starts notifications. There is no start(). Register callbacks next, then enable input. Keep callback work short. Update state, then draw.
If a callback must not draw, push the event onto an array and read that array from requestAnimationFrame.
Output on the page
| Output | How | |
|---|---|---|
| Status and text | Update the DOM. Show "Click Connect", "Connected", or "Disconnected". | |
| Game or visual | Canvas or HTML elements in this page. | |
| Sound | Web Audio in this page. | |
| Keyboard fallback | keydown on this page (arrow keys, space) calls the same functions as taps. |
The browser cannot press keys in other applications and cannot change the OS volume. Keep the interaction inside the page.
Connect button and reconnect
Use this pattern when the app has its own buttons. It is the reconnect flow the SDK expects: the same page reuses the last Tap without the picker, and "Choose device" always shows the picker.
Notes:
connect()does not tell you whether it reused the Tap or opened the picker. If the picker opens after Connect, that is expected: the last Tap did not answer.- After a page reload, do not show a Reconnect button for granted Taps. Connecting fails with "no longer in range" while the Tap is still held by the OS. Tell the user to disconnect the Tap in system Bluetooth settings, then click Choose device.
- Call
setBusy(false)again on disconnect, as well as on error.
Rules
- Do not add dependencies to the SDK. Add them to the app's
package.json. - Import
@tapwithus/tapsdk. Do not copy SDK source into the app. - Add a keyboard fallback so the user can test the page without the Tap.
- Show connection status on screen.
- Use Chrome or Edge. Serve the page on localhost or HTTPS.
- Call
connect()from a button click. - Offer Connect (
connect(), which reuses the last Tap of the session) and Choose device… (connect({ reuseKnownDevice: false }), always the picker). After a page reload a Tap still held by the OS cannot be reconnected from the page, so do not build a reload-time Reconnect button. Tell the user to disconnect the Tap in system Bluetooth settings, then use the picker. - If you list
getPermittedDevices(), feature-detect it.getDevices()needs a flag: Chromechrome://flags/#enable-experimental-web-platform-features, Edgeedge://flags/#enable-experimental-web-platform-features. Without it only this session's Taps are listed. - If the device does not connect, use the troubleshooting table in
tap-getting-started.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/tap-web-sdk/skills/tap-build-an-app/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tapwithus/tap-web-sdk/tap-build-an-app)