5.3 KiB
CARL — Dynamiczne reguły dla Claude Code
CARL (Context Augmentation & Reinforcement Layer) to system wstrzykiwania reguł do Claude Code — reguły ładują się tylko gdy są potrzebne, zamiast zapychać kontekst sesji regułami, których akurat nie używasz.
Zainstalowany globalnie w ~/.carl/.
Jak to działa
Claude Code ma ograniczony kontekst sesji. CARL rozwiązuje problem "zbyt wielu reguł na raz":
- Domeny — zestawy reguł uruchamiane automatycznie przez słowa kluczowe w prompcie
- Star-commands (
*dev,*review, itp.) — tryby uruchamiane ręcznie przez wpisanie*nazwatrybe - Global — reguły zawsze aktywne (minimalne, uniwersalne)
Efekt: zamiast 50 reguł na każdą sesję, Claude dostaje 5–10 tych, które są relevantne teraz.
Struktura plików
~/.carl/ # Globalna konfiguracja (wszystkie projekty)
├── manifest # Rejestr domen (stany + słowa kluczowe)
├── global # Reguły zawsze aktywne
├── commands # Definicje star-commands
├── context # Reguły kontekstowe (rozmiar okna kontekstu)
└── {nazwa-domeny} # Twoja domena (bez rozszerzenia!)
.carl/ # Konfiguracja lokalna (tylko ten projekt)
└── {nazwa-domeny} # Reguły specyficzne dla shopPRO
Ważne: Nazwy plików domen — małe litery, bez rozszerzenia (phpdev, nie phpdev.carl).
Dostępne star-commands
Wpisz *nazwa na początku wiadomości lub w środku promptu, żeby przełączyć tryb:
| Komenda | Tryb | Kiedy używać |
|---|---|---|
*dev |
Development | Implementacja, szybkie zmiany bez tłumaczeń |
*review |
Code review | Przegląd kodu, bezpieczeństwo, edge cases |
*brief |
Zwięzłe odpowiedzi | Tylko bullet points, bez elaboracji |
*plan |
Planowanie | Eksploracja przed implementacją, opcje + tradeoffs |
*discuss |
Dyskusja | Burza mózgów, wiele podejść, bez skakania do kodu |
*debug |
Debugowanie | Systematyczna diagnoza, root cause analysis |
*explain |
Wyjaśnianie | Nauka, koncepty, stopniowe budowanie wiedzy |
*carl |
Pomoc CARL | Zarządzanie domenami, konfiguracja, pytania o CARL |
Przykłady
*dev Napraw błąd w summaryView() gdzie duplikuje zamówienia
*review Przejrzyj OrderRepository::createFromBasket pod kątem bezpieczeństwa
*brief Co robi CacheHandler::deletePattern()
*plan Chcę dodać system rabatów do koszyka
*discuss Czy lepiej rozdzielić ApiloRepository na sync i admin?
Tworzenie własnej domeny (projekt)
Kiedy masz zestaw reguł specyficznych dla shopPRO, utwórz lokalną domenę w .carl/.
Krok 1 — Plik domeny
Utwórz .carl/shoppro (bez rozszerzenia):
# shopPRO Domain Rules
SHOPPRO_RULE_0=PHP < 8.0 — nie używaj match, named args, union types, str_contains
SHOPPRO_RULE_1=ORM: Medoo ($mdb), zawsze prepared statements, nigdy string concatenation
SHOPPRO_RULE_2=Namespace \Domain\ mapuje do autoload/Domain/ (D uppercase, a lowercase)
SHOPPRO_RULE_3=Testy: PHPUnit 9.6, pattern AAA, mock Medoo przez createMock(\medoo::class)
SHOPPRO_RULE_4=Cache: CacheHandler::deletePattern() do kasowania, TTL 86400, dane serialized
Krok 2 — Wpis w manifeście
Dodaj do .carl/manifest (lub ~/.carl/manifest jeśli globalna):
SHOPPRO_STATE=active
SHOPPRO_RECALL=shopPRO, medoo, zamówienie, koszyk, OrderRepository, Domain
SHOPPRO_EXCLUDE=
SHOPPRO_ALWAYS_ON=false
RECALL— słowa kluczowe które triggerują domenę (przecinek = OR)ALWAYS_ON=true— ładuj przy każdym prompcie (tylko dla naprawdę universalnych reguł)EXCLUDE— słowa które blokują domenę mimo dopasowania RECALL
Krok 3 — Weryfikacja
Wpisz *carl w czacie i zapytaj: "Pokaż mi aktywne domeny".
Zarządzanie przez Claude
Zamiast ręcznie edytować pliki, możesz zarządzać CARL przez Claude:
*carl Dodaj domenę dla testów PHPUnit w shopPRO
*carl Pokaż moją aktualną konfigurację
*carl Wyłącz domenę SHOPPRO tymczasowo
*carl Dodaj regułę do domeny dev: zawsze uruchamiaj ./test.ps1 po zmianach
Claude użyje skills carl:manager / carl:tasks:* do operacji na plikach.
Integracja z PAUL
CARL i PAUL działają uzupełniająco:
- PAUL strukturyzuje proces (plan → apply → unify)
- CARL dostarcza reguły domenowe wtedy gdy są potrzebne
Praktycznie: podczas /paul:apply możesz prefixować *dev żeby Claude skupił się na kodzie bez elaboracji. Podczas /paul:discuss — *discuss żeby dostać pełną analizę opcji.
Dobre praktyki
- RECALL słowa — używaj konkretnych, rzadkich słów żeby unikać false triggers.
medoolepsze niżphp. - Mało reguł per domena — 5–8 reguł to optymalnie. Więcej = wolniejsze matching, więcej tokenów.
- ALWAYS_ON=false domyślnie — ALWAYS_ON=true tylko dla reguł naprawdę universalnych (jak GLOBAL).
- Star-commands przy dużych taskach — na początku sesji wpisz
*devlub*planżeby ustawić tryb. - Nie duplikuj CLAUDE.md — CARL nie zastępuje CLAUDE.md. CLAUDE.md to architektura projektu. CARL to reguły zachowania Claude.
Docs: 2026-03-12