Chisle
Cut your AI coding agent's token bill on three axes: terse prose, YAGNI-first code, and tool-output compression. Claude Code, Pi, Cursor, Codex, Gemini + 4 more. Zero deps, published benchmarks including the runs it loses.
Install / Use
npx skills add JayPokale/ChisleInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of Chisle
Chisle scores 92/100 on our quality scale, 782nd of 4,630 Development & Engineering skills we index (top 17%).
Its SKILL.md is 33 KB long, well organised into 31 sections with 22 code examples: a thorough specification that gives an agent plenty to work with.
It has 722 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated 4 days ago, so Chisle is actively maintained.
- Our last check on 2026-10-18 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands (2 minor notes below). An AI review of the same text found nothing harmful.
- noteInstalls by piping a downloaded script into a shellline 133
curl -fsSL https://raw.githubusercontent.com/JayPokale/Chisle/main/install.sh | bash - noteInstalls by piping a downloaded script into a shellline 138
irm https://raw.githubusercontent.com/JayPokale/Chisle/main/install.ps1 | iex
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
Chisle compared with similar skills
All 4 of these similar skills score higher than Chisle; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| Chisle (this skill)by JayPokale | 92 | 722 | 4d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 105.3k | 3d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 104.0k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 67.0k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 45.7k | 1d ago | CLAUDE.md |
Frequently asked questions
- How do I install Chisle?
- Run
npx skills add JayPokale/Chisle. The install tabs above show the steps for each supported agent. - Which AI agents does Chisle work with?
- It is written for Claude Code, Gemini CLI, Cursor, GitHub Copilot and OpenAI Codex, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is Chisle safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands (2 minor notes below). An AI review of the same text found nothing harmful. It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is Chisle still maintained?
- The repository was last updated 4 days ago, so Chisle is actively maintained.
Skill content
View source on GitHub"Add debounce to a search input that currently fires an API call on every keystroke." Same model, same prompt, one difference: the injected ruleset. Both answers below are the verbatim committed output from benchmarks/results/raw/:
Opens with "Let me show you the most common approaches", then ships a reusable generic useDebounce<T> hook in its own file…
// useDebounce.ts
export function useDebounce<T>(
value: T, delay: number
): T {
const [debouncedValue, setDebouncedValue]
= useState<T>(value);
useEffect(() => { /* … */ }, [value, delay]);
return debouncedValue;
}
…then Option 2 and Option 3, a comparison table, and a caveats section.
</td><td>Asks which framework, then answers the question that was actually asked: setTimeout in the effect you already have, no new file, no generic:
useEffect(() => {
const timer = setTimeout(async () => {
if (query.trim()) { /* fetch */ }
}, 300);
return () => clearTimeout(timer);
}, [query]);
Then two lines on why it works, and "use lodash.debounce if already installed."
Not golfed, boring. Same behaviour, one less abstraction, no second file, and it names the dependency you might already have instead of reinventing it.
Most efficiency tools compress one thing. Chisle compresses three:
| axis | what | how |
|---|---|---|
| Output: prose | filler, hedging, manufactured structure | zero-fluff ruleset, injected per session |
| Output: code | speculative abstractions, unrequested boilerplate | YAGNI efficiency ladder |
| Input: context | oversized tool output flooding the window | Claude PostToolUse / Pi tool_result: scrub, elide, dedup, plus prevention rules |
Where each one attaches to a session:
flowchart LR
subgraph S["Session start"]
H1["Ruleset injection<br/>once per active session"]
end
subgraph T["Every turn"]
H2["Mode tracking<br/>Claude + Pi"]
end
subgraph L["Every tool call"]
H3["PostToolUse / tool_result<br/>scrub → elide → dedup"]
end
H1 --> M(["Model"])
H2 --> M
M -->|writes| O["Output:<br/>terser prose,<br/>YAGNI-first code"]
M -->|calls a tool| TOOL[["Bash / grep / web / extension tools"]]
TOOL -->|raw output| H3
H3 -->|"compressed, rebuilt into<br/>the tool's own shape"| M
RE["Read / Edit / Write"] -.->|"never touched,<br/>exact bytes feed later edits"| M
style M fill:#1f2937,stroke:#d78a3c,color:#e6edf3
style O fill:#14532d,stroke:#2da44e,color:#e6edf3
style H3 fill:#1f2937,stroke:#2da44e,color:#e6edf3
style RE fill:#3f1d1d,stroke:#cf3b3b,color:#e6edf3
The loop on the right is the input axis: tool output is billed again on every later request in the session, so shrinking it once pays repeatedly. Read, Edit, and Write are deliberately outside it.
Every "be concise" tool has a worst day, the day it makes the model write more than no tool at all. Across 20 measured tasks over two suites, the specialists had that day 6 and 8 times, blowing up to 424% of the baseline. Chisle had it once, capped at 173%, and that one failure was root-caused, fixed in the ruleset, and re-validated live at 93%, with the whole investigation committed to the repo. Think of it as downside insurance for your token bill: not always the single cheapest answer, always the smallest worst case, from the only tool in this class that publishes its own failures. Why not caveman or ponytail? →
Install
One command. Auto-detects your agents (Claude Code, Pi, Cursor, Windsurf, Cline, Kiro, Codex, Gemini, Copilot, OpenCode, Hermes) and wires each one. --uninstall puts everything back.
npx chisle
# or via curl
curl -fsSL https://raw.githubusercontent.com/JayPokale/Chisle/main/install.sh | bash
# Windows
irm https://raw.githubusercontent.com/JayPokale/Chisle/main/install.ps1 | iex
Preview first with npx chisle --dry-run, scope with --only claude or --only pi, see everything with npx chisle --help. Remove with npx chisle --uninstall.
Requirements: Node ≥18 (installer / npx) · Claude Code or Pi for /chisle toggling and input-side compression. The always-on ruleset still ships to every other agent.
Upgrading
npx chisle@latest --update
That refreshes every agent that already has Chisle and installs it into none that don't. Two details it exists to handle:
- Plain
npx chisledoes not upgrade. Every install path skips what is already present, so an upgrade run reports success and changes nothing.--updatepairs the refresh with that check. @latestmatters.npx chislecan serve a cached copy of the package from a previous run, so the pin is what guarantees you get the new one.
Update one agent at a time with --only:
npx chisle@latest --update --only claude # or: claude plugin update chisle@chisle
npx chisle@latest --update --only pi # or: pi install npm:chisle
npx chisle@latest --update --only gemini # or: gemini extensions install https://github.com/JayPokale/Chisle
npx chisle@latest --update --only codex
npx chisle@latest --update --only opencode # ruleset + skills + the compression plugin
npx chisle@latest --update --only hermes
Cursor, Windsurf, Cline, Kiro and Copilot keep their rule file inside the repo, because that is how those agents load rules:
cd ~/code/my-project
npx chisle@latest --update --only cursor
--update looks for that file in the current directory, so running it from ~ reports "Nothing to update" even when the project is set up correctly. Run it once per repo that has one. Full table, including what each agent's update actually refreshes: INSTALL.md.
Not sure what you are running? npx chisle --list prints the agents it detects, and claude plugin list shows the installed plugin and its version.
Chisle checks npm on session start and mentions it once when a major version is out (cached 3 days, CHISLE_UPDATE_CHECK=0 to silence). Minor and patch releases stay quiet on purpose.
Upgrading to 3.0.0 from 2.x needs nothing: a lite/full/ultra value in CHISLE_DEFAULT_MODE or config.json is no longer meaningful, falls through to the default, and Chisle stays active. It says so once so the setting is not ignored silently. Replace it with on/off or delete it.
Claude Code plugin (marketplace)
claude plugin marketplace add JayPokale/Chisle # register the marketplace
claude plugin install chisle@chisle # enable the plugin
Pi package
pi install npm:chisle
The package loads the zero-dependency extension and chisle skill globally. Pi extensions run with your user permissions; review the source before installation. Project-local installs (pi install -l npm:chisle) load only after you trust that project.
Where the savings show up
Two places, both measured rather than estimated:
npx chisle --stats # what the compressor has saved, cumulative
chisle: tool-output savings
saved: 88,967 chars (~22,241 tokens)
outputs: 18 compressed, 4,943 chars each on average
In Claude Code the statusline badge carries the same number live: [CHISLE] ⇣22k tok. Pi shows it in the footer for the current session.
This is the input axis only, and deliberately so. Chars elided have a real baseline, since the hook knows exactly what it cut. The output axis has none: there is no way to know what the model would have written without the ruleset, which is why that half is measured with A/B benchmark arms instead of a counter. A number that blended the two would be inventing the interesting half.
See what it would do, before it does it
npx chisle --dry-run # prints every file it would touch, changes nothing
npx chisle --stats # prints what it has saved, changes nothing
Want the savings measured on your own work rather than ours? Clone the repo and replay the compressor over local transcripts. It reads them locally, writes nothing, and reports the input the hook would have stripped:
git clone https://github.com/JayPokale/Chisle && cd Chisle
node benchmarks/replay-compress.js # Claude Code
node benchmarks/replay-compress.js pi # Pi; marginal over Pi's native truncation
Numbers
Nothing here is estimated. Every figure below is recomputed from committed raw data; the 2026-07-07 verification writeup re-derived the old claims from scratch, re-ran the whole suite against the competitors' installed plugins, and retired the one claim that didn't survive.
Output axis: vs caveman & ponytail, 20 live tasks
What this suite measures, and what it does not. Every figure below is billed output tokens on single-turn prompts with no tools available. That isolates the ruleset's effect on how the model writes, which is what it was built to measure. It is not whole-session cost: a real agentic session is dominated by tool output and cached input, so a tool can win here and still fail to pay for itself end to end. The input axis below is measured separately, and against its own baseline.
59+ live model runs across two suites (June 4-arm matrix on Haiku + Sonnet sweep; July re-verification run). Arms differ only in the injected system prompt. Billed output tokens vs the no-tool baseline:
| | total bill (all 20 tasks) | average task | worst case | backfires | |---|--:|--:|--:|--:| | caveman | 80% | 98% | 424% | 6 / 20 | | ponytail | 68% | 91% | 227% | 8 / 20 | | Chisle | 52% | 69% | 173% | 1 / 20 |
Chisle wins all four columns: it cut the total 20-task bill nearly in half while the
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
105.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
104.0kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
ai-job-search
67.0kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
45.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
