I strongly prefer TypeScript with strict mode enabled for all new code. Please don't use the `any` type unless there is genuinely no way around it, and if you do, make sure to leave a comment explaining the reasoning behind it. I find that taking the time to properly type things catches a lot of bugs before they ever make it to runtime.
When you are writing React components, it would be good to use function components with hooks rather than class components. You should also try to keep each component in its own file under `src/components/`, because it really makes it a lot easier to find things later on.
You should always make sure to run the test suite before pushing any changes to the main branch. This is important because it helps catch bugs early and prevents broken builds from being deployed to production. Run the tests with:
```bash pnpm test --run ```
If a test is flaky, please don't just skip it. Instead, open an issue on https://github.com/acme/web-app/issues and add the `flaky` label so that we can actually track it down.
- Please use Conventional Commits for all of your commit messages.
- It would be great if you could keep pull requests small, ideally under about 400 lines of changes.
- Make sure to always update `CHANGELOG.md` whenever you change any user-facing behavior.
Strongly prefer TypeScript, strict mode on, all new code. No `any` type unless truly no way around — if used, leave comment explaining why. Proper typing catches many bugs before runtime.
React components: function components with hooks, not class components. One component per file under `src/components/` — easier to find later.
Always run test suite before pushing to main branch. Catches bugs early, prevents broken builds deploying to production. Run tests with:
```bash pnpm test --run ```
Flaky test? Don't skip. Open issue on https://github.com/acme/web-app/issues and add `flaky` label so it can be tracked down.
- Use Conventional Commits for all commit messages.
- Keep PRs small, ideally under ~400 lines changed.
- Always update `CHANGELOG.md` when changing user-facing behavior.
Real run recorded with claude-code / claude-opus-5-5. Prompt: "Compress docs/preferences.md so it costs fewer tokens when the agent loads it, but keep a backup of the original." The skill ran its bundled script (python3 -m scripts), which calls the claude CLI to do the compression. The first validation found a stray comma after a URL, and the script fixed it automatically before passing. The left and right columns are the file's exact contents before and after, unmodified, only split into headings, paragraphs and lists for display. The original was backed up to preferences.original.md in the tool's data directory.
Qué hace
Reescribe un archivo en lenguaje natural, como CLAUDE.md, notas de proyecto, una lista de tareas o preferencias, en prosa comprimida, para que consuma menos tokens cada vez que tu agente lo carga. Los encabezados, bloques de código, código en línea, URL y rutas de archivo deben permanecer idénticos.
Cómo funciona
- Se activa con /caveman-compress <file> o con una solicitud para comprimir un archivo de memoria.
- Ejecuta el script de Python incluido, que comprueba el tipo, el tamaño (500 KB como máximo) y el nombre del archivo, y después envía el texto a Claude. Los bloques de código se enmascaran primero para que el modelo no pueda cambiarlos.
- Valida el resultado en local. Si una comprobación falla, pide a Claude una corrección específica, con hasta 2 intentos; si sigue fallando, el original queda intacto.
- Escribe el archivo comprimido en su ubicación y guarda el original como
<name>.original.mden una carpeta de datos aparte, para que los agentes no lo carguen dos veces.
Ideal para
Archivos de memoria de proyectos grandes que se cargan en cada sesión.
Conviene saber
Solo se comprimen archivos de prosa (.md, .mdc, .txt, .rst, .typ, .tex y sin extensión); los archivos de código y configuración se omiten. Requiere Python 3.10 o posterior. En nuestra prueba, un archivo de preferencias de 1.391 bytes quedó en 881 bytes con todos los encabezados, bloques de código, fragmentos de código en línea y URL intactos.
Contiene scripts de Python que tu agente ejecuta. Envían el contenido del archivo que elijas a Anthropic: mediante el SDK de Python de Anthropic si ANTHROPIC_API_KEY está definida; de lo contrario, mediante tu CLI `claude` con la sesión iniciada, por lo que el uso se carga a tu cuenta de Anthropic. Sobrescriben el archivo de destino y escriben una copia de seguridad y un archivo de bloqueo en ~/.local/share/caveman-compress (%LOCALAPPDATA% en Windows). Se rechazan los archivos cuyos nombres parezcan credenciales o claves. Revisamos todos los scripts y no encontramos ningún otro acceso a red ni a archivos. No comprimas archivos con contenido que no quieras enviar a Anthropic.