T01: Inicijalizacija Go projekta
- go mod init github.com/dal/kaos - Config paket sa .env učitavanjem i validacijom - Supervisor skeleton paket - Entry point (cmd/kaos-supervisor/main.go) - Makefile (build, test, vet, clean, all) - .env.example, .gitignore - 6 config testova — svi prolaze Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
f001c53ca1
162
CLAUDE.md
Normal file
162
CLAUDE.md
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
# KAOS — Mastermind
|
||||||
|
|
||||||
|
**Verzija:** 0.3.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kad te pokrenu
|
||||||
|
|
||||||
|
Ti razgovaraš sa operaterom. Operater je tvoj šef — on odlučuje šta se radi.
|
||||||
|
|
||||||
|
### Tok rada
|
||||||
|
|
||||||
|
1. Operater kaže "radi" ili "T01" ili "nastavi"
|
||||||
|
2. Pogledaj `TASKS/ready/` — ima li task spreman za rad
|
||||||
|
3. Pogledaj `TASKS/review/` — ima li task sa dopunjenim odgovorima
|
||||||
|
4. Pokaži operateru šta ćeš da radiš — **čekaj odobrenje**
|
||||||
|
5. Kad dobiješ ok — izvršavaj
|
||||||
|
|
||||||
|
### Kad izvršavaš task
|
||||||
|
|
||||||
|
1. Premesti fajl iz `ready/` u `active/`
|
||||||
|
2. Pročitaj `agents/coder/CLAUDE.md` — pravila kodiranja
|
||||||
|
3. Kod piši u `code/` folderu
|
||||||
|
4. Ako imaš pitanje:
|
||||||
|
- Zapiši pitanje u task fajl pod `## Pitanja`
|
||||||
|
- Premesti fajl iz `active/` u `review/`
|
||||||
|
- Reci operateru "imam pitanje, čekam odgovor u fajlu"
|
||||||
|
- **STANI — ne radi dalje dok operater ne kaže "nastavi"**
|
||||||
|
5. Kad nastaviš:
|
||||||
|
- Pročitaj odgovor u task fajlu
|
||||||
|
- Premesti fajl iz `review/` u `active/`
|
||||||
|
- Nastavi rad
|
||||||
|
6. Kad završiš:
|
||||||
|
- Svi testovi moraju proći
|
||||||
|
- Build mora proći
|
||||||
|
- Commituj: `T{XX}: Opis na srpskom`
|
||||||
|
- Napiši izveštaj u `TASKS/reports/T{XX}-report.md`
|
||||||
|
- Premesti task fajl iz `active/` u `review/`
|
||||||
|
- Reci operateru "gotovo, čeka pregled"
|
||||||
|
|
||||||
|
### NIKAD
|
||||||
|
- Ne radi bez odobrenja operatera
|
||||||
|
- Ne pretpostavljaj šta operater želi
|
||||||
|
- Ne preskoči "čekaj odobrenje"
|
||||||
|
- Ne radi na tasku koji nije u `ready/` ili `review/`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task folderi
|
||||||
|
|
||||||
|
```
|
||||||
|
TASKS/
|
||||||
|
├── backlog/ ← novi taskovi (piše planer, čeka odobrenje operatera)
|
||||||
|
├── ready/ ← odobreni za rad (operater premesti iz backlog/)
|
||||||
|
├── active/ ← u izradi (agent premesti iz ready/)
|
||||||
|
├── review/ ← čeka pregled (agent ima pitanje ili završio)
|
||||||
|
├── done/ ← završeno i odobreno (operater premesti iz review/)
|
||||||
|
└── reports/ ← izveštaji izvršenih taskova
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ko šta radi
|
||||||
|
|
||||||
|
| Folder | Ko piše | Ko čita | Ko premešta |
|
||||||
|
|--------|---------|---------|-------------|
|
||||||
|
| backlog/ | planer | operater | operater → ready/ |
|
||||||
|
| ready/ | — | agent | agent → active/ |
|
||||||
|
| active/ | agent | agent | agent → review/ |
|
||||||
|
| review/ | planer (odgovori) | operater, agent | operater → done/ ili agent → active/ |
|
||||||
|
| done/ | — | svi | nikad |
|
||||||
|
| reports/ | agent | svi | nikad |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Struktura projekta
|
||||||
|
|
||||||
|
```
|
||||||
|
/root/projects/KAOS/
|
||||||
|
│
|
||||||
|
├── CLAUDE.md ← OVO — mastermind (v0.3.0)
|
||||||
|
├── README.md
|
||||||
|
│
|
||||||
|
├── agents/ ← specijalizovani agenti
|
||||||
|
│ ├── triage/CLAUDE.md
|
||||||
|
│ ├── task-manager/CLAUDE.md
|
||||||
|
│ ├── coder/CLAUDE.md
|
||||||
|
│ ├── frontend/CLAUDE.md
|
||||||
|
│ ├── checker/CLAUDE.md
|
||||||
|
│ ├── reporter/CLAUDE.md
|
||||||
|
│ ├── docs/CLAUDE.md
|
||||||
|
│ └── deployer/CLAUDE.md
|
||||||
|
│
|
||||||
|
├── documentation/ ← eksterna dokumentacija (tuđe)
|
||||||
|
│
|
||||||
|
├── TASKS/ ← taskovi po stanju
|
||||||
|
│ ├── backlog/
|
||||||
|
│ ├── ready/
|
||||||
|
│ ├── active/
|
||||||
|
│ ├── review/
|
||||||
|
│ ├── done/
|
||||||
|
│ ├── reports/
|
||||||
|
│ ├── MASTER-STATUS.md
|
||||||
|
│ └── Implementation-Tasks.md
|
||||||
|
│
|
||||||
|
└── code/ ← Go kod
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agent registar
|
||||||
|
|
||||||
|
| Agent | Folder | Model | Verzija |
|
||||||
|
|-------|--------|-------|---------|
|
||||||
|
| Triage | agents/triage/ | Haiku | 0.1.0 |
|
||||||
|
| Task Manager | agents/task-manager/ | Sonnet/Haiku | 0.1.0 |
|
||||||
|
| Coder | agents/coder/ | Sonnet/Opus | 0.1.0 |
|
||||||
|
| Frontend | agents/frontend/ | Sonnet | 0.1.0 |
|
||||||
|
| Checker | agents/checker/ | Haiku/Opus | 0.1.0 |
|
||||||
|
| Reporter | agents/reporter/ | Haiku | 0.1.0 |
|
||||||
|
| Docs | agents/docs/ | Haiku | 0.1.0 |
|
||||||
|
| Deployer | agents/deployer/ | Haiku | 0.1.0 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Model selekcija
|
||||||
|
|
||||||
|
Pravilo: uvek najjeftiniji model koji može da uradi posao.
|
||||||
|
|
||||||
|
| Zadatak | Agent | Model | Cena/M tokena |
|
||||||
|
|---------|-------|-------|---------------|
|
||||||
|
| Klasifikacija prijave | triage | Haiku | $0.25/$1.25 |
|
||||||
|
| Generisanje taska | task-manager | Sonnet | $3/$15 |
|
||||||
|
| Kodiranje | coder | Sonnet | $3/$15 |
|
||||||
|
| Kompleksno kodiranje | coder | Opus | $15/$75 |
|
||||||
|
| Frontend | frontend | Sonnet | $3/$15 |
|
||||||
|
| Build + Test | checker | Haiku | $0.25/$1.25 |
|
||||||
|
| Code review | checker | Opus | $15/$75 |
|
||||||
|
| Izveštaj | reporter | Haiku | $0.25/$1.25 |
|
||||||
|
| Dokumentacija | docs | Haiku | $0.25/$1.25 |
|
||||||
|
| Deploy | deployer | Haiku | $0.25/$1.25 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pristup
|
||||||
|
|
||||||
|
| Folder | Čita | Piše |
|
||||||
|
|--------|------|------|
|
||||||
|
| agents/ | ✅ | ❌ |
|
||||||
|
| TASKS/ | ✅ | ✅ (status, premesti fajlove) |
|
||||||
|
| documentation/ | ✅ | ❌ |
|
||||||
|
| code/ | ✅ | ✅ (kad izvršava task) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verzionisanje CLAUDE.md fajlova
|
||||||
|
|
||||||
|
Format: `Major.Minor.Patch`
|
||||||
|
- Patch (0.1.1) — sitne ispravke
|
||||||
|
- Minor (0.2.0) — nova pravila, novi korak
|
||||||
|
- Major (1.0.0) — fundamentalna promena
|
||||||
|
|
||||||
|
Kad se promeni CLAUDE.md → podigne verzija → ažurira Agent registar.
|
||||||
176
README.md
Normal file
176
README.md
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
# KAOS — AI-Supervised Development System
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Status:** Pokretanje
|
||||||
|
**Autor:** DAL d.o.o.
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Šta je KAOS
|
||||||
|
|
||||||
|
Sistem gde AI agenti razvijaju softver pod ljudskim nadzorom.
|
||||||
|
Jedan mastermind orkestrira, specijalizovani agenti izvršavaju,
|
||||||
|
čovek odobrava. Svaki agent zna samo svoj deo posla.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kako radi
|
||||||
|
|
||||||
|
```
|
||||||
|
Klijent prijavi (šta hoće ili šta ne radi)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Operater proveri (da li ima smisla, doradiš opis)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Mastermind se uključi (čita kontekst, razume problem)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Task se zapiše (markdown, u listu taskova)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Operater odobri (ok, kreni)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Mastermind pokrene agenta (pravi model, minimalan kontekst)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Agent izvrši (kodira, testira, commituje)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Checker verifikuje (build, test, vet — nezavisno)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Reporter napiše izveštaj (šta, koliko, koliko koštalo)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Operater pregleda (kod, testovi, izveštaj)
|
||||||
|
│
|
||||||
|
▼
|
||||||
|
Deploy ili dorada
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Arhitektura — Multi-Agent
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────┐
|
||||||
|
│ MASTERMIND │
|
||||||
|
│ (root CLAUDE) │
|
||||||
|
│ ne kodira, │
|
||||||
|
│ orkestrira │
|
||||||
|
└───────┬─────────┘
|
||||||
|
│
|
||||||
|
┌───────┬───────┬───┴───┬───────┬───────┬───────┬───────┐
|
||||||
|
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
|
||||||
|
┌───────┐┌──────┐┌──────┐┌──────┐┌───────┐┌────────┐┌────┐┌───────┐
|
||||||
|
│Triage ││Task ││Coder ││Front ││Checker││Reporter││Docs││Deploy │
|
||||||
|
│ ││Mgr ││ ││end ││ ││ ││ ││er │
|
||||||
|
│Haiku ││Sonnet││Sonnet││Sonnet││Haiku/ ││Haiku ││Haiku││Haiku │
|
||||||
|
│ ││ ││/Opus ││ ││Opus ││ ││ ││ │
|
||||||
|
└───────┘└──────┘└──────┘└──────┘└───────┘└────────┘└────┘└───────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
**Princip:** Agenti ne komuniciraju međusobno. Samo sa mastermindom.
|
||||||
|
**Cena:** Uvek najjeftiniji model koji može da uradi posao.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Struktura projekta
|
||||||
|
|
||||||
|
```
|
||||||
|
/root/projects/KAOS/
|
||||||
|
│
|
||||||
|
├── CLAUDE.md ← mastermind (v0.1.0)
|
||||||
|
├── README.md ← ovo
|
||||||
|
│
|
||||||
|
├── agents/ ← specijalizovani agenti
|
||||||
|
│ ├── triage/CLAUDE.md ← klasifikacija prijava
|
||||||
|
│ ├── task-manager/CLAUDE.md ← kreiranje taskova, status
|
||||||
|
│ ├── coder/CLAUDE.md ← backend kodiranje
|
||||||
|
│ ├── frontend/CLAUDE.md ← React kodiranje
|
||||||
|
│ ├── checker/CLAUDE.md ← verifikacija
|
||||||
|
│ ├── reporter/CLAUDE.md ← izveštaji
|
||||||
|
│ ├── docs/CLAUDE.md ← eksterna dokumentacija
|
||||||
|
│ └── deployer/CLAUDE.md ← git merge, verzije, deploy
|
||||||
|
│
|
||||||
|
├── documentation/ ← eksterna dokumentacija (tuđe)
|
||||||
|
│ ├── api-specs/
|
||||||
|
│ ├── regulations/
|
||||||
|
│ └── third-party/
|
||||||
|
│
|
||||||
|
└── TASKS/ ← taskovi, specifikacije, izveštaji
|
||||||
|
├── MASTER-STATUS.md
|
||||||
|
├── Architecture.md
|
||||||
|
├── Workflow-Spec.md
|
||||||
|
├── Supervisor-Spec.md
|
||||||
|
├── Multi-Agent-Spec.md
|
||||||
|
├── Implementation-Tasks.md
|
||||||
|
└── reports/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verzije
|
||||||
|
|
||||||
|
### v0.1 — Osnova (TRENUTNO)
|
||||||
|
- Mastermind + agenti definisani u CLAUDE.md fajlovima
|
||||||
|
- Supervisor: ručno pokretanje (`kaos-supervisor run T01`)
|
||||||
|
- Checker: build + test + vet (deterministički)
|
||||||
|
- Izveštaji: markdown u TASKS/reports/
|
||||||
|
- Git: direktno na main
|
||||||
|
- Nema baze, nema frontend-a, nema AI trijaže
|
||||||
|
|
||||||
|
### v0.2 — Automatizacija (planirano)
|
||||||
|
- Supervisor daemon ili watch folder
|
||||||
|
- AI trijaža prijava
|
||||||
|
- AI compliance provere (modul, pravila, konvencije)
|
||||||
|
- Staging → main branch strategija
|
||||||
|
- Auto-retry za flaky testove
|
||||||
|
- Notifikacije (konfigurabilan kanal)
|
||||||
|
|
||||||
|
### v0.3 — Kompletni ekosistem (planirano)
|
||||||
|
- Frontend dashboard
|
||||||
|
- WebSocket real-time praćenje
|
||||||
|
- Help sistem
|
||||||
|
- Embed SDK
|
||||||
|
- Cost tracking dashboard
|
||||||
|
- Metrike i analitika
|
||||||
|
- Distribucija prema licencama
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Donesene odluke
|
||||||
|
|
||||||
|
| Odluka | Izbor | Datum |
|
||||||
|
|--------|-------|-------|
|
||||||
|
| Arhitektura | Multi-agent (mastermind + specijalizovani) | Feb 2026 |
|
||||||
|
| Komunikacija | Agenti → samo sa mastermindom, nikad međusobno | Feb 2026 |
|
||||||
|
| Model selekcija | Po zadatku: Haiku/Sonnet/Opus | Feb 2026 |
|
||||||
|
| Format taskova | Markdown (nema JSON-a, jedno mesto istine) | Feb 2026 |
|
||||||
|
| Triger | Ručno v0.1, automatizacija v0.2 | Feb 2026 |
|
||||||
|
| Verifikacija | Dupla (agent + supervisor nezavisno) | Feb 2026 |
|
||||||
|
| Retry | Čekaj operatera (v0.1), auto-retry (v0.2) | Feb 2026 |
|
||||||
|
| Verzionisanje | Semver (Major.Minor.Patch) | Feb 2026 |
|
||||||
|
| Izveštaji | Markdown u TASKS/reports/, idu u git | Feb 2026 |
|
||||||
|
| Dorada | Novi task sa MD referencom na stari | Feb 2026 |
|
||||||
|
| Rollback | Git revert (v0.1) | Feb 2026 |
|
||||||
|
| Branch | Direktno main (v0.1), staging (v0.2) | Feb 2026 |
|
||||||
|
| Timeout | Ručno podešavanje, operater odlučuje | Feb 2026 |
|
||||||
|
| Troškovi | Praćenje po tasku (tokeni, cena, vreme) | Feb 2026 |
|
||||||
|
| Backend | Go | Feb 2026 |
|
||||||
|
| Frontend | React + TypeScript + Vite + Tailwind + shadcn/ui | Feb 2026 |
|
||||||
|
| Baza | PostgreSQL (v0.2+) | Feb 2026 |
|
||||||
|
| HTTP framework | Gin (v0.2+) | Feb 2026 |
|
||||||
|
| Engine | `pkg/engine/` javni paket, nula HTTP (v0.2+) | Feb 2026 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Poreklo
|
||||||
|
|
||||||
|
KAOS je nastao iz ARV (Advanced Resource & Venue Management) projekta
|
||||||
|
gde smo dokazali da AI agent može da razvija softver pod nadzorom.
|
||||||
|
ARV ima 43+48 završenih taskova ovim pristupom.
|
||||||
|
KAOS formalizuje taj proces u alat koji može da se koristi za bilo koji projekat.
|
||||||
371
TASKS/Implementation-Tasks.md
Normal file
371
TASKS/Implementation-Tasks.md
Normal file
@ -0,0 +1,371 @@
|
|||||||
|
# KAOS v0.1 — Implementacioni taskovi
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pregled
|
||||||
|
|
||||||
|
V0.1 cilj: supervisor koji pokreće Claude Code agente, prati izvršavanje,
|
||||||
|
verifikuje rezultat, piše izveštaj. Ručno pokretanje, markdown taskovi.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T01: Inicijalizacija Go projekta
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** —
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
Kreirati Go projekat u `code/` folderu sa osnovnom strukturom.
|
||||||
|
|
||||||
|
**Fajlovi za kreiranje:**
|
||||||
|
```
|
||||||
|
code/
|
||||||
|
├── go.mod ← module github.com/dal/kaos
|
||||||
|
├── .env.example ← KAOS_TIMEOUT=30m
|
||||||
|
├── .gitignore ← Go defaults + .env
|
||||||
|
├── Makefile ← build, test, vet, clean
|
||||||
|
├── cmd/
|
||||||
|
│ └── kaos-supervisor/
|
||||||
|
│ └── main.go ← entry point (prazan skeleton)
|
||||||
|
├── internal/
|
||||||
|
│ ├── config/
|
||||||
|
│ │ └── config.go ← čita .env, drži config struct
|
||||||
|
│ └── supervisor/
|
||||||
|
│ └── supervisor.go ← prazan skeleton
|
||||||
|
└── CLAUDE.md ← pravila kodiranja (kopija agents/coder/CLAUDE.md)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Pravila:**
|
||||||
|
- `go mod init github.com/dal/kaos`
|
||||||
|
- Go 1.22+
|
||||||
|
- Makefile targeti: `build`, `test`, `vet`, `clean`, `all`
|
||||||
|
- Config čita iz .env: KAOS_TIMEOUT, KAOS_PROJECT_PATH
|
||||||
|
- Svaki fajl mora imati package doc komentar
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- `go build ./...` prolazi
|
||||||
|
- `go vet ./...` prolazi
|
||||||
|
- Config test: učitaj .env.example, proveri da su vrednosti popunjene
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
Projekat se kompajlira. `make build` kreira binary. `make test` prolazi.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T02: Task loader — parsiranje markdown taskova
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** T01
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
Supervisor mora da čita taskove iz markdown fajla (ovog fajla).
|
||||||
|
Parsira sekcije, izvlači ID, status, zavisnosti.
|
||||||
|
|
||||||
|
**Fajlovi za kreiranje:**
|
||||||
|
```
|
||||||
|
code/internal/supervisor/
|
||||||
|
├── task.go ← Task struct, LoadTasks(), FindTask(), NextTask()
|
||||||
|
└── task_test.go ← testovi sa primer markdown-om
|
||||||
|
```
|
||||||
|
|
||||||
|
**Task struct:**
|
||||||
|
```go
|
||||||
|
type Task struct {
|
||||||
|
ID string // T01, T02...
|
||||||
|
Title string // naslov
|
||||||
|
Status string // pending, running, done, failed
|
||||||
|
Agent string // coder, checker, frontend...
|
||||||
|
Model string // Haiku, Sonnet, Opus
|
||||||
|
DependsOn []string // lista task ID-eva
|
||||||
|
Description string // ceo opis
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Funkcije:**
|
||||||
|
- `LoadTasks(mdPath string) ([]Task, error)` — parsira markdown
|
||||||
|
- `FindTask(tasks []Task, id string) *Task` — nađi po ID-u
|
||||||
|
- `NextTask(tasks []Task) *Task` — prvi pending čije su zavisnosti done
|
||||||
|
- `UpdateStatus(mdPath, taskID, newStatus string) error` — promeni status u fajlu
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- LoadTasks sa primer markdown-om → parsira tačno
|
||||||
|
- NextTask vraća pravi task po zavisnostima
|
||||||
|
- UpdateStatus menja fajl korektno
|
||||||
|
- Edge case: nema pending taskova, cirkularna zavisnost
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
`go test ./internal/supervisor/ -v` — svi testovi zeleni.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T03: Runner — pokretanje Claude Code
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** T02
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
Pokreće Claude Code sa task promptom, prati stdout/stderr u realnom vremenu,
|
||||||
|
meri vreme, čuva exit code.
|
||||||
|
|
||||||
|
**Fajlovi za kreiranje:**
|
||||||
|
```
|
||||||
|
code/internal/supervisor/
|
||||||
|
├── runner.go ← RunTask(), priprema prompt, pokreće claude CLI
|
||||||
|
└── runner_test.go ← test sa mock komandom (ne pravi claude)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Funkcije:**
|
||||||
|
```go
|
||||||
|
type RunResult struct {
|
||||||
|
TaskID string
|
||||||
|
StartedAt time.Time
|
||||||
|
FinishedAt time.Time
|
||||||
|
Duration time.Duration
|
||||||
|
ExitCode int
|
||||||
|
Output string
|
||||||
|
Error string
|
||||||
|
}
|
||||||
|
|
||||||
|
func RunTask(task Task, projectPath string, timeout time.Duration) RunResult
|
||||||
|
```
|
||||||
|
|
||||||
|
**Prompt koji šalje Claude Code-u:**
|
||||||
|
```
|
||||||
|
Radi na KAOS projektu.
|
||||||
|
Tvoj task: {ID} — {Title}
|
||||||
|
Pročitaj CLAUDE.md u root-u projekta za pravila rada.
|
||||||
|
{Description}
|
||||||
|
Kad završiš: go build, go test, commituj, pushuj.
|
||||||
|
```
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- Mock: umesto `claude` pokreni `echo "done"` — proveri da RunResult ima tačne podatke
|
||||||
|
- Timeout: pokreni `sleep 999` sa timeout 1s — proveri da se prekine
|
||||||
|
- Output capture: proveri da stdout/stderr su uhvaćeni
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
RunTask pokrene proces, uhvati output, meri vreme, poštuje timeout.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T04: Checker — verifikacija posle agenta
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** T01
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
Posle svake Claude Code sesije, nezavisno pokrene build + test + vet.
|
||||||
|
|
||||||
|
**Fajlovi za kreiranje:**
|
||||||
|
```
|
||||||
|
code/internal/supervisor/
|
||||||
|
├── checker.go ← Verify(), CheckResult struct
|
||||||
|
└── checker_test.go ← test sa privremenim Go projektom
|
||||||
|
```
|
||||||
|
|
||||||
|
**Funkcije:**
|
||||||
|
```go
|
||||||
|
type CheckResult struct {
|
||||||
|
Name string // "build", "test", "vet"
|
||||||
|
Status string // "pass", "fail"
|
||||||
|
Output string
|
||||||
|
Duration time.Duration
|
||||||
|
TestCount int // samo za test check
|
||||||
|
}
|
||||||
|
|
||||||
|
type VerifyResult struct {
|
||||||
|
Build CheckResult
|
||||||
|
Vet CheckResult
|
||||||
|
Test CheckResult
|
||||||
|
AllPassed bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func Verify(projectPath string) VerifyResult
|
||||||
|
```
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- Napravi temp Go projekat koji prolazi — Verify vraća AllPassed=true
|
||||||
|
- Napravi temp Go projekat sa syntax error — Build fail
|
||||||
|
- Napravi temp Go projekat sa failing test — Test fail
|
||||||
|
- Proveri da TestCount parsira tačno
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
Verify pokrene tri komande, parsira rezultat, vrati struct.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T05: Reporter — pisanje izveštaja
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** T03, T04
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
Generiše markdown izveštaj posle izvršenog taska.
|
||||||
|
|
||||||
|
**Fajlovi za kreiranje:**
|
||||||
|
```
|
||||||
|
code/internal/supervisor/
|
||||||
|
├── reporter.go ← WriteReport()
|
||||||
|
└── reporter_test.go
|
||||||
|
```
|
||||||
|
|
||||||
|
**Funkcije:**
|
||||||
|
```go
|
||||||
|
func WriteReport(
|
||||||
|
task Task,
|
||||||
|
run RunResult,
|
||||||
|
verify VerifyResult,
|
||||||
|
reportsDir string,
|
||||||
|
) (string, error) // vraća putanju do izveštaja
|
||||||
|
```
|
||||||
|
|
||||||
|
**Format izveštaja:**
|
||||||
|
```markdown
|
||||||
|
# T{XX}: Naslov
|
||||||
|
|
||||||
|
**Datum:** 2026-02-20 10:15
|
||||||
|
**Trajanje:** 8m 45s
|
||||||
|
**Status:** ✅ Završen / ❌ Neuspešan
|
||||||
|
|
||||||
|
## Verifikacija
|
||||||
|
- ✅/❌ go build (0.3s)
|
||||||
|
- ✅/❌ go vet (0.2s)
|
||||||
|
- ✅/❌ go test (12/12 testova, 2.1s)
|
||||||
|
|
||||||
|
## Agent output
|
||||||
|
(skraćen output Claude Code sesije)
|
||||||
|
|
||||||
|
## Commit
|
||||||
|
- Hash: a1b2c3d
|
||||||
|
- Branch: main
|
||||||
|
```
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- WriteReport sa mock podacima → fajl postoji, sadržaj tačan
|
||||||
|
- Proveri format datuma, trajanja
|
||||||
|
- Proveri da folder kreira ako ne postoji
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
`TASKS/reports/T01-report.md` se generiše sa tačnim sadržajem.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T06: CLI — komandni interfejs
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** T02, T03, T04, T05
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
Entry point — parsira komande, poziva supervisor funkcije.
|
||||||
|
|
||||||
|
**Fajlovi za izmenu:**
|
||||||
|
```
|
||||||
|
code/cmd/kaos-supervisor/main.go ← komande
|
||||||
|
```
|
||||||
|
|
||||||
|
**Komande:**
|
||||||
|
```bash
|
||||||
|
kaos-supervisor run [TASK_ID] # pokreni task (ili sledeći ako bez ID)
|
||||||
|
kaos-supervisor status # prikaži status svih taskova
|
||||||
|
kaos-supervisor next # prikaži šta je sledeće
|
||||||
|
kaos-supervisor verify # ponovo pokreni verifikaciju
|
||||||
|
kaos-supervisor history # prikaži izvršene taskove iz reports/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Pravila:**
|
||||||
|
- Bez eksternih CLI biblioteka (flag package dovoljno)
|
||||||
|
- Svaka komanda ima --help
|
||||||
|
- Formatiran terminal output (emoji za status)
|
||||||
|
- Poruke na srpskom
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- `kaos-supervisor status` sa primer taskovima → ispravan output
|
||||||
|
- `kaos-supervisor next` → vraća pravi task
|
||||||
|
- Nepoznata komanda → help poruka
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
`make build` → `bin/kaos-supervisor` radi sve komande.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T07: Integracija — sve zajedno
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** T06
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
End-to-end tok: učitaj taskove → pokreni → verifikuj → izveštaj → ažuriraj status.
|
||||||
|
|
||||||
|
**Fajlovi za izmenu:**
|
||||||
|
```
|
||||||
|
code/internal/supervisor/
|
||||||
|
├── supervisor.go ← Run() koji povezuje sve korake
|
||||||
|
└── supervisor_test.go
|
||||||
|
```
|
||||||
|
|
||||||
|
**Funkcija:**
|
||||||
|
```go
|
||||||
|
func (s *Supervisor) Run(taskID string) error {
|
||||||
|
// 1. Učitaj taskove
|
||||||
|
// 2. Nađi task (po ID-u ili NextTask)
|
||||||
|
// 3. Proveri zavisnosti
|
||||||
|
// 4. Postavi status: running
|
||||||
|
// 5. Pokreni Claude Code (RunTask)
|
||||||
|
// 6. Verifikuj (Verify)
|
||||||
|
// 7. Napiši izveštaj (WriteReport)
|
||||||
|
// 8. Postavi status: done ili failed
|
||||||
|
// 9. Prikaži rezultat
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- End-to-end sa mock Claude Code komandom
|
||||||
|
- Task sa neispunjenom zavisnošću → greška
|
||||||
|
- Task koji je već done → skip ili greška
|
||||||
|
- Failed verifikacija → status=failed, izveštaj navede šta palo
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
`kaos-supervisor run T01` prolazi ceo tok od učitavanja do izveštaja.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Redosled izvršavanja
|
||||||
|
|
||||||
|
```
|
||||||
|
T01 (Go init)
|
||||||
|
│
|
||||||
|
├── T02 (Task loader)
|
||||||
|
│ │
|
||||||
|
│ └── T03 (Runner)
|
||||||
|
│ │
|
||||||
|
│ └── T05 (Reporter) ──┐
|
||||||
|
│ │
|
||||||
|
└── T04 (Checker) ─────────────┘
|
||||||
|
│
|
||||||
|
T06 (CLI)
|
||||||
|
│
|
||||||
|
T07 (Integracija)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Quality gates:**
|
||||||
|
- Posle T01: `make build` i `make test` prolaze
|
||||||
|
- Posle T04: Verify radi na test projektu
|
||||||
|
- Posle T06: Sve komande rade iz terminala
|
||||||
|
- Posle T07: End-to-end tok radi sa mock agentom
|
||||||
46
TASKS/MASTER-STATUS.md
Normal file
46
TASKS/MASTER-STATUS.md
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
# KAOS — Master Status
|
||||||
|
|
||||||
|
**Verzija:** 0.3.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fajl indeks
|
||||||
|
|
||||||
|
| Fajl | Opis |
|
||||||
|
|------|------|
|
||||||
|
| `CLAUDE.md` | Mastermind (v0.3.0) |
|
||||||
|
| `README.md` | Pregled projekta, arhitektura, odluke |
|
||||||
|
| `agents/*/CLAUDE.md` | 8 agenata (v0.1.0) |
|
||||||
|
| `TASKS/MASTER-STATUS.md` | Ovo — navigacija, status |
|
||||||
|
| `TASKS/Implementation-Tasks.md` | Svi taskovi detaljno |
|
||||||
|
| `TASKS/Workflow-Spec.md` | 10 koraka, odluke |
|
||||||
|
| `TASKS/Multi-Agent-Spec.md` | Arhitektura agenata |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Task folderi
|
||||||
|
|
||||||
|
| Folder | Sadržaj | Taskovi |
|
||||||
|
|--------|---------|---------|
|
||||||
|
| backlog/ | Čeka odobrenje | T01 |
|
||||||
|
| ready/ | Odobren za rad | — |
|
||||||
|
| active/ | U izradi | — |
|
||||||
|
| review/ | Čeka pregled/odgovor | — |
|
||||||
|
| done/ | Završeno | — |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## v0.1 Taskovi
|
||||||
|
|
||||||
|
| Task | Naslov | Folder | Zavisi od |
|
||||||
|
|------|--------|--------|-----------|
|
||||||
|
| T01 | Inicijalizacija Go projekta | backlog | — |
|
||||||
|
| T02 | Task loader (parsiranje MD) | — | T01 |
|
||||||
|
| T03 | Runner (pokretanje Claude Code) | — | T02 |
|
||||||
|
| T04 | Checker (build + test + vet) | — | T01 |
|
||||||
|
| T05 | Reporter (pisanje izveštaja) | — | T03, T04 |
|
||||||
|
| T06 | CLI (komandni interfejs) | — | T02-T05 |
|
||||||
|
| T07 | Integracija (end-to-end) | — | T06 |
|
||||||
|
|
||||||
|
T02-T07 će biti napisani u backlog/ kad T01 bude done.
|
||||||
79
TASKS/Multi-Agent-Spec.md
Normal file
79
TASKS/Multi-Agent-Spec.md
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
# KAOS Multi-Agent Arhitektura
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Princip
|
||||||
|
|
||||||
|
Jedan mastermind orkestrira, specijalizovani agenti izvršavaju.
|
||||||
|
Mastermind NIKADA ne kodira. Agenti znaju SAMO svoj deo.
|
||||||
|
Agenti NE komuniciraju međusobno — samo sa mastermindom.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agenti
|
||||||
|
|
||||||
|
| Agent | Uloga | Model | Cena/M tokena |
|
||||||
|
|-------|-------|-------|---------------|
|
||||||
|
| **Mastermind** | Orkestrira, odlučuje, ne kodira | Sonnet | $3/$15 |
|
||||||
|
| **Triage** | Klasifikuje prijave (tip, prioritet, modul) | Haiku | $0.25/$1.25 |
|
||||||
|
| **Task Manager** | Kreira taskove, prati status | Sonnet/Haiku | $3/$15 |
|
||||||
|
| **Coder** | Piše Go kod + testove | Sonnet/Opus | $3-$15/$15-$75 |
|
||||||
|
| **Frontend** | Piše React kod + Playwright testove | Sonnet | $3/$15 |
|
||||||
|
| **Checker** | Build, test, vet, code review | Haiku/Opus | $0.25-$15 |
|
||||||
|
| **Reporter** | Piše izveštaje u markdown | Haiku | $0.25/$1.25 |
|
||||||
|
| **Docs** | Čita eksternu dokumentaciju | Haiku | $0.25/$1.25 |
|
||||||
|
| **Deployer** | Git merge, tag, verzija, deploy | Haiku | $0.25/$1.25 |
|
||||||
|
|
||||||
|
Pravilo: uvek najjeftiniji model koji može da uradi posao.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Izolacija
|
||||||
|
|
||||||
|
Svaki agent dobija SAMO:
|
||||||
|
1. Svoj CLAUDE.md (pravila za njegov deo)
|
||||||
|
2. Fajlove koje treba da čita (eksplicitno)
|
||||||
|
3. Zadatak (šta tačno da uradi)
|
||||||
|
|
||||||
|
Agent NE dobija: celu codebase, druge module, poslovne odluke koje ga se ne tiču.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tok — primer
|
||||||
|
|
||||||
|
```
|
||||||
|
1. Operater: "Dodaj export faktura u PDF"
|
||||||
|
2. Mastermind: razbije na backend (T28a) + frontend (T28b)
|
||||||
|
3. Coder (Sonnet): implementira PDF endpoint + test
|
||||||
|
4. Checker (Haiku): go build, go test, go vet
|
||||||
|
5. Frontend (Sonnet): dugme Export PDF + Playwright test
|
||||||
|
6. Checker (Haiku): npm build, playwright test
|
||||||
|
7. Reporter (Haiku): napiše izveštaj
|
||||||
|
8. Mastermind: "Završeno, čeka odobrenje"
|
||||||
|
9. Operater: pregleda, odobri
|
||||||
|
10. Deployer (Haiku): git tag, deploy
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Verzionisanje
|
||||||
|
|
||||||
|
Svaki CLAUDE.md ima verziju (Semver).
|
||||||
|
Mastermind drži Agent registar sa verzijama.
|
||||||
|
Promena pravila = nova verzija + ažuriran registar.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Prednosti
|
||||||
|
|
||||||
|
| Prednost | Objašnjenje |
|
||||||
|
|----------|-------------|
|
||||||
|
| Jeftinije | Haiku za jednostavne stvari, Opus samo kad mora |
|
||||||
|
| Brže | Manji kontekst = brži odgovor |
|
||||||
|
| Preciznije | Agent fokusiran na jedan zadatak = manje grešaka |
|
||||||
|
| Bezbednije | Agent za frontend ne može pokvariti engine |
|
||||||
|
| Skalabilno | Lako dodaš novog agenta |
|
||||||
|
| Zamenjivo | Novi model — promeniš samo u mastermind config |
|
||||||
65
TASKS/Workflow-Spec.md
Normal file
65
TASKS/Workflow-Spec.md
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# KAOS Workflow — Korak po korak
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Koraci
|
||||||
|
|
||||||
|
### 0. Klijent prijavi
|
||||||
|
Šta hoće ili šta ne radi. Sad: ti u chatu. Gotov sistem: forma u aplikaciji.
|
||||||
|
|
||||||
|
### 1. Operater proveri
|
||||||
|
Da li ima smisla? Duplikat? Doradi opis.
|
||||||
|
|
||||||
|
### 2. Planer (Claude) se uključi
|
||||||
|
Kad operater kaže "krećemo". Čita kontekst, razume problem.
|
||||||
|
|
||||||
|
### 3. Task se zapiše u markdown
|
||||||
|
Jedno mesto istine. Supervisor parsira direktno. Nema JSON-a.
|
||||||
|
|
||||||
|
### 4. Operater odobri
|
||||||
|
Pregleda task, kaže ok.
|
||||||
|
|
||||||
|
### 5. Claude Code izvrši (triger: ručno)
|
||||||
|
V0.1: `kaos-supervisor run T01`. V0.2: automatizacija.
|
||||||
|
|
||||||
|
### 6. Verifikacija (dupla)
|
||||||
|
Claude Code proveri sam pre commita. Supervisor verifikuje nezavisno posle.
|
||||||
|
V0.1: build + test + vet. V0.2: + AI compliance.
|
||||||
|
|
||||||
|
### 7. Commit + Push + Verzija
|
||||||
|
Semver. Izveštaj uključuje cenu (tokeni).
|
||||||
|
|
||||||
|
### 8. Izveštaj
|
||||||
|
Markdown u TASKS/reports/, ide u git. Sadrži vreme, status, cenu, promene.
|
||||||
|
|
||||||
|
### 9. Operater pregleda
|
||||||
|
Kod, testovi, izveštaj. Ako ne valja: novi task sa MD referencom na stari.
|
||||||
|
Rollback: git revert.
|
||||||
|
|
||||||
|
### 10. Deploy
|
||||||
|
V0.1: git push = deploy. V0.2: distribucija prema licencama.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Odluke
|
||||||
|
|
||||||
|
| Tema | Odluka |
|
||||||
|
|------|--------|
|
||||||
|
| Format taskova | Samo markdown |
|
||||||
|
| Triger | Ručno (v0.1) |
|
||||||
|
| Supervisor | Po potrebi, nije daemon (v0.1) |
|
||||||
|
| Verifikacija | Dupla (agent + supervisor) |
|
||||||
|
| Retry | Čekaj operatera (v0.1) |
|
||||||
|
| Verzionisanje | Semver |
|
||||||
|
| Izveštaji | Markdown u reports/, git |
|
||||||
|
| Dorada | Novi task sa MD referencom |
|
||||||
|
| Rollback | Git revert |
|
||||||
|
| Branch | Main direktno (v0.1), staging (v0.2) |
|
||||||
|
| Timeout | Ručno podešavanje |
|
||||||
|
| Logovanje | Real-time + sumarno |
|
||||||
|
| Paralelnost | Jedan (v0.1), konfigurabilan (v0.2) |
|
||||||
|
| Troškovi | Po tasku (tokeni, cena, vreme) |
|
||||||
|
| Notifikacije | Bez (v0.1), konfigurabilan (v0.2) |
|
||||||
66
TASKS/active/T01.md
Normal file
66
TASKS/active/T01.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# T01: Inicijalizacija Go projekta
|
||||||
|
|
||||||
|
**Kreirao:** planer
|
||||||
|
**Datum:** 2026-02-20
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** —
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Opis
|
||||||
|
|
||||||
|
Kreirati Go projekat u `code/` folderu sa osnovnom strukturom
|
||||||
|
za KAOS supervisor.
|
||||||
|
|
||||||
|
## Fajlovi za kreiranje
|
||||||
|
|
||||||
|
```
|
||||||
|
code/
|
||||||
|
├── go.mod ← module github.com/dal/kaos
|
||||||
|
├── .env.example ← KAOS_TIMEOUT=30m, KAOS_PROJECT_PATH=.
|
||||||
|
├── .gitignore ← Go defaults + .env
|
||||||
|
├── Makefile ← build, test, vet, clean, all
|
||||||
|
├── cmd/
|
||||||
|
│ └── kaos-supervisor/
|
||||||
|
│ └── main.go ← entry point (prazan skeleton)
|
||||||
|
├── internal/
|
||||||
|
│ ├── config/
|
||||||
|
│ │ ├── config.go ← čita .env, Config struct
|
||||||
|
│ │ └── config_test.go ← test
|
||||||
|
│ └── supervisor/
|
||||||
|
│ └── supervisor.go ← prazan skeleton
|
||||||
|
└── CLAUDE.md ← kopija agents/coder/CLAUDE.md
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pravila
|
||||||
|
|
||||||
|
- `go mod init github.com/dal/kaos`
|
||||||
|
- Go 1.22+
|
||||||
|
- Makefile targeti: `build`, `test`, `vet`, `clean`, `all`
|
||||||
|
- Config čita iz .env: KAOS_TIMEOUT, KAOS_PROJECT_PATH
|
||||||
|
- Svaki fajl mora imati package doc komentar
|
||||||
|
- Nema hardkodiranih vrednosti
|
||||||
|
|
||||||
|
## Testovi
|
||||||
|
|
||||||
|
- `go build ./...` prolazi
|
||||||
|
- `go vet ./...` prolazi
|
||||||
|
- Config test: učitaj .env.example, proveri da su vrednosti popunjene
|
||||||
|
|
||||||
|
## Očekivani izlaz
|
||||||
|
|
||||||
|
Projekat se kompajlira. `make build` kreira binary u `bin/`.
|
||||||
|
`make test` prolazi. `make vet` čist.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pitanja
|
||||||
|
|
||||||
|
*(agent piše pitanja ovde, planer odgovara)*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Odgovori
|
||||||
|
|
||||||
|
*(planer piše odgovore ovde)*
|
||||||
41
agents/checker/CLAUDE.md
Normal file
41
agents/checker/CLAUDE.md
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
# Checker Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Verifikuje da je kod ispravan — build, test, vet.
|
||||||
|
V0.2+: provera usklađenosti sa poslovnim pravilima.
|
||||||
|
|
||||||
|
## Model: Haiku (build/test) / Opus (code review)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Putanja do projekta
|
||||||
|
- Šta da proveri (build, test, vet, ili sve)
|
||||||
|
- V0.2+: pravila za proveru (modul docs, konvencije)
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
```
|
||||||
|
build: PASS / FAIL (output, trajanje)
|
||||||
|
vet: PASS / FAIL (output, trajanje)
|
||||||
|
test: PASS / FAIL (output, trajanje, broj testova)
|
||||||
|
```
|
||||||
|
|
||||||
|
## V0.1 provere (deterministične)
|
||||||
|
- `go build ./...`
|
||||||
|
- `go vet ./...`
|
||||||
|
- `go test ./... -v -count=1`
|
||||||
|
|
||||||
|
## V0.2+ provere (AI)
|
||||||
|
- MODULE — promene u skladu sa dokumentacijom modula
|
||||||
|
- RULES — poštovanje poslovnih pravila
|
||||||
|
- CONVENTIONS — terminologija, naming, stil
|
||||||
|
- RBAC — endpoint u pravom route group-u
|
||||||
|
- AUDIT — write operacije imaju audit log
|
||||||
|
- LICENSE — feature u pravoj ediciji
|
||||||
|
- DEPS — ne kvari zavisne module
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Zašto je task napravljen
|
||||||
|
- Ko je prijavio
|
||||||
|
- Druge module osim onog koji proverava
|
||||||
39
agents/coder/CLAUDE.md
Normal file
39
agents/coder/CLAUDE.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Coder Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Piše kod prema zadatku. Implementira funkcionalnost, piše testove,
|
||||||
|
poštuje konvencije projekta.
|
||||||
|
|
||||||
|
## Model: Sonnet (standardan) / Opus (kompleksno)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Zadatak (šta tačno da uradi)
|
||||||
|
- Fajlove koje treba da čita (eksplicitno navedene)
|
||||||
|
- Ograničenja (šta NE sme)
|
||||||
|
- code/CLAUDE.md (pravila kodiranja za ovaj projekat)
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Status: gotovo / neuspešno / treba pojašnjenje
|
||||||
|
- Lista kreiranih/izmenjenih fajlova
|
||||||
|
- Commit hash
|
||||||
|
- Pokrenuti testovi i rezultat
|
||||||
|
|
||||||
|
## Pravila
|
||||||
|
- Poštuje code/CLAUDE.md pravila
|
||||||
|
- Svaka funkcija mora imati test
|
||||||
|
- `go build ./...` mora proći pre commita
|
||||||
|
- `go test ./... -count=1` mora proći pre commita
|
||||||
|
- `go vet ./...` mora proći pre commita
|
||||||
|
- Commit format: `T{XX}: Opis na srpskom`
|
||||||
|
- Error handling: svaka greška se obrađuje
|
||||||
|
- Nazivi u kodu: engleski
|
||||||
|
- Nema hardkodiranih vrednosti
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Druge module osim onih u zadatku
|
||||||
|
- Poslovne odluke
|
||||||
|
- Druge agente
|
||||||
|
- Frontend (osim ako je to zadatak)
|
||||||
40
agents/deployer/CLAUDE.md
Normal file
40
agents/deployer/CLAUDE.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Deployer Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Git merge, verzionisanje, deploy hook-ovi.
|
||||||
|
Izvršava finalne korake posle odobrenja operatera.
|
||||||
|
|
||||||
|
## Model: Haiku (shell komande, deterministički)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Commit/branch za deploy
|
||||||
|
- Verzija (semver)
|
||||||
|
- Deploy target (produkcija, staging)
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Status: deployed / failed
|
||||||
|
- Verzija koja je deployovana
|
||||||
|
- Git tag kreiran
|
||||||
|
- Servis restartovan (da/ne)
|
||||||
|
|
||||||
|
## V0.1 akcije
|
||||||
|
```bash
|
||||||
|
git tag v{X.Y.Z}
|
||||||
|
git push origin --tags
|
||||||
|
# restart servisa ako treba
|
||||||
|
```
|
||||||
|
|
||||||
|
## V0.2+ akcije
|
||||||
|
- Merge staging → main
|
||||||
|
- Build binary
|
||||||
|
- Distribucija prema licencama
|
||||||
|
- Notifikacija klijentima o novoj verziji
|
||||||
|
- Rollback ako deploy padne
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Šta je u kodu
|
||||||
|
- Zašto se deploy radi
|
||||||
|
- Poslovne odluke
|
||||||
24
agents/docs/CLAUDE.md
Normal file
24
agents/docs/CLAUDE.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Docs Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Čita, indeksira i sumira eksternu dokumentaciju.
|
||||||
|
API specifikacije, zakoni, regulative, dokumentacija biblioteka.
|
||||||
|
|
||||||
|
## Model: Haiku (čitanje, sumiranje)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Pitanje ili kontekst koji treba istražiti
|
||||||
|
- Putanja do relevantnih dokumenata u documentation/
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Odgovor na pitanje
|
||||||
|
- Relevantni delovi dokumentacije (citati, reference)
|
||||||
|
- Sumarni pregled ako je tražen
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Kod projekta
|
||||||
|
- Taskove
|
||||||
|
- Druge agente
|
||||||
36
agents/frontend/CLAUDE.md
Normal file
36
agents/frontend/CLAUDE.md
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
# Frontend Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Piše React frontend kod — komponente, stranice, API pozive, testove.
|
||||||
|
|
||||||
|
## Model: Sonnet
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Zadatak (šta da napravi/izmeni)
|
||||||
|
- API endpoint specifikaciju (šta backend vraća)
|
||||||
|
- Wireframe ili opis UI-a
|
||||||
|
- code/kaos-frontend/CLAUDE.md (pravila za frontend)
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Status: gotovo / neuspešno / treba pojašnjenje
|
||||||
|
- Lista kreiranih/izmenjenih fajlova
|
||||||
|
- Commit hash
|
||||||
|
- Screenshot ili opis promena
|
||||||
|
|
||||||
|
## Pravila
|
||||||
|
- React + TypeScript + Vite + Tailwind + shadcn/ui
|
||||||
|
- TanStack Query za API pozive
|
||||||
|
- Playwright testovi za svaki novi flow
|
||||||
|
- `npm run build` mora proći
|
||||||
|
- `npx playwright test` mora proći
|
||||||
|
- Responsivan dizajn
|
||||||
|
- Poruke korisniku: srpski
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Backend implementaciju (samo API spec)
|
||||||
|
- Engine internals
|
||||||
|
- Bazu podataka
|
||||||
|
- Poslovne odluke osim onih u zadatku
|
||||||
49
agents/reporter/CLAUDE.md
Normal file
49
agents/reporter/CLAUDE.md
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
# Reporter Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Piše izveštaje posle izvršenih taskova. Formatira podatke u markdown.
|
||||||
|
|
||||||
|
## Model: Haiku (jeftin, formatiranje poznatih podataka)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Task ID i naslov
|
||||||
|
- Vreme početka i kraja
|
||||||
|
- Rezultat verifikacije (build, test, vet)
|
||||||
|
- Lista promenjenih fajlova
|
||||||
|
- Commit hash
|
||||||
|
- Token potrošnja i cena
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Putanja do izveštaja: `tasks/reports/T{XX}-report.md`
|
||||||
|
|
||||||
|
## Format izveštaja
|
||||||
|
```markdown
|
||||||
|
# T{XX}: Naslov
|
||||||
|
|
||||||
|
**Datum:** YYYY-MM-DD HH:MM
|
||||||
|
**Trajanje:** Xm Ys
|
||||||
|
**Status:** ✅ Završen / ❌ Neuspešan
|
||||||
|
**Cena:** ~$X.XX (N tokena)
|
||||||
|
**Model:** Koji model je korišćen
|
||||||
|
|
||||||
|
## Verifikacija
|
||||||
|
- ✅/❌ go build (Xs)
|
||||||
|
- ✅/❌ go vet (Xs)
|
||||||
|
- ✅/❌ go test (N/N testova, Xs)
|
||||||
|
|
||||||
|
## Promene
|
||||||
|
- N fajlova kreirano/izmenjeno
|
||||||
|
- Commit: hash
|
||||||
|
- Branch: main
|
||||||
|
|
||||||
|
## Fajlovi
|
||||||
|
- putanja/fajl.go (kreiran/izmenjen)
|
||||||
|
```
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Sadržaj koda
|
||||||
|
- Poslovnu logiku
|
||||||
|
- Druge taskove
|
||||||
43
agents/task-manager/CLAUDE.md
Normal file
43
agents/task-manager/CLAUDE.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# Task Manager Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Upravlja task listom — kreira taskove, ažurira status, prati zavisnosti.
|
||||||
|
Parsira markdown taskove za supervisor.
|
||||||
|
|
||||||
|
## Model: Sonnet (kreiranje) / Haiku (status update)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Opis šta treba da se uradi (od operatera)
|
||||||
|
- Trenutni status taskova (MASTER-STATUS.md)
|
||||||
|
- Zavisnosti između taskova
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Kreiran task u tasks/Implementation-Tasks.md
|
||||||
|
- Ažuriran MASTER-STATUS.md
|
||||||
|
- Lista zavisnosti i redosled izvršavanja
|
||||||
|
|
||||||
|
## Upravlja fajlovima
|
||||||
|
- tasks/Implementation-Tasks.md — dodaje/menja taskove
|
||||||
|
- tasks/MASTER-STATUS.md — ažurira status
|
||||||
|
- tasks/reports/ — ne piše (to radi reporter)
|
||||||
|
|
||||||
|
## Format taska u markdown-u
|
||||||
|
```markdown
|
||||||
|
### T{XX}: Naslov
|
||||||
|
**Status:** pending / running / done / failed
|
||||||
|
**Zavisi od:** T{YY}, T{ZZ}
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Fajlovi za čitanje:** [lista]
|
||||||
|
**Fajlovi za izmenu:** [lista]
|
||||||
|
**Opis:** Šta tačno treba uraditi
|
||||||
|
**Ograničenja:** Šta NE sme
|
||||||
|
**Očekivani izlaz:** Kako izgleda kad je gotovo
|
||||||
|
```
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Kod projekta
|
||||||
|
- Kako se kodira
|
||||||
|
- Poslovne detalje osim onih u opisu
|
||||||
28
agents/triage/CLAUDE.md
Normal file
28
agents/triage/CLAUDE.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Triage Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Klasifikuje prijave — tip, prioritet, pogođeni modul, procena složenosti.
|
||||||
|
|
||||||
|
## Model: Haiku (brz, jeftin)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Tekst prijave (šta korisnik kaže)
|
||||||
|
- Listu modula projekta (samo imena)
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
```
|
||||||
|
Tip: BUG / NOVO / IZMENA
|
||||||
|
Prioritet: LOW / MEDIUM / HIGH / CRITICAL
|
||||||
|
Modul: koji deo sistema (fakture, zaposleni, smene...)
|
||||||
|
Procena: jednostavno / srednje / kompleksno
|
||||||
|
Kratak opis: jednom rečenicom šta je problem
|
||||||
|
```
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Kod projekta
|
||||||
|
- Arhitekturu
|
||||||
|
- Poslovne odluke
|
||||||
|
- Druge taskove
|
||||||
2
code/.env.example
Normal file
2
code/.env.example
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
KAOS_TIMEOUT=30m
|
||||||
|
KAOS_PROJECT_PATH=.
|
||||||
31
code/.gitignore
vendored
Normal file
31
code/.gitignore
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Binaries
|
||||||
|
bin/
|
||||||
|
*.exe
|
||||||
|
*.exe~
|
||||||
|
*.dll
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
|
||||||
|
# Test binary
|
||||||
|
*.test
|
||||||
|
|
||||||
|
# Output of go coverage
|
||||||
|
*.out
|
||||||
|
|
||||||
|
# Go workspace
|
||||||
|
go.work
|
||||||
|
go.work.sum
|
||||||
|
|
||||||
|
# Environment
|
||||||
|
.env
|
||||||
|
|
||||||
|
# IDE
|
||||||
|
.idea/
|
||||||
|
.vscode/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
39
code/CLAUDE.md
Normal file
39
code/CLAUDE.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
# Coder Agent
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Poslednje ažuriranje:** 2026-02-20
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Piše kod prema zadatku. Implementira funkcionalnost, piše testove,
|
||||||
|
poštuje konvencije projekta.
|
||||||
|
|
||||||
|
## Model: Sonnet (standardan) / Opus (kompleksno)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Zadatak (šta tačno da uradi)
|
||||||
|
- Fajlove koje treba da čita (eksplicitno navedene)
|
||||||
|
- Ograničenja (šta NE sme)
|
||||||
|
- code/CLAUDE.md (pravila kodiranja za ovaj projekat)
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Status: gotovo / neuspešno / treba pojašnjenje
|
||||||
|
- Lista kreiranih/izmenjenih fajlova
|
||||||
|
- Commit hash
|
||||||
|
- Pokrenuti testovi i rezultat
|
||||||
|
|
||||||
|
## Pravila
|
||||||
|
- Poštuje code/CLAUDE.md pravila
|
||||||
|
- Svaka funkcija mora imati test
|
||||||
|
- `go build ./...` mora proći pre commita
|
||||||
|
- `go test ./... -count=1` mora proći pre commita
|
||||||
|
- `go vet ./...` mora proći pre commita
|
||||||
|
- Commit format: `T{XX}: Opis na srpskom`
|
||||||
|
- Error handling: svaka greška se obrađuje
|
||||||
|
- Nazivi u kodu: engleski
|
||||||
|
- Nema hardkodiranih vrednosti
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Druge module osim onih u zadatku
|
||||||
|
- Poslovne odluke
|
||||||
|
- Druge agente
|
||||||
|
- Frontend (osim ako je to zadatak)
|
||||||
19
code/Makefile
Normal file
19
code/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
BINARY_NAME=kaos-supervisor
|
||||||
|
BIN_DIR=bin
|
||||||
|
|
||||||
|
.PHONY: all build test vet clean
|
||||||
|
|
||||||
|
all: vet test build
|
||||||
|
|
||||||
|
build:
|
||||||
|
go build -o $(BIN_DIR)/$(BINARY_NAME) ./cmd/kaos-supervisor/
|
||||||
|
|
||||||
|
test:
|
||||||
|
go test ./... -v -count=1
|
||||||
|
|
||||||
|
vet:
|
||||||
|
go vet ./...
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(BIN_DIR)
|
||||||
|
go clean
|
||||||
22
code/cmd/kaos-supervisor/main.go
Normal file
22
code/cmd/kaos-supervisor/main.go
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
// Package main is the entry point for the KAOS supervisor process.
|
||||||
|
// It loads configuration and starts the supervisor.
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/dal/kaos/internal/config"
|
||||||
|
_ "github.com/dal/kaos/internal/supervisor"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
cfg, err := config.Load()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to load config: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(os.Stdout, "KAOS Supervisor started (timeout=%s, project_path=%s)\n",
|
||||||
|
cfg.Timeout, cfg.ProjectPath)
|
||||||
|
}
|
||||||
3
code/go.mod
Normal file
3
code/go.mod
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module github.com/dal/kaos
|
||||||
|
|
||||||
|
go 1.23.6
|
||||||
77
code/internal/config/config.go
Normal file
77
code/internal/config/config.go
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
// Package config handles loading and validating configuration
|
||||||
|
// for the KAOS supervisor from environment variables.
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Config holds the supervisor configuration values.
|
||||||
|
type Config struct {
|
||||||
|
// Timeout is the maximum duration for supervisor operations.
|
||||||
|
Timeout time.Duration
|
||||||
|
// ProjectPath is the root path of the project being supervised.
|
||||||
|
ProjectPath string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load reads configuration from environment variables.
|
||||||
|
// It first attempts to load a .env file from the current directory.
|
||||||
|
// Required variables: KAOS_TIMEOUT, KAOS_PROJECT_PATH.
|
||||||
|
func Load() (*Config, error) {
|
||||||
|
loadEnvFile(".env")
|
||||||
|
|
||||||
|
timeoutStr := os.Getenv("KAOS_TIMEOUT")
|
||||||
|
if timeoutStr == "" {
|
||||||
|
return nil, fmt.Errorf("KAOS_TIMEOUT environment variable is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
timeout, err := time.ParseDuration(timeoutStr)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("invalid KAOS_TIMEOUT value %q: %w", timeoutStr, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
projectPath := os.Getenv("KAOS_PROJECT_PATH")
|
||||||
|
if projectPath == "" {
|
||||||
|
return nil, fmt.Errorf("KAOS_PROJECT_PATH environment variable is required")
|
||||||
|
}
|
||||||
|
|
||||||
|
return &Config{
|
||||||
|
Timeout: timeout,
|
||||||
|
ProjectPath: projectPath,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// loadEnvFile reads a .env file and sets environment variables
|
||||||
|
// that are not already set. Lines starting with # are ignored.
|
||||||
|
func loadEnvFile(path string) {
|
||||||
|
f, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(f)
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := strings.TrimSpace(scanner.Text())
|
||||||
|
if line == "" || strings.HasPrefix(line, "#") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
key, value, ok := strings.Cut(line, "=")
|
||||||
|
if !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
key = strings.TrimSpace(key)
|
||||||
|
value = strings.TrimSpace(value)
|
||||||
|
|
||||||
|
// Don't override existing environment variables
|
||||||
|
if _, exists := os.LookupEnv(key); !exists {
|
||||||
|
os.Setenv(key, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
103
code/internal/config/config_test.go
Normal file
103
code/internal/config/config_test.go
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
// Package config tests verify configuration loading from
|
||||||
|
// environment variables and .env files.
|
||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLoad_WithValidEnv(t *testing.T) {
|
||||||
|
t.Setenv("KAOS_TIMEOUT", "30m")
|
||||||
|
t.Setenv("KAOS_PROJECT_PATH", "/tmp/test")
|
||||||
|
|
||||||
|
cfg, err := Load()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.Timeout != 30*time.Minute {
|
||||||
|
t.Errorf("expected timeout 30m, got %v", cfg.Timeout)
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.ProjectPath != "/tmp/test" {
|
||||||
|
t.Errorf("expected project path /tmp/test, got %s", cfg.ProjectPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLoad_MissingTimeout(t *testing.T) {
|
||||||
|
t.Setenv("KAOS_TIMEOUT", "")
|
||||||
|
t.Setenv("KAOS_PROJECT_PATH", "/tmp/test")
|
||||||
|
|
||||||
|
_, err := Load()
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error for missing KAOS_TIMEOUT")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLoad_InvalidTimeout(t *testing.T) {
|
||||||
|
t.Setenv("KAOS_TIMEOUT", "not-a-duration")
|
||||||
|
t.Setenv("KAOS_PROJECT_PATH", "/tmp/test")
|
||||||
|
|
||||||
|
_, err := Load()
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error for invalid KAOS_TIMEOUT")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLoad_MissingProjectPath(t *testing.T) {
|
||||||
|
t.Setenv("KAOS_TIMEOUT", "30m")
|
||||||
|
t.Setenv("KAOS_PROJECT_PATH", "")
|
||||||
|
|
||||||
|
_, err := Load()
|
||||||
|
if err == nil {
|
||||||
|
t.Fatal("expected error for missing KAOS_PROJECT_PATH")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLoadEnvFile(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
envPath := filepath.Join(dir, ".env")
|
||||||
|
|
||||||
|
content := "TEST_KAOS_VAR=hello\n# comment\nTEST_KAOS_OTHER=world\n"
|
||||||
|
if err := os.WriteFile(envPath, []byte(content), 0644); err != nil {
|
||||||
|
t.Fatalf("failed to write .env: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure vars are not set
|
||||||
|
os.Unsetenv("TEST_KAOS_VAR")
|
||||||
|
os.Unsetenv("TEST_KAOS_OTHER")
|
||||||
|
|
||||||
|
loadEnvFile(envPath)
|
||||||
|
|
||||||
|
if v := os.Getenv("TEST_KAOS_VAR"); v != "hello" {
|
||||||
|
t.Errorf("expected TEST_KAOS_VAR=hello, got %q", v)
|
||||||
|
}
|
||||||
|
if v := os.Getenv("TEST_KAOS_OTHER"); v != "world" {
|
||||||
|
t.Errorf("expected TEST_KAOS_OTHER=world, got %q", v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
os.Unsetenv("TEST_KAOS_VAR")
|
||||||
|
os.Unsetenv("TEST_KAOS_OTHER")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLoadEnvFile_DoesNotOverride(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
envPath := filepath.Join(dir, ".env")
|
||||||
|
|
||||||
|
content := "TEST_KAOS_EXISTING=from_file\n"
|
||||||
|
if err := os.WriteFile(envPath, []byte(content), 0644); err != nil {
|
||||||
|
t.Fatalf("failed to write .env: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Setenv("TEST_KAOS_EXISTING", "from_env")
|
||||||
|
|
||||||
|
loadEnvFile(envPath)
|
||||||
|
|
||||||
|
if v := os.Getenv("TEST_KAOS_EXISTING"); v != "from_env" {
|
||||||
|
t.Errorf("expected TEST_KAOS_EXISTING=from_env, got %q", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
3
code/internal/supervisor/supervisor.go
Normal file
3
code/internal/supervisor/supervisor.go
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
// Package supervisor implements the KAOS supervisor process
|
||||||
|
// that orchestrates agent execution and task management.
|
||||||
|
package supervisor
|
||||||
96
templates/new-project/CLAUDE.md
Normal file
96
templates/new-project/CLAUDE.md
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# {{PROJECT_NAME}} — Mastermind
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Orkestrira ceo {{PROJECT_NAME}} sistem. Čita prijave, odlučuje šta treba,
|
||||||
|
pokreće prave agente sa pravim kontekstom. NIKADA ne kodira.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Projekat
|
||||||
|
|
||||||
|
**Ime:** {{PROJECT_NAME}}
|
||||||
|
**Opis:** {{PROJECT_DESCRIPTION}}
|
||||||
|
**Jezik:** {{LANGUAGE}}
|
||||||
|
**Server:** {{SERVER}}
|
||||||
|
**Git:** {{GIT_REMOTE}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Struktura
|
||||||
|
|
||||||
|
```
|
||||||
|
{{PROJECT_PATH}}/
|
||||||
|
├── CLAUDE.md ← OVO — mastermind
|
||||||
|
├── README.md
|
||||||
|
├── agents/ ← specijalizovani agenti
|
||||||
|
├── code/ ← kod projekta
|
||||||
|
├── documentation/ ← eksterna dokumentacija
|
||||||
|
└── TASKS/ ← taskovi, status, izveštaji
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agent registar
|
||||||
|
|
||||||
|
| Agent | Folder | Model | Verzija |
|
||||||
|
|-------|--------|-------|---------|
|
||||||
|
| Triage | agents/triage/ | Haiku | 0.1.0 |
|
||||||
|
| Task Manager | agents/task-manager/ | Sonnet/Haiku | 0.1.0 |
|
||||||
|
| Coder | agents/coder/ | Sonnet/Opus | 0.1.0 |
|
||||||
|
| Frontend | agents/frontend/ | Sonnet | 0.1.0 |
|
||||||
|
| Checker | agents/checker/ | Haiku/Opus | 0.1.0 |
|
||||||
|
| Reporter | agents/reporter/ | Haiku | 0.1.0 |
|
||||||
|
| Docs | agents/docs/ | Haiku | 0.1.0 |
|
||||||
|
| Deployer | agents/deployer/ | Haiku | 0.1.0 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Odgovornosti
|
||||||
|
|
||||||
|
### Šta radi
|
||||||
|
- Čita prijave i taskove od operatera
|
||||||
|
- Odlučuje koji agent za koji posao
|
||||||
|
- Bira AI model po zadatku (Haiku/Sonnet/Opus)
|
||||||
|
- Priprema minimalan kontekst za agenta
|
||||||
|
- Pokreće agenta sa jasnim zadatkom
|
||||||
|
- Čita izveštaj agenta
|
||||||
|
- Ažurira status u TASKS/MASTER-STATUS.md
|
||||||
|
- Komunicira rezultat operateru
|
||||||
|
|
||||||
|
### Šta NE radi
|
||||||
|
- Ne kodira
|
||||||
|
- Ne piše testove
|
||||||
|
- Ne menja fajlove u code/
|
||||||
|
- Ne pristupa bazi direktno
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Model selekcija
|
||||||
|
|
||||||
|
| Zadatak | Agent | Model |
|
||||||
|
|---------|-------|-------|
|
||||||
|
| Klasifikacija prijave | triage | Haiku |
|
||||||
|
| Generisanje taska | task-manager | Sonnet |
|
||||||
|
| Kodiranje | coder | Sonnet/Opus |
|
||||||
|
| Frontend | frontend | Sonnet |
|
||||||
|
| Build + Test | checker | Haiku |
|
||||||
|
| Code review | checker | Opus |
|
||||||
|
| Izveštaj | reporter | Haiku |
|
||||||
|
| Dokumentacija | docs | Haiku |
|
||||||
|
| Deploy | deployer | Haiku |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pristup
|
||||||
|
|
||||||
|
| Folder | Čita | Piše |
|
||||||
|
|--------|------|------|
|
||||||
|
| agents/ | ✅ | ❌ |
|
||||||
|
| TASKS/ | ✅ | ✅ |
|
||||||
|
| documentation/ | ✅ | ❌ |
|
||||||
|
| code/ | ✅ (strukturu) | ❌ |
|
||||||
60
templates/new-project/README.md
Normal file
60
templates/new-project/README.md
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Status:** Pokretanje
|
||||||
|
**Autor:** {{AUTHOR}}
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Opis
|
||||||
|
|
||||||
|
{{PROJECT_DESCRIPTION}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Arhitektura
|
||||||
|
|
||||||
|
Multi-agent sistem (KAOS framework):
|
||||||
|
- Mastermind orkestrira, ne kodira
|
||||||
|
- Specijalizovani agenti izvršavaju
|
||||||
|
- Operater odobrava
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Struktura
|
||||||
|
|
||||||
|
```
|
||||||
|
{{PROJECT_PATH}}/
|
||||||
|
├── CLAUDE.md ← mastermind
|
||||||
|
├── README.md ← ovo
|
||||||
|
├── agents/ ← 8 agenata
|
||||||
|
├── code/ ← {{LANGUAGE}} kod
|
||||||
|
├── documentation/ ← eksterna dokumentacija
|
||||||
|
└── TASKS/
|
||||||
|
├── MASTER-STATUS.md
|
||||||
|
├── Implementation-Tasks.md
|
||||||
|
└── reports/
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Tehnologije
|
||||||
|
|
||||||
|
| Komponenta | Izbor |
|
||||||
|
|-----------|-------|
|
||||||
|
| Backend | {{LANGUAGE}} |
|
||||||
|
| Frontend | {{FRONTEND}} |
|
||||||
|
| Baza | {{DATABASE}} |
|
||||||
|
| Server | {{SERVER}} |
|
||||||
|
| Git | {{GIT_REMOTE}} |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
- [x] Projekat kreiran
|
||||||
|
- [ ] Taskovi definisani
|
||||||
|
- [ ] Razvoj u toku
|
||||||
|
- [ ] Testiranje
|
||||||
|
- [ ] Deploy
|
||||||
34
templates/new-project/TASKS/Implementation-Tasks.md
Normal file
34
templates/new-project/TASKS/Implementation-Tasks.md
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# {{PROJECT_NAME}} — Implementacioni taskovi
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pregled
|
||||||
|
|
||||||
|
{{PROJECT_DESCRIPTION}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## T01: {{TASK_TITLE}}
|
||||||
|
|
||||||
|
**Status:** pending
|
||||||
|
**Agent:** coder
|
||||||
|
**Model:** Sonnet
|
||||||
|
**Zavisi od:** —
|
||||||
|
|
||||||
|
**Opis:**
|
||||||
|
{{TASK_DESCRIPTION}}
|
||||||
|
|
||||||
|
**Fajlovi za kreiranje:**
|
||||||
|
```
|
||||||
|
code/
|
||||||
|
└── ...
|
||||||
|
```
|
||||||
|
|
||||||
|
**Test:**
|
||||||
|
- {{TEST_CRITERIA}}
|
||||||
|
|
||||||
|
**Očekivani izlaz:**
|
||||||
|
{{EXPECTED_OUTPUT}}
|
||||||
48
templates/new-project/TASKS/MASTER-STATUS.md
Normal file
48
templates/new-project/TASKS/MASTER-STATUS.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
# {{PROJECT_NAME}} — Master Status
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Fajl indeks
|
||||||
|
|
||||||
|
| Fajl | Opis |
|
||||||
|
|------|------|
|
||||||
|
| `CLAUDE.md` | Mastermind (v0.1.0) |
|
||||||
|
| `README.md` | Pregled projekta |
|
||||||
|
| `agents/*/CLAUDE.md` | 8 agenata |
|
||||||
|
| `TASKS/MASTER-STATUS.md` | Ovo — navigacija, status |
|
||||||
|
| `TASKS/Implementation-Tasks.md` | Taskovi |
|
||||||
|
| `TASKS/reports/` | Izveštaji |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Agenti
|
||||||
|
|
||||||
|
| Agent | Folder | Model | Verzija |
|
||||||
|
|-------|--------|-------|---------|
|
||||||
|
| Triage | agents/triage/ | Haiku | 0.1.0 |
|
||||||
|
| Task Manager | agents/task-manager/ | Sonnet/Haiku | 0.1.0 |
|
||||||
|
| Coder | agents/coder/ | Sonnet/Opus | 0.1.0 |
|
||||||
|
| Frontend | agents/frontend/ | Sonnet | 0.1.0 |
|
||||||
|
| Checker | agents/checker/ | Haiku/Opus | 0.1.0 |
|
||||||
|
| Reporter | agents/reporter/ | Haiku | 0.1.0 |
|
||||||
|
| Docs | agents/docs/ | Haiku | 0.1.0 |
|
||||||
|
| Deployer | agents/deployer/ | Haiku | 0.1.0 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Taskovi
|
||||||
|
|
||||||
|
| Task | Naslov | Status | Zavisi od |
|
||||||
|
|------|--------|--------|-----------|
|
||||||
|
| | | | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Odluke
|
||||||
|
|
||||||
|
| Odluka | Izbor |
|
||||||
|
|--------|-------|
|
||||||
|
| | |
|
||||||
29
templates/new-project/agents/checker/CLAUDE.md
Normal file
29
templates/new-project/agents/checker/CLAUDE.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Checker Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Verifikuje da je kod ispravan — build, test, lint.
|
||||||
|
|
||||||
|
## Model: Haiku (build/test) / Opus (code review)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Putanja do projekta
|
||||||
|
- Šta da proveri
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
```
|
||||||
|
build: PASS / FAIL (output, trajanje)
|
||||||
|
lint: PASS / FAIL (output, trajanje)
|
||||||
|
test: PASS / FAIL (output, trajanje, broj testova)
|
||||||
|
```
|
||||||
|
|
||||||
|
## V0.1 provere (deterministične)
|
||||||
|
{{BUILD_COMMAND}}
|
||||||
|
{{LINT_COMMAND}}
|
||||||
|
{{TEST_COMMAND}}
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Zašto je task napravljen
|
||||||
|
- Druge module
|
||||||
33
templates/new-project/agents/coder/CLAUDE.md
Normal file
33
templates/new-project/agents/coder/CLAUDE.md
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Coder Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Piše kod prema zadatku. Implementira funkcionalnost, piše testove.
|
||||||
|
|
||||||
|
## Model: Sonnet (standardan) / Opus (kompleksno)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Zadatak (šta tačno da uradi)
|
||||||
|
- Fajlove koje treba da čita
|
||||||
|
- Ograničenja
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Status: gotovo / neuspešno / treba pojašnjenje
|
||||||
|
- Lista kreiranih/izmenjenih fajlova
|
||||||
|
- Commit hash
|
||||||
|
|
||||||
|
## Pravila
|
||||||
|
- Svaka funkcija mora imati test
|
||||||
|
- Build mora proći pre commita
|
||||||
|
- Testovi moraju proći pre commita
|
||||||
|
- Commit format: `T{XX}: Opis na srpskom`
|
||||||
|
- Error handling: svaka greška se obrađuje
|
||||||
|
- Nazivi u kodu: engleski
|
||||||
|
- Nema hardkodiranih vrednosti
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Druge module osim onih u zadatku
|
||||||
|
- Poslovne odluke
|
||||||
|
- Druge agente
|
||||||
29
templates/new-project/agents/deployer/CLAUDE.md
Normal file
29
templates/new-project/agents/deployer/CLAUDE.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Deployer Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Git merge, verzionisanje, deploy.
|
||||||
|
|
||||||
|
## Model: Haiku
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Commit/branch za deploy
|
||||||
|
- Verzija (semver)
|
||||||
|
- Deploy target
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Status: deployed / failed
|
||||||
|
- Verzija koja je deployovana
|
||||||
|
- Git tag kreiran
|
||||||
|
|
||||||
|
## V0.1 akcije
|
||||||
|
```bash
|
||||||
|
git tag v{X.Y.Z}
|
||||||
|
git push origin --tags
|
||||||
|
```
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Šta je u kodu
|
||||||
|
- Zašto se deploy radi
|
||||||
21
templates/new-project/agents/docs/CLAUDE.md
Normal file
21
templates/new-project/agents/docs/CLAUDE.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Docs Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Čita, indeksira i sumira eksternu dokumentaciju.
|
||||||
|
|
||||||
|
## Model: Haiku
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Pitanje ili kontekst za istraživanje
|
||||||
|
- Putanja do relevantnih dokumenata
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Odgovor na pitanje
|
||||||
|
- Relevantni delovi dokumentacije
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Kod projekta
|
||||||
|
- Taskove
|
||||||
30
templates/new-project/agents/frontend/CLAUDE.md
Normal file
30
templates/new-project/agents/frontend/CLAUDE.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# Frontend Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Piše frontend kod — komponente, stranice, API pozive, testove.
|
||||||
|
|
||||||
|
## Model: Sonnet
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Zadatak
|
||||||
|
- API endpoint specifikaciju
|
||||||
|
- Wireframe ili opis UI-a
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Status: gotovo / neuspešno / treba pojašnjenje
|
||||||
|
- Lista kreiranih/izmenjenih fajlova
|
||||||
|
- Commit hash
|
||||||
|
|
||||||
|
## Pravila
|
||||||
|
- {{FRONTEND_STACK}}
|
||||||
|
- E2E testovi za svaki novi flow
|
||||||
|
- Build mora proći
|
||||||
|
- Responsivan dizajn
|
||||||
|
- Poruke korisniku: srpski
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Backend implementaciju (samo API spec)
|
||||||
|
- Bazu podataka
|
||||||
24
templates/new-project/agents/reporter/CLAUDE.md
Normal file
24
templates/new-project/agents/reporter/CLAUDE.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Reporter Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Piše izveštaje posle izvršenih taskova.
|
||||||
|
|
||||||
|
## Model: Haiku
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Task ID i naslov
|
||||||
|
- Vreme početka i kraja
|
||||||
|
- Rezultat verifikacije
|
||||||
|
- Lista promenjenih fajlova
|
||||||
|
- Commit hash
|
||||||
|
- Token potrošnja i cena
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Putanja do izveštaja: `TASKS/reports/T{XX}-report.md`
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Sadržaj koda
|
||||||
|
- Poslovnu logiku
|
||||||
22
templates/new-project/agents/task-manager/CLAUDE.md
Normal file
22
templates/new-project/agents/task-manager/CLAUDE.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Task Manager Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Upravlja task listom — kreira taskove, ažurira status, prati zavisnosti.
|
||||||
|
|
||||||
|
## Model: Sonnet (kreiranje) / Haiku (status update)
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Opis šta treba da se uradi
|
||||||
|
- Trenutni status taskova
|
||||||
|
- Zavisnosti između taskova
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
- Kreiran task u TASKS/Implementation-Tasks.md
|
||||||
|
- Ažuriran MASTER-STATUS.md
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Kod projekta
|
||||||
|
- Kako se kodira
|
||||||
27
templates/new-project/agents/triage/CLAUDE.md
Normal file
27
templates/new-project/agents/triage/CLAUDE.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Triage Agent — {{PROJECT_NAME}}
|
||||||
|
|
||||||
|
**Verzija:** 0.1.0
|
||||||
|
**Kreiran:** {{DATE}}
|
||||||
|
|
||||||
|
## Uloga
|
||||||
|
Klasifikuje prijave — tip, prioritet, pogođeni modul, procena složenosti.
|
||||||
|
|
||||||
|
## Model: Haiku
|
||||||
|
|
||||||
|
## Dobija od masterminda
|
||||||
|
- Tekst prijave
|
||||||
|
- Listu modula projekta
|
||||||
|
|
||||||
|
## Vraća mastermindu
|
||||||
|
```
|
||||||
|
Tip: BUG / NOVO / IZMENA
|
||||||
|
Prioritet: LOW / MEDIUM / HIGH / CRITICAL
|
||||||
|
Modul: koji deo sistema
|
||||||
|
Procena: jednostavno / srednje / kompleksno
|
||||||
|
Kratak opis: jednom rečenicom
|
||||||
|
```
|
||||||
|
|
||||||
|
## NE zna
|
||||||
|
- Kod projekta
|
||||||
|
- Arhitekturu
|
||||||
|
- Druge taskove
|
||||||
Loading…
Reference in New Issue
Block a user