Duboko razumevanje Claude Code-a: CLAUDE.md, Hooks, Skills, Subagents
Da bih u potpunosti savladao Claude Code, namenski sam od nule do jednog sašio PaiCLI.

Tokom tog procesa sam stekao duboko razumevanje MCP, Skills, upravljanja kontekstom, kompresije sažetka, ReAct, Multi-Agent, Plan-and-Execute, internetske pretrage, RAG, Memory, IM terminala.
Da bih vam pomogao da bolje savladate Claude Code i Codex, juče sam od nule do jednog implementirao i sajt "Put ka naprednom AI-u".
Iskoristio sam poddomen, da izbegnem ponovno prijavljivanje: https://ai.javasi.dev

Nadam se da ću dati skroman doprinos razvoju AI u zemlji.
I da malo delić slave podelim sa vama (osmeh).
Može se reći da je Claude Code trenutno, pored Codex-a, najjači Agent Harness.
Prema domaćim modelima je prijateljskiji od Codex-a. Zato ako koristite domaće modele, Claude Code je najbolji izbor.
Ima sopstvenu strategiju upravljanja kontekstom, Rules, Hooks, Skills i mehanizam delegiranja Subagent-a.
Ovaj tekst kreće od zvanične dokumentacije Claude Code-a i rastavlja interne mehanizme konteksta, CLAUDE.md, Hooks, Skills, Subagent-a.
https://code.claude.com/docs/zh-CN/how-claude-code-works
01. Šta se zapravo nalazi u prozoru konteksta
Neki možda misle da je kontekst Claude Code-a "ono što sam rekao, ono što je on odgovorio". U stvari, istorija razgovora je samo jedna od sedam vrsta sadržaja u prozoru konteksta.

- Istorija razgovora — interakcija između korisnika i Claude-a
- Sadržaj fajlova — izvorni kod koji je Claude pročitao ili izmenio
- Izlaz komandi — rezultat izvršenja terminal komandi
- CLAUDE.md — pravila perzistentna na nivou projekta
- Automatska memorija — zapisi učenja koje Claude čuva između sesija
- Učitane Skills — pun tekst instrukcija ubačen nakon okidača
- Sistemske instrukcije — sopstvena pravila rada okvira Claude Code i definicije alata
Šta kad se kontekst napuni?
Strategija koju Claude Code primenjuje je u dva koraka.

Prvi korak, brišu se raniji izlazi poziva alata — rezultati čitanja fajlova, rezultati komandi — sadržaj koji zauzima mnogo prostora ali je niske vremenske relevantnosti.
Drugi korak, cela istorija razgovora se komprimuje u sažetak, konkretne formulacije, brojevi, isečci koda se kondenzuju uOutline.
Posledica kompresije je gubitak informacija.
Pravilo naglašeno u trećoj turi, arhitektonska odluka iz pete ture — posle kompresije najverovatnije postane jedna mutna rečenica. To je stvarni razlog zašto Claude "zaboravlja" instrukcije u dugim razgovorima.
Rešenja su:
① Pravila koja treba da traju kroz ture, ne pišite u razgovoru — pišite u CLAUDE.md.

Codex koristi AGENTS.md.
Sadržaj CLAUDE.md se posle svake kompresije ponovo ubacuje u kontekst, ne utiče na njega kompresija sažetka. U CLAUDE.md se može dodati i sekcija "instrukcija za kompresiju" koja kaže Claude-u koje informacije obavezno mora da zadrži pri kompresiji.
② Drugo efikasno sredstvo jeste komanda /compact, koja aktivno okida kompresiju i navodi fokus koji treba zadržati, na primer /compact fokus na izmene API-ja.

③ Automatska memorija je takođe deo perzistencije između sesija.
Čuva se u direktorijumu ~/.claude/projects/, a pri pokretanju svake nove sesije učitava prvih 200 redova ili 25KB iz MEMORY.md.

Za razliku od CLAUDE.md, automatsku memoriju piše sam Claude, beleži paterne i preference koje je naučio na poslu. Ali količina učitavanja automatske memorije je znatno manja od CLAUDE.md, pogodnija za čuvanje sitnih iskustvenih informacija, nepogodna za nošenje ključnih projektnih pravila.

Svaka nova sesija Claude Code-a kreće od potpuno novog prozora konteksta, istorija razgovora se ne prenosi automatski.
Prenošenje informacija između sesija moguće je samo preko dva kanala: CLAUDE.md i automatske memorije.
Zapamtite: pravila koja treba da traju dugoročno, pišite u CLAUDE.md, a ne u razgovor.

Može se reći da je CLAUDE.md najvažniji perzistentni sadržaj u kontekstu, njegov mehanizam učitavanja određuje da li će pravila uopšte biti vidljiva Claude Code-u.
02. Mehanizam učitavanja CLAUDE.md
Pri pokretanju, Claude Code traži i učitava CLAUDE.md iz četiri lokacije, redom.
| Nivo | Lokacija | Oblast deljenja |
|---|---|---|
| Managed strategija | /Library/Application Support/ClaudeCode/CLAUDE.md | Svi korisnici u organizaciji |
| Korisnički nivo | ~/.claude/CLAUDE.md | Zajedničko za sve projekte |
| Projektni nivo | ./CLAUDE.md ili ./.claude/CLAUDE.md | Deli se timu preko Git-a |
| Lokalni nivo | ./CLAUDE.local.md (u gitignore) | Samo za lokalnu mašinu |

Ovde je važna dizajnerska odluka — fajloći sa četiri nivoa se nadovezuju, ne prepisuju.
Sadržaj svih nivoa, od korena fajl sistema do trenutnog radnog direktorijuma, redom se nadovezuje i sve zajedno ubacuje u prozor konteksta. CLAUDE.local.md se dodaje nakon CLAUDE.md svakog nivoa.
Šta znači nadovezivanje?
Ako korisnički CLAUDE.md kaže "koristi uvlačenje od četiri razmaka", a projektni CLAUDE.md kaže "koristi uvlačenje od dva razmaka", obe će pravila istovremeno biti u kontekstu.
Claude sam mora da proceni koje ima prioritet, a ako pogreši, to se vidi kao "pravilo ne deluje". Pri debagovanju zašto pravilo ne deluje, prvo proverite sukobe između CLAUDE.md na različitim nivoima — često je to efikasnije nego menjati Prompt.
Zvanična preporuka je da svaki CLAUDE.md fajl držite ispod 200 redova, sa instrukcijama dovoljno konkretnim da se mogu proveriti.

03. Mehanizam prinudnog prekida Hooks-a
CLAUDE.md je preporuka.
Claude, kad pročita pravilo, konsultuje ga pri odluci, ali ne garantuje da će ga svaki put poštovati — ima svoje prosuđivanje i ponekad smatra da neko pravilo nije primenljivo u trenutnom scenariju pa ga preskoči.
Ako neka pravila moraju biti izvršena, kao "pre komita obavezno lint", "zabranjen force push na main", "sve operacije pisanja moraju proći odobrenje", onda vam trebaju Hooks za prinudno prekidanje.

Hooks su korisnički definisani programi udice, vezani za specifične tačke životnog ciklusa Claude Code-a, koji se automatski izvršavaju.
Za razliku od CLAUDE.md-ovog "molim te poštuj", logika Hooks-a je "ako uslov nije ispunjen, blokiraj operaciju" — Claude nema prostora za preskakanje.
Struktura Hooks-a je trostruko ugnježdena.

Postoji pet tipova handler-a, pokrivaju različite scenarije provere.
- command izvršava Shell komandu — najčešće korišćen. Na primer automatski pokreće proveru formatiranja pre komita, ili proverava da li sadržaj ispunjava sigurnosne specifikacije pre upisa fajla.
- http šalje POST zahtev na zadati URL — za obaveštavanje spoljašnjih sistema ili okidanje CI pipeline-a.
- mcp_tool poziva alat na povezanom MCP serveru — unosi sposobnosti MCP ekosistema u udice životnog ciklusa.
- prompt baca pitanje Claude modelu radi procene da/ne — za dinamičke scenarije provere koji zahtevaju semantičko razumevanje.
- agent šalje Subagenta da odradi kompleksnu višestepenu proveru — trenutno još uvek eksperimentalna faza.
Od pet tipova, najčešće se koristi command, koji ponašanje kontroliše preko exit koda.

Povratna vrednost 0 znači da je provera prošla, operacija se nastavlja; 2 znači blokirajuće, operacija je zabranjena a standardni error izlaz se prikazuje Claude-u kao poruka greške; ostali kodovi označavaju neblokirajuće greške, beleže se u log ali ne zaustavljaju operaciju.
Hook događaji pokrivaju čitav životni ciklus Claude Code-a.
- Na nivou sesije postoje
SessionStartiSessionEnd; - Na nivou svake ture razgovora postoje
UserPromptSubmit(kada se pošalje korisnički unos) iStop(kada Claude završi odgovor); - Na nivou poziva alata postoje
PreToolUse(pre poziva alata) iPostToolUse(posle poziva alata). - Pored toga, postoje
SubagentStart,TaskCreated,FileChanged,PreCompacti druge finije događaje — ukupno preko 20.

Najvredniji za dublje proučavanje jeste PreToolUse događaj. Okida se pre nego što Claude pozove bilo koji alat, a Hook može vratiti polje permissionDecision kojim kontroliše prava.
allowpropušta direktno, bez skočnog prozora za potvrdudenydirektno odbacuje, operacija je zaustavljenaaskotvara prompt za potvrdu, neka korisnik odlučideferprepušta default logici prava
Pored kontrole prava, PreToolUse Hook može i preko polja updatedInput da izmeni ulazne parametre alata.
To znači da pre nego što Claude izvrši komandu možete automatski prepisati njen sadržaj — na primer svim git commit komandama dodati parametre za potpisivanje, ili pre upisa fajla automatski dodati napomenu o autorskim pravima.

Konfiguraciona lokacija Hooks-a je slična nivoima CLAUDE.md — korisnički nivo u ~/.claude/settings.json, projektni u .claude/settings.json, lokalni u .claude/settings.local.json.
Podrazumevani timeout je 600 sekundi (command/http/mcp_tool tip), prompt tip 30 sekundi, agent tip 60 sekundi.
Tu je i praktična funkcija — asinhroni Hook. U Hook konfiguraciji dodate "async": true, Hook se izvršava u pozadini i ne blokira tok operacija Claude-a.
Ako dodate "asyncRewake": true, kada pozadinski Hook vrati exit kod 2, Claude-u se šalje sistemski podsetnik koji ga obaveštava da je neka asinhrona provera pala. Ovaj mehanizam je zgodan za duge provere, na primer remote servis za skeniranje koda.
CLAUDE.md upravlja pravcem, Hooks upravlja disciplinom.
04. Mehanizam okidanja Skills-a
CLAUDE.md se učitava u svakoj sesiji, Skills se učitavaju po potrebi.
Kompletna instrukcija Skill-a ulazi u prozor konteksta tek nakon što je okinuta, inače se u indeks listi nalazi samo jedan red opisa.
To je najosnovnija razlika između Skills i CLAUDE.md, a i razlog postojanja Skills-a — sposobnosti koje se retko koriste ali su ključne kad zatrebaju, izbaciti iz stalnog konteksta, da se oslobodi prostor za svakodnevni razgovor.

Okidanje Skill-a ide u tri koraka.
- Prvi korak, pri pokretanju Claude Code prikuplja imena i opise svih Skill-ova, slaže ih u indeks listu i ubacuje u kontekst.
- Drugi korak, pri svakoj turi Claude pregleda tu listu i ocenjuje da li se trenutni zadatak poklapa sa nekim Skill-om.
- Treći korak, tek kad se poklapa, inicira poziv i tada se pun tekst SKILL.md učitava u kontekst.
Obratite pažnju na značenje prvog koraka.
Kada Claude donosi odluku o uparivanju, vidi samo opise u indeks listi, ne vidi telo SKILL.md. Ako opis nije napisan kako treba, Claude od početka do kraja nije ni svestan postojanja tog Skill-a. Telo ma kako savršeno bilo napisano ne pomaže, jer u trenutku odluke "da li pozvati", model nema priliku da vidi telo.

Indeks lista ima strogi budžetski limit.
Cela lista sme da zauzme samo 1% prozora konteksta, kontroliše parameter skillListingBudgetFraction.
Opis pojedinačnog Skill-a (zbir polja description i when_to_use) sme da bude najviše 1536 znakova, kontroliše maxSkillDescriptionChars. Sve preko 1536. znaka biće odsečeno. Uslovi okidanja i scenariji korišćenja napisani posle 1537. znaka model uopšte ne vidi.
Kada se Skill okine i učita, njegov sadržaj ostaje u toj sesiji, ne nestaje ni pri otvaranju nove ture razgovora. Ali pri kompresiji konteksta i Skill se obrađuje.
Mehanizam kompresije Claude Code-a ima specijalnu zaštitu za Skill — posle kompresije se ponovo ubacuje prvih 5000 token-a svakog Skill-a, ukupni budžet ponovnog ubacivanja svih Skill-ova je 25000 token-a, i zadržavaju se po redosledu najskorije korišćenog. Ako se u jednoj sesiji okine previše Skill-ova, najranije korišćeni se posle kompresije više ne zadržava.
Standardni Skill direktorijum izgleda ovako.
my-skill/
SKILL.md # Glavni fajl, sadrži frontmatter i telo instrukcija
references/ # Referentni materijali, automatski se uvode pri učitavanju
scripts/ # Izvršne skripte, koje Claude poziva
examples/ # Primer izlazaU SKILL.md frontmatter-u postoji nekoliko polja vrednih pažnje.
disable-model-invocationpostavljeno natruesprečava Claude da automatski učita taj Skill, može se okinuti samo korisničkim unosom slash komande — zgodno za teške Skill-ove koji se koriste samo u specifičnim scenarijima.allowed-toolsmože navesti listu alata koje Skill sme da koristi bez provere prava kada je aktivan, čime se smanjuje učestalost skočnih prozora za potvrdu prava.modelmože prepisati model trenutne sesije, tako da neki Skill koristi jači ili ekonomičniji model.context: forkomogućava da Skill radi u nezavisnom Subagent kontekstu, izbegavajući zagađenje glavnog konteksta velikim izlazom Skill-a.
SKILL.md takođe podržava dinamičko ubacivanje sadržaja.
Pomoću sintakse !`<command>` može se pri učitavanju izvršiti Shell komanda i izlaz komande umetnuti u telo Skill-a.
Na primer !`date "+%Y-%m-%d"` će pri svakom učitavanju automatski umetnuti trenutni datum. Ta sposobnost omogućava Skill-u da oseti stanje runtime okruženja, bez ručnog ažuriranja sadržaja.

Prioritet Skill-a takođe ima svoja pravila.
Kada se istoimeni Skill definiše na različitim mestima, prioritet od visokog ka niskom ide: enterprise managed strategija > lični nivo (~/.claude/skills/) > projektni nivo (.claude/skills/) > plugin nivo. Skill višeg prioriteta prepisuje niži istoimeni.

05. Kontekstualna izolacija Subagent-a
Subagent je pomoćnik sa nezavisnim prozorom konteksta.
Glavni Agent delegira zadatak, Subagent obavi posao u svom prozoru — možda pročita desetine fajlova, pokrene više komandi, pretraži celu bazu koda, i samo vrati zaključak glavnom Agentu.

Svi procesni podaci nastali u međuvremenu ostaju u Subagent-ovom prozoru — glavni kontekst ne dobija ni bajt više.
Claude Code ugrađuje tri tipa Subagent-a, sa podelom uloga.
| Tip | Model | Dostupni alati | Namena |
|---|---|---|---|
| Explore | Haiku (brzi model) | Samo za čitanje, bez prava upisa i izmene | Otkrivanje fajlova, pretraga koda, istraživanje baze koda |
| Plan | Nasleđuje glavni model | Samo za čitanje, bez prava upisa i izmene | Istraživanje rešenja, planiranje arhitekture |
| General-purpose | Nasleđuje glavni model | Svih alata | Kompleksna istraživanja, višestepene operacije, izmena koda |
Važan dizajnerski detalj.
Pri pokretanju, Explore i Plan tipovi Subagent-a preskaču učitavanje CLAUDE.md i Git statusa.
Oni kreću rad sa čistim kontekstom, u cilju bržeg odziva i bolje iskorišćenosti konteksta. Samo General-purpose tip učitava kompletan CLAUDE.md i Git status informacije.
Ovaj izbor je kompromis.
Explore i Plan uglavnom rade prikupljanje informacija i analizu, ne moraju da poštuju standarde koda i konvencije komitovanja projekta, preskakanje CLAUDE.md ne izaziva probleme sa kvalitetom; General-purpose mora da menja kod i izvršava komande, mora poznavati projektna pravila da bi proizveo kvalitetan rezultat.

Kako birati u praksi?
Istraživački posao koji zahteva samo čitanje — pretraga koda, pronalaženje definicija fajlova, pregled strukture direktorijuma — prepustite Explore-u, koristi Haiku model, brz i jeftin.
Zadaci koji zahtevaju sveobuhvatnu analizu baze koda radi izrade plana prepustite Plan-u — nasleđuje rezonovanje glavnog modela, ali neće greškom menjati fajlove. Kompleksni podzadaci koji zahtevaju stvarno menjanje koda i pokretanje komandi prepustite General-purpose-u, koji ima sva prava nad alatima.

Evidencija razgovora svakog nivoa Subagent-a čuva se nezavisno u direktorijumu ~/.claude/projects/{project}/{sessionId}/subagents/, podrazumevano se briše nakon 30 dana.
Način za prilagođavanje Subagent-a je da se u direktorijumu .claude/agents/ kreira Markdown fajl. YAML zaglavlje deklariše ime, opis, dostupne alate, model koji se koristi i slično, a telo je sistemski prompt.
---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
---
You are a code reviewer...Ova definicija omogućava glavnom Agentu da, kada zatreba pregled koda, delegira na code-reviewer, koji ima samo alate za čitanje i neće greškom menjati kod, koristi Sonnet model, brži i jeftiniji.
Može se i preko polja skills unapred učitati određeni Skill, preko polja mcpServers konfigurisati Subagent-u nezavisan MCP server — ti serveri se povezuju pri pokretanju Subagent-a i prekidaju po završetku, ne zauzimaju prostor definicija alata glavnog konteksta.
Postoji i specijalan Fork Subagent, koji se aktivira preko komande /fork ili konfiguracije context: fork.

Fork Subagent nasleđuje kompletnu istoriju razgovora glavnog Agent-a, ne mora iznova da objašnjava pozadinu — zgodan za scenarije gde na postojećoj diskusiji želite da radite duboko granasto istraživanje.
Na primer, usred diskusije želite da drugi model oceni da li je trenutni pristup izvodljiv — forkujete Subagent-a koji direktno nastavlja iz konteksta tekuće diskusije, bez ponovnog opisivanja pozadine. Fork Subagent i glavni Agent dele Prompt keš, ne troše se duplo kvote keša.
ending
Kontekst je radna memorija Claude Code-a, kapacitet mu je ograničen.
CLAUDE.md upravlja pravcem, Hooks upravlja disciplinom, Skills upravlja stručnošću, Subagent upravlja podelom rada.
Pet mehanizama, svaki čuva svoje granice, a u svakoj turi razgovora sarađuju.

Mnogi troše mnogo vremena na doterivanje formulacija Prompt-a, ali ono što određuje da li Claude Code može stabilno da proizvodi nije to koliko je neka rečenica pametno napisana, već kvalitet konfiguracije i dubina razumevanja ovih pet mehanizama.
[Vreme potrošeno na razumevanje načina na koji alat radi, mnogo više se isplati nego vreme provedeno u pogađanju njegovog karaktera.]
Vidimo se u sledećoj partiji šaha.
