# Handoff: skill-uri de agent ROA + backstop de rutare Data: 2026-09-16. Sesiune oprita la limita de context. Acesta e fisier de stare, nu documentatie. ## Ce s-a livrat (in COMUN, versionat git + SVN) - 9 skill-uri, cate un `SKILL.md` per folder (`COMUN\skills\\`), frontmatter doar `name`+`description`, corp auto-suficient (skill = proprietarul procedurii): `roa-vfp-text-edit`, `roa-vfp-headless-test`, `roa-git-svn-commit`, `roa-oracle-migration`, `roa-oracle-diagnostic`, `roa-oracle-production-access`, `roa-vfp-null-guards`, `roa-vfp-go-recno`, `roa-oracle-sqlexec-no-data`. - `COMUN\utile\leaga_skills.ps1` - creeaza symlink-uri in `%USERPROFILE%\.claude\skills\` catre `COMUN\skills\` (fara copiere; citit de Claude Code SI de opencode). Idempotent, `-DryRun`. - `COMUN\utile\backstop_skills.txt` (sursa canonica a rutarii) + `COMUN\utile\scrie_backstop_skills.ps1` (`-Root`, `-Proiecte`, `-DryRun`; scrie `AGENTS.md` + bloc marcat in `CLAUDE.md`; garda anti-duplicare: sare fisierele care contin deja `roa-` fara markers). - `COMUN\docs\reguli_lucru.md` pct. 7 + `COMUN\docs\README.md` - ruteaza fiecare zona la skill-ul care o detine (nu la doc). - `COMUN\docs\cercetare\rec_skills.md` - decizia, inventarul, cum se adauga un skill nou. - `AGENTS.md` (radoacina ROAFACTURARE, backstop pentru opencode) + `CLAUDE.md` (2 rute + ancora). - Backstop aplicat pe 10 proiecte: ROAACNPRO, ROAAUTO, ROACONT, ROACONTRACTE, ROADEF, ROAFACTURARE, ROAGEST, ROAIMOB, ROAPRETURI, ROAREGISTRATURA (verificat idempotent). ## Ce NU e terminat (de continuat) 1. **2 fisiere de onboarding modificate, NEcomise in SVN** (singura stare nefinalizata de cod): - `COMUN\docs\onboarding\inrolare-calculator-nou.md` - secțiune noua "Pasul 8 - skill-uri de agent ROA" (+22 linii; pastreaza diacriticele). - `COMUN\docs\onboarding\inrolare-proiect-git-text.md` - secțiune noua "### 8. Skill-uri de agent (backstop de rutare)" (+7 linii; ASCII). - Ambele: LF, fara BOM. NU au fost testate mai departe (sunt doar text). 2. **8 proiecte au commit SVN dar mirror-ul git nu a rulat `roa_sync`** (ROAACNPRO, ROAAUTO, ROACONT, ROACONTRACTE, ROADEF, ROAGEST, ROAIMOB, ROAPRETURI, ROAREGISTRATURA). Fisierele sunt active pe disc; git-ul lor se aliniaza la urmatorul `roa_sync.bat` local. 3. **Optional nefacut**: skill `roa-onboarding` (Nivel D din plan). Nu s-a creat intentionat: `vfp-ui-test` NU se creeaza (e acoperit de `roa-vfp-headless-test`). ## Stare depozite - SVN: COMUN r18116; ROAFACTURARE r18118; proiecte r18114/18115/18117/18119/18120/18121/18122/ 18123/18124. - git: COMUN `4756dc0`, ROAFACTURARE `50274b8`, ambele `ahead=0` (push facut, `main`). - `svn status COMUN` = 2 x M (cele doua onboarding-uri de mai sus). - `svn status ROAFACTURARE` (in afara COMUN) = reziduri PRE-EXISTENTE, neale noastre: `.claude` (?), `Clase\ofundal_facturare.vc2.pre_runda1.bak` (?), `Utile\Teste\test_catalog_articole_s1.FXP` (?), `docs\diff_runda3_vanzare_ui.patch` (?). - Branch `claude/skills-agenti`: sters in ambele repo-uri. ## Comenzi de rulare (exacte) - Backstop, pe proiecte: `powershell -ExecutionPolicy Bypass -File D:\ROA\\COMUN\utile\scrie_backstop_skills.ps1 -Root D:\ROA -Proiecte ROAACNPRO,ROAAUTO,ROACONT,ROACONTRACTE,ROADEF,ROAFACTURARE,ROAGEST,ROAIMOB,ROAPRETURI,ROAREGISTRATURA` (intai `-DryRun`). Fara `-Proiecte` = toate proiectele detectate (53 - NU rula asa fara acord). - Legare pe masina: `powershell -ExecutionPolicy Bypass -File \COMUN\utile\leaga_skills.ps1 [-DryRun]`. - Sync: `D:\ROA\ROAFACTURARE\roa_sync.bat` (svn update -> git_sync -> commit "sync SVN rN" -> reconciliere; push DOAR daca tot ahead-ul e commit-uri de sync). - Verificare ASCII: `([IO.File]::ReadAllBytes($p) | Where-Object {$_ -gt 127}).Count` -> 0. ## Decizii luate (nu re-investiga) - Skill = proprietarul procedurii; docurile din `COMUN\docs` = referinta CONDITIONATA (cel mult 1 pointer per skill). Motiv: sa nu se incarce contextul de doua ori. - Un singur loc de rutare per host: `AGENTS.md` (opencode) + `reguli_lucru.md` pct. 7 (Claude, citit mereu) + ancora in `CLAUDE.md`. - Skill-urile traiesc in `COMUN\skills`, expuse prin symlink in `~/.claude/skills` (fara copie). opencode citeste nativ `.claude/skills` (confirmat in sursa: `SkillV2.load` -> `glob(...,{symlink:true})`). - Sursa canonica a rutarii = `COMUN\utile\backstop_skills.txt` (regenerata in proiecte de script). - NU se foloseste plugin marketplace: opencode nu citeste cache-ul de pluginuri. - Declansare: automata din `description` in ambele host-uri; backstop-ul always-on prinde cazurile in care descrierea nu se potriveste. `paths` NU se foloseste (doar restrange, nu forteaza). ## Interzis - Nu copia manual fisiere de skill in `~/.claude/skills` (se pierde legatura cu sursa; doar `leaga_skills.ps1`). - Nu `git commit`/`push`/`merge` pe `main` in COMUN in afara fluxului; commit-urile de lucru pe branch `claude/`, apoi `svn commit` + `roa_sync`. - Nu rula `roa_sync` pe un branch cu fisiere noi inainte de `svn commit` (pe branch face `checkout main` si scoate fisierele de pe disc). - Nu rescrie `COMUN\docs\` din proprie initiativa (regula 11/12) - propune. - Nu rula `scrie_backstop_skills.ps1` fara `-Proiecte` (atinge 53 de proiecte). ## Capcane platite - PowerShell 5.1 `New-Item -ItemType SymbolicLink` cere privilegii; `mklink /D` merge cu Developer Mode activ (scriptul are fallback). - `COMUN\docs` sunt LF, nu CRLF; fisierele noi create (AGENTS.md, skill-uri) sunt CRLF. - `reguli_lucru.md` si `CLAUDE.md` au em-dash (non-ASCII) PRE-EXISTENTE - nu se "repara" din oficiu. - `inrolare-proiect-git-text.md` are 5 en-dash pre-existente (15 octeti non-ASCII); adaugarea noastra e ASCII pur. ## Urmatorul pas recomandat 1. `svn commit` pentru cele doua onboarding-uri + `roa_sync.bat` + `push`. 2. `roa_sync.bat` in cele 8 proiecte ramase (apoi push, la alegere). 3. (Optional) skill `roa-onboarding`.