Haptic Bridge — Development skill for Claude Code
Local daemon that turns Claude Code / Codex lifecycle events (permission prompt, waiting for input, turn done) into haptic feedback on physical devices: DualSense, OpenShock, Lovense.
How to install Haptic Bridge
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open whiskydumb/haptic-bridge and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Haptic Bridge does
Local daemon that turns Claude Code / Codex lifecycle events (permission prompt, waiting for input, turn done) into haptic feedback on physical devices: DualSense, OpenShock, Lovense. Hooks first, MCP optional.
Alternatives in Development
- Continuous Claude — Run Claude Code in a continuous loop, autonomously creating PRs, waiting for checks, and merging 1.3k ★
- Herdrm — Native macOS console for herdr — all your coding agents and their live terminals, across devices 635 ★
- The Library — A Meta-Skill for Private-First Distribution of Agentics (Skills, Agents, and Prompts) across your Agents, Devi 340 ★
README
haptic-bridge
Local daemon that turns coding-agent lifecycle events (Claude Code, Codex CLI) into haptic feedback on physical devices: "needs permission", "asks a question", "finished the turn".
Claude Code - hooks (http) ────┐
Codex CLI - notify / hooks ──┤
any MCP client - haptic_pulse ─┤
manual - POST /event ──────────┤
▼
haptic-bridge http://127.0.0.1:8787
event → pattern mapping, cooldown, intensity cap, kill switch
│
┌──────────┬──────────┼──────────┬──────────┐
mock dualsense openshock lovense (buttplug: planned)
setup
uv sync --all-extras
cp haptic-bridge.example.toml haptic-bridge.toml
uv run haptic-bridge serve
`haptic-bridge.toml` is git-ignored because it may carry tokens. Without a config file the daemon runs with built-in defaults and the `mock` backend only. `just` lists the project tasks.
agents
claude code
Add `http` hooks to `~/.claude/settings.json` (every project) or to `.claude/settings.json` of a single project, then restart Claude Code:
{
"hooks": {
"Notification": [
{
"matcher": "permission_prompt|idle_prompt|agent_needs_input|elicitation_dialog",
"hooks": [{ "type": "http", "url": "http://127.0.0.1:8787/hook/claude", "timeout": 2 }]
}
],
"Stop": [
{ "hooks": [{ "type": "http", "url": "http://127.0.0.1:8787/hook/claude", "timeout": 2 }] }
]
}
}
HTTP hooks post the hook payload as JSON and block until the daemon answers, so the daemon replies immediately and plays the pattern in the background.
codex cli
`notify` fires once per completed turn and passes the payload as the last argv element. Install the CLI on PATH (`uv tool install .` from this directory), then:
# ~/.codex/config.toml
notify = ["haptic-bridge", "codex-notify"]
Codex lifecycle hooks (`[features] hooks = true`) can pipe their stdin payl
Related Skills
R2D2 Agent Sound
Play a custom MP3 sound in Claude Code when waiting for permission or user input
Herdr Wsl Notify
A Herdr plugin that shows a Windows desktop toast when an agent (Claude Code, etc.) running under WSL2 becomes
Clawd Conduit
Full-lifecycle wiring between Claude Code and the Clawd on Desk pet — all 15 hook events, with permission prom
Signal Claude Bridge
Daemon connects end-to-end encrypted Signal message to a Claude Code agent. Whitelisting, prompt injection mit
Platformize App iOS
Claude Code skill: ship a native iOS app plus its root daemon to jailbroken devices — roothide and rootless de
Waybar Claude Status
waybar module showing live Claude Code session status (working / waiting / idle), including background jobs th
Related Agents
Xcode Runner
Runs Xcode apps on simulators, physical devices, or macOS. Determines if a rebuild is needed, delegates builds
2code
AI-assisted development produces a mess of parallel state: several terminals, experimental branches, uncommitt
Secretary Planner
Task daemon. Checks due tasks every 5min, executes actions, archives done. Respawns after each cycle.