Skill: Silo Generator
Contexte
SomTech construit du logiciel personnalisé. Chaque client/application reçoit un silo : ensemble
de 7 conteneurs AI agents orchestrés via Docker Compose et déployés sur Fly.io :
- clientele : Interface client (gestion compte, communications)
- dev-orchestrator : Orchestration des tâches de développement
- dev-worker-1, dev-worker-2 : Exécution parallèle des tâches
- security-auditor : Audit de sécurité continu
- security-validator : Validation des changements de sécurité
- devops : Infrastructure, logs, monitoring
Le Service Desk (MCP Supabase Edge Function) est la source unique de vérité pour les métadonnées
d'application. Ce skill les lit, les valide, et génère tous les fichiers de configuration.
Workflow : 6 Étapes
Étape 1 : Récupérer les slugs
- Source : argument
--client-slug et --app-slug OU requête applications.list via Service Desk MCP
- Valider : format slug (kebab-case, alphanumériques + tirets)
Étape 2 : Lire la feuille Application
- Via Service Desk MCP :
applications.get(client_slug, app_slug)
- Extraire métadonnées JSONB complet (10 sections)
- Stocker en mémoire pour les étapes suivantes
Étape 3 : Valider les métadonnées
Vérifier la complétude de ces 10 sections (voir Checklist de validation ci-dessous) :
- ✓ identity
- ✓ repo
- ✓ frontend
- ✓ database
- ✓ stack
- ✓ providers
- ✓ client
- ✓ env_vars_template
- ✓ silo
- ✓ devenv
Action : Si validation échoue, afficher les sections manquantes et arrêter.
Étape 4 : Charger les références
Lire depuis references/ :
architecture.md → topologie des conteneurs
nomenclature.md → conventions de nommage
metadata-schema.json → schéma JSONB attendu
constitution-template.md → template Markdown pour constitutions
devenv-config.yaml → template Fly.io/environnement
Étape 5 : Générer les fichiers
Créer dans config/silos/{client_slug}-{app_slug}/ :
docker-compose.silo-{client_slug}-{app_slug}.yml
fly/{pg,rest,auth,kong,storage,studio}.toml
.env.template
constitutions/{clientele,dev-orchestrator,dev-worker,security-auditor,security-validator,devops}.md
slack-channels.json
Étape 6 : Présentation pour revue
Afficher résumé génération → lister fichiers créés → proposer prévisualisation ou déploiement.
Fichiers Générés
docker-compose.silo-{client}-{app}.yml
version: '3.8'
services:
silo-{client}-{app}-clientele:
silo-{client}-{app}-dev-orchestrator:
silo-{client}-{app}-dev-worker-1:
silo-{client}-{app}-dev-worker-2:
silo-{client}-{app}-security-auditor:
silo-{client}-{app}-security-validator:
silo-{client}-{app}-devops:
networks:
silo-{client}-{app}-net:
Chaque conteneur reçoit :
SILO_CLIENT_SLUG={client_slug}
SILO_APP_SLUG={app_slug}
AGENT_ROLE={role}
SOMTECH_DESK_API_KEY=${SOMTECH_DESK_API_KEY}
Fly.io Services (fly/*.toml)
6 services Fly.io, nommés devenv-{client}-{app}-{service} :
devenv-{client}-{app}-pg → PostgreSQL (from metadata.database.project_ref)
devenv-{client}-{app}-rest → PostgREST API
devenv-{client}-{app}-auth → Supabase Auth
devenv-{client}-{app}-kong → API Gateway (Kong)
devenv-{client}-{app}-storage → S3-compatible storage
devenv-{client}-{app}-studio → Supabase Studio
Configuration :
- Region :
metadata.devenv.fly_region (défaut : yul)
- Org :
metadata.devenv.fly_org (auto-généré : {client}-{app}, ex: acme-erp)
- Auto-stop :
metadata.devenv.auto_stop_minutes (défaut : 30 min)
.env.template
Énumère TOUS les noms de variables (JAMAIS les valeurs) :
- Section
[supabase] : SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY
- Section
[auth] : AUTH_SECRET, OAUTH_GITHUB_ID, etc.
- Section
[frontend] : API_BASE_URL, ANALYTICS_ID, etc.
- Générées depuis
metadata.env_vars_template
Constitutions d'agents (constitutions/*.md)
Chaque agent a sa constitution Markdown incluant :
- Rôle & Responsabilités : Décrire objectifs primaires
- MCP Tools autorisés : Lister depuis matrice d'accès (voir ci-dessous)
- Stack technique : Contexte depuis
metadata.stack
- Conventions de code : Depuis
metadata.repo.branch_convention
- Règles de sécurité : Privilege minimum, actions interdites
Matrice d'accès MCP
| Agent |
somtech-desk |
supabase |
netlify |
Sections autorisées |
| clientele |
✓ read |
✗ |
✗ |
identity, client_config, silo.slack_channels |
| dev-orchestrator |
✓ read |
✗ |
✗ |
identity, repo, stack, silo.containers |
| dev-worker |
✓ read |
✓ read |
✗ |
identity, repo, stack, database, providers, env_vars |
| security-auditor |
✓ read |
✓ read |
✗ |
ALL (audit-only) |
| security-validator |
✓ read |
✓ read |
✗ |
ALL (validation-only) |
| devops |
✓ read |
✓ rw |
✓ debug |
ALL |
slack-channels.json
{
"client_slug": "{client_slug}",
"app_slug": "{app_slug}",
"channels": [
"#silo-{client}-{app}-general",
"#silo-{client}-{app}-dev",
"#silo-{client}-{app}-security",
"#silo-{client}-{app}-devops"
]
}
Checklist de Validation
Toutes ces conditions DOIVENT être vraies avant génération :
Validation échouée → Afficher liste des sections/champs manquants, retour à Étape 2.
Références (répertoire references/)
- architecture-silos.md → Topologie SomTech, diagramme conteneurs, flux communications
- nomenclature.md → Conventions slug, noms services, variables d'environnement
- metadata-schema.md → Schéma JSONB complet (10 sections, tous les champs)
- constitution-template.md → Template Markdown de constitution agent
- devenv-flyio.md → Defaults Fly.io, ressources, régions disponibles
Notes d'implémentation
- Idempotence : Si fichiers existent, proposer remplacement ou fusion
- Logging : Tracer chaque étape (validation → génération → résumé)
- Erreurs : Afficher contexte claire et suggestions correctives
- Français : Descriptions, messages d'erreur en français ; termes techniques en anglais
- Sécurité : JAMAIS de secrets dans .env.template (noms de vars SEULEMENT)
Prochaines étapes après génération
Une fois ce skill exécuté avec succès :
- Review : Équipe SomTech revoit les fichiers générés
- Ajustements : Modifications manuelles si nécessaire
- Silo Deployer : Skill de déploiement vers Fly.io et Docker Hub
- Agent Initialization : Chaque conteneur reçoit sa constitution et commence à fonctionner
1---2name: silo-generator3description: Génère l'intégralité de la configuration d'un silo SomTech : docker-compose, services Fly.io, constitutions d'agents, et templates d'environnement. Valide les métadonnées d'application avant génération. À utiliser après validation initiale du client et avant déploiement.4---5
6# Skill: Silo Generator
7
8## Contexte
9
10SomTech construit du logiciel personnalisé. Chaque client/application reçoit un **silo** : ensemble
11de 7 conteneurs AI agents orchestrés via Docker Compose et déployés sur Fly.io :
12
13- **clientele** : Interface client (gestion compte, communications)
14- **dev-orchestrator** : Orchestration des tâches de développement
15- **dev-worker-1, dev-worker-2** : Exécution parallèle des tâches
16- **security-auditor** : Audit de sécurité continu
17- **security-validator** : Validation des changements de sécurité
18- **devops** : Infrastructure, logs, monitoring
19
20Le **Service Desk** (MCP Supabase Edge Function) est la source unique de vérité pour les métadonnées
21d'application. Ce skill les lit, les valide, et génère tous les fichiers de configuration.
22
23---
24
25## Workflow : 6 Étapes
26
27### Étape 1 : Récupérer les slugs
28- Source : argument `--client-slug` et `--app-slug` OU requête `applications.list` via Service Desk MCP
29- Valider : format slug (kebab-case, alphanumériques + tirets)
30
31### Étape 2 : Lire la feuille Application
32- Via Service Desk MCP : `applications.get(client_slug, app_slug)`
33- Extraire métadonnées JSONB complet (10 sections)
34- Stocker en mémoire pour les étapes suivantes
35
36### Étape 3 : Valider les métadonnées
37Vérifier la complétude de ces 10 sections (voir **Checklist de validation** ci-dessous) :
38- ✓ identity
39- ✓ repo
40- ✓ frontend
41- ✓ database
42- ✓ stack
43- ✓ providers
44- ✓ client
45- ✓ env_vars_template
46- ✓ silo
47- ✓ devenv
48
49**Action** : Si validation échoue, afficher les sections manquantes et arrêter.
50
51### Étape 4 : Charger les références
52Lire depuis `references/` :
53- `architecture.md` → topologie des conteneurs
54- `nomenclature.md` → conventions de nommage
55- `metadata-schema.json` → schéma JSONB attendu
56- `constitution-template.md` → template Markdown pour constitutions
57- `devenv-config.yaml` → template Fly.io/environnement
58
59### Étape 5 : Générer les fichiers
60Créer dans `config/silos/{client_slug}-{app_slug}/` :
61- `docker-compose.silo-{client_slug}-{app_slug}.yml`
62- `fly/{pg,rest,auth,kong,storage,studio}.toml`
63- `.env.template`
64- `constitutions/{clientele,dev-orchestrator,dev-worker,security-auditor,security-validator,devops}.md`
65- `slack-channels.json`
66
67### Étape 6 : Présentation pour revue
68Afficher résumé génération → lister fichiers créés → proposer prévisualisation ou déploiement.
69
70---
71
72## Fichiers Générés
73
74### docker-compose.silo-{client}-{app}.yml
75
76```yaml
77version: '3.8'
78services:
79 silo-{client}-{app}-clientele:
80 silo-{client}-{app}-dev-orchestrator:
81 silo-{client}-{app}-dev-worker-1:
82 silo-{client}-{app}-dev-worker-2:
83 silo-{client}-{app}-security-auditor:
84 silo-{client}-{app}-security-validator:
85 silo-{client}-{app}-devops:
86
87networks:
88 silo-{client}-{app}-net:
89```
90
91**Chaque conteneur reçoit** :
92- `SILO_CLIENT_SLUG={client_slug}`
93- `SILO_APP_SLUG={app_slug}`
94- `AGENT_ROLE={role}`
95- `SOMTECH_DESK_API_KEY=${SOMTECH_DESK_API_KEY}`
96
97### Fly.io Services (fly/*.toml)
98
996 services Fly.io, nommés `devenv-{client}-{app}-{service}` :
100- `devenv-{client}-{app}-pg` → PostgreSQL (from metadata.database.project_ref)
101- `devenv-{client}-{app}-rest` → PostgREST API
102- `devenv-{client}-{app}-auth` → Supabase Auth
103- `devenv-{client}-{app}-kong` → API Gateway (Kong)
104- `devenv-{client}-{app}-storage` → S3-compatible storage
105- `devenv-{client}-{app}-studio` → Supabase Studio
106
107**Configuration** :
108- Region : `metadata.devenv.fly_region` (défaut : `yul`)
109- Org : `metadata.devenv.fly_org` (auto-généré : `{client}-{app}`, ex: `acme-erp`)
110- Auto-stop : `metadata.devenv.auto_stop_minutes` (défaut : 30 min)
111
112### .env.template
113
114Énumère TOUS les noms de variables (JAMAIS les valeurs) :
115- Section `[supabase]` : SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY
116- Section `[auth]` : AUTH_SECRET, OAUTH_GITHUB_ID, etc.
117- Section `[frontend]` : API_BASE_URL, ANALYTICS_ID, etc.
118- Générées depuis `metadata.env_vars_template`
119
120### Constitutions d'agents (constitutions/*.md)
121
122Chaque agent a sa constitution Markdown incluant :
123
1241. **Rôle & Responsabilités** : Décrire objectifs primaires
1252. **MCP Tools autorisés** : Lister depuis matrice d'accès (voir ci-dessous)
1263. **Stack technique** : Contexte depuis `metadata.stack`
1274. **Conventions de code** : Depuis `metadata.repo.branch_convention`
1285. **Règles de sécurité** : Privilege minimum, actions interdites
129
130#### Matrice d'accès MCP
131
132| Agent | somtech-desk | supabase | netlify | Sections autorisées |
133|-------|--------------|----------|---------|-------------------|
134| clientele | ✓ read | ✗ | ✗ | identity, client_config, silo.slack_channels |
135| dev-orchestrator | ✓ read | ✗ | ✗ | identity, repo, stack, silo.containers |
136| dev-worker | ✓ read | ✓ read | ✗ | identity, repo, stack, database, providers, env_vars |
137| security-auditor | ✓ read | ✓ read | ✗ | ALL (audit-only) |
138| security-validator | ✓ read | ✓ read | ✗ | ALL (validation-only) |
139| devops | ✓ read | ✓ rw | ✓ debug | ALL |
140
141### slack-channels.json
142
143```json
144{
145 "client_slug": "{client_slug}",
146 "app_slug": "{app_slug}",
147 "channels": [
148 "#silo-{client}-{app}-general",
149 "#silo-{client}-{app}-dev",
150 "#silo-{client}-{app}-security",
151 "#silo-{client}-{app}-devops"
152 ]
153}
154```
155
156---
157
158## Checklist de Validation
159
160**Toutes ces conditions DOIVENT être vraies avant génération** :
161
162- [ ] **identity** : client_slug + app_slug + client_name présents
163- [ ] **repo** : repo_url + default_branch + silo_branch + branch_convention présents
164- [ ] **frontend** : provider + site_id + build_command + publish_dir présents
165- [ ] **database** : provider + project_ref + project_url + region présents
166- [ ] **stack** : frontend_framework + language + auth_method + api_pattern présents
167- [ ] **providers** : au moins 1 provider configuré (frontend OU database OU auth)
168- [ ] **client** : contacts array non-vide + communication_language présents
169- [ ] **env_vars_template** : au moins section `[supabase]` présente
170- [ ] **silo** : containers array avec 7 rôles + slack_channels non-vide
171- [ ] **devenv** : devenv_enabled = true + fly_org + fly_region présents
172
173**Validation échouée** → Afficher liste des sections/champs manquants, retour à Étape 2.
174
175---
176
177## Références (répertoire `references/`)
178
179- **architecture-silos.md** → Topologie SomTech, diagramme conteneurs, flux communications
180- **nomenclature.md** → Conventions slug, noms services, variables d'environnement
181- **metadata-schema.md** → Schéma JSONB complet (10 sections, tous les champs)
182- **constitution-template.md** → Template Markdown de constitution agent
183- **devenv-flyio.md** → Defaults Fly.io, ressources, régions disponibles
184
185---
186
187## Notes d'implémentation
188
189- **Idempotence** : Si fichiers existent, proposer remplacement ou fusion
190- **Logging** : Tracer chaque étape (validation → génération → résumé)
191- **Erreurs** : Afficher contexte claire et suggestions correctives
192- **Français** : Descriptions, messages d'erreur en français ; termes techniques en anglais
193- **Sécurité** : JAMAIS de secrets dans .env.template (noms de vars SEULEMENT)
194
195---
196
197## Prochaines étapes après génération
198
199Une fois ce skill exécuté avec succès :
200
2011. **Review** : Équipe SomTech revoit les fichiers générés
2022. **Ajustements** : Modifications manuelles si nécessaire
2033. **Silo Deployer** : Skill de déploiement vers Fly.io et Docker Hub
2044. **Agent Initialization** : Chaque conteneur reçoit sa constitution et commence à fonctionner
205