{
  "markdown": "<div align=\"center\">\n  <img src=\"assets/iceage.png\" alt=\"Iceage AI Agent Compression\" width=\"120\" />\n\n  <h1>iceage</h1>\n\n  <p>\n    <strong>Make AI coding agents terse, precise, and token-efficient.</strong>\n  </p>\n\n  <p>\n    Less filler. Same technical depth. Lower token usage.\n  </p>\n\n  <p>\n    <img src=\"https://img.shields.io/badge/Go-1.22+-00ADD8?logo=go&logoColor=white\" alt=\"Go\" />\n    <img src=\"https://img.shields.io/badge/Claude_Code-hooks_%2B_skills-D97706?logo=anthropic&logoColor=white\" alt=\"Claude Code\" />\n    <img src=\"https://img.shields.io/badge/Cursor-rules-000000?logo=cursor&logoColor=white\" alt=\"Cursor\" />\n    <img src=\"https://img.shields.io/badge/Windsurf-rules-0EA5E9\" alt=\"Windsurf\" />\n    <img src=\"https://img.shields.io/badge/Gemini_CLI-extension-4285F4?logo=google&logoColor=white\" alt=\"Gemini CLI\" />\n  </p>\n  <p>\n    <a href=\"#features\">Features</a> ·\n    <a href=\"#installation\">Installation</a> ·\n    <a href=\"#supported-ai-coding-agents\">AI Agents</a> ·\n    <a href=\"#modes\">Modes</a> ·\n    <a href=\"#commands\">Commands</a> ·\n    <a href=\"#benchmarks\">Benchmarks</a>\n  </p>\n</div>\n\n---\n\n## What is Iceage?\n\n**Iceage** is a lightweight prompt and agent-style optimization toolkit that makes AI coding assistants communicate in **compressed, technical, high-signal prose**.\n\nModern AI coding agents often spend a surprising number of tokens on:\n\n- Pleasantries\n- Repeated explanations\n- Filler words\n- Hedging\n- Redundant context\n- Long-form explanations when a short technical answer is enough\n\nIceage removes that overhead while preserving the information that matters.\n\n### Before\n\n> \"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 `useMemo` hook.\"\n\n### After\n\n> \"New object ref each render. Inline object prop = new ref = re-render. Wrap in `useMemo`.\"\n\n**Same diagnosis. Same fix. Significantly fewer tokens.**\n\nIceage is designed specifically for developers who use AI coding agents throughout the day and want **less conversational overhead without sacrificing technical accuracy**.\n\n---\n\n## Why Iceage?\n\nAI agents are powerful, but their default communication style is often optimized for general conversation rather than high-frequency software engineering.\n\nIceage changes the communication layer.\n\n```text\nNormal AI Agent\n      │\n      ▼\nLong explanations\nPleasantries\nHedging\nRepetition\n      │\n      ▼\n     Iceage\n      │\n      ▼\nCompressed technical response\n      │\n      ├── Less filler\n      ├── Fewer tokens\n      ├── Faster scanning\n      └── Same technical substance\n````\n\nThe goal is simple:\n\n> **Remove words. Keep meaning.**\n\n---\n\n## Features\n\n| Feature                           | Description                                                                                            |\n| --------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| **Terse AI responses**            | Removes filler, pleasantries, unnecessary articles, and hedging                                        |\n| **Token-efficient communication** | Compresses natural-language responses while preserving technical meaning                               |\n| **6 intensity levels**            | Choose between `lite`, `full`, `ultra`, and Wenyan modes                                               |\n| **Automatic clarity fallback**    | Returns to normal communication for security warnings, destructive operations, or ambiguous situations |\n| **Session persistence**           | Keeps Iceage active across turns and context compression                                               |\n| **Claude Code hooks**             | Automatically activates Iceage and tracks the current mode                                             |\n| **Claude Code skills**            | Provides `/iceage`, `/iceage-review`, `/iceage-commit`, and more                                       |\n| **Cursor rules**                  | Always-on Iceage rules for Cursor                                                                      |\n| **Windsurf rules**                | Always-on Iceage rules for Windsurf                                                                    |\n| **Cline support**                 | Workspace-level `.clinerules` integration                                                              |\n| **GitHub Copilot support**        | Repository-level Copilot instructions                                                                  |\n| **Gemini CLI support**            | Project-level `GEMINI.md` integration                                                                  |\n| **Code review mode**              | Generates concise, actionable review comments                                                          |\n| **Commit mode**                   | Generates terse Conventional Commit messages                                                           |\n| **Markdown compression**          | Compress existing Markdown documentation while preserving structure                                    |\n| **Statusline indicator**          | Shows the current Iceage mode directly in Claude Code                                                  |\n\n---\n\n## Installation\n\nClone the repository:\n\n```bash\ngit clone https://github.com/pomagrenate/iceage.git\ncd iceage\n```\n\nThen install Iceage for the AI coding agent you use.\n\n---\n\n# Supported AI Coding Agents\n\n## Claude Code\n\nClaude Code has the deepest Iceage integration through:\n\n* Hooks\n* Skills\n* Commands\n* Project rules\n* Statusline integration\n\n### 1. Install Hooks\n\nHooks automatically activate Iceage when a Claude Code session starts.\n\n#### macOS / Linux\n\n```bash\nbash hooks/install.sh\n```\n\n#### Windows PowerShell\n\n```powershell\npowershell -ExecutionPolicy Bypass -File hooks\\install.ps1\n```\n\nThe installer:\n\n* Copies hooks into `~/.claude/hooks/`\n* Registers `SessionStart`\n* Registers `UserPromptSubmit`\n* Configures the `[ICEAGE]` statusline badge\n* Backs up your existing `settings.json`\n\n### Uninstall\n\n#### macOS / Linux\n\n```bash\nbash hooks/uninstall.sh\n```\n\n#### Windows PowerShell\n\n```powershell\n.\\hooks\\uninstall.ps1\n```\n\n### Requirement\n\nNode.js must be available:\n\n```bash\nnode --version\n```\n\n---\n\n## 2. Install Claude Code Skills\n\nIceage provides slash commands for Claude Code.\n\nAvailable skills:\n\n```text\n/iceage\n/iceage-review\n/iceage-commit\n/iceage-help\n```\n\n### macOS / Linux\n\n```bash\nmkdir -p ~/.claude/skills/iceage \\\n         ~/.claude/skills/iceage-review \\\n         ~/.claude/skills/iceage-commit \\\n         ~/.claude/skills/iceage-help\n\ncp skills/iceage/SKILL.md \\\n   ~/.claude/skills/iceage/SKILL.md\n\ncp skills/iceage-review/SKILL.md \\\n   ~/.claude/skills/iceage-review/SKILL.md\n\ncp skills/iceage-commit/SKILL.md \\\n   ~/.claude/skills/iceage-commit/SKILL.md\n\ncp skills/iceage-help/SKILL.md \\\n   ~/.claude/skills/iceage-help/SKILL.md\n```\n\n### Windows PowerShell\n\n```powershell\n$d = \"$env:USERPROFILE\\.claude\\skills\"\n\nNew-Item -ItemType Directory -Force `\n  \"$d\\iceage\",\n  \"$d\\iceage-review\",\n  \"$d\\iceage-commit\",\n  \"$d\\iceage-help\"\n\nCopy-Item skills\\iceage\\SKILL.md `\n  \"$d\\iceage\\SKILL.md\"\n\nCopy-Item skills\\iceage-review\\SKILL.md `\n  \"$d\\iceage-review\\SKILL.md\"\n\nCopy-Item skills\\iceage-commit\\SKILL.md `\n  \"$d\\iceage-commit\\SKILL.md\"\n\nCopy-Item skills\\iceage-help\\SKILL.md `\n  \"$d\\iceage-help\\SKILL.md\"\n```\n\nRestart Claude Code.\n\nThen type `/` in the chat input to see the available Iceage commands.\n\n---\n\n## 3. Install Claude Code Commands\n\nCommands are an alternative to Claude Code skills.\n\n### macOS / Linux\n\n```bash\nmkdir -p ~/.claude/commands\ncp commands/*.toml ~/.claude/commands/\n```\n\n### Windows PowerShell\n\n```powershell\nNew-Item -ItemType Directory -Force \"$env:USERPROFILE\\.claude\\commands\"\nCopy-Item commands\\*.toml \"$env:USERPROFILE\\.claude\\commands\\\"\n```\n\nYou can use commands alongside skills or instead of them.\n\n---\n\n## 4. Enable Iceage Per Project\n\nIf you want Iceage automatically enabled for a specific project without using global hooks:\n\n```bash\nmkdir -p .claude/rules\ncp rules/iceage-activate.md .claude/rules/iceage-activate.md\n```\n\nClaude Code automatically loads `.claude/rules/*.md` as project context.\n\n---\n\n# Cursor\n\nIceage can run as an always-on Cursor rule.\n\n```bash\nmkdir -p .cursor/rules\ncp .cursor/rules/iceage.mdc .cursor/rules/iceage.mdc\n```\n\nYou can also install the rule globally:\n\n```text\n~/.cursor/rules/\n```\n\nThe rule uses:\n\n```yaml\nalwaysApply: true\n```\n\nThis activates Iceage automatically for Cursor sessions.\n\n---\n\n# Windsurf\n\nInstall the Iceage rule:\n\n```bash\nmkdir -p .windsurf/rules\ncp .windsurf/rules/iceage.md .windsurf/rules/iceage.md\n```\n\nThe rule uses:\n\n```yaml\ntrigger: always_on\n```\n\nNo manual activation is required.\n\n---\n\n# Cline\n\nInstall Iceage into your workspace:\n\n```bash\nmkdir -p .clinerules\ncp .clinerules/iceage.md .clinerules/iceage.md\n```\n\nCline automatically discovers `.clinerules/*.md` files in the workspace root.\n\n---\n\n# GitHub Copilot\n\nInstall the repository-level Copilot instructions:\n\n```bash\nmkdir -p .github\ncp .github/copilot-instructions.md .github/copilot-instructions.md\n```\n\nAlternatively, append the contents of:\n\n```text\nrules/iceage-activate.md\n```\n\nto your existing:\n\n```text\n.github/copilot-instructions.md\n```\n\n---\n\n# Gemini CLI\n\nCopy the Iceage context file into your project:\n\n```bash\ncp GEMINI.md /path/to/your/project/GEMINI.md\n```\n\nAlternatively, append the contents of:\n\n```text\nrules/iceage-activate.md\n```\n\nto your existing `GEMINI.md`.\n\n---\n\n# Other AI Coding Agents\n\nIceage can also work with other AI coding assistants that support system prompts, rule files, or project instructions.\n\nUse the following core rules:\n\n```text\nRespond terse like smart mammoth hunter. All technical substance stay. Only fluff die.\n\nDrop: articles, filler (just/really/basically), pleasantries, hedging.\n\nFragments OK. Short synonyms. Technical terms exact. Code unchanged.\n\nPattern: [thing] [action] [reason]. [next step].\n\nStop: \"stop iceage\" or \"normal mode\".\n```\n\nThen activate it with:\n\n```text\n/iceage\n```\n\n---\n\n# Modes\n\nIceage supports multiple communication intensity levels.\n\nSwitch modes at any time during a conversation.\n\n```text\n/iceage lite\n/iceage\n/iceage ultra\n/iceage wenyan\n```\n\n## Lite\n\nTight writing while keeping complete sentences.\n\n```text\nConnection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.\n```\n\n## Full\n\nDefault Iceage mode.\n\n```text\nPool reuse open DB connections. No new connection per request. Skip handshake overhead.\n```\n\n## Ultra\n\nMaximum compression.\n\n```text\nPool = reuse DB conn. Skip handshake → fast under load.\n```\n\n## Wenyan\n\nClassical Chinese compression mode.\n\n```text\n池復用連線。不每請求新開。故速。\n```\n\n---\n\n# Response Compression Example\n\n### Normal\n\n```text\nSure! I'd be happy to help you understand this issue.\n\nThe 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.\n\nTo fix this issue, you can use the useMemo hook to memoize the object and prevent a new reference from being created on every render.\n```\n\n### Iceage\n\n```text\nNew object ref each render.\n\nInline object prop = new ref → React sees changed prop → re-render.\n\nUse `useMemo` to stabilize the reference.\n```\n\nThe technical meaning stays.\n\nThe unnecessary prose disappears.\n\n---\n\n# Commands\n\n| Command                   | Description                                  |\n| ------------------------- | -------------------------------------------- |\n| `/iceage`                 | Activate full mode                           |\n| `/iceage lite`            | Activate lite mode                           |\n| `/iceage ultra`           | Activate ultra mode                          |\n| `/iceage wenyan`          | Activate Wenyan mode                         |\n| `stop iceage`             | Disable Iceage                               |\n| `normal mode`             | Return to normal communication               |\n| `/iceage-commit`          | Generate a terse Conventional Commit message |\n| `/iceage-review`          | Generate concise code review comments        |\n| `/iceage-help`            | Display the Iceage quick reference           |\n| `/iceage:compress <file>` | Compress a Markdown file                     |\n\nNatural language activation also works:\n\n```text\nactivate iceage\ntalk like iceage\nturn off iceage\n```\n\n---\n\n# iceage-compress\n\n`iceage-compress` compresses existing Markdown documentation into Iceage's concise writing style.\n\nIt preserves important document structure, including:\n\n* Headings\n* Code blocks\n* URLs\n\nThe compressor also validates the result and retries when necessary.\n\n### With backup\n\n```bash\ngo run ./skills/compress/go README.md\n```\n\n### Without backup\n\nUseful for files already tracked by Git:\n\n```bash\ngo run ./skills/compress/go --no-backup README.md\n```\n\n### API configuration\n\nSet:\n\n```text\nANTHROPIC_API_KEY\n```\n\nin your environment or `.env.local`.\n\nIf no API key is configured, Iceage can fall back to the `claude` CLI.\n\n---\n\n# How Claude Code Hooks Work\n\nIceage uses three components to maintain its active mode across Claude Code sessions.\n\n```text\nSessionStart\n    │\n    ├── Track current Iceage mode\n    ├── Inject Iceage rules\n    └── Configure statusline\n            │\n            ▼\n      Claude Code Session\n            │\n            ▼\nUserPromptSubmit\n    │\n    ├── Detect /iceage commands\n    ├── Detect natural-language triggers\n    ├── Update current mode\n    └── Prevent style drift\n            │\n            ▼\n      Iceage Statusline\n            │\n            ├── [ICEAGE]\n            └── [ICEAGE:ULTRA]\n```\n\n### SessionStart Hook\n\n```text\nhooks/iceage-activate.js\n```\n\nResponsible for:\n\n* Tracking the current mode\n* Injecting Iceage rules as hidden context\n* Nudging initial statusline setup\n\n### UserPromptSubmit Hook\n\n```text\nhooks/iceage-mode-tracker.js\n```\n\nResponsible for:\n\n* Detecting `/iceage` commands\n* Detecting natural-language activation\n* Updating the mode state\n* Sending per-turn reminders\n\n### Statusline\n\n```text\niceage-statusline.sh\niceage-statusline.ps1\n```\n\nDisplays the active mode:\n\n```text\n[ICEAGE]\n```\n\nor:\n\n```text\n[ICEAGE:ULTRA]\n```\n\nAll hooks fail silently on filesystem errors so Iceage never blocks a Claude Code session.\n\n---\n\n# Default Mode\n\nYou can configure the default Iceage mode through an environment variable:\n\n```bash\nexport ICEAGE_DEFAULT_MODE=lite\n```\n\nSupported values include:\n\n```text\nlite\nultra\nwenyan\noff\n```\n\nOr use the configuration file:\n\n```bash\nmkdir -p ~/.config/iceage\n\necho '{ \"defaultMode\": \"lite\" }' \\\n  > ~/.config/iceage/config.json\n```\n\nUse:\n\n```text\noff\n```\n\nto disable automatic activation while keeping manual `/iceage` activation available.\n\n---\n\n# Supported AI Coding Agents\n\n| AI Coding Agent    | Integration                       | Auto-Activation |\n| ------------------ | --------------------------------- | --------------- |\n| **Claude Code**    | Hooks + Skills                    | Yes             |\n| **Cursor**         | `.cursor/rules/iceage.mdc`        | Yes             |\n| **Windsurf**       | `.windsurf/rules/iceage.md`       | Yes             |\n| **Cline**          | `.clinerules/iceage.md`           | Yes             |\n| **GitHub Copilot** | `.github/copilot-instructions.md` | Yes             |\n| **Gemini CLI**     | `GEMINI.md`                       | Yes             |\n| **Other agents**   | System prompt / rule file         | Manual          |\n\n---\n\n# Code Review Mode\n\nIceage can compress code review feedback into short, actionable comments.\n\nExample:\n\n```text\nL42: 🔴 bug: token check inverted. Use `exp * 1000`.\n```\n\nInstead of a long explanation, the reviewer gets:\n\n```text\nlocation → severity → issue → fix\n```\n\nThis makes large code reviews easier to scan.\n\n---\n\n# Commit Mode\n\nUse:\n\n```text\n/iceage-commit\n```\n\nto generate concise Conventional Commit messages.\n\nThe goal is:\n\n```text\ntype(scope): concise description\n```\n\nwith a terse body when additional context is required.\n\n---\n\n# Documentation Compression\n\nIceage can also be used beyond AI conversations.\n\nUse:\n\n```bash\ngo run ./skills/compress/go README.md\n```\n\nto compress existing Markdown documentation.\n\nUseful for:\n\n* README files\n* Developer documentation\n* Technical guides\n* Project notes\n* Architecture documentation\n* Internal engineering docs\n\nThe compressor is designed to reduce unnecessary prose while preserving the structure developers need.\n\n---\n\n# Benchmarks\n\nIceage includes a benchmark harness for measuring real output token counts.\n\nThe benchmark evaluates:\n\n```text\n10 prompts\n×\nNormal vs Iceage modes\n×\n3 trials\n```\n\nusing the Anthropic API.\n\nRun the benchmark:\n\n```bash\necho \"ANTHROPIC_API_KEY=sk-ant-...\" > .env.local\n\ncd benchmarks\ngo run . --trials 3\n```\n\nResults are stored in:\n\n```text\nbenchmarks/results/\n```\n\nEvaluation snapshots are stored in:\n\n```text\nevals/snapshots/\n```\n\nThe evaluation compares token ratios against a terse-only baseline.\n\n---\n\n# Philosophy\n\nIceage is built around one principle:\n\n> **Communication should carry information, not ceremony.**\n\nAI coding assistants already have the intelligence.\n\nThe problem is often the interface between that intelligence and the developer.\n\nFor engineering workflows, responses should be:\n\n```text\nPrecise\n    ↓\nTechnical\n    ↓\nScannable\n    ↓\nMinimal\n```\n\nNot:\n\n```text\nGreeting\n    ↓\nDisclaimer\n    ↓\nRepetition\n    ↓\nExplanation\n    ↓\nConclusion\n    ↓\nActual answer\n```\n\nIceage keeps the answer.\n\nEverything else is optional.\n\n---\n\n# Who Is Iceage For?\n\nIceage is designed for developers who:\n\n* Use AI coding agents daily\n* Work with Claude Code, Cursor, Windsurf, Cline, Copilot, or Gemini CLI\n* Want faster AI interactions\n* Prefer concise technical communication\n* Want to reduce unnecessary token usage\n* Read large volumes of AI-generated code and explanations\n* Want AI responses optimized for engineering workflows\n\nIf you already think in:\n\n```text\nproblem → cause → fix\n```\n\nIceage is designed for you.\n\n---\n\n# Design Goals\n\nIceage prioritizes:\n\n1. **Technical accuracy**\n2. **Information density**\n3. **Low verbosity**\n4. **Fast human scanning**\n5. **Predictable behavior**\n6. **Minimal configuration**\n7. **Compatibility with existing AI coding workflows**\n\nIceage does **not** aim to make AI responses blindly short.\n\nWhen additional detail is necessary for correctness, safety, debugging, or ambiguity, Iceage can return to normal communication.\n\n--- \n\n# Quick Start\n\n```bash\ngit clone https://github.com/pomagrenate/iceage.git\ncd iceage\n\n# Claude Code\nbash hooks/install.sh\n\n# Then restart Claude Code\n```\n\nActivate:\n\n```text\n/iceage\n```\n\nChange intensity:\n\n```text\n/iceage lite\n/iceage ultra\n/iceage wenyan\n```\n\nDisable:\n\n```text\nstop iceage\n```\n\nThat's it.\n",
  "bytes": 19021,
  "sha": "2dac2ad3fc07715c120478a248b134ca29b4ed05ffa51ae85c95f451eccb4de5",
  "repo_slug": "pomagrenate/ice_age",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_pomagrenate_ice_age_4bd2811f/readme"
}