Passive-aggressive PA system for Claude Code. Claude barks status updates at you over a speaker; if ignored, escalates across the house via Home Assistant.
Add a friend (name + phone) to $CLAUDE_PA_HOME/config.json so Claude can call them via /claude-pa:place-call with target=friend. Optional fields: role (e.g. "a coworker"), per-friend Vapi overrides.
Bark a status update at the user via the PA cascade. Audio + signal-bulb fire together. Use whenever you'd otherwise sit silent waiting for input or finish a long task.
Mute the claude-pa system. Pass a duration (e.g. "30m", "2h", "until 17:00") to auto-resume, or "indefinite" to mute until explicitly cleared. With no argument, prints status.
First-run setup for Claude-PA. Creates $CLAUDE_PA_HOME, copies the config template, generates a 30s radio-static bed via ffmpeg, optionally renders a personalised name clip via Fish Audio if the API key is set, and offers to chain into the HA-entities setup agent. No API key required for the plugin to work — voice clips ship pre-rendered with the plugin.
Place an outbound Vapi call to the user or their spouse via the Claude-PA dispatcher assistant, with a context-rich reason (what Claude is stuck on, repo, idle time). Use the `place-call` skill — never invoke pa-phone-call.sh directly without first assembling a real reason.
Place an outbound Vapi phone call to the user, their spouse, a named friend from the config, or an ad-hoc number. ALWAYS attaches a context-rich `reason` (what Claude is stuck on, why the user is needed) plus optional repo / idle-minutes / last-tag. Supports round-robin calling — Claude can dial through a list of friends in sequence until someone picks up. Use when the in-room escalation cascade has failed, when the user has explicitly asked to be phoned, or when Claude has a status update important enough to warrant a phone call. NEVER place a call without a real reason — a generic "they're not at their desk" call is worse than not calling.
Mute, pause, or schedule claude-pa from natural-language requests. Translates phrases like "shut up claude-pa", "pause for an hour", "be quiet until 5pm", "stay loud for the next 90 minutes", "active during work hours", or "resume" into the right mute / schedule call. Use when the user wants to silence the PA system, time-bound a quiet window, or define active hours — without making them remember the slash command syntax.
Provision (or update) the Claude-PA dispatcher assistant in Vapi using the shipped system prompt, then wire its assistant_id + phone_number_id into $CLAUDE_PA_HOME/config.json under user_call.vapi and spouse_call.vapi. Use when the user runs /claude-pa:setup-vapi-assistant or asks you to set up the Vapi side of Claude-PA.
Drop the pre-built Claude-PA test scaffold into a chosen location so the user can verify dispatch + escalation cascade end-to-end without disturbing the household. The scaffold ships with the plugin at templates/test-scaffold/ — this skill just copies it, sanity-checks it, and prints the next command. Tier cap is hard-coded to 0 (local desk speaker only). Use when the user says "test claude-pa", "is this working?", "let's try the PA system", etc.
External network access
Connects to servers outside your machine
Uses power tools
Uses Bash, Write, or Edit tools
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code plugin that turns Claude into a passive-aggressive PA system — barking status updates at you over a speaker, lighting up an RGB "Claude-signal" bulb on your desk, and, when you ignore all of that, escalating across your house via Home Assistant until somebody comes and finds you.
Two-way pun: Personal Assistant / Public Address.
For people who spend all day in Claude Code and want a break from staring at the terminal waiting for "do you confirm?" prompts.
Claude is the dispatcher. Sub-agents are the drivers. You are the absentee owner who keeps wandering off mid-shift.
When Claude needs your attention, it doesn't write a polite message — it grabs the radio and barks:
[static] "[Your name]! Pick up. Sub-agent's been waiting four minutes." [static]
If you don't respond, it escalates.
| Tier | Pathway | Vibe |
|---|---|---|
| 0 | Local desk speaker | gruff dispatcher (default) |
| 1 | 🔔 Gentle chime (HA) | "ahem" |
| 2 | HA desk speaker (louder) | dispatcher, but louder |
| 3 | HA kitchen speaker | dispatcher, in the next room |
| 4 | 🚪 Doorbell ring (HA) | Pavlovian — you'll run before you remember |
| 5 | HA living room (PA register) | weary supermarket-announcer voice |
| 6 | 📢 Whole-house PA | "would the owner of this Claude Code session please return…" |
| 7 | 🌙 Bedroom lights flash (night, opt-in) | strobes you awake |
| 8 | ☎️ Vapi spouse call (opt-in) | passive-aggressively rings your spouse to ask why you're not answering |
| 8.5 | ☎️ Vapi direct user call (opt-in) | rings your own phone — last-resort "where are you" call |
Tiers 7 and 8 default OFF. Each has hard config gates. The phone-call tiers ride on Vapi — set VAPI_API_KEY in $CLAUDE_PA_HOME/env, then populate spouse_call / user_call (*_name, *_phone, vapi.assistant_id, vapi.phone_number_id) in config.
Parallel to the audio cascade — a dedicated RGB bulb that Claude updates as state changes:
Peripheral-vision status without looking at the terminal. Fires automatically alongside any /dispatch, or directly via /signal <pattern>.
Same color taxonomy as the bulb, but on your monitor. A brief full-screen colored overlay (Python tkinter) flashes for ~600ms with the tag label. Falls back to a notify-send desktop notification if tkinter isn't available, or to nothing on headless boxes. Disabled in config.screen_flash.enabled if you'd rather not.
Three independent ways to fire audio at a remote speaker — pick whichever matches your home stack:
media_player.* entities. Tier targets prefixed ha:<key>. Configured via /claude-pa:setup-ha.mqtt:<key>. Useful for ESP / Tasmota / custom subscribers, or anyone running a broker without HA.sounds/VOICES.md, scripts in sounds/MESSAGES.md), mixed under a radio-static bed at runtime. No live TTS = consistent character + zero latency. Multiple voice packs ship — switch via voice_pack in config./dispatch <tag> is the main Claude-facing command. Tag taxonomy: attention:*, status:*, complete:*, pa:*, catastrophe:*. The router fans out to audio + signal bulb + screen flash in parallel./setup-ha spawns an agent that uses the home-assistant MCP to discover entities, propose a mapping for every cascade slot, test each one live, and write the validated config./dispatch whenever it would otherwise sit waiting silently.systemd --user service (with a plain-nohup fallback) that watches an idle marker file. When Claude fires an attention:* dispatch at tier 0 and you don't reply, the daemon walks the manifest's delay_seconds ladder and re-fires dispatch at higher tiers (chime → kitchen → doorbell → whole-house PA → bedroom strobe) until a UserPromptSubmit hook clears the marker. Install with /claude-pa:setup-escalator. Without this the cascade can't escalate — Claude only fires once per dispatch and has no way to nag you on a timer.The plugin folder ships seed assets and scripts only. User-specific state lives outside it:
npx claudepluginhub danielrosehill/claude-code-plugins --plugin claude-paClaude Code plugin: ideation and planning workflow — capture, evaluate, rank, simulate, and plan ideas, with ideation/single-idea-eval/multi-idea-ranking/feature-ideas/simulation/idea-capture variants.
First-pass data analysis toolkit: correlations, PII flagging, anomalies, hypothesis tests, data dictionaries, and trend analysis on a dataset in a folder.
Claude Code plugin for generating personal user manuals and private documentation for codebases. Creates personalized, private reference guides with PDF output support.
Research, filter, compare, and evaluate AI models on OpenRouter — discover models by capability (tool use, vision, audio), get cost/context-aware recommendations, run head-to-head comparisons, and conduct deep research that goes beyond the OpenRouter catalog.
Claude Code plugin for writing assistance, proofreading, style editing, and text transformation workflows.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Memory compression system for Claude Code - persist context across sessions