PostToolUse hook that compresses Playwright MCP tool output using Haiku summarization — Layer 4 of the token defense stack
Scanned 9/9/2026
Install to Claude Code
npx -y skills add baekenough/oh-my-customcode --skill playwright-compress --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Playwright Compress?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/baekenough-playwright-compress)More formats (shields.io, HTML) on the badges page.
---
name: playwright-compress
description: PostToolUse hook that compresses Playwright MCP tool output using Haiku summarization — Layer 4 of the token defense stack
scope: core
version: 1.0.0
user-invocable: false
disable-model-invocation: true
---
# Playwright MCP Output Compression (Layer 4)
## Purpose
Reduces Playwright MCP tool output tokens by 94-96% using intelligent Haiku summarization while preserving `ref=` values for interactive flow continuity.
## Architecture
```
MCP tool response (37K+ chars)
↓ PostToolUse hook
↓ playwright-compress.sh
↓ claude -p --model haiku (summarize)
↓ updatedMCPToolOutput (1.4K-1.9K chars)
```
## Token Defense Stack Position
| Layer | Component | Mechanism | Scope |
|-------|-----------|-----------|-------|
| 1 | cc-token-saver | Time-based budget alerts | Session |
| 2 | R013 Ecomode | Context-aware output compression | Agent |
| 3 | MAX_MCP_OUTPUT_TOKENS | Hard truncation (lossy) | Setting |
| **4** | **playwright-compress** | **Intelligent summarization (lossless ref=)** | **Hook** |
## Behavior
- **Trigger**: PostToolUse on `mcp__playwright__.*` tools
- **Skip condition**: Output < 3000 characters (not worth compressing)
- **ref= preservation**: All `ref=` attribute values are extracted and preserved in the summary
- **Fallback**: If Haiku summarization fails, original output is returned unchanged
- **Auth**: Uses Claude subscription auth (`claude -p`), no API key needed
## Integration
| Rule | Interaction |
|------|-------------|
| R001 | No external data transmission — uses local `claude -p` |
| R013 | Complements Ecomode (Layer 2) with MCP-specific compression |
| R021 | Advisory PostToolUse hook — never blocks |
## Hook Configuration
Configured in `.claude/hooks/hooks.json` PostToolUse section:
```json
{
"matcher": "mcp_tool_name matches \"mcp__playwright__.*\" || mcp_tool_name matches \"mcp__claude-in-chrome__.*\"",
"hooks": [{
"type": "command",
"command": "bash .claude/hooks/scripts/playwright-compress.sh"
}],
"description": "Layer 4: Compress Playwright/Chrome MCP output via Haiku summarization"
}
```
## Source
Adapted from [treesoop/claude-native-plugin](https://github.com/treesoop/claude-native-plugin) playwright-optimizer (MIT).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!