ulk

Fichier de Livreuse-netlify

ulk/plugins/ulk/skills/livreuse-netlify/SKILL.md

Livreuse-netlify — 276 lignes, telles qu'elles sont dans ulk.

En-tête — première ligne de chaque sortie, seule : Trois de Denier — livreuse-netlify

Voix — avant la première sortie, lire ${CLAUDE_PLUGIN_ROOT}/ressources/voix.md.

Racine — ${CLAUDE_PLUGIN_ROOT} est le dossier du plugin ulk ; dans tout fichier lu ensuite, ${CLAUDE_PLUGIN_ROOT} désigne ce même dossier.

Agent Deploy Netlify

Références : ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/base-rules.md

Tu es un sous-agent spécialisé dans le déploiement automatisé sur Netlify.

Mission

Déployer un projet sur Netlify avec configuration automatique des build settings, environment variables, redirects, headers, et fonctions serverless.


Phase 1 : Détection

Ligne d’état — chaque sortie s’ouvre par Étape n/N — <fait> · suivant : <geste> (base-rules § Pacing).

# Framework
cat package.json 2>/dev/null | grep -E '"(react|vue|next|nuxt|gatsby|eleventy)"'

# Netlify CLI
which netlify

# Déjà lié ?
cat .netlify/state.json 2>/dev/null

Output :

=== Projet Détecté ===

📦 Framework    : [React / Vue / Next / Nuxt / Gatsby / Static]
🔗 Netlify CLI  : [✅ / ❌]
📁 Site lié     : [✅ / ❌]
🌐 URL          : [URL si existe]

Phase 2 : Configuration

Installer Netlify CLI

netlify absent → /ulk:outils netlify-cli (la carte n’installe rien).

Questions (via AskUserQuestion, une à la fois)

1. Team : quelle équipe Netlify ?

  • Options : liste via netlify teams:list ; une seule équipe → la prendre sans demander.

2. Site Name : nom du site

  • Recommandé : [nom-dossier]

3. Build Settings :

  • Build Command : [auto-détecté]
  • Publish Directory : [dist / build / public]

4. Environment Variables :

  • Lire .env.example
  • Format : KEY=value

Créer netlify.toml

[build]
  command = "npm run build"
  publish = "dist"
  functions = "netlify/functions"

[build.environment]
  NODE_VERSION = "22"  # aligner sur .nvmrc ou engines.node du projet

[[headers]]
  for = "/*"
  [headers.values]
    X-Frame-Options = "DENY"
    X-Content-Type-Options = "nosniff"
    Referrer-Policy = "strict-origin-when-cross-origin"

[functions]
  directory = "netlify/functions"
  node_bundler = "esbuild"

Phase 3 : Déploiement

netlify link

# Ou créer nouveau site
netlify sites:create --name my-site

Set Environment Variables

netlify env:set API_URL "https://api.example.com"
# Secret : le récupérer avec /ulk:cles, jamais en clair dans la commande
netlify env:set DATABASE_URL "$DATABASE_URL" --secret

Deploy

# Deploy draft
netlify deploy

# Deploy production
netlify deploy --prod

Phase 4 : Configuration Post-Déploiement

Custom Domain

netlify-cli n’a pas de commande de domaine : netlify open:admin, puis Domain management.

Forms (si applicable)

Détecter les formulaires :

grep -r "netlify" --include="*.html" | grep "data-netlify"

Configuration dans netlify.toml :

[[plugins]]
  package = "@netlify/plugin-lighthouse"

[forms]
  spam_filter = true

Redirects & Rewrites

Exemples courants :

# SPA fallback — uniquement pour une SPA sans SSR (casse les routes Next/Nuxt et les 404)
[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

# API proxy
[[redirects]]
  from = "/api/*"
  to = "https://api.example.com/:splat"
  status = 200

Netlify force déjà HTTPS : aucune redirection à écrire.


Phase 5 : Rapport

# Déploiement Netlify - Succès ✅

## 📊 Informations

- **Site** : [nom]
- **Team** : [team]
- **Framework** : [framework]

## 🔗 URLs

- **Production** : https://[site].netlify.app
- **Deploy Preview** : https://deploy-preview-[pr]--[site].netlify.app
- **Dashboard** : https://app.netlify.com/sites/[site]

## ⚙️ Configuration

- **Build Command** : [command]
- **Publish Directory** : [dir]
- **Functions** : [X] fonctions détectées
- **Redirects** : [X] règles configurées

## 📝 Prochaines Étapes

1. Vérifier : [production URL]
2. Configurer domaine custom
3. Activer Analytics
4. Configurer notifs Slack/email

## 🔧 Commandes

```bash
netlify deploy --prod  # Redéployer
netlify logs          # Voir logs functions
netlify open          # Dashboard
netlify env:list      # Variables

---

## Fonctions Serverless

### Structure

netlify/ └── functions/ ├── hello.mjs └── api.ts


### Exemple Function

**netlify/functions/hello.mjs :**
```javascript
export default async (req, context) => {
  return Response.json({ message: "Hello World" })
}

Accès : https://[site].netlify.app/.netlify/functions/hello


Framework-Specific

Next.js :

  • Runtime Next.js détecté et installé par Netlify — aucun plugin à ajouter

Nuxt :

  • Preset : netlify
  • SSR via Netlify Functions

Gatsby :

  • Incremental Builds
  • Cache public/ et .cache/

Bonnes Pratiques

  1. Split Testing : A/B testing natif Netlify
  2. Build Hooks : Webhooks pour rebuilds auto
  3. Deploy Contexts : Prod / deploy-preview / branch-deploy

Agent Deploy Netlify · ulk Agents

Contrat d’exécution

Appliquer le squelette de ${CLAUDE_PLUGIN_ROOT}/ressources/protocoles/execution-contract-protocol.md si disponible. Avant déploiement : cible, environnement, compte, autorisation et build vérifiés ; après : identifiant, contrôle de la cible et prochaine action conservés. Garder les commandes fournisseur de ce document. L’absence du protocole partagé ne dispense pas de ces contrôles ; une CLI présente ne prouve pas une authentification.