
Ingineria prompturilor pentru programare: 7 modele pe care le folosim zilnic în Claude Code și Cursor (2026)
Ingineria prompturilor pentru programare face diferența dintre un agent care livrează un pull request funcțional și unul care strică ceva în producție fără să facă zgomot. Am învățat acest lucru pe calea cea mai scumpă: o singură instrucțiune vagă în propria noastră pipeline a generat cândva 54 de pagini live duplicate înainte ca cineva să observe. În zilele noastre, o configurație Claude Code cu 16 agenți scrie, traduce și publică conținutul nostru, iar prompturile care o conduc nu seamănă deloc cu listele de 50 de șabloane de pe prima pagină Google. Iată cele 7 modele pe care le tastăm în fiecare zi, fiecare cu un exemplu real de „înainte și după”.
Răspuns rapid: Prompturile bune de codare au o structură comună. Enunți obiectivul și definiția termenului „gata”, numești fișierele exacte din scop, impui un plan înainte de orice editare, prezinți testele și ceri dovezi în loc de un simplu „pare bine”. Dacă faci asta, un agent modern (Claude Code, Cursor, GitHub Copilot) va scrie cod care trece de revizuire din prima mult mai des. Dacă omiți acești pași, vei primi cod plauzibil, dar de proastă calitate.
Cele 7 modele, în ordinea în care le accesăm:
- Încadrarea sarcinii: obiectiv, constrângeri și definiția „gata” de la început
- Selecția contextului: numește fișierele, izolează restul
- Planul întâi: fă-l să propună înainte de a edita
- Testele întâi: include testele de acceptare în prompt
- Depanarea: eroare plus reproducere plus rezultat așteptat, cauza rădăcină înainte de remediere
- Refactorizarea: schimbă structura, păstrează comportamentul, arată diff-ul
- Revizuirea: o listă de verificare pentru grep, plus dovezi
Ingineria prompturilor pentru codare vs. Fișiere de configurare: Ce merge unde
Fișierele de configurare și prompturile per-sarcină au roluri diferite, iar confuzia dintre ele este cea mai frecventă greșeală în acest domeniu. Un fișier CLAUDE.md sau .cursor/rules reprezintă o politică permanentă pe care agentul o citește la fiecare sesiune: stack-ul tău tehnologic, convențiile de denumire, comanda de testare. Un prompt este sarcina specifică pe care i-o înmânezi chiar acum. Regulile durabile merg în configurare; sarcina merge în prompt.
Majoritatea recopilărilor de „prompturi pentru codare” estompează această distincție și îți spun să lipești un prompt gigant de tip „persona” în .cursorrules. Acest lucru umflă configurația pe care agentul o încarcă la fiecare sarcină și totuși nu reușește să încadreze corect sarcina concretă din fața sa. Păstrează-le separate:
| Fișier de configurare (CLAUDE.md, .cursor/rules) | Prompt per-sarcină | |
|---|---|---|
| Conține | Reguli permanente: stack, stil, comandă de test, limite de siguranță | Sarcina specifică: ce să construiești sau să repari, chiar acum |
| Se încarcă | Automat, la fiecare sesiune | O dată, când îl tastezi |
| Se modifică | Rareori, revizuit ca și codul | La fiecare sarcină |
| Exemplu | „Rulează pnpm test înainte de a marca sarcina ca finalizată” | „Repară rotunjirea taxelor în cart.ts pentru comenzi peste 1.000 $” |
Dacă vrei să configurezi corect partea de configurare, abordăm acest subiect în detaliu în ghidul nostru despre cele mai bune practici CLAUDE.md și ghidul de reguli Cursor. Acest articol acoperă cealaltă jumătate: prompturile pe care le tastezi de fiecare dată de la zero. Ambele se încadrează în ghidul nostru de inginerie a prompturilor dacă dorești mai întâi fundamentalele.
Ingineria prompturilor pentru codare: Cele 7 modele pe care le folosim zilnic
Fiecare model de mai jos prezintă versiunea slabă pe care oamenii o tastează de obicei și versiunea puternică care produce cod funcțional. Diferența dintre slab și puternic este aproape întotdeauna aceeași mișcare: înlocuiești o dorință cu o specificație.
1. Încadrarea sarcinii: Enunță obiectivul, constrângerile și „gata”
Încadrarea sarcinii înseamnă scrierea obiectivului, a constrângerilor și a aspectului final („gata”) înainte ca agentul să atingă o linie de cod. Un agent optimizează pentru ceea ce ai cerut literalmente, astfel încât o cerere neclară va genera un patch neclar. Numește fișierul, comportamentul dorit, verificarea de acceptare și lucrurile pe care nu trebuie să le modifice.
Acesta este modelul care ne-a costat 54 de pagini. Vechea noastră instrucțiune de traducere era practic o dorință:
Weak: Re-translate this post into German and keep the brand names.Nimic acolo nu specifică ce are voie să facă un slug. Astfel, la o reexecutare, agentul a „îmbunătățit” slug-ul URL-ului, iar deoarece un nou slug înseamnă un nou document, am ajuns cu două pagini germane live pentru același articol. Înmulțește acest lucru cu toate limbile și articolele vechi și vei obține 54 de duplicate și o grămadă de excluderi pentru conținut duplicat. Soluția a fost o specificație, nu o dorință formulată mai frumos:
Strong: Re-translate this post into German.
- If a German file already exists, copy its existing slug verbatim. Never
re-derive or "improve" it.
- Before creating any document, look up the existing one by its canonical
reference and reuse that record.
- If the slug you would generate differs from the live one, STOP and tell me.
A changed slug creates a second live URL for the same page.Promptul puternic numește explicit modul de eșec. Acest singur obicei, de a spune ce nu trebuie să se întâmple și de ce, este cea mai valoroasă schimbare pe care o pot face majoritatea echipelor. De asemenea, încheiem fiecare prompt de sarcină cu un contract de ieșire explicit („mesajul tău final trebuie să raporteze numărul de cuvinte, scorul de validare și orice fișiere atinse”), astfel încât agentul să știe ce produce starea „gata”, nu doar ce are de făcut.
2. Selecția contextului: Numește fișierele, izolează restul
Selecția contextului înseamnă să îi spui agentului exact ce fișiere să citească și pe care să le lase în pace, în loc să îl lași să caute prin grep și să își umple fereastra de context cu zgomot. Ghidajele proprii ale Anthropic sunt clare privind motivul: fereastra de context se umple rapid, iar calitatea scade pe măsură ce se umple, astfel încât majoritatea celor mai bune practici există pentru a o proteja (cele mai bune practici Claude Code).
Weak: Fix the bug in the checkout flow.
Strong: Read only src/checkout/cart.ts and src/checkout/tax.ts. The tax
rounding is wrong for orders over $1,000 (it rounds each line item instead
of the order total). Fix the rounding. Do not touch anything outside
src/checkout/.Delimităm strict. O linie reală din prompturile noastre de agenți sună astfel: „nu scrie în url-mapping.json, pipeline.md sau config.json și nu atinge niciodată niciun fișier din afara directorului scratchpad”. Acea singură propoziție a prevenit mai multe daune accidentale decât orice cantitate de curățenie ulterioară. Atunci când sarcina necesită genuine documentații live sau instrumente suplimentare, le adăugăm deliberat prin servere MCP, în loc să sperăm că agentul va da peste fișierul corect. Și dacă oricare dintre acel context provine din afara repository-ului tău, tratează-l ca nesigur: vezi nota noastră despre prevenirea injecției de prompturi înainte de a lipi o pagină scrapuită într-un agent de codare.
3. Planul întâi: Fă-l să propună înainte de a edita
Promptarea „planul întâi” face ca agentul să îți prezinte o abordare înainte de a edita orice. În Claude Code, Modul Plan este o stare read-only dură și impusă, nu o simplă sugestie polite de „gândește-te mai întâi” pe care modelul o poate ignora, deci literalmente nu poate scrie până când nu aprobi planul. Separarea cercetării și planificării de execuție este practica pe care Anthropic se bazează cel mai mult pentru a evita rezolvarea problemei greșite.
Weak: Add rate limiting to the API.
Strong: Before writing any code, give me a numbered plan: which middleware,
where the counters live, how you handle the 429 response and headers, and
which tests you'll add. Wait for my approval before editing.De ce funcționează: planul este ieftin de citit și ieftin de corectat. Corectarea unui plan greșit costă o propoziție; corectarea unui cod greșit costă un ciclu de revizuire. Aceasta se asociază natural cu cererea ca modelul să raționeze pas cu pas mai întâi (vezi promptarea lanțului de gândire) și este coloana vertebrală a fluxurilor de lucru Claude Code în mai mulți pași pe care le rulăm pentru orice sarcină non-trivială.
4. Testele întâi: Include testele de acceptare în prompt
Promptarea „testele întâi” introduce criteriile de acceptare în prompt ca intrări și ieșiri concrete, astfel încât agentul să scrie cod față de o țintă definită de tine, nu una ghicită de el. Lipește testul care eșuează sau un mic tabel cu rezultatele așteptate și spune „fă ca acesta să treacă fără a edita testul”.
Weak: Write a function to parse ISO 8601 dates.
Strong: Make this failing test pass without changing the test:
parseIso("2026-07-20T15:00:00Z") -> Date at that exact UTC instant
parseIso("2026-07-20") -> Date at 2026-07-20T00:00:00Z
parseIso("not-a-date") -> throws RangeError
parseIso("") -> throws RangeError
Return only the function and its imports.Exemplele concrete bat întotdeauna adjectivele. „Gestionează cazurile limită” este o speranță; patru rânduri de tip intrare-ieșire sunt o specificație pe care modelul o poate satisface efectiv, iar tu le poți rula imediat ce codul ajunge în repository.
5. Depanarea: Eroare, Reproducție, Așteptat, Cauza rădăcină înainte de remediere
Un prompt de depanare oferă agentului textul erorii, intrarea care o declanșează și ceea ce te așteptai, apoi cere cauza înainte de orice remediere. Dacă omiți acest pas, agentul va patch-ui simptomul, iar bug-ul se va muta doar undeva mai liniștit.
Weak: This is throwing an error, fix it.
Strong: This throws on checkout. Here's the stack trace: [paste]. It happens
only when the cart has a discount code AND a gift card (repro: add both, then
check out). Expected: both apply, gift card last. Find the root cause and
explain it in one sentence before you change anything. Do not wrap it in a
try/catch that hides the error.Linia „explică cauza într-o singură propoziție mai întâi” își face treaba. Forțează modelul să se angajeze la un diagnostic pe care îl poți verifica rapid, în loc să livreze o remediere a cărei logică nu o vezi niciodată. Linia „nu o ascunde într-un try/catch” închide cea mai frecventă scăpare.
6. Refactorizarea: Schimbă structura, păstrează comportamentul, arată diff-ul
Un prompt de refactorizare constrânge strict domeniul de aplicare: schimbă structura, păstrează comportamentul identic și arată diff-ul. Fără o delimitare, agenții vor „ordona” lucruri despre care nu ai întrebat, iar tu pierzi capacitatea de a revizui schimbarea care conta.
Weak: Clean up this file.
Strong: Extract the validation logic from submitOrder() into a pure function
validateOrder(). Keep every public signature and all behavior identical.
Change nothing else in this file. Show me a before/after diff and one line
on why each change is behavior-preserving.Aceasta este fața opusă a separării configurare-vs-prompt menționată anterior: regulile tale de stil permanente trăiesc în regulile Cursor, dar domeniul de aplicare al acestei refactorizări aparține promptului. „Nu schimba nimic altceva” este fraza care menține refactorizările ușor de revizuit.
7. Revizuirea: O listă de verificare pentru grep, plus dovezi
Un prompt de revizuire înmânează agentului o listă de verificare pentru grep și cere dovezi, nu un verdict. „Pare bine” nu valorează nimic; comanda pe care a rulat-o și output-ul obținut, da. Anthropic spune acest lucru clar: cere agentului să arate dovezi (output-ul testului, comanda și rezultatul său) în loc să afirme succesul, deoarece citirea dovezilor este mai rapidă decât reverificarea manuală.
Weak: Review my PR.
Strong: Check this diff against exactly these five items:
1. No secrets or API keys added
2. Every new function has a test
3. No behavior change outside src/checkout/
4. Error paths return typed errors, not strings
5. No console.log left behind
For each item, quote the line that satisfies or violates it. Then run the
test suite and paste the output. Do not say "done"; show me.Propria noastră poartă de revizuire este construită exact așa. Înainte ca un agent să aibă voie să raporteze un articol ca publicat, execută un grep pe draft față de o listă de cuvinte interzise (un blocant dur, toleranță zero) și rulează o interogare pentru a confirma că corpul documentului nu este gol. Agentul nu are voie să pretindă succesul; trebuie să producă output-ul verificării. Pentru rolurile de reviewer pe care le reutilizezi des, promovează lista de verificare într-o persoană salvată, caz în care intră în scenă exemplele de prompturi de sistem.
Claude Code vs. Cursor vs. Copilot: Unde se aplică fiecare model
Toți cei trei agenți majori din 2026 suportă fiecare model de mai sus, dar suprafața de interacțiune diferă. Claude Code se bazează pe Modul Plan și subagenți, Cursor pe Modul Agent și fereastra sa Agents, iar GitHub Copilot pe modul agent plus fișiere de instrucțiuni. Alege instrumentul în care echipa ta activează; modelele se porteză curat.
| Model | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|
| Reguli permanente | CLAUDE.md | .cursor/rules | .github/copilot-instructions.md, AGENTS.md |
| Planul întâi | Modul Plan (read-only impus) | Pasul de plan în Modul Agent | Previzualizează planul înainte de aplicare |
| Lucru paralel/scopat | Subagenți, context propriu fiecare | Fereastra Agents, worktree per agent | Sarcini agent cloud |
| Reguli scopate pe cale | CLAUDE.md imbricat per director | Globs de reguli | .instructions.md cu câmpul applyTo |
Câteva detalii curente worth knowing. Modul Plan al Claude Code este o blocare read-only genuină, iar subagenții săi rulează fiecare într-un context izolat cu propriile instrumente (documentație subagenți). Linia din 2026 a Cursor a adăugat o fereastră Agents care lansează agenți paraleli, fiecare în propriul său git worktree (Cursor 2.0). Modul agent al GitHub Copilot citește instrucțiuni personalizate din .github/copilot-instructions.md, plus fișiere .instructions.md scopate pe cale cu un câmp applyTo (instrucțiuni personalizate Copilot). Dacă Cursor este instrumentul tău zilnic, vezi postarea noastră despre cum să folosești Cursor mai eficient.
Cum promptăm agenții noștri de codare la Techsy
Rulăm o pipeline de conținut ca o echipă de 16 agenți Claude Code: un cercetător, un scriitor de brief-uri, un scriitor de conținut, nouă traducători, un validator și un publisher, coordonați prin mesaje de sarcină. Două convenții din acel sistem se transferă la orice echipă de programare.
În primul rând, fiecare prompt de sarcină se încheie cu un contract de ieșire. Ultima linie este întotdeauna o variantă a „mesajul tău final trebuie să raporteze X, Y și Z”. Un agent care știe forma exactă a stării „gata” rătăcește mult mai puțin decât unul căruia i se spune doar de unde să înceapă.
În al doilea rând, nu lăsăm niciodată un agent să își noteze singur temele în proză. Generarea și verificarea sunt pași separați, iar verificarea este o comandă cu output, nu o opinie. Această separare între construire și verificare este centrală modului în care Anthropic structurează construirea agenților fiabili și este motivul pentru care poarta noastră de revizuire execută grep și interogări în loc să aibă încredere într-un „pare bine”.
Aceasta este și activitatea noastră principală. La Techsy construim agenți AI și automatizări pentru echipe B2B, iar disciplina prompturilor precum aceasta este ceea ce separă în mare parte un demo de ceva ce poți prezenta unui client. Dacă dorești o configurare corectă a fluxului de lucru de codare sau de agenți, serviciul nostru de integrare AI face exact acest lucru, și poți programa o consultație gratuită pentru a discuta despre stack-ul tău tehnologic.
Un șablon de prompt copy-paste pe care îl poți adapta
Iată scheletul de la care pornim pentru orice sarcină de codare non-trivială. Șterge secțiunile de care nu ai nevoie, dar păstrează ordinea, deoarece reflectă cele șapte modele.
GOAL
One sentence: what should be true when you're done.
CONTEXT
Read only: <exact files>. Ignore everything else.
Relevant facts: <constraints, versions, the bug's trigger>.
PLAN FIRST
Before editing, give me a numbered plan and wait for approval.
TESTS / DONE
Done means: <paste failing test or input->output rows>.
Don't change the tests.
CONSTRAINTS
Keep all public signatures and behavior identical unless stated.
Do not touch <files/areas>. Name any assumption you make.
OUTPUT
Show a before/after diff, run the tests, and paste the output.
Don't say "done"; show the evidence.Salvează-l ca snippet sau, mai bine, împarte-l: constrângerile permanente merg în fișierul de configurare, iar obiectivul, contextul și testele merg în prompt. Această separare este esențială.
Despre autor
Mert Batur Gurbuz este Co-Fondator al Techsy.io, unde echipa livrează agenți AI, sisteme de automatizare și pipeline-uri voice/SDR pentru clienți B2B. Studiază la University of Birmingham și scrie despre stack-ul de tooling LLM pe care echipa Techsy îl folosește efectiv în producție.
Credentiale: Co-Fondator, Techsy.io, University of Birmingham. Conectează-te pe LinkedIn.
Întrebări frecvente
Ce este ingineria prompturilor pentru codare?
Ingineria prompturilor pentru codare este practica de a scrie instrucțiuni care determină un agent AI să producă cod corect și revizuibil. În practică, înseamnă enunțarea obiectivului și a definiției termenului „gata”, numirea fișierelor din scop, impunerea unui plan înainte de editări, furnizarea testelor și cererea de dovezi. Este mai apropiată de scrierea unei specificații decât de scrierea unei fraze ingenioase.
Cum diferă de scrierea unui fișier CLAUDE.md sau .cursor/rules?
Fișierele de configurare conțin politica permanentă pe care agentul o citește la fiecare sesiune: stack-ul tău, convențiile și comanda de test. Un prompt per-sarcină este jobul specific pe care i-l înmânezi chiar acum. Pune regulile durabile în configurare și sarcina în prompt. Lipirea întregilor prompturi de sarcină într-un fișier de configurare umflă fiecare sesiune și totuși nu reușește să încadreze sarcina individuală.
Care este cea mai bună structură de prompt pentru agenții AI de codare?
Folosește secțiuni etichetate în loc de un singur paragraf: OBIECTIV, CONTEXT, PLAN, TESTE, CONSTRÂNGERI și OUTPUT. Agenții parsează prompturile structurate mai reliably decât pereții de text. Enunță criteriile de succes de la început, oferă unul până la trei exemple concrete în loc de adjective și specifică formatul exact de output pe care îl dorești înapoi.
Cum scriu un prompt bun de depanare?
Oferă agentului patru lucruri: eroarea exactă sau stack trace-ul, intrarea care o reproduce, ceea ce te așteptai și o cerere pentru cauza rădăcină înainte de orice remediere. Adaugă „explică cauza într-o singură propoziție înainte de a schimba anything” pentru a putea verifica diagnosticul și „nu o ascunde într-un try/catch” pentru a se asigura că remediază bug-ul, nu îl maschează.
Ar trebui să includ teste în prompturile mele de codare?
Da, ori de câte ori poți. Lipirea testului care eșuează sau a unui mic tabel de rânduri intrare-ieșire transformă o cerere vagă într-o țintă pe care modelul o poate atinge efectiv, iar tu poți rula rezultatul imediat. Spune-i agentului să facă testele să treacă fără a le edita, astfel încât să nu poată muta ținta pentru a-și face propriul cod să pară corect.
Funcționează aceste prompturi și în Cursor și GitHub Copilot?
Da. Modelele sunt independente de instrument. Claude Code le expune prin Modul Plan și subagenți, Cursor prin Modul Agent și fereastra sa Agents cu un worktree per agent, iar GitHub Copilot prin modul agent plus .github/copilot-instructions.md. Suprafața se schimbă; încadrarea sarcinii, selecția contextului, planul întâi și revizuirea bazată pe dovezi rămân la fel.
Cât de lung ar trebui să fie un prompt de codare?
Suficient de lung pentru a fi o specificație, suficient de scurt pentru a rămâne concentrat. Calitatea raționamentului scade pe măsură ce contextul se umple, așa că favorizează structura în detrimentul volumului: un prompt etichetat, de 150-300 de cuvinte, cu fișierele și testele corecte, bate unul lung și dezordonat. Mută orice se aplică fiecărei sarcini în fișierul de configurare în loc să repeți.
Cum opresc un agent AI să schimbe cod pe care nu l-am cerut?
Delimitează domeniul de aplicare în prompt. Spune exact ce fișiere poate edita, adaugă „nu schimba nimic altceva” și cere „păstrează toate semnăturile publice și comportamentul identic,除非 spun altfel”. Pentru refactorizări, cere un diff înainte/după cu o linie despre why fiecare schimbare păstrează comportamentul, astfel încât orice editare nedorită să fie obvious în revizuire.
Merită bibliotecile de prompturi copy-paste?
Ca punct de plecare, uneori. Ca instrument finit, rar. O bibliotecă de 50 de prompturi îți oferă formulări, dar nu poate cunoaște fișierele tale, testele tale sau constrângerile tale, acolo unde residează corectitudinea. Învață modelele, păstrează un șablon adaptabil și completează specificul sarcinii din fața ta.