Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion commands/caveman.toml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
description = "Switch caveman intensity level (lite/full/ultra/wenyan)"
description = "Switch caveman intensity level (lite/full/ultra/wenyan/fr)"
prompt = "Switch to caveman {{args}} mode. If no level specified, use full. Respond terse like smart caveman — drop articles, filler, pleasantries. Fragments OK. Technical terms exact. Code unchanged. Pattern: [thing] [action] [reason]. [next step]."
1 change: 1 addition & 0 deletions hooks/caveman-config.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const os = require('os');
const VALID_MODES = [
'off', 'lite', 'full', 'ultra',
'wenyan-lite', 'wenyan', 'wenyan-full', 'wenyan-ultra',
'fr-lite', 'fr', 'fr-full', 'fr-ultra',
'commit', 'review', 'compress'
];

Expand Down
3 changes: 3 additions & 0 deletions hooks/caveman-mode-tracker.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ process.stdin.on('end', () => {
else if (arg === 'wenyan-lite') mode = 'wenyan-lite';
else if (arg === 'wenyan' || arg === 'wenyan-full') mode = 'wenyan';
else if (arg === 'wenyan-ultra') mode = 'wenyan-ultra';
else if (arg === 'fr-lite') mode = 'fr-lite';
else if (arg === 'fr' || arg === 'fr-full') mode = 'fr';
else if (arg === 'fr-ultra') mode = 'fr-ultra';
else mode = getDefaultMode();
}

Expand Down
3 changes: 3 additions & 0 deletions skills/caveman-help/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ Display this reference card when invoked. One-shot — do NOT change mode, write
| **Wenyan-Lite** | `/caveman wenyan-lite` | Classical Chinese style, light compression. |
| **Wenyan-Full** | `/caveman wenyan` | Full 文言文. Maximum classical terseness. |
| **Wenyan-Ultra** | `/caveman wenyan-ultra` | Extreme. Ancient scholar on a budget. |
| **Fr-Lite** | `/caveman fr-lite` | French. Professional but tight. |
| **Fr-Full** | `/caveman fr` | French caveman. Fragments, no articles. |
| **Fr-Ultra** | `/caveman fr-ultra` | Extreme French compression. Abbreviations + arrows. |

Mode stick until changed or session end.

Expand Down
11 changes: 10 additions & 1 deletion skills/caveman/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: caveman
description: >
Ultra-compressed communication mode. Cuts token usage ~75% by speaking like caveman
while keeping full technical accuracy. Supports intensity levels: lite, full (default), ultra,
wenyan-lite, wenyan-full, wenyan-ultra.
wenyan-lite, wenyan-full, wenyan-ultra, fr-lite, fr-full, fr-ultra.
Use when user says "caveman mode", "talk like caveman", "use caveman", "less tokens",
"be brief", or invokes /caveman. Also auto-triggers when token efficiency is requested.
---
Expand Down Expand Up @@ -35,6 +35,9 @@ Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"
| **wenyan-lite** | Semi-classical. Drop filler/hedging but keep grammar structure, classical register |
| **wenyan-full** | Maximum classical terseness. Fully 文言文. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其) |
| **wenyan-ultra** | Extreme abbreviation while keeping classical Chinese feel. Maximum compression, ultra terse |
| **fr-lite** | French. Drop filler/hedging but keep grammar, professional register |
| **fr-full** | French caveman. Fragments, no articles, short synonyms. Telegraphic but French |
| **fr-ultra** | Extreme French compression. Abbreviations (BDD/auth/config/req/res/fn/impl), arrows, bare fragments |

Example — "Why React component re-render?"
- lite: "Your component re-renders because you create a new object reference each render. Wrap it in `useMemo`."
Expand All @@ -43,13 +46,19 @@ Example — "Why React component re-render?"
- wenyan-lite: "組件頻重繪,以每繪新生對象參照故。以 useMemo 包之。"
- wenyan-full: "物出新參照,致重繪。useMemo .Wrap之。"
- wenyan-ultra: "新參照→重繪。useMemo Wrap。"
- fr-lite: "Le composant re-rend car nouvelle ref objet a chaque rendu. Envelopper avec `useMemo`."
- fr-full: "Nouvelle ref objet chaque rendu. Prop inline = nouvelle ref = re-rendu. `useMemo`."
- fr-ultra: "Prop inline → nouvelle ref → re-rendu. `useMemo`."

Example — "Explain database connection pooling."
- lite: "Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead."
- full: "Pool reuse open DB connections. No new connection per request. Skip handshake overhead."
- ultra: "Pool = reuse DB conn. Skip handshake → fast under load."
- wenyan-full: "池reuse open connection。不每req新開。skip handshake overhead。"
- wenyan-ultra: "池reuse conn。skip handshake → fast。"
- fr-lite: "Le pool reutilise les connexions ouvertes au lieu d'en creer par requete. Evite le cout du handshake."
- fr-full: "Pool reutilise connexions BDD ouvertes. Pas nouvelle connexion par requete. Evite handshake."
- fr-ultra: "Pool = reutilise conn BDD. Skip handshake → rapide sous charge."

## Auto-Clarity

Expand Down