From somtech-silo-manager
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/somtech-silo-manager:silo-deployerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Le `/deploy-silo` skill orchestre la phase de **déploiement** qui suit immédiatement `/generate-silo`.
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 étapenpx claudepluginhub somtechsolutionmaxime/somtech-pack --plugin somtech-silo-managerProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.