<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Brevity Optimization on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/brevity-optimization/</link>
        <description>Recent content in Brevity Optimization on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Sat, 04 Jul 2026 17:31:19 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/brevity-optimization/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>caveman</title>
        <link>https://producthunt.programnotes.cn/en/p/caveman/</link>
        <pubDate>Sat, 04 Jul 2026 17:31:19 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/caveman/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1736166908102-ace1978ca746?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3ODMxNTczOTZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post caveman" /&gt;&lt;h1 id=&#34;juliusbrusseecaveman&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/caveman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;JuliusBrussee/caveman&lt;/a&gt;
&lt;/h1&gt;&lt;p align=&#34;center&#34;&gt;
  &lt;img src=&#34;docs/assets/caveman-logo-banner.png&#34; alt=&#34;Caveman&#34; width=&#34;720&#34;&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;strong&gt;why use many token when few do trick&lt;/strong&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  Make your AI coding agent talk like a caveman.&lt;br&gt;
  Same answers, &lt;strong&gt;65% fewer output tokens&lt;/strong&gt;. Brain still big. Mouth small.
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://github.com/JuliusBrussee/caveman/stargazers&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/stars/JuliusBrussee/caveman?style=flat&amp;color=yellow&#34; alt=&#34;Stars&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;./INSTALL.md&#34;&gt;&lt;img src=&#34;https://img.shields.io/badge/works_with-30%2B_agents-orange?style=flat&#34; alt=&#34;30+ agents&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;https://github.com/JuliusBrussee/caveman/commits/main&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/last-commit/JuliusBrussee/caveman?style=flat&#34; alt=&#34;Last commit&#34;&gt;&lt;/a&gt;
  &lt;a href=&#34;LICENSE&#34;&gt;&lt;img src=&#34;https://img.shields.io/github/license/JuliusBrussee/caveman?style=flat&#34; alt=&#34;License&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;#before--after&#34;&gt;See it&lt;/a&gt; ·
  &lt;a href=&#34;#install&#34;&gt;Install&lt;/a&gt; ·
  &lt;a href=&#34;#pick-your-grunt&#34;&gt;Levels&lt;/a&gt; ·
  &lt;a href=&#34;#what-you-get&#34;&gt;What you get&lt;/a&gt; ·
  &lt;a href=&#34;#benchmarks&#34;&gt;Benchmarks&lt;/a&gt; ·
  &lt;a href=&#34;#the-whole-cave&#34;&gt;Ecosystem&lt;/a&gt; ·
  &lt;a href=&#34;#caveman-2&#34;&gt;Caveman 2&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Caveman is a skill/plugin for &lt;a class=&#34;link&#34; href=&#34;https://docs.anthropic.com/en/docs/claude-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claude Code&lt;/a&gt;, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and 30+ other agents. Install once. Agent drops the filler and answers in tight caveman-speak, keeping code, commands, and errors byte-for-byte exact. You save output tokens on every reply, forever.&lt;/p&gt;
&lt;h2 id=&#34;before--after&#34;&gt;Before / After
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th width=&#34;50%&#34;&gt;🗣️ Normal agent — 69 tokens&lt;/th&gt;
&lt;th width=&#34;50%&#34;&gt;&lt;img src=&#34;docs/assets/dancing-rock.svg&#34; width=&#34;18&#34; height=&#34;18&#34; alt=&#34;&#34;&gt; Caveman agent — 19 tokens&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&#34;top&#34;&gt;
&lt;blockquote&gt;
&lt;p&gt;The reason your React component is re-rendering is likely because you&amp;rsquo;re creating a new object reference on each render cycle. When you pass an inline object as a prop, React&amp;rsquo;s shallow comparison sees it as a different object every time, which triggers a re-render. I&amp;rsquo;d recommend using useMemo to memoize the object.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/td&gt;
&lt;td valign=&#34;top&#34;&gt;
&lt;blockquote&gt;
&lt;p&gt;New object ref each render. Inline object prop = new ref = re-render. Wrap in &lt;code&gt;useMemo&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&#34;top&#34;&gt;
&lt;blockquote&gt;
&lt;p&gt;Sure! I&amp;rsquo;d be happy to help you with that. The issue you&amp;rsquo;re experiencing is most likely caused by your authentication middleware not properly validating the token expiry. Let me take a look and suggest a fix.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/td&gt;
&lt;td valign=&#34;top&#34;&gt;
&lt;blockquote&gt;
&lt;p&gt;Bug in auth middleware. Token expiry check use &lt;code&gt;&amp;lt;&lt;/code&gt; not &lt;code&gt;&amp;lt;=&lt;/code&gt;. Fix:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Same fix. Third of the words. Nothing technical lost.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌────────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   output tokens saved   █████████       65% │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   input tokens saved    ░░░░░░░░░         0% │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   technical accuracy    █████████      100% │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   vibes                 █████████       OOG │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└────────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Caveman no make brain smaller. Caveman make &lt;em&gt;mouth&lt;/em&gt; smaller. Shrinks what the agent &lt;strong&gt;says&lt;/strong&gt;, not what it knows.&lt;/p&gt;
&lt;h2 id=&#34;install&#34;&gt;Install
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;One command. Finds every agent on your machine. Installs for each.&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# macOS · Linux · WSL · Git Bash&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c&#34;&gt;# Windows · PowerShell 5.1+&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;githubusercontent&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;JuliusBrussee&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;caveman&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;~30 seconds. Needs Node ≥18. Skips agents you no have. Safe to re-run.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
&lt;strong&gt;Turn it on:&lt;/strong&gt; type &lt;code&gt;/caveman&lt;/code&gt; or say &lt;em&gt;&amp;ldquo;talk like caveman&amp;rdquo;&lt;/em&gt;. &lt;strong&gt;Turn it off:&lt;/strong&gt; say &lt;em&gt;&amp;ldquo;normal mode&amp;rdquo;&lt;/em&gt;. On Claude Code, Codex, and Gemini it&amp;rsquo;s already on from message one. No command needed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Install for one agent, or any of 30+ others&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;Every agent has its own path (plugin, extension, rule file, or &lt;code&gt;npx skills add&lt;/code&gt;). The full per-agent matrix, all flags, dry-run, and uninstall live in &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;./INSTALL.md&#34; &gt;INSTALL.md&lt;/a&gt;&lt;/strong&gt;. A few common ones:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Claude Code plugin&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude plugin marketplace add JuliusBrussee/caveman &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; claude plugin install caveman@caveman
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Gemini CLI extension&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemini extensions install https://github.com/JuliusBrussee/caveman
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Cursor / Windsurf / Cline / Codex / 30+ more, via the skills registry&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add JuliusBrussee/caveman -a cursor
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Install broke?&lt;/strong&gt; Open your agent in this repo and say: &lt;em&gt;&amp;ldquo;Read CLAUDE.md and INSTALL.md, install caveman for me.&amp;rdquo;&lt;/em&gt; Agent read repo, agent fix own brain. Snake eat tail.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;pick-your-grunt&#34;&gt;Pick your grunt
&lt;/h2&gt;&lt;p&gt;Six levels. Switch anytime with &lt;code&gt;/caveman &amp;lt;level&amp;gt;&lt;/code&gt;. Level sticks until you change it or the session ends.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Level&lt;/th&gt;
					&lt;th&gt;Same sentence, shrunk&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;em&gt;normal agent&lt;/em&gt;&lt;/td&gt;
					&lt;td&gt;You should wrap the object in &lt;code&gt;useMemo&lt;/code&gt;, since a new reference is created on every render.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;lite&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Wrap object in &lt;code&gt;useMemo&lt;/code&gt;. New ref created every render.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;full&lt;/code&gt; &lt;em&gt;(default)&lt;/em&gt;&lt;/td&gt;
					&lt;td&gt;New ref each render. Wrap object in &lt;code&gt;useMemo&lt;/code&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;ultra&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;New ref/render. &lt;code&gt;useMemo&lt;/code&gt; it.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;wenyan&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;New ref every render, so wrap in &lt;code&gt;useMemo&lt;/code&gt; — rendered in classical Chinese, shorter still.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
&lt;strong&gt;Speak your tongue.&lt;/strong&gt; Caveman keeps your language. Write Portuguese, caveman grunt Portuguese. Spanish, French, same. It compresses the &lt;em&gt;style&lt;/em&gt;, never translates. &lt;code&gt;wenyan&lt;/code&gt; mode is the exception on purpose: classical Chinese packs the most meaning per token.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;what-you-get&#34;&gt;What you get
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Command&lt;/th&gt;
					&lt;th&gt;What it does&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;/caveman [lite|full|ultra|wenyan]&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Compress every reply. Level sticks for the session.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;/caveman-commit&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Conventional Commit messages, ≤50-char subject. Why over what.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;/caveman-review&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;One-line PR comments: &lt;code&gt;L42: 🔴 bug: user null. Add guard.&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;/caveman-stats&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Real session token usage, lifetime savings, USD. Tweetable line with &lt;code&gt;--share&lt;/code&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;/caveman-compress &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Rewrite a memory file (like &lt;code&gt;CLAUDE.md&lt;/code&gt;) into caveman-speak. Cuts ~46% input tokens &lt;strong&gt;every session after&lt;/strong&gt;. Code, URLs, paths byte-preserved.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;caveman-shrink&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;MCP middleware. Wraps any MCP server, compresses its tool descriptions. &lt;a class=&#34;link&#34; href=&#34;https://www.npmjs.com/package/caveman-shrink&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;npm&lt;/a&gt;.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;cavecrew-*&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Caveman subagents (investigator, builder, reviewer). ~60% fewer tokens than vanilla, so main context lasts longer.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
On Claude Code the statusline shows &lt;code&gt;[CAVEMAN] ⛏ 12.4k&lt;/code&gt; — that&amp;rsquo;s your lifetime tokens saved, updated on every &lt;code&gt;/caveman-stats&lt;/code&gt;. Silence it with &lt;code&gt;CAVEMAN_STATUSLINE_SAVINGS=0&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;benchmarks&#34;&gt;Benchmarks
&lt;/h2&gt;&lt;p&gt;Real token counts from the Claude API. Average &lt;strong&gt;65% output reduction&lt;/strong&gt; across 10 prompts (range 22–87%), measured against default verbose replies. Output tokens only, committed and reproducible in &lt;a class=&#34;link&#34; href=&#34;./benchmarks/&#34; &gt;&lt;code&gt;benchmarks/&lt;/code&gt;&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;./evals/&#34; &gt;&lt;code&gt;evals/&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!-- BENCHMARK-TABLE-START --&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Task&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;Normal&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;Caveman&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;Saved&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Explain React re-render bug&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;1180&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;159&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;87%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Fix auth middleware token expiry&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;704&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;121&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;83%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Set up PostgreSQL connection pool&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;2347&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;380&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;84%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Explain git rebase vs merge&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;702&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;292&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;58%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Refactor callback to async/await&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;387&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;301&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;22%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Architecture: microservices vs monolith&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;446&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;310&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;30%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Review PR for security issues&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;678&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;398&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;41%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Docker multi-stage build&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;1042&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;290&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;72%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Debug PostgreSQL race condition&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;1200&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;232&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;81%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Implement React error boundary&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;3454&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;456&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;87%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;1214&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;294&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;65%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- BENCHMARK-TABLE-END --&gt;
&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]
&lt;strong&gt;Honest number warning.&lt;/strong&gt; Caveman only shrinks &lt;strong&gt;output&lt;/strong&gt; tokens. Input and reasoning tokens are untouched, and the skill itself adds ~1–1.5k input tokens per turn. So whole-session savings run smaller than the output number, and on already-terse workloads they can go net-negative. The real win is &lt;strong&gt;readability and speed&lt;/strong&gt;. Cost savings are the bonus. When caveman wins, when it loses, and how to measure it yourself: &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;./docs/HONEST-NUMBERS.md&#34; &gt;docs/HONEST-NUMBERS.md&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Turns out short isn&amp;rsquo;t just cheaper. A March 2026 paper, &lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2604.00025&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;em&gt;Brevity Constraints Reverse Performance Hierarchies in Language Models&lt;/em&gt;&lt;/a&gt;, tested 31 models and found that constraining large models to brief answers &lt;strong&gt;improved accuracy by ~26 points&lt;/strong&gt; on some benchmarks. Sometimes less word = more correct.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;caveman-compress receipts&lt;/strong&gt; — real memory files, cutting input tokens forever&lt;/summary&gt;
&lt;br&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;File&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;Original&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;Compressed&lt;/th&gt;
					&lt;th style=&#34;text-align: right&#34;&gt;Saved&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;claude-md-preferences.md&lt;/code&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;706&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;285&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;59.6%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;project-notes.md&lt;/code&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;1145&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;535&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;53.3%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;claude-md-project.md&lt;/code&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;1122&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;636&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;43.3%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;todo-list.md&lt;/code&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;627&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;388&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;38.1%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mixed-with-code.md&lt;/code&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;888&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;560&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;36.9%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;898&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;481&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: right&#34;&gt;&lt;strong&gt;46%&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Every session after, that file loads ~46% smaller. Input tokens saved forever, not just one reply.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;the-whole-cave&#34;&gt;The whole cave
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;&lt;td&gt;
&lt;h3 id=&#34;want-the-whole-agent-not-just-its-mouth--caveman-code&#34;&gt;&lt;img src=&#34;docs/assets/dancing-rock.svg&#34; width=&#34;20&#34; height=&#34;20&#34; alt=&#34;&#34;&gt; Want the whole agent, not just its mouth? → caveman-code
&lt;/h3&gt;&lt;p&gt;This skill shrinks what an agent &lt;strong&gt;says&lt;/strong&gt;. &lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/caveman-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;caveman-code&lt;/a&gt;&lt;/strong&gt; shrinks &lt;strong&gt;everything&lt;/strong&gt; — a full terminal coding agent, caveman top to bottom. &lt;strong&gt;~2× fewer tokens than Codex&lt;/strong&gt; on identical tasks. 20+ providers, plan mode, autopilot goal loop, MIT.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g @juliusbrussee/caveman-code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/caveman-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;▶ Try caveman-code →&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Five tools, one idea: &lt;strong&gt;agent do more with less.&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Repo&lt;/th&gt;
					&lt;th&gt;What it shrinks&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/caveman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;caveman&lt;/strong&gt;&lt;/a&gt; &lt;em&gt;(you here)&lt;/em&gt;&lt;/td&gt;
					&lt;td&gt;What the agent &lt;strong&gt;says&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/caveman-code&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;caveman-code&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;The &lt;strong&gt;whole agent&lt;/strong&gt;, end to end&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/cavemem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;cavemem&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;What the agent &lt;strong&gt;remembers&lt;/strong&gt;, across sessions&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/cavekit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;cavekit&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;The &lt;strong&gt;build loop&lt;/strong&gt; — spec-driven, no guessing&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/finetune-caveman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;cavegemma&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;The compression &lt;strong&gt;baked into weights&lt;/strong&gt; (Gemma fine-tune)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;Also: five sibling skills, one install&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/skills&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;JuliusBrussee/skills&lt;/strong&gt;&lt;/a&gt; — works in Claude Code, Cursor, Gemini, Cline, Copilot, 40+ agents:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Skill&lt;/th&gt;
					&lt;th&gt;What&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/skills/tree/main/skills/caveman&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;caveman&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;This one. Speak less, say more.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/skills/tree/main/skills/grill-me&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;grill-me&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Agent grills your plan &lt;em&gt;before&lt;/em&gt; you build the wrong thing.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/skills/tree/main/skills/interface-kit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;interface-kit&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Build UI that looks good, loads fast, works for everyone.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/skills/tree/main/skills/junior-to-senior&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;junior-to-senior&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Adversarial review pass. Junior output in, senior output out.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/JuliusBrussee/skills/tree/main/skills/loop-factory&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;loop-factory&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Spec-driven task loop — inbox → active → archive.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills@latest add JuliusBrussee/skills
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;&lt;strong&gt;🦞 Teach the lobster brevity — OpenClaw integration&lt;/strong&gt;&lt;/summary&gt;
&lt;br&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://openclaw.ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;OpenClaw&lt;/strong&gt;&lt;/a&gt; is a self-host gateway: one box, many agents inside, wired to Slack / Discord / iMessage / Telegram. Lobster strong. Lobster smart. Lobster also talk a lot.&lt;/p&gt;
&lt;p&gt;Same installer, scoped to one agent:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash -s -- --only openclaw
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Two things happen, no more: a caveman skill lands in the workspace, and a tiny marker-fenced block is appended to &lt;code&gt;SOUL.md&lt;/code&gt; (OpenClaw injects it every turn, so the lobster is terse from message one — no &lt;code&gt;/caveman&lt;/code&gt; per session). Custom path? &lt;code&gt;OPENCLAW_WORKSPACE=/your/path&lt;/code&gt;. Uninstall with the same line plus &lt;code&gt;--uninstall&lt;/code&gt;; your other workspace content stays untouched. Lobster claw still sharp. Lobster mouth now small.&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id=&#34;caveman-2&#34;&gt;Caveman 2
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Caveman make token small. Caveman 2 make it &lt;em&gt;provable&lt;/em&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Today&amp;rsquo;s savings numbers (including &lt;code&gt;/caveman-stats&lt;/code&gt;) are local estimates. Caveman 2 measures and verifies them across a whole team — real receipts, real dashboard, real proof the tokens went down. Building it now.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://caveman.so&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;Join the waitlist → caveman.so&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-it-works&#34;&gt;How it works
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;Install drops a skill file into your agent.&lt;/li&gt;
&lt;li&gt;Skill tells agent: drop filler, keep substance, use fragments — but never touch code, commands, or errors.&lt;/li&gt;
&lt;li&gt;On Claude Code, a hook writes a tiny flag file each session, so the agent talks caveman from message one without &lt;code&gt;/caveman&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/caveman-stats&lt;/code&gt; reads your session log, counts tokens saved, writes the number to your statusline.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/caveman-compress&lt;/code&gt; rewrites memory files (like &lt;code&gt;CLAUDE.md&lt;/code&gt;) so every future session starts with a smaller context. Save tokens forever, not just once.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hook architecture, file ownership, and CI sync are documented for maintainers in &lt;a class=&#34;link&#34; href=&#34;./CLAUDE.md&#34; &gt;CLAUDE.md&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;privacy&#34;&gt;Privacy
&lt;/h2&gt;&lt;p&gt;Caveman no phone home. No telemetry, no analytics, no accounts, no backend. After install, zero network calls — the skill is a prompt, the hooks are local scripts, and &lt;code&gt;/caveman-stats&lt;/code&gt; reads a log already on your disk. Install-time fetches (GitHub plus your agents&amp;rsquo; own registries) are spelled out in &lt;a class=&#34;link&#34; href=&#34;./SECURITY.md#privacy--telemetry&#34; &gt;SECURITY.md&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;sponsors&#34;&gt;Sponsors
&lt;/h2&gt;&lt;p&gt;Caveman free forever. Sponsors keep the rock sharp.&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://www.atlascloud.ai&#34;&gt;
    &lt;picture&gt;
      &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;docs/assets/atlas-cloud-dark.svg&#34;&gt;
      &lt;img src=&#34;docs/assets/atlas-cloud.svg&#34; alt=&#34;Atlas Cloud&#34; height=&#34;32&#34;&gt;
    &lt;/picture&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://www.atlascloud.ai&#34;&gt;&lt;strong&gt;Atlas Cloud&lt;/strong&gt;&lt;/a&gt; — full-modal AI inference platform, one API.
&lt;/p&gt;
&lt;p align=&#34;center&#34;&gt;
  &lt;a href=&#34;https://github.com/sponsors/JuliusBrussee&#34;&gt;&lt;strong&gt;Want your rock here? → Sponsor caveman&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id=&#34;star-this-repo&#34;&gt;Star this repo
&lt;/h2&gt;&lt;p&gt;Caveman save you token, save you money. Star cost zero. Fair trade. ⭐&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://star-history.com/#JuliusBrussee/caveman&amp;amp;Date&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://api.star-history.com/svg?repos=JuliusBrussee/caveman&amp;amp;type=Date&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Star History Chart&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;sub&gt;
&lt;strong&gt;Docs:&lt;/strong&gt;
&lt;a href=&#34;./INSTALL.md&#34;&gt;Install matrix&lt;/a&gt; ·
&lt;a href=&#34;./docs/HONEST-NUMBERS.md&#34;&gt;Honest numbers&lt;/a&gt; ·
&lt;a href=&#34;./CONTRIBUTING.md&#34;&gt;Contributing&lt;/a&gt; ·
&lt;a href=&#34;./CLAUDE.md&#34;&gt;Maintainer guide&lt;/a&gt; ·
&lt;a href=&#34;https://github.com/JuliusBrussee/caveman/issues&#34;&gt;Issues&lt;/a&gt;
&lt;br&gt;
&lt;strong&gt;Also by Julius Brussee:&lt;/strong&gt;
&lt;a href=&#34;https://github.com/JuliusBrussee/revu-swift&#34;&gt;Revu&lt;/a&gt; — local-first macOS study app with FSRS spaced repetition (&lt;a href=&#34;https://revu.cards&#34;&gt;revu.cards&lt;/a&gt;)
&lt;br&gt;&lt;br&gt;
MIT — free like mass mammoth on open plain.
&lt;/sub&gt;
</description>
        </item>
        
    </channel>
</rss>
