skills: 9 skill-uri de agent ROA (COMUN\skills) + legare si rutare

- leaga_skills.ps1: expune skill-urile in ~/.claude/skills prin symlink (citit si de Claude Code, si de opencode), fara copiere
- rutare zona->skill in reguli_lucru pct. 7, README, AGENTS.md; skill-ul devine proprietarul procedurii, docurile raman referinta conditionata
- rec_skills.md: decizia, inventarul si cum se adauga un skill nou
This commit is contained in:
2026-09-16 11:54:37 +03:00
parent 59c0c7be31
commit d64124386c
13 changed files with 1043 additions and 37 deletions

View File

@@ -0,0 +1,59 @@
# rec_skills - skill-uri de agent pentru suita ROA
Data: 2026-09-16. Status: aplicat (9 skill-uri create, rutare + backstop puse in docs).
## Decizie
- Skill-ul este **proprietarul procedurii**; docurile din `COMUN\docs` raman **referinta
conditionata**, deschisa doar cand o ramura cere detaliu. Motiv: sa nu se incarce contextul de
doua ori si sa nu existe doi proprietari pentru aceeasi regula. (Suprapunerea masurata inainte
de unificare: 18-42% din liniile corpului unui skill erau identice cu linii din docuri.)
- Fiecare SKILL.md: frontmatter doar `name` + `description` (comun ambelor host-uri), corp
auto-suficient cu secventele `Cand se foloseste / Pasi (sau Regula) / Capcane / Criterii de
acceptare si dovada / Scripturi / Referinta (doar la nevoie)`, cel mult 1 pointer conditio nat la
un doc.
- Skill-urile traiesc in `COMUN\skills\<nume>\SKILL.md`, versionate in `comun.git`.
- Sunt expuse host-urilor prin symlink in `%USERPROFILE%\.claude\skills\` - director citit si de
Claude Code, si de opencode - fara copiere: `COMUN\utile\leaga_skills.ps1` (idempotent, `-DryRun`).
- Declansarea automata vine din `description` (ambele host-uri); "de fiecare data" vine din
**backstop-ul always-on**: `reguli_lucru.md` pct. 7 (citit la fiecare sesiune) + `AGENTS.md`
(pentru opencode, care nu citeste `CLAUDE.md`) + ancora in `CLAUDE.md`.
## Inventar
| Skill | Deschide cand (zonele) |
|---|---|
| `roa-vfp-text-edit` | editare `.vcx/.scx` pe text (`.vc2/.sc2`), cautare in binare, encoding cp1250, write-back |
| `roa-vfp-headless-test` | rulare/depanare teste VFP headless, harness UI + screenshots |
| `roa-git-svn-commit` | commit / `svn update` / `roa_sync` in COMUN |
| `roa-oracle-migration` | scriere + publicare scripturi de migrare, re-export pachet PL/SQL |
| `roa-oracle-diagnostic` | update ROA blocat la client, tablespace/disc plin |
| `roa-oracle-production-access` | acces Oracle de productie (tunel SSH + TNS + DSN ODBC) |
| `roa-vfp-null-guards` | garzi pe valori NULL din Oracle in VFP |
| `roa-vfp-go-recno` | `GO` pe un `Recno()` capturat sau primit ca parametru |
| `roa-oracle-sqlexec-no-data` | procedura PL/SQL cu `SELECT ... INTO` apelata din VFP (randuri pierdute tacut) |
## Cum se adauga un skill nou
1. Creezi `COMUN\skills\<nume>\SKILL.md` (contractul de mai sus; `name` = numele folderului,
lowercase-cu-cratima).
2. Rulezi `COMUN\utile\leaga_skills.ps1` (creeaza symlink-ul in `%USERPROFILE%\.claude\skills\`).
3. Adaugi o linie de rutare in `reguli_lucru.md` pct. 7 si in `AGENTS.md` (`README.md` pentru
index). Nu duplici regula din docs: skill-ul o detine.
4. Verifici cu cele doua asertiuni: (a) nicio linie din `CLAUDE.md`/`AGENTS.md`/`reguli_lucru.md`/
`README.md` nu ruteaza o zona acoperita catre un doc; (b) fiecare skill are cel mult 1 pointer
conditio nat la un doc.
## Verificari la data aplicarii
- 9/9 skill-uri: ASCII pur, fara BOM, `name` = folder, descriere <= 1024, exact 1 bullet sub
`## Referinta (doar la nevoie)`.
- 0 rute reziduale zona -> doc in `CLAUDE.md`, `AGENTS.md`, `reguli_lucru.md`, `README.md`.
- `leaga_skills.ps1`: 4 create apoi idempotent (0 create, 9 ok); director real cu acelasi nume
niciodata sters (nici cu `-Force`).
## Neaplicat / de facut manual
- Commit: git pe branch (`claude/...`), fara push; `svn commit` + `roa_sync` + merge raman la
Marius (fluxul SVN+git din `fluxul_svn_git.md`).
- Pe celelalte calculatoare: `git pull` in `COMUN\` + `leaga_skills.ps1` (o data).