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):
| Variable | Quelle | Beschreibung |
|---|---|---|
BUILD_DIR | build-scaffold | Absoluter Pfad zum Build-Arbeitsverzeichnis |
NL_PROMPT | COMMAND.md Abschnitt 1 | Ursprüngliche natürliche Sprachbeschreibung der Website |
THEME_SLUG | build-theme | Slug des installierten Themes |
THEME_NAME | build-theme | Lesbarer Name des Themes |
THEME_VERSION | build-theme | Versionszeichenfolge des installierten Themes |
THEME_INSTALLED | build-theme | Boolean – true, wenn das Theme erfolgreich installiert wurde |
INSTALLED_PLUGINS | build-content | Array von slug:name:version für erfolgreich installierte Plugins |
FAILED_PLUGINS | build-content | Array von Slugs, bei denen die Installation oder Aktivierung fehlgeschlagen ist |
PAGES_CREATED | build-content | Integer-Anzahl der erstellten Seiten |
POSTS_CREATED | build-content | Integer-Anzahl der erstellten Beiträge |
MENU_ASSIGNED | build-content | Boolean – true, wenn ein Navigationsmenü einer Theme-Position zugewiesen wurde |
MENU_LOCATION | build-content | Der 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_PLUGINSgeneriert 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]