Dacă `AGENTS.md` oferă o descriere de nivel înalt a proiectului, directorul .codex/rules permite definirea de reguli granulare, modulare și ierarhice pe care OpenAI Codex le citește la fiecare prompt.
Poți defini reguli de securitate (ex. interzicerea absolută a apelurilor de tip `eval()` sau concatenări de stringuri în query-uri SQL), reguli de stil (ex. utilizarea exclusivă a componentelor funcționale cu hooks în React) și reguli de documentare (ex. obligativitatea docstring-urilor PEP 257 pentru orice funcție nouă).
Codex evaluează codul generat împotriva acestor reguli înainte de a scrie pe disc, respingând automat propunerile care încalcă politicile setate de arhitectul echipei.
Sintaxă, opțiuni și concepte cheie
| Opțiune / Concept | Descriere practică |
|---|---|
.codex/rules/security.md |
Reguli de prevenire a vulnerabilităților (XSS, CSRF, SQL Injection, chei hardcodate). |
.codex/rules/styling.md |
Convenții de numire a variabilelor, structură de directoare și formatare. |
.codex/rules/testing.md |
Politici de acoperire prin teste și obligativitatea mock-urilor pentru servicii externe. |
Enforcement Mode |
Nivelul de rigoare: ‘strict’ (oprește generarea la abatere) sau ‘warn’ (afișează avertisment). |
Exemple practice de terminal și cod
Exemplul 1: Exemplu de fișier .codex/rules/security.md pentru securizarea interogărilor de date
Regulă strictă de respingere a concatenării SQL.
# .codex/rules/security.md
## Regula de Securitate DB-01: Interogări Parametrizate Obligatorii
- INTERZIS: Concatenarea de șiruri de caractere sau f-strings în interogările SQL (ex. `f"SELECT * FROM users WHERE id = {id}"`).
- OBLIGATORIU: Folosirea exclusivă a parametrizării native (ex. `cursor.execute("SELECT * FROM users WHERE id = %s", (id,))\`).
- La detectarea oricărei concatenări de input utilizator în SQL, oprește execuția și afișează eroarea `POLICY_VIOLATION_DB01`.
Rezultat & Impact
Codex refuză generarea oricărui cod vulnerabil la injecție SQL.
Greșeli frecvente și bune practici
- Scrierea de reguli contradictorii în fișiere diferite, ceea ce induce modelul în eroare și reduce calitatea generării.
- Formularea vagă a regulilor; folosește întotdeauna exemple ‘AȘA DA’ și ‘AȘA NU’ pentru precizie maximă.