Communitygithub.com

WordPress-Experte – Setup-Anleitung & Build-Metadaten

Erstellt eine priorisierte SETUP.md zur Konfiguration von Plugins und zum Ersetzen von Platzhalterinhalten und aktualisiert build.json mit NL-spezifischen Metadaten.

Was ist WordPress-Experte – Setup-Anleitung & Build-Metadaten?

Diese Fertigkeit (Skill) dient der Generierung einer detaillierten Setup-Anleitung (`SETUP.md`) und der Aktualisierung der Build-Metadaten (`build.json`) für einen WordPress-Import-Workflow. Sie wird nach dem `build-content`-Schritt und vor der ZIP-Paketierung ausgeführt. Basierend auf einer natürlichen Sprachbeschreibung (NL_PROMPT) und Informationen über installierte Plugins, das verwendete Theme, erstellte Seiten/Beiträge und fehlgeschlagene Installationen erstellt der Skill eine priorisierte Checkliste (Kritisch → Wichtig → Optional). Claude beurteilt dabei selbstständig, welche Konfigurationsschritte für die jeweilige Website am wichtigsten sind, und generiert spezifische Anleitungen mit vollständigen WordPress-Admin-Pfaden. Parallel dazu wird die `build.json` um Felder wie den NL-Prompt, Theme- und Plugin-Details sowie Content-Statistiken ergänzt und der Modus auf 'nl' gesetzt. Dies ermöglicht eine nahtlose Integration in CI/CD-Pipelines und stellt sicher, dass der Benutzer nach dem Import eine sofort umsetzbare, auf sein Projekt zugeschnittene Anleitung erhält.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Build Setup Skill

Generiere SETUP.md – die Anleitung zur Konfiguration und zum Ersetzen von Platzhalterinhalten nach dem Import – und aktualisiere build.json mit NL-spezifischen Metadaten. Dieser Skill wird nach build-content und vor der ZIP-Paketierung ausgeführt.

Eingabevariablen (gesetzt von build-theme und build-content):

VariableQuelleBeschreibung
BUILD_DIRbuild-scaffoldAbsoluter Pfad zum Build-Arbeitsverzeichnis
NL_PROMPTCOMMAND.md Abschnitt 1Ursprüngliche natürliche Sprachbeschreibung der Website
THEME_SLUGbuild-themeSlug des installierten Themes
THEME_NAMEbuild-themeLesbarer Name des Themes
THEME_VERSIONbuild-themeVersionszeichenfolge des installierten Themes
THEME_INSTALLEDbuild-themeBoolean – true, wenn das Theme erfolgreich installiert wurde
INSTALLED_PLUGINSbuild-contentArray von slug:name:version für erfolgreich installierte Plugins
FAILED_PLUGINSbuild-contentArray von Slugs, bei denen die Installation oder Aktivierung fehlgeschlagen ist
PAGES_CREATEDbuild-contentInteger-Anzahl der erstellten Seiten
POSTS_CREATEDbuild-contentInteger-Anzahl der erstellten Beiträge
MENU_ASSIGNEDbuild-contentBoolean – true, wenn ein Navigationsmenü einer Theme-Position zugewiesen wurde
MENU_LOCATIONbuild-contentDer Name der verwendeten Theme-Position (oder leere Zeichenfolge, wenn nicht zugewiesen)

Abschnitt 1: SETUP.md-Generierung

Schreibe $BUILD_DIR/SETUP.md unter Verwendung des gesamten verfügbaren Kontexts – installierte Plugins, Theme, Seitenanzahl und NL-Prompt –, um eine priorisierte Setup-Anleitung zu erstellen, der der Benutzer unmittelbar nach dem Import der Website in Local WP folgen kann.

echo "[Build] Generiere SETUP.md..."

# ── Baue den Abschnitt „Was wurde installiert“ ────────────────────────────────

SETUP_FILE="$BUILD_DIR/SETUP.md"

# Beginne mit dem Schreiben von SETUP.md
cat > "$SETUP_FILE" << 'SETUP_HEADER'
# Setup-Anleitung

Diese Anleitung führt Sie durch die Konfiguration Ihrer neuen WordPress-Website nach dem Import
in Local WP. Die Punkte sind nach Priorität geordnet – führen Sie zuerst die kritischen Schritte
aus, dann arbeiten Sie die wichtigen und optionalen Schritte in Ihrem eigenen Tempo ab.

---

## Was wurde installiert

SETUP_HEADER

# Theme-Eintrag
echo "- **Theme:** ${THEME_NAME} (v${THEME_VERSION})" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# Plugin-Liste
if [ ${#INSTALLED_PLUGINS[@]} -gt 0 ]; then
  echo "- **Plugins:**" >> "$SETUP_FILE"
  for plugin_entry in "${INSTALLED_PLUGINS[@]}"; do
    # Format: slug:name: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 generiert eine einzeilige Beschreibung für jedes Plugin basierend auf Plugin-Slug und -Name
    PLUGIN_PURPOSE="<einzeilige Beschreibung der Funktion von ${PLUGIN_NAME} – generiert von Claude auf Basis der Plugin-Kenntnisse>"
    echo "  - **${PLUGIN_NAME}** (v${PLUGIN_VER}) — ${PLUGIN_PURPOSE}" >> "$SETUP_FILE"
  done
  echo "" >> "$SETUP_FILE"
fi

# Fehlgeschlagene Plugins (falls vorhanden)
if [ ${#FAILED_PLUGINS[@]} -gt 0 ]; then
  echo "- **Plugins, die nicht installiert werden konnten:**" >> "$SETUP_FILE"
  for slug in "${FAILED_PLUGINS[@]}"; do
    echo "  - ${slug} — die Installation wurde während des Builds versucht, ist aber fehlgeschlagen" >> "$SETUP_FILE"
  done
  echo "" >> "$SETUP_FILE"
fi

Als nächstes schreibe die priorisierte Aktionsliste. Dies ist eine KI-basierte Beurteilungsaufgabe – Claude generiert die eigentlichen Schritt-für-Schritt-Anleitungen für jedes Plugin basierend auf Claudes Wissen über den Einstellungs-Workflow dieses Plugins, wobei der Kontext des NL-Prompts verwendet wird, um zu bestimmen, was für diese spezielle Website am wichtigsten ist.

# ── Baue den Abschnitt „Was als nächstes zu tun ist“ ──────────────────────────

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

## Was als nächstes zu tun ist (Reihenfolge nach Priorität)

SETUP_NEXT

# ── KRITISCHE Punkte ──────────────────────────────────────────────────────────
echo "### Kritisch" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

STEP_NUM=1

# Für jedes installierte Plugin, das eine Konfiguration erfordert, generiert Claude
# Schritt-für-Schritt-Anleitungen mit vollständigen WordPress-Admin-Navigationspfaden.
# Beispielmuster für WPForms Lite:
#
#   echo "${STEP_NUM}. **Konfiguriere WPForms – erstelle dein Kontaktformular**" >> "$SETUP_FILE"
#   cat >> "$SETUP_FILE" << 'EOF'
#      Gehe zu: **WPForms > Neu hinzufügen**
#      Schritte:
#      1. Klicke auf „Vorlage auswählen“ und wähle **Einfaches Kontaktformular**
#      2. Klicke auf „Vorlage verwenden“ – der Formular-Builder öffnet sich
#      3. (Optional) Füge Felder hinzu oder entferne sie, indem du sie aus dem linken Bereich ziehst
#      4. Klicke oben rechts auf **Speichern**
#      5. Gehe zu **Seiten > Kontakt > Bearbeiten**
#      6. Füge einen neuen Block hinzu, suche nach „WPForms“ und wähle den WPForms-Block aus
#      7. Wähle dein neu erstelltes Formular aus dem Dropdown aus
#      8. Klicke auf **Aktualisieren**, um die Seite zu speichern
#   EOF
#   STEP_NUM=$((STEP_NUM + 1))

# Claude generiert äquivalente Blöcke für jedes Plugin in INSTALLED_PLUGINS,
# das eine Benutzerkonfiguration erfordert. Plugins, die ohne Einrichtung funktionieren (z. B.
# ein Cache-Plugin, das sich leise aktiviert), können unter „Wichtig“ dokumentiert
# oder weggelassen werden, wenn keine Aktion erforderlich ist.

# ── Platzhalter-Ersetzung auf der Kontaktseite (immer kritisch) ────────────────
echo "${STEP_NUM}. **Ersetze Platzhalterinformationen auf der Kontaktseite**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'CONTACT_STEP'
   Gehe zu: **Seiten > Kontakt > Bearbeiten**
   Ersetze die folgenden Platzhalterinhalte durch deine tatsächlichen Daten:
   - Den fiktiven Geschäftsnamen in der Seitenüberschrift
   - Die fiktive Straßenadresse (z. B. „Musterstraße 123, Beispielstadt“)
   - Die fiktive Telefonnummer
   - Die fiktive E-Mail-Adresse
   - Alle fiktiven Geschäftszeiten oder Standortdetails

CONTACT_STEP
STEP_NUM=$((STEP_NUM + 1))

# ── WICHTIGE Punkte ───────────────────────────────────────────────────────────
echo "" >> "$SETUP_FILE"
echo "### Wichtig" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# Inhaltsersetzung auf der Über-uns-Seite
echo "${STEP_NUM}. **Aktualisiere den Inhalt der Über-uns-Seite**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'ABOUT_STEP'
   Gehe zu: **Seiten > Über uns > Bearbeiten**
   Ersetze die folgenden Platzhalterinhalte:
   - Den fiktiven Namen und die Biografie der Person/des Unternehmens
   - Alle fiktiven Teammitgliederbeschreibungen
   - Das Platzhalter-Portrait oder Profilbild (lade dein eigenes über den Medien-Block hoch)
   - Alle fiktiven Referenzen, den Werdegang oder die Gründungsgeschichte

ABOUT_STEP
STEP_NUM=$((STEP_NUM + 1))

# Inhaltsersetzung auf der Startseite
echo "${STEP_NUM}. **Aktualisiere den Heldenbereich und den Einführungstext der Startseite**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'HOME_STEP'
   Gehe zu: **Seiten > Startseite > Bearbeiten**
   Ersetze die folgenden Platzhalterinhalte:
   - Die Heldenüberschrift und den Untertitel (mache sie spezifisch für dein Unternehmen oder Angebot)
   - Das Heldenhintergrundbild oder das vorgestellte Bild (lade es über den Cover-/Bildblock hoch)
   - Den einleitenden Absatz, der beschreibt, was du tust
   - Alle Call-to-Action-Button-Beschriftungen und Links

HOME_STEP
STEP_NUM=$((STEP_NUM + 1))

# Zusätzliche Seiten basierend auf dem Seitentyp – Claude generiert seitenspezifische Anleitungen
# für jede Seite in PAGES_CREATED über Startseite, Über uns und Kontakt hinaus. Beispiele:
#
# Portfolio-Seite:
#   echo "${STEP_NUM}. **Füge deine echten Arbeiten zur Portfolio-Seite hinzu**" >> "$SETUP_FILE"
#   ...
#   STEP_NUM=$((STEP_NUM + 1))
#
# Dienstleistungsseite:
#   echo "${STEP_NUM}. **Aktualisiere die Dienstleistungsseite mit deinen tatsächlichen Angeboten**" >> "$SETUP_FILE"
#   ...
#   STEP_NUM=$((STEP_NUM + 1))
#
# Claude verwendet den NL_PROMPT-Kontext, um zu bestimmen, welche zusätzlichen Seiten existieren
# und welche Platzhalterinhalte sie enthalten, und schreibt dann gezielte Anleitungen.

# Zusätzliche Plugin-Konfiguration, die unter „Wichtig“ fällt (nicht „Kritisch“)
# Claude fügt hier Schritte für Plugins hinzu, die eine Einrichtung benötigen, aber nicht
# seitenbedrohlich sind, wenn sie unkonfiguriert bleiben (z. B. SEO-Plugin-Konfiguration, Gallerie-Einstellungen)

# ── OPTIONALE Punkte ──────────────────────────────────────────────────────────
echo "" >> "$SETUP_FILE"
echo "### Optional" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"

# Ersetzung von Beispielbeiträgen
echo "${STEP_NUM}. **Füge eigene Blogbeiträge hinzu, um Beispielinhalte zu ersetzen**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'POSTS_STEP'
   Die Beispielbeiträge zeigen, wie dein Theme Blog-Inhalte darstellt. Sie verwenden
   realistische, aber fiktive Themen, die mit dem Thema deiner Website zusammenhängen.
   Gehe zu: **Beiträge > Alle Beiträge**, um die vorhandenen Beispiele zu bearbeiten oder neue hinzuzufügen.
   Du kannst die Beispielbeiträge löschen, sobald du deine eigenen Inhalte veröffentlicht hast.

POSTS_STEP
STEP_NUM=$((STEP_NUM + 1))

# Ersetzung von Platzhalterbildern
echo "${STEP_NUM}. **Ersetze Platzhalterbilder durch deine eigenen Fotos**" >> "$SETUP_FILE"
cat >> "$SETUP_FILE" << 'IMAGES_STEP'
   Während des Builds wurden einfarbige Platzhalterbilder generiert, um das
   Layout-Konzept zu zeigen. Ersetze sie durch deine eigenen Bilder:
   Gehe zu: **Medien > Neue Datei hinzufügen**, um deine Fotos hochzuladen
   Bearbeite dann jede Seite/jeden Beitrag und tausche die Platzhalter-Bildblöcke gegen deine Uploads aus.

IMAGES_STEP
STEP_NUM=$((STEP_NUM + 1))

# Menüzuweisung, wenn nicht automatisch zugewiesen (FSE-Block-Theme-Randfall)
if [ "$MENU_ASSIGNED" = "false" ] || [ "$MENU_ASSIGNED" = "" ]; then
  echo "${STEP_NUM}. **Weise das Navigationsmenü im Site-Editor zu**" >> "$SETUP_FILE"
  cat >> "$SETUP_FILE" << 'MENU_STEP'
   Dein Navigationsmenü wurde während des Builds erstellt, konnte aber nicht automatisch
   einer Theme-Position zugewiesen werden (dies ist bei Block-Themes zu erwarten).
   Gehe zu: **Design > Editor > Navigation**
   Wähle „Primäres Menü“ aus und platziere es in deinem Kopfzeilen-Navigationsbereich.

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

# Finalisiere SETUP.md
echo "---" >> "$SETUP_FILE"
echo "" >> "$SETUP_FILE"
echo "*Generiert vom WordPress-Experten-Plugin – CoWork Build System*" >> "$SETUP_FILE"

SETUP_ITEM_COUNT=$((STEP_NUM - 1))
echo "[Build] SETUP.md generiert (${SETUP_ITEM_COUNT} Einrichtungspunkte)"

Implementierungshinweise für Claude:

  • Plugin-Anleitungen sind eine KI-basierte Beurteilungsaufgabe. Für jedes Plugin in INSTALLED_PLUGINS generiert Claude ausführliche Schritt-für-Schritt-Anleitungen unter Verwendung seines Wissens über den Einstellungs-Workflow dieses Plugins. Die Anleitungen müssen vollständige WP-Admin-Navigationspfade enthalten (z. B. „Gehe zu WPForms > Neu hinzufügen > Kontaktformular-Vorlage auswählen > Speichern > Shortcode kopieren > Kontaktseite bearbeiten > Shortcode-Block hinzufügen“).
  • Kontext bestimmt die Priorität. Claude liest NL_PROMPT, um zu bestimmen, welche Einrichtungspunkte kritisch vs. wichtig sind. Für eine Fotografie-Portfolio-Website ist das Ersetzen von Portfolio-Bildern kritisch. Für ein Restaurant ist die Konfiguration eines Reservierungs-Plugins kritisch.
  • Seitenspezifische Abdeckung. Jede durch build-content erstellte Seite erhält einen eigenen Eintrag mit spezifischen Anleitungen, welche Platzhalterinhalte sie enthält.
  • Keine allgemeinen Anleitungen. Alle Anleitungen sind spezifisch für das Plugin und den Seitentyp – keine allgemeinen „Konfiguriere deine Plugins“-Ratschläge.

Abschnitt 2: build.json NL-Metadaten-Update

Lese die vorhandene build.json (erstellt von build-scaffold Abschnitt 6) und füge NL-spezifische Felder hinzu. Verwendet dasselbe Python3-JSON-Parsing-Muster, das in build-mcp Abschnitt 4 etabliert wurde.

echo "[Build] Aktualisiere build.json mit NL-Metadaten..."

BUILD_JSON="$BUILD_DIR/build.json"

# Baue Arrays für die JSON-Serialisierung
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

# Schreibe Python-Skript in temporäre Datei (gleiches Muster wie build-content Bildgenerator)
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 mit NL-Metadaten aktualisiert')
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"

# Lösche temporäres Skript
rm -f "$NL_META_SCRIPT"

build.json nach NL-Metadaten-Update:

{
  "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"
  }
}

Abschnitt 3: Build-Zusammenfassung erweitern

Füge hinzu

…

[gekürzt für die Übersetzung]

Individual skills in this repo

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

Verwandte Skills