Tous les skills

caveman (JuliusBrussee/caveman, SKILL.md only)

Répond dans un style homme des cavernes, sans remplissage mais avec tous les faits techniques.

caveman : avec « be brief » déjà dans le prompt, le skill n'a fait économiser aucun mot et a coûté 2.2 fois les tokens

Selon les casSûr

Codex CLI · gpt-6-astra

21.7 / 30

Gain par rapport à sans skill : +0.00 · Selon les cas · 18 exécutions

Selon les cas : le total 21.7/30 est inférieur à 22 et le gain +0.00 est inférieur à +1.0. Pour être recommandé, il faut un total de 22/30, une qualité de sortie de 3.5 et un gain de +1.0.

SOTA

Réussi

Testé avec Codex.

Couvre Codex, Claude Code

Codex CLI 0.166 (palier SOTA) : 18 exécutions notées. Une réussite ici couvre aussi Claude Code selon notre règle de palier ; elle ne dit rien du second palier.

Scores

Chaque dimension va de 0 à 5 et les six forment le total sur 30. 5 est la meilleure note dans chaque dimension. Coût 5 signifie bon marché et rapide. Installation 5 signifie facile.

Fiabilité du déclenchement
5.0
Gain par rapport à sans skill
2.0
Qualité de sortie
4.7
Coût en tokens et en temps
1.0
Installation et portabilité
4.0
Sécurité
5.0

Revue de sécurité

Sûr

Scan statique : 0 CRITIQUE / 0 ÉLEVÉ / 0 MOYEN. Revue manuelle : sûr à exécuter dans un bac à sable sans réseau (aucun problème détecté ; seul SKILL.md installé). Un scan propre ne prouve pas qu'un skill est sûr.

Installer

npx skills@latest add JuliusBrussee/caveman --skill caveman

Source

Commit épinglé: 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4

Testé: 2026-11-02

Ce que nous avons testé

  • Expliquer une boucle useEffect infinie — Dans un composant React j'ai const fetchData = async () => { const r = await fetch('/api/items'); setItems(await r.json()); } et useEffect(() => { fetchData(); }, [fetchData]);. Le composant recharge en boucle sans fin. Pourquoi, et quelle est la correction ? Soyez bri…
  • Corriger une requête Postgres lente — Postgres : SELECT id, total FROM orders WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20; prend plusieurs secondes sur une table orders de 50M de lignes qui n'a qu'un index de clé primaire. Que dois-je faire ? Soyez bref ; je paie au token.
  • Merge ou rebase sur une branche partagée — Mon équipe travaille sur une branche de fonctionnalité partagée que d'autres ont déjà récupérée. Je veux intégrer le dernier main. Dois-je utiliser git merge ou git rebase, et pourquoi ? Soyez bref ; je paie au token.

Points forts

  • Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
  • Qualité absolue élevée avec le skill : 4.67 sur 5.

Points faibles

  • Aucun gain mesurable par rapport à sans skill (+0.00, dans le bruit).
  • Consomme 2.2 fois plus de tokens que sans skill.
  • Réserve de test : seul SKILL.md a été installé ; les hooks et l'installeur ne l'ont pas été. Le prompt de test contient un déclencheur « sois bref ».
  • n=2 par tâche et par bras ; les écarts inférieurs à environ 1 point sont du bruit.

Avis

Codex CLI 0.166 (gpt-6-astra, low reasoning) sur un Mac de test, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (traitement) ou absent (contrôle) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt d'une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous). Chaque prompt est une question technique (une boucle useEffect infinie, une requête Postgres lente, merge vs rebase sur une branche partagée) terminée par « Be brief; I'm paying per token. » Cette phrase est l'un des déclencheurs du skill, et le groupe de contrôle reçoit la même. Le test demande donc ce que le skill apporte de plus qu'une simple demande de brièveté.

Comparaison à trois bras

BrasScore moyen (0-5)Tokens par exécution
Sans le skill4.6714k
Prompt d'une phrase4.514k
Avec le skill4.6731k

Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 21.7 / 30, verdict Selon les cas.

Divulgation : seul SKILL.md a été installé ; les hooks et l'installeur ne l'ont pas été. Le prompt de test contient un déclencheur « sois bref ».

Verdict : selon les cas (21.7 / 30). Source : JuliusBrussee/caveman, skills/caveman, épinglé au commit 9b68f7e. Installation : npx skills@latest add JuliusBrussee/caveman --skill caveman. Licence : MIT (LICENSE du dépôt ; les hooks et l'installateur du dépôt n'ont PAS été installés ni exécutés).

Présentation

Le skill caveman (uniquement skills/caveman/SKILL.md ; les hooks et l'installateur du dépôt n'ont pas été installés). Un style de réponse laconique : répondre d'abord, supprimer les salutations et les récapitulatifs, des mots courts, des articles supprimés mais jamais les négations, conserver tels quels le code, les chemins, les nombres et les erreurs, une prose normale pour les avertissements et les actions irréversibles. Il se déclenche sur « caveman mode », « be brief », « less tokens ». Environ 600 mots de Markdown, aucun script.

Notre méthode de test

Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur une machine de test Mac, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (groupe traité) ou absent (groupe témoin), ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous).

Chaque prompt est une question technique (une boucle useEffect infinie, une requête Postgres lente, merge ou rebase sur une branche partagée) terminée par « Be brief; I'm paying per token. » Cette phrase est l'un des déclencheurs du skill, et le groupe témoin reçoit la même. Le test demande donc ce que le skill apporte en plus d'une simple demande de brièveté.

  1. Expliquer une boucle useEffect infinie — Dans un composant React, j'ai const fetchData = async () => { const r = await fetch('/api/items'); setItems(await r.json()); } et useEffect(() => { fetchData(); }, [fetchData]);. Le composant refait la requête en boucle sans fin. Pourquoi, et quelle est la correction ? Be brie…
  2. Corriger une requête Postgres lente — Postgres : SELECT id, total FROM orders WHERE customer_id = 42 ORDER BY created_at DESC LIMIT 20; met plusieurs secondes sur une table orders de 50M de lignes qui n'a qu'un index de clé primaire. Que dois-je faire ? Be brief; I'm paying per token.
  3. Merge ou rebase sur une branche partagée — Mon équipe travaille sur une branche de fonctionnalité partagée que d'autres ont déjà récupérée. Je veux y intégrer le dernier main. Dois-je utiliser git merge ou git rebase, et pourquoi ? Be brief; I'm paying per token.

Le scoring est programmatique (tests cachés / rappel des anomalies introduites / vérifications de contraintes / rendu + OCR le cas échéant), 0–5 par exécution. Aucun juge LLM n'a décidé d'un seul score.

Résultats

Le prompt d'une phrase donné au troisième groupe : « Réponds de façon laconique : réponds d'abord, sans salutation, remplissage, précaution oratoire ni récapitulatif, supprime les articles inutiles, garde chaque fait technique, code, nombre et négation exacts. »

TâcheScore témoinUne phraseAvec le skillTokens témoinsTokens (une phrase)Tokens avec le skillSkill lu
t1-react-loop4.754.54.514k14k30k2/2
t2-pg-index5.05.05.014k14k34k2/2
t3-merge-rebase4.254.04.514k14k30k2/2

Score moyen : 4.67 sans contre 4.67 avec le skill (delta +0.0). Tokens par exécution : 14k contre 31k (2.20x) ; temps 12s contre 19s. Groupe « une phrase » : 4.5 (gain du skill sur le prompt d'une phrase : +0.17 ; gain du prompt d'une phrase sur l'absence de skill : -0.17) ; 14k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 2.20x ce prompt.

Ce qui s'est passé

  • Sans le skill, l'agent répond déjà en 59 mots environ (45-70) quand on lui demande d'être bref ; avec le skill, 52 mots (39-64), et avec la version en une phrase, 54. L'écart de 7 mots reste dans la variabilité d'une exécution à l'autre. Aucun groupe n'a utilisé d'ouverture ou de conclusion de remplissage ; les 18 réponses ont toutes conservé le code, les commandes et les faits clés.
  • La rétention des faits était identique : 3 à 5 des 5 faits techniques requis par réponse dans chaque groupe (part des faits requis conservés : 87% témoin, 80% une phrase, 87% skill). Le fait que les agents omettaient souvent (qu'une mise à jour d'état re-rend le composant et relance l'effet) était omis à parts égales par les trois groupes. Le point « ne pas rebaser une branche partagée » a été détecté par notre vérification dans 1 réponse témoin sur 2, 0 sur 2 pour la phrase unique et 1 sur 2 pour le skill ; dans les réponses que nous avons lues, toutes recommandaient merge et réservaient rebase au travail privé ou non publié, donc ces échecs tiennent en partie à la formulation.
  • Le skill a été lu dans 6/6 exécutions parce que le prompt contient sa phrase de déclenchement. Il coûte 31k tokens par exécution contre 14k (2.2x), parce que l'agent charge le skill et exécute deux commandes pour le lire avant de répondre à une question qu'il pouvait traiter directement. Le prompt d'une phrase coûte autant que le témoin.
  • À la lecture des réponses, le style est identique : réponse d'abord, fragments, un court bloc de code. Nous n'avons pas pu distinguer les réponses avec skill de celles du témoin.

Scores par dimension

DimensionScorePourquoi
1_output_quality4.67

Score moyen de 4.67/5 avec le skill (vérifications programmatiques, voir le tableau par tâche).

2_lift_vs_no_skill2.0

+0.00 point contre 4.67 sans le skill (n=2 par tâche ; en dessous d'environ 1 point, c'est du bruit).

3_trigger5.0Fichier du skill lu dans 6/6 exécutions avec le skill.
4_instructions_portability4

Des règles en Markdown simple ; certaines font référence à des hooks et à une statusline ( /caveman status) qui n'existent que si les hooks du dépôt sont installés.

5_efficiency12.20x de tokens (31k contre 14k par exécution) et 1.53x de temps (19s contre 12s).
6_safety_hygiene5

Un seul SKILL.md de règles de style (lu en entier) ; les hooks/installateur du dépôt n'ont pas été installés ni examinés.

Limites de ce test

  • Le test mesure le skill par-dessus une demande explicite « be brief ». L'usage réel du skill est persistant : il reste actif pendant toute une session, si bien qu'on n'a jamais à répéter la demande, ce que ce test à trois questions n'exerce pas.
  • Le coût en tokens compté ici est un chargement unique du skill par conversation ; sur une longue session avec quelques mots gagnés par réponse, il pourrait s'amortir ; nous ne l'avons pas mesuré.
  • Seules des réponses de chat à trois questions techniques ont été vérifiées ; les messages de commit, les commentaires de revue de code et les longues sessions d'agent (où le skill a d'autres règles) n'ont pas été testés.
  • Les hooks, la statusline et les autres skills caveman du dépôt n'ont pas été installés ni exécutés.
  • n = 2 par groupe et par tâche : les différences inférieures à environ 1 point relèvent du bruit.
  • Le scoring basé sur des règles mesure ce que les vérifications peuvent voir ; il ne peut juger du goût ni du caractère optimal d'un résultat.

Sécurité

Voir security.md. Scan : 0 CRITICAL / 0 HIGH / 0 MEDIUM. Verdict : sûr à exécuter (sandbox sans réseau). Un scan propre ne prouve pas qu'un skill est sûr.

En résumé

Ajouté à une simple demande « be brief », caveman n'a pas raccourci ni dégradé les réponses de façon mesurable, et son chargement a doublé les tokens d'une réponse courte. Si vous voulez un agent laconique sur toute une session sans le redemander à chaque fois, le skill le fait ; si vous avez seulement besoin de brièveté sur une question, dites-le dans le prompt.

Transcription

Journal d'exécution : caveman (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
Colonnes : tâche, groupe-exécution, score (0-5), tokens, secondes, vérifications réussies, fichiers de la skill ouverts par l'agent.

t1-react-loop control-1: score 5.0, tokens 14312, s 16.3, vérifications 3/3, rien ouvert
t1-react-loop control-2: score 4.5, tokens 14318, s 10.7, vérifications 3/3, rien ouvert
t1-react-loop oneliner-1: score 4.5, tokens 14348, s 16.9, vérifications 3/3, rien ouvert
t1-react-loop oneliner-2: score 4.5, tokens 14341, s 8.7, vérifications 3/3, rien ouvert
t1-react-loop treatment-1: score 4.5, tokens 30174, s 21.5, vérifications 3/3, ouvert caveman
t1-react-loop treatment-2: score 4.5, tokens 30067, s 26.2, vérifications 3/3, ouvert caveman
t2-pg-index control-1: score 5.0, tokens 14285, s 10.0, vérifications 3/3, rien ouvert
t2-pg-index control-2: score 5.0, tokens 14301, s 10.5, vérifications 3/3, rien ouvert
t2-pg-index oneliner-1: score 5.0, tokens 14362, s 12.3, vérifications 3/3, rien ouvert

18 exécutions, 3 artefacts

Exemple de sortie

SOTA · With the skill: final message (t1-react-loop, run 1, Codex)

`fetchData` is a new function every render. The effect runs, `setItems` triggers another render, and the cycle repeats. Move the function inside the effect: ```jsx useEffect(() => { async function fetchData() { const r = await fetch('/api/items'); setItems(await r.json()); } fetchData(); }, []); ``` If needed elsewhere, stabilize `fetchData` with `useCallback` and its actual dependencies.

Voir Pro