VibeBluetooth
Use this skill for the VibeWidget app workspace. If the current repo contains apps/vibe-widget, use that by default. Otherwise, pass --workspace /path/to/vibe-widget to the runner script.
Quick Start
- Use
bash scripts/run_vibe_bluetooth.sh doctorfrom the repo root, or pass--workspace /path/to/vibe-widgetif the app lives elsewhere. - Use
bash scripts/run_vibe_bluetooth.sh inspectbefore editing so the app, widget, and core-test layout stay visible. - Use
bash scripts/run_vibe_bluetooth.sh generateafter project spec changes. - Use
bash scripts/run_vibe_bluetooth.sh opento open the Xcode project. - Use
bash scripts/run_vibe_bluetooth.sh typecheckfor a lightweight local sanity pass. - Use
bash scripts/run_vibe_bluetooth.sh testafter core, widget, parser, or shared-state changes. - Use
bash scripts/run_vibe_bluetooth.sh buildonly after the Xcode license has been accepted on the machine. - Use
bash scripts/run_vibe_bluetooth.sh runwhen you need the built app relaunched from the local build output.
Workflow
Before Editing
- Read
references/project-map.mdfor the current target layout and main files. - If the task changes app or widget targets, inspect
project.ymlin the target workspace first. - If the task is UI-heavy, preserve the existing visual direction: dark glass, low chrome, strong type, and a compact high-signal layout.
Running The App
- Prefer the local runner script before manually typing
xcodegenorxcodebuild. - If
doctorreports the Xcode license is not accepted, stop and tell the user to runsudo xcodebuild -license. - Use
testafter changes toVibeWidgetCore, widget intents, or app orchestration when you want the repo's unit coverage before a full build. - Use
runafter app UI or launch-path changes so you can verify the relaunch path from the local build output. - If
generatesucceeds butbuildfails only under Command Line Tools, switch to full Xcode and rerun.
Editing Guidance
- Keep the project Apple-only for speaker flow. Do not add private Bluetooth automation.
- Keep secrets in Keychain only. Do not move OpenAI or Spotify tokens into files or defaults.
- Shared models and snapshot state belong in
VibeWidgetCore. - Widget actions should enqueue shared actions and let the app process them.
- HomeKit code must keep the compile-safe fallback path for environments that only expose Command Line Tools.
Resources
scripts/run_vibe_bluetooth.sh: local doctor/inspect/generate/open/build/test/typecheck runner for the VibeWidget workspace.references/project-map.md: target map, key files, and run/build caveats.