caveman-commit (JuliusBrussee/caveman)
Schreibt knappe Commit-Nachrichten nach Conventional Commits, die Absicht und Grund nennen, nicht die Änderung.
caveman-commit: Schreibt Conventional-Commit-Nachrichten mit Breaking-Change-Footer (Kontrolle 4.0, Skill 5.0, One-Liner 4.95) bei etwa gleichem Tokenverbrauch; die Kontrolle schreibt einen einfachen Satz, und ein Ein-Satz-Prompt des Formats leistet genauso viel
Codex CLI · gpt-6-astra
26.0 / 30
Lift gegenüber ohne Skill: +0.98 · Situativ · 18 Läufe
Situativ: der Lift +0.98 liegt unter +1.0. Für „Empfohlen“ sind insgesamt 22/30, eine Ausgabequalität von 3.5 und ein Lift von +1.0 nötig.
SOTA
BestandenGetestet mit Codex.
Gilt für Codex, Claude Code
Codex CLI 0.166 (SOTA-Stufe): 18 bewertete Läufe. Ein Bestehen hier deckt gemäß unserer Stufenregel auch Claude Code ab; über die zweite Stufe sagt es nichts aus.
Punktzahlen
Jede Dimension reicht von 0 bis 5, und die sechs ergeben zusammen die Gesamtpunktzahl von 30. 5 ist in jeder Dimension besser. Kosten 5 bedeutet günstig und schnell. Installation 5 bedeutet einfach.
- Trigger-Zuverlässigkeit
- 5.0
- Lift gegenüber ohne Skill
- 3.0
- Ausgabequalität
- 5.0
- Token- und Zeitkosten
- 5.0
- Installation und Portabilität
- 4.0
- Sicherheit
- 4.0
Sicherheitsprüfung
SicherStatischer Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Manuelle Prüfung: Sicher in einer Sandbox ohne Netzwerk auszuführen (keine Befunde). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.
Installieren
npx skills@latest add JuliusBrussee/caveman --skill caveman-commit
Fixierter Commit: 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4
Getestet: 2026-11-02
Was wir getestet haben
- Commit-Nachricht für einen kleinen Fix — Ich brauche eine Commit-Nachricht. Die Commit-Nachricht für die Änderung in change.diff schreiben und in COMMIT_MSG.txt speichern (nur die Nachricht).
- Commit-Nachricht für einen neuen Endpunkt — Bitte einen Commit schreiben. Die Commit-Nachricht für die Änderung in change.diff schreiben und in COMMIT_MSG.txt speichern (nur die Nachricht).
- Commit-Nachricht für eine Breaking Change — Eine Commit-Nachricht schreiben. Die Commit-Nachricht für die Änderung in change.diff schreiben und in COMMIT_MSG.txt speichern (nur die Nachricht).
Vorteile
- Hebt den Mittelwert von 4.02 auf 5.0 gegenüber ohne Skill (+0.98).
- Der Skill wurde erkannt, ohne genannt zu werden: Skill-Datei in 6/6 Treatment-Läufen gelesen.
- Kein Token-Overhead: 1.09x die Tokens von ohne Skill.
- Hohe absolute Qualität mit dem Skill: 5.0 von 5.
Nachteile
- Ein Ein-Satz-Prompt erzielte 4.95 gegenüber 5.0 mit dem Skill (+0.05).
- n=2 pro Aufgabe und Variante; Unterschiede unter etwa 1 Punkt sind Rauschen.
Bewertung
Codex CLI 0.166 (gpt-6-astra, niedriges Reasoning) auf einem dedizierten Windows-Test-PC, einem frischen temporären Projekt und temporären HOME/TMPDIR/Caches pro Lauf; Skill installiert (Treatment) oder nicht vorhanden (Kontrolle) oder nicht vorhanden mit der Kernanforderung des Skills in einem an den Prompt angehängten Satz (One-Liner-Gruppe); 2 Läufe pro Gruppe und Aufgabe; Netzwerk aus; Schreiben nach /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten genannten Formulierung). Drei Diffs (ein Pagination-Fix, ein neuer /health-Endpunkt, eine Umbenennung eines Konfigurationsschlüssels von timeout zu timeout_ms). Der Prompt verlangt nur eine Commit-Nachricht in COMMIT_MSG.txt, ohne Formatvorgabe. Der One-Liner nennt das Conventional-Commits-Format und seine Regeln in einem Satz.
Drei-Arm-Vergleich
| Variante | Durchschnittsnote (0-5) | Tokens pro Lauf |
|---|---|---|
| Ohne Skill | 4.02 | 53k |
| Ein-Satz-Prompt | 4.95 | 48k |
| Mit Skill | 5.0 | 58k |
Gemessen mit Codex CLI über 18 Läufe, bewertet durch regelbasierte Prüfungen ohne LLM-Richter. Gesamt 26.0 / 30, Urteil Situativ.
Urteil: Situativ (26.0 / 30). Quelle: JuliusBrussee/caveman, skills/caveman-commit, gepinnt auf Commit 9b68f7e. Installation: npx skills@latest add JuliusBrussee/caveman --skill caveman-commit. Lizenz: MIT (Repo-LICENSE).
Was es ist
Der Skill caveman-commit (JuliusBrussee/caveman): ein Stilguide für Commit-Nachrichten: Conventional Commits type(scope): imperative summary mit höchstens 50 Zeichen und ohne Punkt am Ende, ein Body nur, wenn das Warum nicht offensichtlich ist, ein BREAKING CHANGE-Hinweis bei Breaking Changes und kein „this commit“, „I“, „we“, „now“, keine Emojis und keine KI-Attribution.
So haben wir getestet
Codex CLI 0.166 (gpt-6-astra, low reasoning) auf einem dedizierten Windows-Test-PC, pro Lauf ein frisches temporäres Projekt und temporäre HOME/TMPDIR/Caches, Skill installiert (Mit-Skill-Gruppe) oder nicht vorhanden (Kontrollgruppe) oder nicht vorhanden, aber mit der Kernanforderung des Skills als einem an den Prompt angehängten Satz (Ein-Satz-Gruppe), 2 Läufe pro Gruppe und Aufgabe, Netzwerk aus, Schreibzugriffe auf /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten genannten Formulierung).
Drei Diffs (ein Pagination-Fix, ein neuer /health-Endpunkt, eine Umbenennung eines Konfigurationsschlüssels von timeout zu timeout_ms). Der Prompt verlangt nur eine Commit-Nachricht, gespeichert in COMMIT_MSG.txt, ohne Formatvorgabe. Der Ein-Satz-Prompt nennt das Conventional-Commits-Format und seine Regeln in einem Satz.
- Commit-Nachricht für einen kleinen Fix — Ich brauche eine Commit-Nachricht. Schreibe die Commit-Nachricht für die Änderung in change.diff und speichere sie in COMMIT_MSG.txt (nur die Nachricht).
- Commit-Nachricht für einen neuen Endpunkt — Bitte schreibe einen Commit. Schreibe die Commit-Nachricht für die Änderung in change.diff und speichere sie in COMMIT_MSG.txt (nur die Nachricht).
- Commit-Nachricht für eine Breaking Change — Schreibe eine Commit-Nachricht. Schreibe die Commit-Nachricht für die Änderung in change.diff und speichere sie in COMMIT_MSG.txt (nur die Nachricht).
Die Bewertung erfolgt programmatisch (versteckte Tests / Trefferquote bei eingebauten Problemen / Constraint-Prüfungen / Rendern+OCR, wo relevant), 0–5 pro Lauf. Kein LLM-Richter hat eine Punktzahl entschieden.
Ergebnisse
Der Ein-Satz-Prompt für die dritte Gruppe: "Schreibe eine Conventional-Commit-Nachricht: type(scope): imperative summary mit höchstens 50 Zeichen und ohne Punkt am Ende, einen Body nur, wenn das Warum nicht offensichtlich ist (Breaking Changes bekommen immer einen mit BREAKING CHANGE-Hinweis), und kein „this commit“, „I“, „we“, „now“, keine Emojis und keine KI-Attribution."
| Aufgabe | Punktzahl Kontrolle | Ein-Satz | Mit Skill | Token Kontrolle | Token Ein-Satz | Token mit Skill | Skill gelesen |
|---|---|---|---|---|---|---|---|
| t1-fix | 4.49 | 5.0 | 5.0 | 47k | 48k | 49k | 2/2 |
| t2-feature | 4.49 | 5.0 | 5.0 | 54k | 48k | 55k | 2/2 |
| t3-breaking | 3.07 | 4.86 | 5.0 | 56k | 48k | 67k | 2/2 |
Durchschnitt: 4.02 ohne vs. 5.0 mit Skill (Delta +0.98). Token pro Lauf: 53k vs. 58k (1.09x); Zeit 42s vs. 40s. Ein-Satz-Gruppe: 4.95 (Zuwachs des Skills gegenüber dem Ein-Satz-Prompt: +0.05; Zuwachs des Ein-Satz-Prompts gegenüber ohne Skill: +0.93); Token des Ein-Satz-Prompts 48k pro Lauf, der Skill kostet also 1.19x so viel wie der Ein-Satz-Prompt.
Was dabei herauskam
- Kontrolle 4.02, Skill 5.0, Ein-Satz 4.95 (n=6 je Gruppe). Die Kontrolle schreibt in 6/6 Läufen einen schlichten Imperativsatz („Fix pagination offset for one-based page numbers“) ohne
type(scope):-Präfix und scheitert damit jedes Mal an der Regel „konventioneller Typ“; die übrigen Regeln wurden meist eingehalten (in einem Lauf war zudem der Betreff länger als 50 Zeichen). - Aufgabe Breaking Change: Die Kontrolle hat die Breaking Change in 2/2 Läufen nicht gekennzeichnet (kein BREAKING CHANGE-Hinweis und kein
!); der Body erwähnt die Migration jedoch. Der Skill erzielte in beiden Läufen 5.0:feat(config)!:mit BREAKING CHANGE-Footer. Der Ein-Satz-Prompt tat dasselbe in 2/2, aber in einem Lauf scheiterte die Nachricht an der Prüfung des konventionellen Typs. - Token: Skill 58k, Ein-Satz 48k, Kontrolle 53k pro Lauf (1.09x Kontrolle). Der Skill wurde in 6/6 Mit-Skill-Läufen gelesen.
Bewertung nach Dimensionen
| Dimension | Punktzahl | Begründung |
|---|---|---|
| 1_output_quality | 5.0 | Durchschnitt 5.00/5 mit Skill (programmatische Prüfungen, siehe Tabelle pro Aufgabe). |
| 2_lift_vs_no_skill | 2.98 | +0.98 Punkte gegenüber 4.02 ohne Skill (n=2 pro Aufgabe; unter etwa 1 Punkt ist Rauschen). |
| 3_trigger | 5.0 | Skill-Datei in 6/6 Mit-Skill-Läufen gelesen. |
| 4_instructions_portability | 4 | Nur SKILL.md. |
| 5_efficiency | 5 | 1.09x Token (58k vs. 53k pro Lauf) und 0.96x Zeit (40s vs. 42s). |
| 6_safety_hygiene | 4 | Nur Prosa; siehe security.md. |
Grenzen dieses Tests
- Die Prüfungen sind regelbasiert auf COMMIT_MSG.txt (Typ-Präfix, Länge, Zeitform, Ton, verbotene Wörter, Breaking-Hinweis); ob die Nachricht den Diff gut beschreibt, wurde nur über die Prüfung auf Schlüsselbegriffe beurteilt.
- Die Kontrolle wird dafür bestraft, dass sie die Conventional-Commit-Konvention nicht errät, die der Prompt nicht verlangt hat.
- n=2 pro Zelle; drei kleine Diffs.
- n = 2 pro Gruppe und Aufgabe: Unterschiede unter etwa 1 Punkt sind Rauschen.
- Regelbasierte Bewertung misst nur, was die Prüfungen sehen können; Geschmack oder ob ein Ergebnis das bestmögliche ist, lässt sich so nicht beurteilen.
Sicherheit
Siehe security.md. Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Urteil: sicher ausführbar (Sandbox ohne Netzwerk). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.
Fazit
Eine verlässliche Möglichkeit, aus einem bloßen Prompt „Schreibe eine Commit-Nachricht“ Conventional-Commit-Nachrichten mit Breaking-Change-Kennzeichnung zu bekommen. Ein einzelner Satz, der das Format nennt, liefert dasselbe Ergebnis; der Skill erspart Ihnen also vor allem, diesen Satz selbst zu schreiben.
Transkript
Laufprotokoll: caveman-commit (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Spalten: Aufgabe, Gruppe-Lauf, Punktzahl (0-5), Tokens, Sekunden, bestandene Prüfungen, vom Agenten geöffnete Skill-Dateien. t1-fix control-1: Punkte 4.49, Tokens 47722, Sek. 20.0, Prüfungen 2/3, nichts geöffnet t1-fix control-2: Punkte 4.49, Tokens 47848, Sek. 20.8, Prüfungen 2/3, nichts geöffnet t1-fix oneliner-1: Punkte 5.0, Tokens 47948, Sek. 29.4, Prüfungen 3/3, nichts geöffnet t1-fix oneliner-2: Punkte 5.0, Tokens 48277, Sek. 21.1, Prüfungen 3/3, nichts geöffnet t1-fix treatment-1: Punkte 5.0, Tokens 49540, Sek. 24.8, Prüfungen 3/3, geöffnet caveman-commit t1-fix treatment-2: Punkte 5.0, Tokens 49614, Sek. 16.5, Prüfungen 3/3, geöffnet caveman-commit t2-feature control-1: Punkte 4.49, Tokens 48133, Sek. 31.0, Prüfungen 2/3, nichts geöffnet t2-feature control-2: Punkte 4.49, Tokens 60402, Sek. 101.3, Prüfungen 2/3, nichts geöffnet t2-feature oneliner-1: Punkte 5.0, Tokens 48035, Sek. 107.1, Prüfungen 3/3, nichts geöffnet
18 Läufe, 3 Artefakte
Beispielausgabe
SOTA · With the skill: COMMIT_MSG.txt (t1-fix, run 1, Codex)
fix(api): correct offset for one-based pagination