Marketplace `esempla` — compania virtuală
Sursa unică a comportamentului companiei. Agenții, skills și comenzile se scriu aici, o singură dată, și se distribuie identic pe orice stație, runner sau coleg — cu update atomic prin tag.
Repo privat pe infrastructura noastră: git.esempla.systems/govtech/gstack/company-marketplace.
Nimic nu iese în afară.
Instalare — nu alegi nimic
Section titled “Instalare — nu alegi nimic”Depozitul de lucru declară, clientul aplică. În .claude/settings.json al oricărui workspace:
{ "extraKnownMarketplaces": { "esempla": { "source": { "source": "git", "url": "https://git.esempla.systems/govtech/gstack/company-marketplace.git" } } }, "enabledPlugins": { "company-core@esempla": true, "company-knowledge@esempla": true, "company-fleet-ops@esempla": true, "role-business@esempla": true, "role-delivery@esempla": true, "role-engineering@esempla": true, "role-verification@esempla": true, "engine-bid@esempla": true, "engine-comply@esempla": true, "engine-knowledge@esempla": true, "platform-data@esempla": true, "platform-kubernetes@esempla": true, "platform-nfr@esempla": true, "management-board@esempla": true }}git clone → deschizi Claude Code → ai tot. Nimeni nu rulează /plugin install, nimeni nu citește
o listă ca să aleagă. Dacă instalarea cere alegeri, două stații ajung cu comportament diferit și
niciun raport nu mai e comparabil.
Manual, pentru o probă rapidă:
/plugin marketplace add https://git.esempla.systems/govtech/gstack/company-marketplace.gitAutonom — verificat, nu presupus
Section titled “Autonom — verificat, nu presupus”Niciun skill nu referă un fișier din afara marketplace-ului. Fundația (catalogul CU-*, Standardul
API, părțile comune) e în company-knowledge, nu în workspace-uri. Verificarea:
grep -rnE '(01-govstack-foundation|_comune)/[a-zA-Z-]+\.md' plugins/ # trebuie să dea zeroCategorii
Section titled “Categorii”Marketplace-ul GitLab e o listă plată, deci categoria se codifică în prefixul numelui. Regula: prefixul spune cine folosește pluginul, nu ce conține.
| Prefix | Cine | Pluginuri |
|---|---|---|
company- | toată compania — reguli care se aplică peste tot | company-core · company-fleet-ops |
role- | un scaun anume din organigramă | role-business |
engine- | motoarele de acoperire și conformitate | engine-bid · engine-comply |
platform- | echipa de infrastructură și SRE | platform-kubernetes · platform-data · platform-nfr |
command-center | livrare și raportare | command-center |
Se adaugă pe măsură: role-delivery (PM/BA/DocWriter), role-engineering (poduri per stack),
role-verification (reviewer/QA/api-governor/security), delivery-spec.
Conținut
Section titled “Conținut”| Plugin | Agenți | Skills | Comenzi | Hooks |
|---|---|---|---|---|
company-core | — | intrebari-asincrone | /todo | — |
company-fleet-ops | fleet-ops | agent-eval | — | — |
role-business | bid-memo · adr-steward | — | — | — |
engine-bid | — | bid-intake · coverage-report | /oportunitate · /acoperire | — |
engine-comply | — | comply-assess | /conformitate | — |
platform-kubernetes | — | kubernetes-platform-ops | /k8s-health · /k8s-onboard · /infra-runbook | guard-infra.sh |
platform-data | — | postgres-ha-ops | /pg-diagnose · /pg-backup | — |
platform-nfr | — | nfr-answer | /tender-nfr | — |
command-center | — | — | /portofoliu · /faza · /livrabile | — |
Ce e portat, și de unde
Section titled “Ce e portat, și de unde”Cele trei pluginuri platform-* sunt portate din esempla-infra (KUB/docs/plugin), un
marketplace funcțional al aceleiași companii. Nu le-am rescris — le-am preluat și categorizat.
| Portat | Sursă |
|---|---|
kubernetes-platform-ops · postgres-ha-ops | infra-ops/skills/ |
/k8s-health /k8s-onboard /infra-runbook /pg-diagnose /pg-backup /tender-nfr | infra-ops/commands/ |
guard-infra.sh + hooks.json | infra-ops/hooks/ |
| 4 playbook-uri (2 ghiduri de inginerie + 2 biblioteci de răspunsuri) | docs/Playbooks/ |
Sincronizarea nu e manuală. KUB re-copiază de mână când se schimbă ceva; noi detectăm
divergența:
../scripts/sync_plugin_refs.sh # verifică; iese non-zero dacă a divergat../scripts/sync_plugin_refs.sh sync # actualizează din sursăSursa rămâne autoritativă; copia din plugin e derivată.
Hook-ul de gardă — tiparul de reținut
Section titled “Hook-ul de gardă — tiparul de reținut”guard-infra.sh e un PreToolUse pe Bash care returnează permissionDecision: "ask" pentru
șapte clase de comenzi periculoase: kubectl fără context explicit · ștergeri/drain/cordon și
mutații de PV · etcdctl distructiv · patronictl distructiv · SQL distructiv prin psql -c ·
pgbackrest expire · mkfs/dd/rm -rf pe căi de sistem.
Filozofia lui declarată, pe care o adoptăm ca regulă generală:
Garda sfătuiește; nu blochează niciodată — omul decide.
E complementară cu permissions.deny din managed settings, care chiar blochează. Garda
acoperă ce e periculos-dar-legitim; deny-ul acoperă ce nu trebuie făcut niciodată.
Regula de livrare
Section titled “Regula de livrare”comportament → plugin · politică → managed settings · cunoaștere → context compilat
settings.json dintr-un plugin suportă doar cheile agent și subagentStatusLine.
Permisiunile, env și sandbox-ul se livrează exclusiv prin
/etc/claude-code/managed-settings.json. Agenții livrați prin plugin nu pot folosi
hooks, mcpServers sau permissionMode din frontmatter — sunt ignorate din motive de
securitate.
De portat mai departe
Section titled “De portat mai departe”Din esempla-govstack-workplace: cei 12 agenți și 13 skills existenți. Migrarea cere două
corecții obligatorii per agent — tools: explicit (azi niciunul nu declară unelte, deci toți
moștenesc tot) și model corectat pe rolurile de verificare (qa-runner e azi pe Kimi,
trebuie pe Claude). Vezi 10-viziune/11-organigrama.md §8.
Din eIntegritate/2026: scripturile de extragere și indexare, ca engine-bid să aibă
implementare, nu doar procedură.