update
This commit is contained in:
@@ -10,6 +10,30 @@ php phpunit.phar
|
||||
```
|
||||
All tests must pass. If any test fails, stop here — do not proceed to commit. Report the failures and wait for instructions.
|
||||
|
||||
## Step 1b: SonarQube scan
|
||||
|
||||
Run the SonarQube scanner:
|
||||
```bash
|
||||
sonar-scanner
|
||||
```
|
||||
|
||||
After the scan completes, query the SonarQube issues via MCP tool `mcp__sonarqube__issues` with `project_key: "shopPRO"` and `resolved: false`. Fetch all open issues (bugs, vulnerabilities, code smells).
|
||||
|
||||
Then open `docs/TODO.md` and append the found issues at the bottom under a new section:
|
||||
|
||||
```markdown
|
||||
## SonarQube — {VERSION} ({DATE})
|
||||
|
||||
- [ ] [SEVERITY] FILENAME:LINE — description (rule)
|
||||
- [ ] ...
|
||||
```
|
||||
|
||||
Rules:
|
||||
- Only add issues that are NOT already present in `docs/TODO.md`
|
||||
- Group by type: first Bugs/Vulnerabilities, then Code Smells
|
||||
- Skip INFO severity Code Smells — only include MINOR and above
|
||||
- If there are no new issues, write: `## SonarQube — {VERSION} — brak nowych issues`
|
||||
|
||||
## Step 2: Determine version
|
||||
|
||||
Read the latest git tag to determine the current version number:
|
||||
|
||||
0
.scannerwork/.sonar_lock
Normal file
0
.scannerwork/.sonar_lock
Normal file
6
.scannerwork/report-task.txt
Normal file
6
.scannerwork/report-task.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
projectKey=shopPRO
|
||||
serverUrl=https://sonar.project-pro.pl
|
||||
serverVersion=26.3.0.120487
|
||||
dashboardUrl=https://sonar.project-pro.pl/dashboard?id=shopPRO
|
||||
ceTaskId=cbc52152-10fc-43df-9790-ce3d6ed1729f
|
||||
ceTaskUrl=https://sonar.project-pro.pl/api/ce/task?id=cbc52152-10fc-43df-9790-ce3d6ed1729f
|
||||
147
docs/CARL_WORKFLOW.md
Normal file
147
docs/CARL_WORKFLOW.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# CARL — Dynamiczne reguły dla Claude Code
|
||||
|
||||
[CARL](https://github.com/ChristopherKahler/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](./PAUL_WORKFLOW.md) 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. `medoo` lepsze 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 `*dev` lub `*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*
|
||||
16
sonar-project.properties
Normal file
16
sonar-project.properties
Normal file
@@ -0,0 +1,16 @@
|
||||
sonar.projectKey=shopPRO
|
||||
sonar.projectName=shopPRO
|
||||
sonar.projectVersion=1.0
|
||||
|
||||
sonar.host.url=https://sonar.project-pro.pl/
|
||||
sonar.token=squ_93e67b49c4297694fbd9014ebcb53a37f5882f59
|
||||
|
||||
sonar.sources=autoload,admin,index.php,ajax.php,api.php,cron.php
|
||||
sonar.tests=tests
|
||||
sonar.exclusions=libraries/**,updates/**,temp/**,admin/layout/**,*.min.js,*.min.css
|
||||
|
||||
sonar.language=php
|
||||
sonar.sourceEncoding=UTF-8
|
||||
|
||||
sonar.php.coverage.reportPaths=coverage.xml
|
||||
sonar.php.tests.reportPath=test-results.xml
|
||||
Reference in New Issue
Block a user