Communitygithub.com

Cowork WordPress Expert

Génère SETUP.md avec une configuration de plugins priorisée et des instructions de remplacement de contenu, et met à jour build.json avec les métadonnées spécifiques au langage naturel.

Qu'est-ce que Cowork WordPress Expert ?

Cette compétence, conçue pour Claude Code et les agents IA de développement WordPress, génère un guide de configuration post-importation complet et priorisé (SETUP.md) après l'étape de construction du contenu et avant le packaging final. Elle analyse les plugins installés, le thème actif, les pages et articles créés, ainsi que la description du site en langage naturel pour produire des instructions étape par étape avec des chemins de navigation dans l'administration WordPress. La compétence classe les actions en sections Critique (configuration des plugins, remplacement des informations de contact), Important (pages À propos, Accueil, configuration SEO) et Optionnel (articles, images). Elle met également à jour le fichier `build.json` avec des métadonnées structurées (mode NL, plugins, thème, contenu créé) en utilisant un script Python, permettant à l'agent de suivre l'état précis du projet et de planifier les prochaines étapes en fonction du contexte du site.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dr-robert-li/cowork-wordpress-expert/tree/HEAD/skills/build-setup

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Compétence de Configuration de Build

Génère SETUP.md — le guide de configuration post-importation et de remplacement de contenu pour l'utilisateur — et met à jour build.json avec les métadonnées spécifiques au langage naturel (NL). Cette compétence s'exécute après build-content et avant l'empaquetage en zip.

Variables d'entrée (définies par build-theme et build-content) :

VariableSourceDescription
BUILD_DIRbuild-scaffoldChemin absolu vers le répertoire de travail de build
NL_PROMPTCOMMAND.md Section 1Description originale du site en langage naturel
THEME_SLUGbuild-themeSlug du thème installé
THEME_NAMEbuild-themeNom lisible du thème
THEME_VERSIONbuild-themeChaîne de version du thème installé
THEME_INSTALLEDbuild-themeBooléen — vrai si le thème a été installé avec succès
INSTALLED_PLUGINSbuild-contentTableau de slug:nom:version pour les plugins installés avec succès
FAILED_PLUGINSbuild-contentTableau des slugs qui ont échoué à l'installation ou à l'activation
PAGES_CREATEDbuild-contentNombre entier de pages créées
POSTS_CREATEDbuild-contentNombre entier d'articles créés
MENU_ASSIGNEDbuild-contentBooléen — vrai si le menu de navigation a été attribué à un emplacement de thème
MENU_LOCATIONbuild-contentNom de l'emplacement du thème utilisé (ou chaîne vide si non attribué)

Section 1 : Génération de SETUP.md

Écrivez $BUILD_DIR/SETUP.md en utilisant le contexte complet disponible — plugins installés, thème, nombre de pages et prompt NL — pour produire un guide de configuration priorisé que l'utilisateur pourra suivre immédiatement après avoir importé le site dans Local WP.

echo "[Build] Génération de SETUP.md..."

# ── Construire la section Ce qui est installé ────────────────────────────────────────

SETUP_FILE="$BUILD_DIR/SETUP.md"

# Commencer à écrire SETUP.md
cat > "$SETUP_FILE" << 'SETUP_HEADER'
# Guide de Configuration

Ce guide vous accompagne dans la configuration de votre nouveau site WordPress après l'avoir
importé dans Local WP. Les éléments sont classés par priorité — effectuez d'abord les étapes
Critiques, puis travaillez les étapes Importantes et Optionnelles à votre rythme.

---

## Ce qui est installé

SETUP_HEADER

# Entrée du thème
echo "- **Thème :** ${THEME_NAME} (v${THEME_VERSION})" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# Liste des plugins
if [ ${#INSTALLED_PLUGINS[@]} -gt 0 ]; then
  echo "- **Plugins :**" >> "$SETUP_FILE"
  for plugin_entry in "${INSTALLED_PLUGINS[@]}"; do
    # Format : slug:nom:version
    PLUGIN_SLUG=$(echo "$plugin_entry" | cut -d: -f1)
    PLUGIN_NAME=$(echo "$plugin_entry" | cut -d: -f2)
    PLUGIN_VER=$(echo "$plugin_entry" | cut -d: -f3)
    # Claude génère une description d'une ligne pour chaque plugin en fonction du slug et du nom
    PLUGIN_PURPOSE="<description d'une ligne de ce que fait ${PLUGIN_NAME} — générée par Claude à partir de sa connaissance du plugin>"
    echo "  - **${PLUGIN_NAME}** (v${PLUGIN_VER}) — ${PLUGIN_PURPOSE}" >> "$SETUP_FILE"
  done
  echo "" >> "$SETUP_FILE"
fi

# Plugins ayant échoué (le cas échéant)
if [ ${#FAILED_PLUGINS[@]} -gt 0 ]; then
  echo "- **Plugins qui ont échoué à l'installation :**" >> "$SETUP_FILE"
  for slug in "${FAILED_PLUGINS[@]}"; do
    echo "  - ${slug} — l'installation a été tentée mais a échoué pendant le build" >> "$SETUP_FILE"
  done
  echo "" >> "$SETUP_FILE"
fi

Ensuite, écrivez la liste d'actions classées par priorité. C'est une tâche de jugement IA — Claude génère les instructions étape par étape réelles pour chaque plugin en fonction de sa connaissance du flux de travail des paramètres de ce plugin, en utilisant le contexte du prompt NL pour déterminer ce qui compte le plus pour ce site particulier.

# ── Construire la section Que faire ensuite ────────────────────────────────────────

cat >> "$SETUP_FILE" << 'SETUP_NEXT'
---

## Que faire ensuite (Ordre de priorité)

SETUP_NEXT

# ── Éléments CRITIQUES ────────────────────────────────────────────────────────────
echo "### Critique" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

STEP_NUM=1

# Pour chaque plugin installé nécessitant une configuration, Claude génère
# des instructions étape par étape avec les chemins de navigation complets de l'administration WordPress.
# Exemple de modèle pour WPForms Lite :
#
#   echo "${STEP_NUM}. **Configurer WPForms — créer votre formulaire de contact**" >> "$SETUP_FILE"
#   cat >> "$SETUP_FILE" << 'EOF'
#      Allez dans : **WPForms > Ajouter nouveau**
#      Étapes :
#      1. Cliquez sur "Sélectionner un modèle" et choisissez **Formulaire de contact simple**
#      2. Cliquez sur "Utiliser le modèle" — le constructeur de formulaire s'ouvre
#      3. (Facultatif) Ajoutez ou supprimez des champs en faisant glisser depuis le panneau de gauche
#      4. Cliquez sur **Enregistrer** en haut à droite
#      5. Allez dans **Pages > Contact > Modifier**
#      6. Ajoutez un nouveau bloc, recherchez "WPForms", et sélectionnez le bloc WPForms
#      7. Choisissez votre formulaire nouvellement créé dans la liste déroulante
#      8. Cliquez sur **Mettre à jour** pour enregistrer la page
#   EOF
#   STEP_NUM=$((STEP_NUM + 1))

# Claude génère des blocs équivalents pour chaque plugin dans INSTALLED_PLUGINS
# qui nécessite une configuration utilisateur. Les plugins qui fonctionnent sans configuration (par ex.,
# un plugin de cache qui s'active silencieusement) peuvent être documentés sous Important
# ou omis si aucune action n'est nécessaire.

# ── Remplacement des informations fictives de la page de contact (toujours Critique) ────────────────────
echo "${STEP_NUM}. **Remplacer les informations fictives de la page Contact**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'CONTACT_STEP'
   Allez dans : **Pages > Contact > Modifier**
   Remplacez le contenu fictif suivant par vos vraies informations :
   - Le nom d'entreprise fictif dans le titre de la page
   - L'adresse postale fictive (par ex., "123 Rue Exemple, Ville Exemple")
   - Le numéro de téléphone fictif
   - L'adresse e-mail fictive
   - Toute information d'horaires ou de localisation fictive

CONTACT_STEP
STEP_NUM=$((STEP_NUM + 1))

# ── Éléments IMPORTANTS ───────────────────────────────────────────────────────────
echo "" >> "$SETUP_FILE"
echo "### Important" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# Remplacement du contenu de la page À propos
echo "${STEP_NUM}. **Mettre à jour le contenu de la page À propos**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'ABOUT_STEP'
   Allez dans : **Pages > À propos > Modifier**
   Remplacez le contenu fictif suivant :
   - Le nom de la personne/de l'entreprise fictif et la biographie
   - Toute description d'équipe fictive
   - La photo de profil ou l'image de présentation fictive (téléchargez la vôtre via le bloc Média)
   - Tout crédit, historique ou histoire d'origine fictif

ABOUT_STEP
STEP_NUM=$((STEP_NUM + 1))

# Remplacement du contenu de la page d'accueil
echo "${STEP_NUM}. **Mettre à jour le héros et le contenu d'introduction de la page d'accueil**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'HOME_STEP'
   Allez dans : **Pages > Accueil > Modifier**
   Remplacez le contenu fictif suivant :
   - Le titre et l'accroche du héros (rendez-le spécifique à votre entreprise ou offre)
   - L'image de fond ou en vedette du héros (téléchargez via le bloc Couverture/Image)
   - Le paragraphe d'introduction décrivant ce que vous faites
   - Tout libellé et lien de bouton d'appel à l'action

HOME_STEP
STEP_NUM=$((STEP_NUM + 1))

# Pages supplémentaires en fonction du type de site — Claude génère des conseils spécifiques
# pour chaque page dans PAGES_CREATED au-delà de Accueil, À propos, Contact. Exemples :
#
# Page Portfolio :
#   echo "${STEP_NUM}. **Ajouter votre vrai travail à la page Portfolio**" >> "$SETUP_FILE"
#   ...
#   STEP_NUM=$((STEP_NUM + 1))
#
# Page Services :
#   echo "${STEP_NUM}. **Mettre à jour la page Services avec vos offres réelles**" >> "$SETUP_FILE"
#   ...
#   STEP_NUM=$((STEP_NUM + 1))
#
# Claude utilise le contexte NL_PROMPT pour déterminer quelles pages supplémentaires existent
# et quel contenu fictif elles contiennent, puis rédige des conseils ciblés.

# Toute configuration supplémentaire de plugin qui relève de Important (pas Critique)
# Claude ajoute des étapes ici pour les plugins qui nécessitent une configuration mais ne cassent pas
# le site si laissés non configurés (par ex., configuration de plugin SEO, paramètres de galerie)

# ── Éléments OPTIONNELS ────────────────────────────────────────────────────────────
echo "" >> "$SETUP_FILE"
echo "### Optionnel" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# Remplacement des articles échantillons
echo "${STEP_NUM}. **Ajouter vos propres articles de blog pour remplacer le contenu échantillon**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'POSTS_STEP'
   Les articles échantillons montrent comment votre thème rend le contenu du blog. Ils utilisent
   des sujets réalistes mais fictifs liés au sujet de votre site.
   Allez dans : **Articles > Tous les articles** pour modifier les échantillons existants ou en ajouter de nouveaux.
   Vous pouvez supprimer les articles échantillons une fois que vous avez publié votre propre contenu.

POSTS_STEP
STEP_NUM=$((STEP_NUM + 1))

# Remplacement des images fictives
echo "${STEP_NUM}. **Remplacer les images fictives par vos propres photos**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'IMAGES_STEP'
   Des images fictives de couleur unie ont été générées pendant le build pour montrer l'intention
   de mise en page. Remplacez-les par vos propres images :
   Allez dans : **Médias > Ajouter nouveau** pour télécharger vos photos
   Puis modifiez chaque page/article et remplacez les blocs d'images fictives par vos téléchargements.

IMAGES_STEP
STEP_NUM=$((STEP_NUM + 1))

# Attribution du menu si non attribué automatiquement (cas particulier des thèmes bloc FSE)
if [ "$MENU_ASSIGNED" = "false" ] || [ "$MENU_ASSIGNED" = "" ]; then
  echo "${STEP_NUM}. **Attribuer le menu de navigation dans l'éditeur de site**" >> "$SETUP_FILE"
  cat >> "$SETUP_FILE" << 'MENU_STEP'
   Votre menu de navigation a été créé pendant le build mais n'a pas pu être attribué
   à un emplacement de thème automatiquement (c'est attendu pour les thèmes blocs).
   Allez dans : **Apparence > Éditeur > Navigation**
   Sélectionnez "Menu principal" et placez-le dans votre zone de navigation d'en-tête.

MENU_STEP
  STEP_NUM=$((STEP_NUM + 1))
fi

# Finaliser SETUP.md
echo "---" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"
echo "*Généré par WordPress Expert Plugin — Système de Build CoWork*" >> "$SETUP_FILE"

SETUP_ITEM_COUNT=$((STEP_NUM - 1))
echo "[Build] SETUP.md généré (${SETUP_ITEM_COUNT} éléments de configuration)"

Notes d'implémentation pour Claude :

  • Les instructions pour les plugins sont une tâche de jugement IA. Pour chaque plugin dans INSTALLED_PLUGINS, Claude génère des instructions verbeuses et étape par étape en utilisant sa connaissance du flux de travail des paramètres de ce plugin. Les instructions doivent inclure les chemins de navigation complets de l'administration WP (par ex., "Allez dans WPForms > Ajouter nouveau > Sélectionner le modèle de formulaire de contact > Enregistrer > Copier le shortcode > Modifier la page Contact > Ajouter le bloc shortcode").
  • Le contexte détermine la priorité. Claude lit NL_PROMPT pour déterminer quels éléments de configuration sont Critiques vs Importants. Pour un site portfolio de photographie, remplacer les images du portfolio est Critique. Pour un restaurant, configurer un plugin de réservation est Critique.
  • Couverture page par page. Chaque page créée par build-content reçoit une entrée dédiée avec des conseils spécifiques sur le contenu fictif qu'elle contient.
  • Pas d'instructions génériques. Tous les conseils sont spécifiques au plugin et au type de site — pas de conseils génériques comme "configurez vos plugins".

Section 2 : Mise à jour des métadonnées NL dans build.json

Lisez le build.json existant (créé par build-scaffold Section 6) et ajoutez les champs spécifiques NL. Utilise le même modèle d'analyse JSON Python3 établi dans build-mcp Section 4.

echo "[Build] Mise à jour de build.json avec les métadonnées NL..."

BUILD_JSON="$BUILD_DIR/build.json"

# Construire les tableaux pour la sérialisation JSON
INSTALLED_JSON=""
for plugin_entry in "${INSTALLED_PLUGINS[@]}"; do
  PLUGIN_SLUG=$(echo "$plugin_entry" | cut -d: -f1)
  PLUGIN_NAME=$(echo "$plugin_entry" | cut -d: -f2)
  PLUGIN_VER=$(echo "$plugin_entry" | cut -d: -f3)
  if [ -n "$INSTALLED_JSON" ]; then
    INSTALLED_JSON="${INSTALLED_JSON},"
  fi
  INSTALLED_JSON="${INSTALLED_JSON}{\"slug\":\"${PLUGIN_SLUG}\",\"name\":\"${PLUGIN_NAME}\",\"version\":\"${PLUGIN_VER}\",\"installed\":true}"
done

FAILED_JSON=""
for slug in "${FAILED_PLUGINS[@]}"; do
  if [ -n "$FAILED_JSON" ]; then
    FAILED_JSON="${FAILED_JSON},"
  fi
  FAILED_JSON="${FAILED_JSON}\"${slug}\""
done

# Écrire le script Python dans un fichier temporaire (même modèle que le générateur d'images build-content)
NL_META_SCRIPT="/tmp/update_build_json_$$.py"

cat > "$NL_META_SCRIPT" << PYEOF
import json, sys

build_file = sys.argv[1]
nl_prompt = sys.argv[2]
theme_slug = sys.argv[3]
theme_name = sys.argv[4]
theme_version = sys.argv[5]
theme_installed = sys.argv[6] == 'true'
pages_created = int(sys.argv[7])
posts_created = int(sys.argv[8])
menu_assigned = sys.argv[9] == 'true'
installed_json = sys.argv[10]
failed_json = sys.argv[11]

with open(build_file) as f:
    data = json.load(f)

data['mode'] = 'nl'
data['nl_prompt'] = nl_prompt
data['theme'] = {
    'slug': theme_slug,
    'name': theme_name,
    'version': theme_version,
    'installed': theme_installed
}
data['plugins'] = json.loads('[' + installed_json + ']') if installed_json else []
data['content'] = {
    'pages_created': pages_created,
    'posts_created': posts_created,
    'menu_assigned': menu_assigned
}
if failed_json:
    data['failed_plugins'] = json.loads('[' + failed_json + ']')

with open(build_file, 'w') as f:
    json.dump(data, f, indent=2)

print('[Build] build.json mis à jour avec les métadonnées NL')
PYEOF

python3 "$NL_META_SCRIPT" \
  "$BUILD_JSON" \
  "$NL_PROMPT" \
  "$THEME_SLUG" \
  "$THEME_NAME" \
  "$THEME_VERSION" \
  "${THEME_INSTALLED:-true}" \
  "$PAGES_CREATED" \
  "$POSTS_CREATED" \
  "${MENU_ASSIGNED:-false}" \
  "$INSTALLED_JSON" \
  "$FAILED_JSON"

# Nettoyer le script temporaire
rm -f "$NL_META_SCRIPT"

build.json après la mise à jour des métadonnées NL :

{
  "build_id": "nl-photography-portfolio-20260220-143022",
  "mode": "nl",
  "nl_prompt": "a portfolio site for a freelance photographer",
  "wp_version": "6.7",
  "php_version": "8.2",
  "site_url": "http://localhost",
  "site_title": "a portfolio site for a freelance photographer",
  "created_at": "2026-02-20T14:30:22Z",
  "theme": {
    "slug": "blocksy",
    "name": "Blocksy",
    "version": "2.0.50",
    "installed": true
  },
  "plugins": [
    { "slug": "envira-gallery-lite", "name": "Envira Gallery Lite", "version": "1.9.0", "installed": true },
    { "slug": "wpforms-lite", "name": "WPForms Lite", "version": "1.9.0", "installed": true }
  ],
  "content": {
    "pages_created": 4,
    "posts_created": 3,
    "menu_assigned": false
  },
  "failed_plugins": [],
  "mcp_adapter": {
    "included": true,
    "activated": true,
    "version": "0.4.1"
  }
}

Section 3 : Extension du résumé de build

Ajouter

…

[tronqué pour la traduction]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills associés