chisle 3.7.0 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/rules/chisle.md +5 -6
- package/.claude-plugin/plugin.json +8 -1
- package/.clinerules/chisle.md +5 -6
- package/.cursor/rules/chisle.mdc +5 -6
- package/.github/copilot-instructions.md +5 -6
- package/.kiro/steering/chisle.md +5 -6
- package/.opencode/plugins/chisle.mjs +5 -6
- package/.windsurf/rules/chisle.md +5 -6
- package/AGENTS.md +4 -6
- package/NOTICE +12 -0
- package/README.md +61 -51
- package/bin/install.js +144 -22
- package/bin/lib/mcp.js +179 -0
- package/hooks/chisle-compress-output.js +96 -40
- package/hooks/chisle-config.js +13 -6
- package/hooks/chisle-mcp-proxy.js +195 -0
- package/package.json +3 -2
- package/skills/chisle/SKILL.md +1 -1
package/.agents/rules/chisle.md
CHANGED
|
@@ -30,12 +30,11 @@ prose, give the verdict, stop.
|
|
|
30
30
|
No unrequested abstractions. Deletion over addition. Shortest diff wins, after
|
|
31
31
|
you understand the problem and never instead of it.
|
|
32
32
|
|
|
33
|
-
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
edit. Depth where the problem is actually hard, nowhere else.
|
|
33
|
+
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
34
|
+
Reason about the problem, never the wording: no drafting the answer in thinking,
|
|
35
|
+
no checking it against these rules, no weighing formats. Obvious answer → write
|
|
36
|
+
it straight away. Spend thought only where the problem is hard: root-cause bugs,
|
|
37
|
+
read what you edit.
|
|
39
38
|
|
|
40
39
|
**Context diet:** tool output you pull in is billed on every later turn. Grep
|
|
41
40
|
for the symbol first; read only the matching region, not the whole file. Narrow
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chisle",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.8.1",
|
|
4
4
|
"description": "Maximum-efficiency dev mode. Zero-fluff prose combined with YAGNI/ladder-first code decisions. One persona: the senior dev who deletes code for fun and bills by the syllable.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Jay Pokale",
|
|
7
|
+
"url": "https://github.com/JayPokale"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://chisle.jaypokale.me",
|
|
10
|
+
"repository": "https://github.com/JayPokale/Chisle",
|
|
11
|
+
"license": "MIT",
|
|
5
12
|
"hooks": {
|
|
6
13
|
"SessionStart": [
|
|
7
14
|
{
|
package/.clinerules/chisle.md
CHANGED
|
@@ -25,12 +25,11 @@ prose, give the verdict, stop.
|
|
|
25
25
|
No unrequested abstractions. Deletion over addition. Shortest diff wins, after
|
|
26
26
|
you understand the problem and never instead of it.
|
|
27
27
|
|
|
28
|
-
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
edit. Depth where the problem is actually hard, nowhere else.
|
|
28
|
+
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
29
|
+
Reason about the problem, never the wording: no drafting the answer in thinking,
|
|
30
|
+
no checking it against these rules, no weighing formats. Obvious answer → write
|
|
31
|
+
it straight away. Spend thought only where the problem is hard: root-cause bugs,
|
|
32
|
+
read what you edit.
|
|
34
33
|
|
|
35
34
|
**Context diet:** tool output you pull in is billed on every later turn. Grep
|
|
36
35
|
for the symbol first; read only the matching region, not the whole file. Narrow
|
package/.cursor/rules/chisle.mdc
CHANGED
|
@@ -30,12 +30,11 @@ prose, give the verdict, stop.
|
|
|
30
30
|
No unrequested abstractions. Deletion over addition. Shortest diff wins, after
|
|
31
31
|
you understand the problem and never instead of it.
|
|
32
32
|
|
|
33
|
-
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
edit. Depth where the problem is actually hard, nowhere else.
|
|
33
|
+
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
34
|
+
Reason about the problem, never the wording: no drafting the answer in thinking,
|
|
35
|
+
no checking it against these rules, no weighing formats. Obvious answer → write
|
|
36
|
+
it straight away. Spend thought only where the problem is hard: root-cause bugs,
|
|
37
|
+
read what you edit.
|
|
39
38
|
|
|
40
39
|
**Context diet:** tool output you pull in is billed on every later turn. Grep
|
|
41
40
|
for the symbol first; read only the matching region, not the whole file. Narrow
|
|
@@ -25,12 +25,11 @@ prose, give the verdict, stop.
|
|
|
25
25
|
No unrequested abstractions. Deletion over addition. Shortest diff wins, after
|
|
26
26
|
you understand the problem and never instead of it.
|
|
27
27
|
|
|
28
|
-
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
edit. Depth where the problem is actually hard, nowhere else.
|
|
28
|
+
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
29
|
+
Reason about the problem, never the wording: no drafting the answer in thinking,
|
|
30
|
+
no checking it against these rules, no weighing formats. Obvious answer → write
|
|
31
|
+
it straight away. Spend thought only where the problem is hard: root-cause bugs,
|
|
32
|
+
read what you edit.
|
|
34
33
|
|
|
35
34
|
**Context diet:** tool output you pull in is billed on every later turn. Grep
|
|
36
35
|
for the symbol first; read only the matching region, not the whole file. Narrow
|
package/.kiro/steering/chisle.md
CHANGED
|
@@ -29,12 +29,11 @@ prose, give the verdict, stop.
|
|
|
29
29
|
No unrequested abstractions. Deletion over addition. Shortest diff wins, after
|
|
30
30
|
you understand the problem and never instead of it.
|
|
31
31
|
|
|
32
|
-
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
edit. Depth where the problem is actually hard, nowhere else.
|
|
32
|
+
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
33
|
+
Reason about the problem, never the wording: no drafting the answer in thinking,
|
|
34
|
+
no checking it against these rules, no weighing formats. Obvious answer → write
|
|
35
|
+
it straight away. Spend thought only where the problem is hard: root-cause bugs,
|
|
36
|
+
read what you edit.
|
|
38
37
|
|
|
39
38
|
**Context diet:** tool output you pull in is billed on every later turn. Grep
|
|
40
39
|
for the symbol first; read only the matching region, not the whole file. Narrow
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// chisle — OpenCode plugin: tool-output compression (the input axis).
|
|
2
2
|
//
|
|
3
|
-
// Prompt-side rules (the fenced ruleset the installer writes into
|
|
4
|
-
//
|
|
3
|
+
// Prompt-side rules (the fenced ruleset the installer writes into the global
|
|
4
|
+
// OpenCode config root's AGENTS.md) shrink what the model WRITES. This plugin
|
|
5
5
|
// shrinks what it READS: oversized tool results (bash dumps, subagent reports,
|
|
6
6
|
// web fetches, MCP payloads) get their repetitive middle elided — head kept,
|
|
7
7
|
// tail kept, error lines salvaged — before the model sees them. Deterministic,
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
// before this plugin was installed). Neither needs a schema rebuild.
|
|
17
17
|
//
|
|
18
18
|
// Load it by installing via `npx chisle --only opencode`, which drops this file
|
|
19
|
-
// and the shared compressor core into
|
|
19
|
+
// and the shared compressor core into the configured OpenCode plugins dir. OpenCode
|
|
20
20
|
// loads every file in that dir at startup.
|
|
21
21
|
//
|
|
22
22
|
// Tunables (shared with the Claude/Pi/Copilot compressor, see chisle-config):
|
|
@@ -54,7 +54,7 @@ const config = loadFrom([
|
|
|
54
54
|
const compressForOpencode = core && core.compressForOpencode;
|
|
55
55
|
const recordSavings = core && core.recordSavings;
|
|
56
56
|
const getDefaultMode = config.getDefaultMode || (() => 'on');
|
|
57
|
-
const
|
|
57
|
+
const getOpencodeStateDir = config.getOpencodeStateDir || config.getOpencodeDir || (() => path.dirname(__dirname));
|
|
58
58
|
|
|
59
59
|
// Already compressed: our elision marker. Skip such text so a second pass
|
|
60
60
|
// (messages.transform after tool.execute.after already ran) never nests a
|
|
@@ -89,8 +89,7 @@ export default async () => {
|
|
|
89
89
|
if (updated != null && updated.length < original.length) {
|
|
90
90
|
output.output = updated;
|
|
91
91
|
if (recordSavings) {
|
|
92
|
-
recordSavings(original.length - updated.length,
|
|
93
|
-
process.env.CHISLE_STATE_DIR || getOpencodeDir());
|
|
92
|
+
recordSavings(original.length - updated.length, getOpencodeStateDir());
|
|
94
93
|
}
|
|
95
94
|
}
|
|
96
95
|
} catch (e) { /* keep the original output */ }
|
|
@@ -29,12 +29,11 @@ prose, give the verdict, stop.
|
|
|
29
29
|
No unrequested abstractions. Deletion over addition. Shortest diff wins, after
|
|
30
30
|
you understand the problem and never instead of it.
|
|
31
31
|
|
|
32
|
-
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
edit. Depth where the problem is actually hard, nowhere else.
|
|
32
|
+
**Thinking is billed too.** Reasoning tokens cost the same as written ones.
|
|
33
|
+
Reason about the problem, never the wording: no drafting the answer in thinking,
|
|
34
|
+
no checking it against these rules, no weighing formats. Obvious answer → write
|
|
35
|
+
it straight away. Spend thought only where the problem is hard: root-cause bugs,
|
|
36
|
+
read what you edit.
|
|
38
37
|
|
|
39
38
|
**Context diet:** tool output you pull in is billed on every later turn. Grep
|
|
40
39
|
for the symbol first; read only the matching region, not the whole file. Narrow
|
package/AGENTS.md
CHANGED
|
@@ -35,12 +35,10 @@ after you understand the problem and never instead of it.
|
|
|
35
35
|
|
|
36
36
|
## Thinking is billed too
|
|
37
37
|
|
|
38
|
-
Reasoning tokens cost the same as written ones.
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
understanding the problem: root-cause bugs, read what you edit. Depth where the
|
|
43
|
-
problem is actually hard, nowhere else.
|
|
38
|
+
Reasoning tokens cost the same as written ones. Reason about the problem, never
|
|
39
|
+
the wording: no drafting the answer in thinking, no checking it against these
|
|
40
|
+
rules, no weighing formats. Obvious answer, write it straight away. Spend thought
|
|
41
|
+
only where the problem is hard: root-cause bugs, read what you edit.
|
|
44
42
|
|
|
45
43
|
## Context diet
|
|
46
44
|
|
package/NOTICE
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Chisle
|
|
2
|
+
Copyright (c) 2026 Jay Pokale
|
|
3
|
+
|
|
4
|
+
Chisle's ruleset (skills/chisle/SKILL.md and the rule copies generated from it)
|
|
5
|
+
began as a merge of two MIT-licensed skills and still carries portions of them.
|
|
6
|
+
Their notices, under the MIT permission notice in LICENSE:
|
|
7
|
+
|
|
8
|
+
caveman — https://github.com/JuliusBrussee/caveman
|
|
9
|
+
Copyright (c) 2026 Julius Brussee
|
|
10
|
+
|
|
11
|
+
ponytail — https://github.com/DietrichGebert/ponytail
|
|
12
|
+
Copyright (c) 2026 DietrichGebert
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
<p align="center">
|
|
16
16
|
<a href="https://www.npmjs.com/package/chisle"><img src="https://img.shields.io/npm/v/chisle?style=flat-square&color=d78a3c" alt="npm version"></a>
|
|
17
|
-
<img src="https://img.shields.io/badge/works%20with-
|
|
17
|
+
<img src="https://img.shields.io/badge/works%20with-13%20agents-d78a3c?style=flat-square" alt="Works with 13 agents">
|
|
18
18
|
<a href="https://github.com/JayPokale/Chisle/actions/workflows/test.yml"><img src="https://img.shields.io/github/actions/workflow/status/JayPokale/Chisle/test.yml?style=flat-square&label=CI" alt="CI"></a>
|
|
19
19
|
<img src="https://img.shields.io/badge/deps-0-2da44e?style=flat-square" alt="Zero deps">
|
|
20
20
|
<img src="https://img.shields.io/badge/license-MIT-d78a3c?style=flat-square" alt="MIT">
|
|
@@ -22,60 +22,71 @@
|
|
|
22
22
|
</p>
|
|
23
23
|
|
|
24
24
|
<p align="center">
|
|
25
|
-
<strong>
|
|
25
|
+
<strong>Built for Claude Code: answers about half as long, shorter than caveman and ponytail · 13 agents · zero dependencies · one command</strong>
|
|
26
26
|
</p>
|
|
27
27
|
|
|
28
|
-
Chisle is a
|
|
28
|
+
Chisle is a Claude Code plugin that makes Claude cheaper to run without making it dumber. It cuts what Claude writes: no filler, no hedging, no speculative abstractions, just the smallest code that works. It also cuts what Claude reads: a `PostToolUse` hook trims oversized tool output by ~46% before it re-enters the context window, where it would be re-billed on every later request. In agent-loop tests Claude with Chisle passes the same tasks as Claude without it. One `npx chisle` installs it, and the same ruleset ships to Pi, Cursor, Codex, Gemini, Copilot, OpenCode, Antigravity and four more agents. Every number here comes from committed raw transcripts, including the runs where it lost.
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
|
-
<img src="assets/benchmark-pi.svg" width="820" alt="Pi benchmark, 6 tasks on GPT-5.5, as percent of the same model with no ruleset.
|
|
31
|
+
<img src="assets/benchmark-pi.svg" width="820" alt="Pi benchmark, 6 tasks on GPT-5.5, answer length as percent of the same model with no ruleset. caveman 56%, ponytail 49%, Chisle 37%.">
|
|
32
32
|
</p>
|
|
33
33
|
|
|
34
|
-
<p align="center"><sub>Pi 0.85.1 + GPT-5.5, 6 tasks
|
|
34
|
+
<p align="center"><sub>Pi 0.85.1 + GPT-5.5, 6 tasks: answer length vs the same model with no ruleset. Lower is leaner. <a href="#benchmarks">More below.</a></sub></p>
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
-
"
|
|
38
|
+
"Implement an order state machine covering created, paid, shipped, delivered, cancelled and refunded, with the legal transitions enforced and invalid ones rejected." Same model, same prompt, one difference: the injected ruleset. Both answers are the **verbatim committed output** from [`raw-oct-notools/large-s2`](benchmarks/results/raw-oct-notools/large-s2/):
|
|
39
39
|
|
|
40
40
|
<table>
|
|
41
|
-
<tr><th align="left" width="50%">bare
|
|
41
|
+
<tr><th align="left" width="50%">bare model: 125 lines, 1,342 answer tokens</th><th align="left" width="50%">Chisle: 54 lines, 450 answer tokens</th></tr>
|
|
42
42
|
<tr valign="top"><td>
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
44
|
+
An `Enum` of states, a custom exception class, type hints and docstrings on every method, a file write, then a test harness:
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
class OrderState(Enum):
|
|
48
|
+
CREATED = "created"
|
|
49
|
+
PAID = "paid"
|
|
50
|
+
# … four more
|
|
51
|
+
|
|
52
|
+
class InvalidTransition(Exception):
|
|
53
|
+
"""Raised when attempting an invalid state transition."""
|
|
54
|
+
pass
|
|
55
|
+
|
|
56
|
+
class Order:
|
|
57
|
+
VALID_TRANSITIONS = { … }
|
|
58
|
+
def transition_to(self, next_state: OrderState) -> None:
|
|
59
|
+
"""Transition to next state if valid, …"""
|
|
56
60
|
```
|
|
57
61
|
|
|
58
|
-
…
|
|
62
|
+
…plus usage, tests and a summary.
|
|
59
63
|
|
|
60
64
|
</td><td>
|
|
61
65
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
},
|
|
66
|
+
One dict of legal transitions, one method that enforces it:
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
class OrderStateMachine:
|
|
70
|
+
TRANSITIONS = {
|
|
71
|
+
'created': {'paid', 'cancelled'},
|
|
72
|
+
'paid': {'shipped', 'refunded'},
|
|
73
|
+
'shipped': {'delivered', 'cancelled'},
|
|
74
|
+
'delivered': {'refunded'},
|
|
75
|
+
'cancelled': set(),
|
|
76
|
+
'refunded': set(),
|
|
77
|
+
}
|
|
78
|
+
def transition(self, new_state):
|
|
79
|
+
if new_state not in self.TRANSITIONS[self.state]:
|
|
80
|
+
raise ValueError(f"Invalid transition: …")
|
|
81
|
+
self.state = new_state
|
|
71
82
|
```
|
|
72
83
|
|
|
73
|
-
Then
|
|
84
|
+
Then a short usage block and one line on how it works.
|
|
74
85
|
|
|
75
86
|
</td></tr>
|
|
76
87
|
</table>
|
|
77
88
|
|
|
78
|
-
|
|
89
|
+
Same behaviour, a third of the tokens. caveman wrote 1,140 and ponytail 842 on the same prompt.
|
|
79
90
|
|
|
80
91
|
## What it compresses
|
|
81
92
|
|
|
@@ -83,7 +94,8 @@ Not golfed, **boring**. Same behaviour, one less abstraction, no second file, an
|
|
|
83
94
|
|---|---|---|
|
|
84
95
|
| **Output: prose** | filler, hedging, manufactured structure | zero-fluff ruleset, injected per session |
|
|
85
96
|
| **Output: code** | speculative abstractions, unrequested boilerplate | YAGNI efficiency ladder |
|
|
86
|
-
| **Input: context** | oversized tool output flooding the window | Claude `PostToolUse`
|
|
97
|
+
| **Input: context** | oversized tool output flooding the window | Claude `PostToolUse`, Pi `tool_result`, OpenCode plugin, Copilot CLI `postToolUse`: scrub, elide, dedup, plus prevention rules |
|
|
98
|
+
| **Input: MCP** | oversized MCP tool results in any agent | `npx chisle mcp wrap`: a proxy in front of each stdio MCP server (Cursor, Windsurf, Cline, Kiro, Gemini, Qwen Code, Copilot CLI) |
|
|
87
99
|
|
|
88
100
|
Where each one attaches to a session:
|
|
89
101
|
|
|
@@ -120,7 +132,7 @@ The loop on the right is the input axis: tool output is billed again on *every*
|
|
|
120
132
|
|
|
121
133
|
## Install
|
|
122
134
|
|
|
123
|
-
One command. Auto-detects your agents (Claude Code, Pi, Cursor, Windsurf, Cline, Kiro, Antigravity, Codex, Gemini, Copilot, OpenCode, Hermes) and wires each one. `--uninstall` puts everything back.
|
|
135
|
+
One command. Auto-detects your agents (Claude Code, Pi, Cursor, Windsurf, Cline, Kiro, Antigravity, Codex, Gemini, Copilot, Copilot CLI, OpenCode, Hermes) and wires each one. `--uninstall` puts everything back. `npx chisle mcp wrap` extends tool-output compression to MCP servers in any agent ([details](INSTALL.md#mcp-output-compression-any-agent)).
|
|
124
136
|
|
|
125
137
|
```bash
|
|
126
138
|
npx chisle
|
|
@@ -144,30 +156,26 @@ Upgrading, per-agent setup, `--stats` and config: [docs/usage.md](docs/usage.md)
|
|
|
144
156
|
|
|
145
157
|
## Benchmarks
|
|
146
158
|
|
|
147
|
-
|
|
159
|
+
Same model, same prompts, one difference: the injected ruleset. Lower = leaner. Chisle is the leanest on every row.
|
|
148
160
|
|
|
149
|
-
|
|
150
|
-
<img src="assets/benchmark-rerun.svg" width="820" alt="2026-10-01 live rerun: total billed output as percent of the bare model. caveman 102%, ponytail 105%, Chisle 83%.">
|
|
151
|
-
</p>
|
|
161
|
+
**Claude Code** (Haiku 4.5, 26 live prompts, tools off, [raw cells](benchmarks/results/raw-oct-notools/)):
|
|
152
162
|
|
|
153
|
-
|
|
|
154
|
-
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
| **Chisle** | **83%** | **69–95%** | **76%** | **170%** | **11 / 26** |
|
|
163
|
+
| % of a bare model | caveman | ponytail | **Chisle** |
|
|
164
|
+
|---|--:|--:|--:|
|
|
165
|
+
| answer length | 65% | 58% | **56%** |
|
|
166
|
+
| answer lines | 66% | 54% | **52%** |
|
|
158
167
|
|
|
159
|
-
|
|
168
|
+
**Pi** (GPT-5.5, 6 tasks, [raw cells](benchmarks/results/raw-pi/)):
|
|
160
169
|
|
|
161
|
-
|
|
170
|
+
| % of a bare model | caveman | ponytail | **Chisle** |
|
|
171
|
+
|---|--:|--:|--:|
|
|
172
|
+
| answer length | 56% | 49% | **37%** |
|
|
173
|
+
| answer lines | 75% | 38% | **37%** |
|
|
174
|
+
| billed tokens, explanations | 43% | 76% | **39%** |
|
|
162
175
|
|
|
163
|
-
|
|
164
|
-
|---|:---:|:---:|:---:|:---:|:---:|
|
|
165
|
-
| caveman | ✅ | ❌ | ❌ | ❌ 305% | ❌ |
|
|
166
|
-
| ponytail | ❌ | ✅ | ❌ | ❌ 493% | ❌ |
|
|
167
|
-
| headroom | ❌ | ❌ | ✅ proxy | n/a | ❌ |
|
|
168
|
-
| **Chisle** | ✅ | ✅ | ✅ hook | **170%** | ✅ |
|
|
176
|
+
**Tool output** is two thirds of a Claude Code session's context and re-billed every turn. The compressor cuts **~46%** off every oversized output ([171 sessions](benchmarks/results/2026-07-07-input-axis.md)); on OpenCode a 30 KB log dropped **87%** of fresh input tokens.
|
|
169
177
|
|
|
170
|
-
|
|
178
|
+
Method and every raw cell: [docs/benchmarks.md](docs/benchmarks.md).
|
|
171
179
|
|
|
172
180
|
---
|
|
173
181
|
|
|
@@ -242,6 +250,8 @@ See [CONTRIBUTING.md](CONTRIBUTING.md). Built by [Jay Pokale](https://github.com
|
|
|
242
250
|
|
|
243
251
|
[MIT](LICENSE). The shortest license that works.
|
|
244
252
|
|
|
253
|
+
Chisle began as a merge of [caveman](https://github.com/JuliusBrussee/caveman) (terse prose) and [ponytail](https://github.com/DietrichGebert/ponytail) (lazy-senior-dev code rules), and its ruleset still carries parts of both. Their MIT notices are in [NOTICE](NOTICE).
|
|
254
|
+
|
|
245
255
|
## Contributors
|
|
246
256
|
|
|
247
257
|
<a href="https://github.com/JayPokale/Chisle/graphs/contributors">
|