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