Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/windaddict/switchboard-streamdeck/claude-mdgit clone --depth 1 https://github.com/windaddict/switchboard-streamdeckWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.09350 | $0.09350 |
| Opus 5 | $0.04675 | $0.04675 |
| Sonnet 5 | $0.01870 | $0.01870 |
| Haiku 4.5 | $0.00935 | $0.00935 |
Grade A, and why
switchboard-streamdeck CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 535 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Switchboard — Stream Deck plugin (developer guide)
A macOS Stream Deck plugin (public name Switchboard, by Moving Average Labs).
Built with the Elgato SDK v2 (TypeScript/Node). The plugin UUID is
com.movingavg.switchboard (renamed from the legacy com.johnknox.safarijump).
Don't change it casually — installed buttons reference it, so a change orphans
configured keys unless migrated. scripts/rename.sh performs such a migration
(it rewrites the UUIDs in the Stream Deck profile store so settings survive); see
that script before ever renaming again. Sixteen actions today (the manifest is the
source of truth — scripts/make-hero.py reads it).
Layout
src/
plugin.ts # entry: registers every action, streamDeck.connect()
actions/*.ts # thin SDK glue per action (onKeyDown/onDialRotate/…)
applescript/
escape.ts # escapeForAppleScript (shared)
runner.ts # runAppleScript via osascript; classifyError (TCC)
mac/ # PURE, tested logic (no SDK, no I/O)
targets/safari ... # see files below
safari/ # Safari tab logic (targets.ts, applescript.ts, runner re-export)
mac/agent-*.ts # AI Project (supersedes the three per-agent keys):
# agent-project (one AgentKind/AgentState vocabulary,
# per-kind approval-prompt matchers, decideAgentFace,
# per-kind key face), agent-scan (ADAPTER over the three
# existing scanners — never a fourth scanner)
mac/deprecation.ts # the badge on the three superseded key faces; DELETE
# this whole file when those actions are retired
mac/cursor-*.ts # Cursor CLI detection: cursor-scan (pgrep -f the installed
# versions path -> ps -o pid=,ppid=,tty=,args= -> lsof), cursor-project
# (identity + turn_ended state + approval-prompt scrape + key face)
mac/claude-*.ts # Claude Code detection: claude-scan (ps→batched lsof +
# shell-snapshot busy children = "N shells still running"; pgrep
# misses ancestors), claude-state (title marker: braille=working,
# ✳=waiting; tmux pane-tty map), claude-transcript (~/.claude/
# projects freshness), claude-project (state decision + key face)
mac/{coalesce,serialize,press-gate}.ts # shared async plumbing (all unit-tested)
mac/pasteboard-stash.ts # Paste Snippet's clipboard save/restore: copies the
# WHOLE pasteboard (every item, every type) into a
# named stash pasteboard and back, so a gesture
# borrows the clipboard instead of keeping it.
# NEVER stashes a ConcealedType clipboard.
mac/snippet.ts # Paste Snippet pure logic: size cap, and the four key
# faces — preview (the default, whatever the text's
# provenance), masked (opt-in per key), blank
# (whitespace-only) and over-cap. Key-face SVG.
mac/clipboard-snippet.ts # Paste Snippet's ⌘C/⌘V route: the capture poll, the
# snippet write (build the item, THEN clear), the
# per-write ownership token, and the gesture
# orchestration that saves/restores the clipboard
mac/ax-text.ts # Paste Snippet's no-clipboard route, CAPTURE ONLY:
# captureViaAx reads AXSelectedText on the frontmost
# app's focused element via System Events. Framed
# `ok\n<text>` / nosel / unsupported / err|<n> — status
# on the first line, payload after the first newline, so
# selection text can't corrupt the framing. insertViaAx
# exists but is NOT on the live path: the AX write was
# measured reporting success while inserting nothing
tests/*.test.ts # vitest; one file per pure module
com.movingavg.switchboard.sdPlugin/
manifest.json # actions, layouts, icons, CodePath -> bin/plugin.js
ui/*.html # property inspectors (sdpi-components from CDN)
ui/lib/permissions.js # shared PI Accessibility-warning banner (see below)
layouts/*.json # custom encoder (touchscreen) layouts
imgs/actions/<a>/*.png # icon.png/@2x + key.png/@2x per action
bin/plugin.js # rollup output — COMMITTED (self-contained bundle)
bin/macos/{scroll,tile,axcheck} # compiled Swift helpers — committed, UNIVERSAL
# (arm64+x86_64), Developer ID signed + notarized
helper/{scroll,tile,axcheck}.swift # native helpers (scroll wheel / window tiling / AX probe)
scripts/
build-helpers.sh # build the 3 helpers universal; auto-sign if a Developer ID cert is present
notarize-helpers.sh # no-Fastlane notarize fallback
make-hero.py # regenerate docs/switchboard-hero.png from the manifest
rename.sh # UUID migration tool (see Rename section)
fastlane/ # Developer ID signing + notarization (see Releasing)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 535 lines · 9,350 tokens per session scan A 3507983dbc1a
switchboard-streamdeck CLAUDE.md is an instructions file published in the GitHub repository windaddict/switchboard-streamdeck (5 stars, last pushed 9d ago), licensed MIT. It adds 9,350 tokens to every session, about $0.0467 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
HomeClaw AGENTS.md
Instructions for omarshahine/HomeClaw, covering homeclaw, architecture, project structure, build system and xcode version.
cuda-metal AGENTS.md
Instructions for Lulzx/cuda-metal, covering agents.md — cumetal development guide, project identity, current focus, repository structure and non-negotiable constraints.
agent-deck AGENTS.md
Instructions for breakstring/agent-deck, covering agents.md, 项目定位, 必读文档, 工作流 and 当前代码结构.
streamdeck-mcp CLAUDE.md
Instructions for verygoodplugins/streamdeck-mcp, covering claude.md, development commands, setup, run server (for claude desktop) and lint.
clawdline AGENTS.md
AGENTS.md instructions for sainteye/clawdline, covering working in this repository, shared-tree discipline, root-owned landing closure, root completion receipt and notify before waiting for the user.
vmette CLAUDE.md
Instructions for chamuka-inc/vmette, covering vmette — project instructions, checks (run before considering work done), workspace layout, core library — crates/vmette/src/ and daemon — crates/vmette-daemon/src/.