mirror of
https://github.com/anthropics/claude-plugins-official.git
synced 2026-02-02 08:33:37 +00:00
Add caffeinate plugin to prevent blocking sleep commands
This plugin intercepts sleep commands in Bash and prompts Claude to use
background execution (run_in_background: true) instead. This keeps the
session responsive during long-running operations.
Features:
- Blocks sleep commands with helpful retry message
- Allows sleep in quoted strings (false positive prevention)
- Catches sleep in compound commands (&&, ||, ;) and loops
- Allows background commands through (run_in_background: true)
🏠 Remote-Dev: homespace
Claude-Generated-By: Claude Code (cli/claude-opus-4-5=100%)
Claude-Steers: 6
Claude-Permission-Prompts: 0
Claude-Escapes: 0
This commit is contained in:
58
plugins/caffeinate/README.md
Normal file
58
plugins/caffeinate/README.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Caffeinate
|
||||
|
||||
A Claude Code plugin that blocks `sleep` commands and reminds Claude to use background tasks instead.
|
||||
|
||||
## Purpose
|
||||
|
||||
When Claude uses `sleep` commands in Bash, it blocks the session unnecessarily. This plugin intercepts these commands and suggests using proper async patterns like:
|
||||
|
||||
- `run_in_background: true` parameter for long-running commands
|
||||
- Polling for conditions instead of sleeping
|
||||
- Proper async/background task patterns
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# From the plugin directory
|
||||
claude --plugin-dir /path/to/caffeinate
|
||||
```
|
||||
|
||||
Or copy to your project's `.claude-plugin/` directory.
|
||||
|
||||
## What Gets Blocked
|
||||
|
||||
| Command | Blocked? | Reason |
|
||||
|---------|----------|--------|
|
||||
| `sleep 5` | Yes | Direct sleep command |
|
||||
| `sleep $TIMEOUT` | Yes | Sleep with variable |
|
||||
| `echo "test" && sleep 5` | Yes | Sleep after separator, outside quotes |
|
||||
| `cmd; sleep 10` | Yes | Sleep after semicolon |
|
||||
| `echo "sleep 8 hours"` | No | Sleep is inside quotes (not a command) |
|
||||
| `echo "foo && sleep 5"` | No | Entire sleep pattern is in a string |
|
||||
|
||||
## How It Works
|
||||
|
||||
The plugin uses a `PreToolUse` hook on the `Bash` tool to:
|
||||
|
||||
1. Check if commands start with `sleep`
|
||||
2. Detect `sleep` after command separators (`&&`, `||`, `;`, `|`)
|
||||
3. Use quote-counting to avoid false positives when `sleep` appears inside strings
|
||||
|
||||
## Alternatives to Sleep
|
||||
|
||||
Instead of:
|
||||
```bash
|
||||
sleep 5 && check_status
|
||||
```
|
||||
|
||||
Use background execution:
|
||||
```bash
|
||||
# Run in background with run_in_background: true
|
||||
long_running_command
|
||||
```
|
||||
|
||||
Or poll for conditions:
|
||||
```bash
|
||||
# Poll for a file to exist
|
||||
while [ ! -f /tmp/ready ]; do :; done
|
||||
```
|
||||
Reference in New Issue
Block a user