{"_id":"@0xyph3r/concise","_rev":"3-996cb91d074c230d78a50ff426462c8d","name":"@0xyph3r/concise","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@0xyph3r/concise","version":"0.1.0","keywords":["claude-code","claude-code-plugin","agent-skills","ai-agent"],"license":"MIT","_id":"@0xyph3r/concise@0.1.0","maintainers":[{"name":"0xyph3r","email":"0xyph3r@proton.me"}],"homepage":"https://github.com/0xyph3r/CONCISE","bugs":{"url":"https://github.com/0xyph3r/CONCISE/issues"},"bin":{"concise":"bin/install.js"},"dist":{"shasum":"377a55422d1ab3fe4a872202bc82bf6b4f4be535","tarball":"https://registry.npmjs.org/@0xyph3r/concise/-/concise-0.1.0.tgz","fileCount":25,"integrity":"sha512-t2PHdzz3QnZQujAq8NTqL4SRGloQfCIL2AG6kaOqCqvdrJnoV1d+OzdFHjfvhkyUljz6UfjO+XTJ6YNMcwLnlg==","signatures":[{"sig":"MEQCIFxtRX8mUGbxjgtuAJDkW18eR2vgJ9JxHANx0rV57fVSAiBv36S3xrbO0RgTqa3+91p7dlETIeMNVVp9NPjn4K36fQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75452},"engines":{"node":">=14"},"gitHead":"a09d9d0f323ff12eabb2a39b9b0431283e381da6","_npmUser":{"name":"0xyph3r","email":"0xyph3r@proton.me"},"repository":{"url":"git+https://github.com/0xyph3r/CONCISE.git","type":"git"},"_npmVersion":"10.8.1","description":"Cuts prose filler from Claude Code responses while leaving code, analysis depth, and correctness untouched. Shows a live per-response prose-budget bar in the statusline.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/concise_0.1.0_1788193377926_0.009400174120024474","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0xyph3r/concise","version":"0.1.1","keywords":["claude-code","claude-code-plugin","agent-skills","ai-agent"],"license":"MIT","_id":"@0xyph3r/concise@0.1.1","maintainers":[{"name":"0xyph3r","email":"0xyph3r@proton.me"}],"homepage":"https://github.com/0xyph3r/CONCISE","bugs":{"url":"https://github.com/0xyph3r/CONCISE/issues"},"bin":{"concise":"bin/install.js"},"dist":{"shasum":"5cf792f705ab9e33346bb692deb23e476dd3ca79","tarball":"https://registry.npmjs.org/@0xyph3r/concise/-/concise-0.1.1.tgz","fileCount":25,"integrity":"sha512-fs5MTAHsHR2T9m5ZyWtIv9bUM3RTXKw0nKO6FtaeA7oOMW7Oi4jwhwgFTjgEkqBuTbe1NBbEw4BKRke7jLkDbw==","signatures":[{"sig":"MEUCIBl4rgr5RtBjXgmQD5csjfn/T8LOTleRkLjUo1bQdEr1AiEApCWmW4ISTHtku/tmeTSw/06mF7YAkSxP++WCJ+tYqH8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75452},"engines":{"node":">=14"},"gitHead":"a09d9d0f323ff12eabb2a39b9b0431283e381da6","_npmUser":{"name":"0xyph3r","email":"0xyph3r@proton.me"},"repository":{"url":"git+https://github.com/0xyph3r/CONCISE.git","type":"git"},"_npmVersion":"10.8.1","description":"Cuts prose filler from Claude Code responses while leaving code, analysis depth, and correctness untouched. Shows a live per-response prose-budget bar in the statusline.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/concise_0.1.1_1788193607905_0.09307049746924978","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@0xyph3r/concise","version":"0.2.0","publishConfig":{"access":"public"},"description":"Cuts prose filler from Claude Code responses while leaving code, analysis depth, and correctness untouched. Shows a live per-response prose-budget bar in the statusline.","license":"MIT","bin":{"concise":"bin/install.js"},"engines":{"node":">=14"},"repository":{"type":"git","url":"git+https://github.com/0xyph3r/CONCISE.git"},"homepage":"https://github.com/0xyph3r/CONCISE","keywords":["claude-code","claude-code-plugin","agent-skills","ai-agent"],"_id":"@0xyph3r/concise@0.2.0","gitHead":"dee9cbee6aecaee6e1297e10bdc29a97edae7d22","bugs":{"url":"https://github.com/0xyph3r/CONCISE/issues"},"_nodeVersion":"24.12.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-o4y37SVn+GneAwCbmaCwigPMcZgPF4ivLLd3pkl2dYLLhpIHCtS7J86/2LeJFcyVErTwp9O3Mhhy6ykJaN1Uhw==","shasum":"2ac5d7de5952ee28ccea31e70a6f4b163496ae47","tarball":"https://registry.npmjs.org/@0xyph3r/concise/-/concise-0.2.0.tgz","fileCount":36,"unpackedSize":124307,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCXdngXp9t/3o90YVzrSSIq+RBYTdRjAQfYuYeANaPlCgIgZSbQTweLgEnKq9C72hO3WHkyGfYiMAKcU3x4HEWO1u8="}]},"_npmUser":{"name":"0xyph3r","email":"0xyph3r@proton.me"},"directories":{},"maintainers":[{"name":"0xyph3r","email":"0xyph3r@proton.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/concise_0.2.0_1788210393274_0.9360343693969113"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-31T16:22:57.697Z","modified":"2026-08-31T21:06:33.599Z","0.1.0":"2026-08-31T16:22:58.049Z","0.1.1":"2026-08-31T16:26:48.047Z","0.2.0":"2026-08-31T21:06:33.446Z"},"bugs":{"url":"https://github.com/0xyph3r/CONCISE/issues"},"license":"MIT","homepage":"https://github.com/0xyph3r/CONCISE","keywords":["claude-code","claude-code-plugin","agent-skills","ai-agent"],"repository":{"type":"git","url":"git+https://github.com/0xyph3r/CONCISE.git"},"description":"Cuts prose filler from Claude Code responses while leaving code, analysis depth, and correctness untouched. Shows a live per-response prose-budget bar in the statusline.","maintainers":[{"name":"0xyph3r","email":"0xyph3r@proton.me"}],"readme":"<div align=\"center\">\n\n# CONCISE\n\n[![Tests](https://github.com/0xyph3r/CONCISE/actions/workflows/test.yml/badge.svg)](https://github.com/0xyph3r/CONCISE/actions/workflows/test.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Claude Code Plugin](https://img.shields.io/badge/Claude%20Code-Plugin-6b46c1)](#install-the-full-plugin-claude-code-only)\n[![Agent Skills](https://img.shields.io/badge/Agent%20Skills-compatible-2563eb)](https://agentskills.io)\n\n</div>\n\nCuts prose filler from AI coding agent responses - trailing summaries,\nrestated context, hedging, over-long preambles - while leaving code, commit\nmessages, and analysis depth fully intact.\n\n![CONCISE statusline badge showing a live prose-budget bar](example.png)\n\n<p align=\"center\">\n  <a href=\"#install-on-any-agent-skills-compatible-tool\">Install</a> •\n  <a href=\"#before--after\">Before / After</a> •\n  <a href=\"#how-it-works\">How it works</a> •\n  <a href=\"#commands\">Commands</a> •\n  <a href=\"#configuration\">Configuration</a> •\n  <a href=\"#benchmarks\">Benchmarks</a> •\n  <a href=\"#support\">Support</a>\n</p>\n\nWorks two ways:\n\n- **Full plugin (Claude Code only):** the compression rules, plus a live\n  per-response prose-budget bar in the statusline that measures every\n  response as it happens.\n- **Agent Skills (any compatible tool):** the same compression rules as a\n  portable skill - Claude Code, Cursor, GitHub Copilot, Codex, Gemini CLI,\n  and every other tool that supports the open [Agent Skills](https://agentskills.io)\n  format. No live bar outside Claude Code - most tools have no equivalent\n  of its per-turn measurement hooks to drive one.\n\n## Before / After\n\n**Before:**\n\n> Sure! I'd be happy to help you with that. Let me take a look at the file\n> first.\n>\n> Great, I found the issue! The problem is that the function is checking\n> `if (x = 5)` instead of `if (x == 5)`, which is an assignment rather than\n> a comparison. This is a very common bug in JavaScript and other C-like\n> languages. Let me fix that for you now.\n>\n> I've made the fix. To summarize what I did: I changed the assignment\n> operator to a comparison operator on line 42. This should resolve the\n> issue you were experiencing. Let me know if you have any other\n> questions!\n\n**After:**\n\n> Line 42: `if (x = 5)` is assignment, not comparison. Fixed to `==`.\n\nSame fix, same code, same clarity - just without the wrapper.\n\n## Install on any Agent Skills compatible tool\n\n```\nnpx skills add 0xyph3r/CONCISE\n```\n\nDetects which supported tool(s) you have (Claude Code, Cursor, Copilot,\nCodex, Gemini CLI, and more) and installs the `concise` skill for each -\njust the compression rules, no live bar. See [Agent Skills clients](https://agentskills.io/clients)\nfor the full list of compatible tools. Target one specific tool with\n`npx skills add 0xyph3r/CONCISE --agent <name>`.\n\n## Install the full plugin (Claude Code only)\n\nOne line, the standard way any Claude Code plugin installs:\n\n```\nclaude plugin marketplace add 0xyph3r/CONCISE && claude plugin install concise@concise\n```\n\nThat's it - no clone, no separate installer to run. Restart Claude Code\n(or start a new session) and it's active. On first session start it will\nalso detect if your statusline isn't configured and offer to set it up.\n\n<details>\n<summary>Other ways to install the plugin</summary>\n\n- **npx (no plugin marketplace):**\n  ```\n  npx github:0xyph3r/CONCISE\n  ```\n  Copies the hooks into `~/.claude/hooks/concise` and wires them (plus the\n  statusline) into `~/.claude/settings.json` directly - backing up your\n  existing `settings.json` first, and never overwriting a hook or\n  `statusLine` already set by something else. Safe to re-run.\n- **npm registry:** `npm install -g @0xyph3r/concise` then run `concise`.\n  Same installer as the npx methods above, published to npm for `npm\n  search`/registry discoverability.\n\n</details>\n\n## How it works\n\n**Claude Code plugin** - three hooks:\n\n| Hook | What it does |\n|---|---|\n| `SessionStart` | Injects the compression rules once per session. |\n| `UserPromptSubmit` | Re-injects a short reminder every turn, so the model doesn't drift back to verbose over a long session. |\n| `Stop` | After each response, measures how many prose words it used (code blocks excluded) against your budget, and updates the statusline bar. |\n| `SubagentStop` | Same measurement, for a Task-tool subagent's final response - it also updates the bar/history. |\n| `PreToolUse` (matcher `Task`) | Rewrites a subagent's dispatch prompt to prepend the ruleset before it runs, confirmed by inspecting a real subagent's transcript directly. |\n\n**Agent Skills** - a single `SKILL.md` carrying the same ruleset, loaded by\nthe host tool's own skill-discovery mechanism. No live measurement; the\nrules alone still do most of the work.\n\n**Coexists with other terseness modes** (e.g. [caveman](https://github.com/JuliusBrussee/caveman)):\nCONCISE's ruleset explicitly defers grammar/style to whatever other\ncompression mode is also active - it only adds the measurement/bar and\nits own specific cuts, not a competing style mandate. Both plugins' hooks\nand files stay fully separate, so running both never breaks either.\n\nCompression targets prose only:\n\n| | |\n|---|---|\n| **Cut** | trailing summaries, restating what a diff already shows, politeness/hedging, re-explaining visible context, long tool-call preambles, code comments longer than the code they explain |\n| **Never cut** | code logic and structure, commit messages, PR descriptions, analysis depth, security warnings, irreversible-action confirmations |\n\nAsk to elaborate or go into more detail and that one turn answers in full,\nthen compression resumes automatically next turn - no toggling needed.\n\nA response under 8 prose words is flagged `[terse?]` on the bar when that\nsame turn edited a file or ran a command - a floor safety check against\nover-compression, not a correctness check (word count alone can't verify\nthat).\n\n## Commands\n\n*(Claude Code plugin only)*\n\n| Command | Effect |\n|---|---|\n| `/concise on` | Turn compression on (default). |\n| `/concise off` | Turn compression off for this session. |\n| `/concise budget <n>` | Set the per-response prose word budget for this session (default 400). Resets to the configured default at the start of the next session - set `CONCISE_BUDGET_WORDS`, the config file, or a project `.concise.json` for a budget that sticks. |\n| `/concise level light\\|normal\\|strict` | Preset budgets (600 / 400 / 200 words) instead of picking a raw number. |\n| `/concise-stats` | Show lifetime stats: turns tracked, average % of budget used, over-budget rate, total prose words. Measured only, never an extrapolated \"tokens saved\" number. |\n\n## Configuration\n\n*(Claude Code plugin only)*\n\nResolution order: env var > project `.concise.json` > global config file > default.\n\n| Setting | Effect |\n|---|---|\n| `CONCISE_BUDGET_WORDS` env var | Override the default word budget. |\n| `CONCISE_DEFAULT` env var | `on` or `off` - sets the SessionStart default. |\n| `.concise.json` in the project root | Checked-in, repo-specific: `{\"budgetWords\": 300, \"default\": \"on\"}` |\n| `~/.config/concise/config.json` (Linux/macOS)<br>`%APPDATA%\\concise\\config.json` (Windows) | Personal default, same shape as the project config. |\n| `CONCISE_NO_UPDATE_CHECK` env var | Set to disable the SessionStart update check entirely. |\n\nOn `SessionStart`, once per 24h at most (cached, never on every session), concise\nchecks the npm registry for a newer published version and - if one exists - tells\nthe user in chat, with the exact update command to run. It never downloads or\nruns anything on its own.\n\n## Benchmarks\n\nReal numbers coming - see [benchmarks/](benchmarks/README.md).\n\n## Support\n\nIf CONCISE saves you tokens, donations welcome:\n\n- **Monero (XMR):** `45aJUjAM63pVsd3QB872kAGDbvGCG4Bs9755qLfo6ikXYQsw2hvpKYHNQXvFzdhGWgGs5QHYLqXijR5Miyqo7s4gAaxm6RT`\n- **Solana (SOL):** `5ChmkTVKhbnCCYf7Ss3Q6uxoErqx3ZR7q1QhSFqR4N79`\n- **Bitcoin (BTC):** `bc1qmclxs8lmkxvhavz7u6j7jwxw7n7txdexlkuv0j`\n- **Ethereum (ETH / EVM):** `0xA6c145D12b7C5623663Db4bCf80B9DA7FD536883`\n\n<div align=\"center\">\n\n## License\n\nMIT - see [LICENSE](LICENSE)\n\n</div>\n","readmeFilename":"README.md"}