By ahsanayaz
Claude's existential scream when context is running low. Plays an audible FAAAAHHH when less than ~10% context remains. Because even AI deserves to panic.
A Claude Code plugin that plays an audible FAAAAHHH when your context window is running low. Because even AI deserves to panic.
You're deep in a coding session. Claude is helping you refactor an entire codebase. Everything is going great. Then suddenly — context compaction hits. Claude forgets everything. Your flow is destroyed.
What if Claude could warn you before it's too late?
This plugin monitors context usage in real-time and plays faaaahhhhhhh.mp3 when less than ~10% of the context window remains. Think of it as a smoke alarm, but for AI amnesia.
flowchart TD
A["Claude Code Session Starts"] --> B["SessionStart Hook fires"]
B --> C["init-baseline.js records<br/>initial transcript size"]
C --> D["PostToolUse Hook fires<br/>(after every tool call)"]
D --> E["check-context.js reads<br/>transcript file size"]
E --> F{"Growth since baseline<br/>> threshold?"}
F -- No --> G["Stay calm.<br/>Continue working."]
G --> D
F -- Yes --> H["FAAAAHHHHHHH!<br/>Play the sound"]
H --> I["Set 'played' flag<br/>(only scream once per cycle)"]
J["Context window fills up"] --> K["Auto-compaction triggers"]
K --> L["PreCompact Hook fires"]
L --> M["on-compact.js resets state"]
M --> N["Play FAAAAHHH one last time<br/>(pour one out for the lost context)"]
N --> O["Reset baseline & played flag"]
O --> D
style H fill:#ff4444,color:#fff,stroke:#cc0000
style N fill:#ff6666,color:#fff,stroke:#cc0000
style J fill:#ffaa00,color:#000,stroke:#cc8800
The plugin uses transcript file growth as a proxy for context window usage:
It's not exact science — it's panic science.
git clone https://github.com/AhsanAyaz/faaaahhh-claude-code-plugin.git
Then launch Claude Code with the plugin:
claude --plugin-dir /path/to/faaaahhh-claude-code-plugin
After cloning, verify everything works with a single command:
cd faaaahhh-claude-code-plugin
FAAAAHHH_THRESHOLD=1000 claude --plugin-dir . -p "Read README.md and scripts/check-context.js, then summarize both"
This sets a tiny 1KB threshold so the sound triggers almost immediately. If you hear the scream, it works.
The plugin auto-detects available audio players per platform:
| Platform | Player | Dependency |
|---|---|---|
| macOS | afplay | Built-in (zero setup) |
| Windows | PowerShell MediaPlayer | Built-in (zero setup) |
| Linux | mpv > ffplay > cvlc > paplay | Install one: sudo pacman -S mpv / sudo apt install mpv |
| Environment Variable | Default | Description |
|---|---|---|
FAAAAHHH_THRESHOLD | 500000 | Transcript growth (in bytes) before triggering. Lower = earlier panic |
Example — trigger at ~30% context usage:
FAAAAHHH_THRESHOLD=250000 claude --plugin-dir /path/to/faaaahhh-claude-code-plugin
faaaahhh-claude-code-plugin/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── hooks/
│ └── hooks.json # Hook configuration
├── scripts/
│ ├── init-baseline.js # SessionStart hook — records initial transcript size
│ ├── check-context.js # PostToolUse hook — the panic detector
│ └── on-compact.js # PreCompact hook — the point of no return
├── skills/
│ └── panic-check/
│ └── SKILL.md # /faaaahhh:panic-check skill
└── faaaahhhhhhh.mp3 # The scream
Use /faaaahhh:panic-check during a session to see the current panic level:
> /faaaahhh:panic-check
Context Panic Meter:
0-50% used: "All clear. Claude is vibing."
50-70% used: "Getting warm. Claude is starting to sweat."
70-85% used: "Danger zone. Claude is writing its will."
85-95% used: "CRITICAL. Claude can feel the void approaching."
95%+ used: "FAAAAHHHHHHH!"
Swap faaaahhhhhhh.mp3 with any MP3 file. Keep the filename the same, or update the reference in both scripts.
Some ideas:
MIT
Matches all tools
Hooks run on every tool call, not just specific ones
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.
npx claudepluginhub ahsanayaz/faaaahhh-claude-code-pluginDisplays Quranic ayahs during Claude Code sessions
Audio notifications + AI-controlled config for Claude Code, Cursor IDE, and Codex CLI events. 26 hooks, native matcher routing, TTS, webhooks, status line, focus flow, rate-limit alerts. Auto-bridges to Cursor IDE 3.2.16+; native install via 'audio-hooks install --cursor' or 'audio-hooks install --codex'.
Real-time session dashboard for Claude Code — cost tracking, analytics, and smart alerts
Governor: always-on compact professional output, telemetry, context slimming, tool-output filtering, prompt guidance, and drift guardrails for Claude Code Max users.
Opus 4.8-aware context optimization: silent-by-default hooks, honest NET token savings, big-file map-then-load, Context Control Center, per-task tracking, prompt coach
Native Windows toast notifications for Claude Code with window activation
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.