Make AI coding agents terse, precise, and token-efficient.
Less filler. Same technical depth. Lower token usage.
Features · Installation · AI Agents · Modes · Commands · Benchmarks
Iceage is a lightweight prompt and agent-style optimization toolkit that makes AI coding assistants communicate in compressed, technical, high-signal prose.
Modern AI coding agents often spend a surprising number of tokens on:
- Pleasantries
- Repeated explanations
- Filler words
- Hedging
- Redundant context
- Long-form explanations when a short technical answer is enough
Iceage removes that overhead while preserving the information that matters.
"Sure! I'd be happy to help you with that. The issue you're experiencing is most likely caused by the fact that you're creating a new object reference on every render, which React interprets as a changed prop even though the values are the same. To resolve this, you should wrap the object in a
useMemohook."
"New object ref each render. Inline object prop = new ref = re-render. Wrap in
useMemo."
Same diagnosis. Same fix. Significantly fewer tokens.
Iceage is designed specifically for developers who use AI coding agents throughout the day and want less conversational overhead without sacrificing technical accuracy.
AI agents are powerful, but their default communication style is often optimized for general conversation rather than high-frequency software engineering.
Iceage changes the communication layer.
Normal AI Agent
│
▼
Long explanations
Pleasantries
Hedging
Repetition
│
▼
Iceage
│
▼
Compressed technical response
│
├── Less filler
├── Fewer tokens
├── Faster scanning
└── Same technical substance
The goal is simple:
Remove words. Keep meaning.
| Feature | Description |
|---|---|
| Terse AI responses | Removes filler, pleasantries, unnecessary articles, and hedging |
| Token-efficient communication | Compresses natural-language responses while preserving technical meaning |
| 6 intensity levels | Choose between lite, full, ultra, and Wenyan modes |
| Automatic clarity fallback | Returns to normal communication for security warnings, destructive operations, or ambiguous situations |
| Session persistence | Keeps Iceage active across turns and context compression |
| Claude Code hooks | Automatically activates Iceage and tracks the current mode |
| Claude Code skills | Provides /iceage, /iceage-review, /iceage-commit, and more |
| Cursor rules | Always-on Iceage rules for Cursor |
| Windsurf rules | Always-on Iceage rules for Windsurf |
| Cline support | Workspace-level .clinerules integration |
| GitHub Copilot support | Repository-level Copilot instructions |
| Gemini CLI support | Project-level GEMINI.md integration |
| Code review mode | Generates concise, actionable review comments |
| Commit mode | Generates terse Conventional Commit messages |
| Markdown compression | Compress existing Markdown documentation while preserving structure |
| Statusline indicator | Shows the current Iceage mode directly in Claude Code |
Clone the repository:
git clone https://github.com/pomagrenate/iceage.git
cd iceageThen install Iceage for the AI coding agent you use.
Claude Code has the deepest Iceage integration through:
- Hooks
- Skills
- Commands
- Project rules
- Statusline integration
Hooks automatically activate Iceage when a Claude Code session starts.
bash hooks/install.shpowershell -ExecutionPolicy Bypass -File hooks\install.ps1The installer:
- Copies hooks into
~/.claude/hooks/ - Registers
SessionStart - Registers
UserPromptSubmit - Configures the
[ICEAGE]statusline badge - Backs up your existing
settings.json
bash hooks/uninstall.sh.\hooks\uninstall.ps1Node.js must be available:
node --versionIceage provides slash commands for Claude Code.
Available skills:
/iceage
/iceage-review
/iceage-commit
/iceage-help
mkdir -p ~/.claude/skills/iceage \
~/.claude/skills/iceage-review \
~/.claude/skills/iceage-commit \
~/.claude/skills/iceage-help
cp skills/iceage/SKILL.md \
~/.claude/skills/iceage/SKILL.md
cp skills/iceage-review/SKILL.md \
~/.claude/skills/iceage-review/SKILL.md
cp skills/iceage-commit/SKILL.md \
~/.claude/skills/iceage-commit/SKILL.md
cp skills/iceage-help/SKILL.md \
~/.claude/skills/iceage-help/SKILL.md$d = "$env:USERPROFILE\.claude\skills"
New-Item -ItemType Directory -Force `
"$d\iceage",
"$d\iceage-review",
"$d\iceage-commit",
"$d\iceage-help"
Copy-Item skills\iceage\SKILL.md `
"$d\iceage\SKILL.md"
Copy-Item skills\iceage-review\SKILL.md `
"$d\iceage-review\SKILL.md"
Copy-Item skills\iceage-commit\SKILL.md `
"$d\iceage-commit\SKILL.md"
Copy-Item skills\iceage-help\SKILL.md `
"$d\iceage-help\SKILL.md"Restart Claude Code.
Then type / in the chat input to see the available Iceage commands.
Commands are an alternative to Claude Code skills.
mkdir -p ~/.claude/commands
cp commands/*.toml ~/.claude/commands/New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\commands"
Copy-Item commands\*.toml "$env:USERPROFILE\.claude\commands\"You can use commands alongside skills or instead of them.
If you want Iceage automatically enabled for a specific project without using global hooks:
mkdir -p .claude/rules
cp rules/iceage-activate.md .claude/rules/iceage-activate.mdClaude Code automatically loads .claude/rules/*.md as project context.
Iceage can run as an always-on Cursor rule.
mkdir -p .cursor/rules
cp .cursor/rules/iceage.mdc .cursor/rules/iceage.mdcYou can also install the rule globally:
~/.cursor/rules/
The rule uses:
alwaysApply: trueThis activates Iceage automatically for Cursor sessions.
Install the Iceage rule:
mkdir -p .windsurf/rules
cp .windsurf/rules/iceage.md .windsurf/rules/iceage.mdThe rule uses:
trigger: always_onNo manual activation is required.
Install Iceage into your workspace:
mkdir -p .clinerules
cp .clinerules/iceage.md .clinerules/iceage.mdCline automatically discovers .clinerules/*.md files in the workspace root.
Install the repository-level Copilot instructions:
mkdir -p .github
cp .github/copilot-instructions.md .github/copilot-instructions.mdAlternatively, append the contents of:
rules/iceage-activate.md
to your existing:
.github/copilot-instructions.md
Copy the Iceage context file into your project:
cp GEMINI.md /path/to/your/project/GEMINI.mdAlternatively, append the contents of:
rules/iceage-activate.md
to your existing GEMINI.md.
Iceage can also work with other AI coding assistants that support system prompts, rule files, or project instructions.
Use the following core rules:
Respond terse like smart mammoth hunter. All technical substance stay. Only fluff die.
Drop: articles, filler (just/really/basically), pleasantries, hedging.
Fragments OK. Short synonyms. Technical terms exact. Code unchanged.
Pattern: [thing] [action] [reason]. [next step].
Stop: "stop iceage" or "normal mode".
Then activate it with:
/iceage
Iceage supports multiple communication intensity levels.
Switch modes at any time during a conversation.
/iceage lite
/iceage
/iceage ultra
/iceage wenyan
Tight writing while keeping complete sentences.
Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.
Default Iceage mode.
Pool reuse open DB connections. No new connection per request. Skip handshake overhead.
Maximum compression.
Pool = reuse DB conn. Skip handshake → fast under load.
Classical Chinese compression mode.
池復用連線。不每請求新開。故速。
Sure! I'd be happy to help you understand this issue.
The reason this happens is that you're creating a new object reference on every render. React sees that the reference has changed, even if the actual values inside the object remain the same.
To fix this issue, you can use the useMemo hook to memoize the object and prevent a new reference from being created on every render.
New object ref each render.
Inline object prop = new ref → React sees changed prop → re-render.
Use `useMemo` to stabilize the reference.
The technical meaning stays.
The unnecessary prose disappears.
| Command | Description |
|---|---|
/iceage |
Activate full mode |
/iceage lite |
Activate lite mode |
/iceage ultra |
Activate ultra mode |
/iceage wenyan |
Activate Wenyan mode |
stop iceage |
Disable Iceage |
normal mode |
Return to normal communication |
/iceage-commit |
Generate a terse Conventional Commit message |
/iceage-review |
Generate concise code review comments |
/iceage-help |
Display the Iceage quick reference |
/iceage:compress <file> |
Compress a Markdown file |
Natural language activation also works:
activate iceage
talk like iceage
turn off iceage
iceage-compress compresses existing Markdown documentation into Iceage's concise writing style.
It preserves important document structure, including:
- Headings
- Code blocks
- URLs
The compressor also validates the result and retries when necessary.
go run ./skills/compress/go README.mdUseful for files already tracked by Git:
go run ./skills/compress/go --no-backup README.mdSet:
ANTHROPIC_API_KEY
in your environment or .env.local.
If no API key is configured, Iceage can fall back to the claude CLI.
Iceage uses three components to maintain its active mode across Claude Code sessions.
SessionStart
│
├── Track current Iceage mode
├── Inject Iceage rules
└── Configure statusline
│
▼
Claude Code Session
│
▼
UserPromptSubmit
│
├── Detect /iceage commands
├── Detect natural-language triggers
├── Update current mode
└── Prevent style drift
│
▼
Iceage Statusline
│
├── [ICEAGE]
└── [ICEAGE:ULTRA]
hooks/iceage-activate.js
Responsible for:
- Tracking the current mode
- Injecting Iceage rules as hidden context
- Nudging initial statusline setup
hooks/iceage-mode-tracker.js
Responsible for:
- Detecting
/iceagecommands - Detecting natural-language activation
- Updating the mode state
- Sending per-turn reminders
iceage-statusline.sh
iceage-statusline.ps1
Displays the active mode:
[ICEAGE]
or:
[ICEAGE:ULTRA]
All hooks fail silently on filesystem errors so Iceage never blocks a Claude Code session.
You can configure the default Iceage mode through an environment variable:
export ICEAGE_DEFAULT_MODE=liteSupported values include:
lite
ultra
wenyan
off
Or use the configuration file:
mkdir -p ~/.config/iceage
echo '{ "defaultMode": "lite" }' \
> ~/.config/iceage/config.jsonUse:
off
to disable automatic activation while keeping manual /iceage activation available.
| AI Coding Agent | Integration | Auto-Activation |
|---|---|---|
| Claude Code | Hooks + Skills | Yes |
| Cursor | .cursor/rules/iceage.mdc |
Yes |
| Windsurf | .windsurf/rules/iceage.md |
Yes |
| Cline | .clinerules/iceage.md |
Yes |
| GitHub Copilot | .github/copilot-instructions.md |
Yes |
| Gemini CLI | GEMINI.md |
Yes |
| Other agents | System prompt / rule file | Manual |
Iceage can compress code review feedback into short, actionable comments.
Example:
L42: 🔴 bug: token check inverted. Use `exp * 1000`.
Instead of a long explanation, the reviewer gets:
location → severity → issue → fix
This makes large code reviews easier to scan.
Use:
/iceage-commit
to generate concise Conventional Commit messages.
The goal is:
type(scope): concise description
with a terse body when additional context is required.
Iceage can also be used beyond AI conversations.
Use:
go run ./skills/compress/go README.mdto compress existing Markdown documentation.
Useful for:
- README files
- Developer documentation
- Technical guides
- Project notes
- Architecture documentation
- Internal engineering docs
The compressor is designed to reduce unnecessary prose while preserving the structure developers need.
Iceage includes a benchmark harness for measuring real output token counts.
The benchmark evaluates:
10 prompts
×
Normal vs Iceage modes
×
3 trials
using the Anthropic API.
Run the benchmark:
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env.local
cd benchmarks
go run . --trials 3Results are stored in:
benchmarks/results/
Evaluation snapshots are stored in:
evals/snapshots/
The evaluation compares token ratios against a terse-only baseline.
Iceage is built around one principle:
Communication should carry information, not ceremony.
AI coding assistants already have the intelligence.
The problem is often the interface between that intelligence and the developer.
For engineering workflows, responses should be:
Precise
↓
Technical
↓
Scannable
↓
Minimal
Not:
Greeting
↓
Disclaimer
↓
Repetition
↓
Explanation
↓
Conclusion
↓
Actual answer
Iceage keeps the answer.
Everything else is optional.
Iceage is designed for developers who:
- Use AI coding agents daily
- Work with Claude Code, Cursor, Windsurf, Cline, Copilot, or Gemini CLI
- Want faster AI interactions
- Prefer concise technical communication
- Want to reduce unnecessary token usage
- Read large volumes of AI-generated code and explanations
- Want AI responses optimized for engineering workflows
If you already think in:
problem → cause → fix
Iceage is designed for you.
Iceage prioritizes:
- Technical accuracy
- Information density
- Low verbosity
- Fast human scanning
- Predictable behavior
- Minimal configuration
- Compatibility with existing AI coding workflows
Iceage does not aim to make AI responses blindly short.
When additional detail is necessary for correctness, safety, debugging, or ambiguity, Iceage can return to normal communication.
git clone https://github.com/pomagrenate/iceage.git
cd iceage
# Claude Code
bash hooks/install.sh
# Then restart Claude CodeActivate:
/iceage
Change intensity:
/iceage lite
/iceage ultra
/iceage wenyan
Disable:
stop iceage
That's it.