{"skill":{"slug":"dokidoki","displayName":"dokidoki","summary":"Control interactive BLE devices (scan/connect/playback/timeline) from terminal.","description":"---\nname: dokidoki\ndescription: Control interactive BLE devices (scan/connect/playback/timeline) from terminal.\nmetadata: {\"clawdbot\":{\"emoji\":\"🎮\",\"requires\":{\"bins\":[\"doki\"]},\"install\":[{\"id\":\"npm\",\"kind\":\"npm\",\"package\":\"@tryjoy/dokidoki\",\"global\":true,\"bins\":[\"doki\"],\"label\":\"Install dokidoki (npm)\"}],\"label\":\"dokidoki\"}}\n\n---\n\n# DokiDoki CLI\n\nUse `doki` to control interactive BLE devices from the terminal.\n\n## Quick Start\n\n- `doki scan` - Scan for BLE devices (auto-starts daemon)\n- `doki connect DK-META2` - Connect to device (auto-starts daemon)\n\n## Common Tasks\n\n### Daemon Management\n- `doki start` - Start background daemon\n- `doki stop` - Stop background daemon\n- `doki status` - Check daemon and connection status\n\n### Device Connection\n- `doki scan` - Scan for BLE devices\n- `doki connect [name]` - Connect to device (default: DK-META2)\n- `doki disconnect` - Disconnect from device\n\n### Timeline Playback\n- `doki player play [audio] <timeline.json>` - Play timeline with optional audio sync\n- `doki player pause` - Pause playback (stops device)\n- `doki player resume` - Resume playback\n\n### Direct Device Control\n- `doki action linear 50` - Set linear to 50%\n- `doki action rotary -30` - Set rotary to -30 (reverse)\n- `doki action vibration 80` - Set vibration to 80%\n- `doki action pause` - Immediately stop all device actions\n\n## Timeline Format\n\nTimeline files are JSON files defining device actions at specific timestamps:\n\n```json\n{\n  \"duration\": 180.5,\n  \"actions\": [\n    {\"timestamp\": 0.0, \"type\": \"VIBRATION\", \"value\": 50},\n    {\"timestamp\": 5.5, \"type\": \"LINEAR\", \"value\": 30},\n    {\"timestamp\": 10.0, \"type\": \"ROTARY\", \"value\": -50}\n  ]\n}\n```\n\n### Action Types\n\n| Type | Value Range | Description |\n|------|-------------|-------------|\n| `LINEAR` | 0-100 | Linear/stroke motion intensity |\n| `ROTARY` | -100 to 100 | Rotation speed (negative=reverse) |\n| `VIBRATION` | 0-100 | Vibration intensity |\n\n## Notes\n\n- Requires Node.js 18+ and Bluetooth Low Energy (BLE) support\n- Supported audio formats: MP3, AAC/M4A, WAV, FLAC, OGG, AIFF\n- Audio playback requires `ffplay` (Linux/Windows) or `afplay` (macOS)\n- Logs are written to `/tmp/dokidoki.log`\n","tags":{"latest":"1.0.2"},"stats":{"comments":0,"downloads":627,"installsAllTime":23,"installsCurrent":0,"stars":0,"versions":3},"createdAt":1773647970540,"updatedAt":1778491943830},"latestVersion":{"version":"1.0.2","createdAt":1773712650620,"changelog":"- Removed the file `_meta.json` from the project.\n- No changes to documentation or user-facing features.","license":"MIT-0"},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"lovappencava","userId":"s1728181n2jtz7vrr8e2dvk5kh84srp0","displayName":"tryjoy","image":"https://avatars.githubusercontent.com/u/242742647?v=4"},"moderation":null}