plugins/somtech-silo-manager/skills/silo-deployer/SKILL.md
Exécute le déploiement complet d'une silo après sa génération : conteneurs Docker, environnement de développement Fly.io, branche Git, et configuration Netlify. Transforme les configs générées en infrastructure active avec URLs stables et builds automatisés.
npx skillsauth add SomtechSolutionMAxime/somtech-pack silo-deployerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Le /deploy-silo skill orchestre la phase de déploiement qui suit immédiatement /generate-silo.
Il prend les configurations générées (docker-compose.yml, fly/*.toml, etc.) et les materialise en infrastructure :
MCPs utilisées :
somtech-desk : mise à jour du statut et événements de silonetlify : configuration des branches et variables d'environnementconfig/silos/{client}-{app}/ existe et contient :
docker-compose.silo-{client}-{app}.ymlfly/pg.toml, fly/rest.toml, fly/auth.toml, fly/kong.toml, fly/storage.toml, fly/studio.tomlnetlify.env.siloSOMTECH_DESK_API_KEY : authentification Service DeskNETLIFY_AUTH_TOKEN : authentification Netlifyflyctl (Fly CLI) avec $FLY_API_TOKEN configurésupabase CLI (database migrations)Vérifier que tout est prêt avant d'agir
config/silos/{client}-{app}/ existe et est completSi pas de confirmation : abort
docker compose -f docker-compose.silo-{client}-{app}.yml up -d
docker ps)Créer l'organisation Fly.io (une seule fois par app) :
flyctl orgs create {client}-{app}
Déployer les 6 services dans l'org :
flyctl apps create devenv-{client}-{app}-{service} --org {client}-{app}
flyctl deploy --config fly/{service}.toml
Après tous les déploiements :
supabase db push # migrations
Collecter connection_info :
silo_pg_url → postgres://devenv-{c}-{a}-pg.fly.dev:...silo_anon_key → depuis service rolesilo_service_role_key⚠️ Échec : Détruire les services Fly déjà créés (flyctl apps destroy devenv-{c}-{a}-{service})
Important : Les URLs Fly sont STABLES. devenv-{c}-{a}-kong.fly.dev ne change jamais après création.
git branch silo/{client}-{app} main
git push origin silo/{client}-{app}
CRITIQUE : Cette étape se fait UNE SEULE FOIS ici. Jamais reconfigurée après.
Via netlify-project-services MCP :
- Enable branch deploy : silo/{client}-{app}
- Set branch context env vars:
VITE_SUPABASE_URL = https://devenv-{client}-{app}-kong.fly.dev
VITE_SUPABASE_ANON_KEY = {anon_key from step 3}
VITE_APP_ENV = development
VITE_API_URL = https://devenv-{client}-{app}-rest.fly.dev
Via netlify-deploy-services MCP :
- Trigger first build of silo/{client}-{app}
- Wait for build completion
- Verify deploy succeeded
- Collect silo_preview_url (https://silo-{client}-{app}--{netlify-id}.netlify.app)
⚠️ Échec build : Logger l'erreur, set silo status = "error", ne pas continuer
Via MCP somtech-desk :
update_silo_status(client, app, "active", {
containers_count: 7,
docker_status: "running",
deployment_timestamp: ISO8601
})
log_silo_event(client, app, "provisioned", "silo-manager", {
configs_applied: [...],
fly_services: 6,
silo_branch: "silo/{client}-{app}",
silo_preview_url: "https://..."
})
applications.update(client, app, {
silo: {
silo_preview_url: "https://...",
silo_deployed_at: ISO8601,
silo_status: "active",
silo_docker_status: "running",
silo_pg_url: "postgres://...",
silo_anon_key: "..."
}
})
Afficher le résumé de déploiement :
✅ SILO DEPLOYED : {client}-{app}
Docker Containers (7) : ✅
• postgres, rest-api, auth, kong, storage, studio, worker-queue
Fly.io Services (6) : ✅
• devenv-{c}-{a}-pg.fly.dev
• devenv-{c}-{a}-rest.fly.dev
• devenv-{c}-{a}-auth.fly.dev
• devenv-{c}-{a}-kong.fly.dev
• devenv-{c}-{a}-storage.fly.dev
• devenv-{c}-{a}-studio.fly.dev
Git Branch : ✅
• silo/{client}-{app}
Netlify Branch Deploy : ✅
• Preview URL : https://silo-{client}-{app}--xyz.netlify.app
Next Steps:
1. Create Slack channels : #silo-{client}-{app}, #silo-{client}-{app}-alerts
2. Share preview URL with client
3. Notify dev-workers : branch ready for pushes
4. dev-workers push code → Netlify auto-deploys (NO manual config needed)
| Étape | Échec | Rollback |
|-------|-------|----------|
| Docker | Conteneur X ne démarre pas | Log + skip + continue |
| Fly.io | Déploiement échoue | flyctl apps destroy devenv-{c}-{a}-* |
| Git | Branch existe | Demander confirmation avant push force |
| Netlify | Build échoue | Set silo_status = "error", abort |
| Service Desk | MCP timeout | Retry 3x, log pour ops |
Jamais laisser Service Desk dans un état inconsistant.
| Rôle | Action | Autorisé ? | Qui ? | |------|--------|-----------|-------| | dev-worker | Push code sur silo/{c}-{a} | ✅ | dev-worker (via git) | | dev-worker | Reconfigurer Netlify | ❌ | JAMAIS | | devops | Démarrer/arrêter la silo | ✅ | devops (via MCP) | | devops | Reconfigurer Netlify | ❌ | JAMAIS | | silo-deployer | Configurer Netlify | ✅ | UNE SEULE FOIS (ici) | | anyone | Modifier env vars production | ❌ | Manual process only |
Les URLs Fly sont stables → env vars Netlify ne bougent jamais après cette étape.
references/deployment-checklist.md — checklist d'avant-déploiement et étapes opérationnellesreferences/rollback-procedures.md — procédures de rollback par étapetools
Documentation de référence SomCraft — DMS Markdown-native avec AI, MCP server, et Studio. À consulter pour toute question sur l'architecture, les APIs, les concepts, ou l'exploitation d'une instance SomCraft. TRIGGERS : somcraft, dms, document management, workspace somcraft, studio somcraft, mcp somcraft, api somcraft
tools
Déployer une instance SomCraft pour un client existant (migrations Supabase + Fly.io + skills). Orchestre 7 phases : pré-flight, plan, migrations, seed, déploiement, smoke tests, installation des skills. TRIGGERS : deploy-somcraft, déployer somcraft, installer somcraft, somcraft client, setup somcraft, upgrade somcraft, status somcraft
tools
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.
tools
Connaissances sur le Somtech RAG Service — indexation de documents, recherche sémantique, génération de réponses sourcées. Utiliser quand on travaille avec le RAG Service, qu'on cherche comment l'appeler, comment déboguer, ou comment il cohabite avec Somcraft. TRIGGERS : RAG, document_chunks, rag_search, rag_push_document, hybrid search, embeddings, pgvector, somtech-rag-service, RagClient