Sari la conținut

Marketplace `esempla` — compania virtuală

Acest conținut nu este încă disponibil în limba selectată.

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ă.

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ă:

Terminal window
/plugin marketplace add https://git.esempla.systems/govtech/gstack/company-marketplace.git

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:

Terminal window
grep -rnE '(01-govstack-foundation|_comune)/[a-zA-Z-]+\.md' plugins/ # trebuie să dea zero

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.

PrefixCinePluginuri
company-toată compania — reguli care se aplică peste totcompany-core · company-fleet-ops
role-un scaun anume din organigramărole-business
engine-motoarele de acoperire și conformitateengine-bid · engine-comply
platform-echipa de infrastructură și SREplatform-kubernetes · platform-data · platform-nfr
command-centerlivrare și raportarecommand-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.


PluginAgențiSkillsComenziHooks
company-core—intrebari-asincrone/todo—
company-fleet-opsfleet-opsagent-eval——
role-businessbid-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-runbookguard-infra.sh
platform-data—postgres-ha-ops/pg-diagnose · /pg-backup—
platform-nfr—nfr-answer/tender-nfr—
command-center——/portofoliu · /faza · /livrabile—

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.

PortatSursă
kubernetes-platform-ops · postgres-ha-opsinfra-ops/skills/
/k8s-health /k8s-onboard /infra-runbook /pg-diagnose /pg-backup /tender-nfrinfra-ops/commands/
guard-infra.sh + hooks.jsoninfra-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:

Terminal window
../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ă.


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ă.


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.

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ă.