name: 42-init
description: >
Bootstrap een klantproject voor 42-SEO-Skills. Vraagt naar profiel
(content/ecom/technical/full), activeert alleen relevante skills via
disabledSkills in .claude/settings.local.json, zet auth (.env) op,
maakt de gedeelde Python venv in ~/.claude/venvs/42-seo/, en prikt
42-reports// neer. Use when user says "init SEO project",
"42-init", "setup SEO", "nieuw klantproject", "initialiseer SEO".
allowed-tools: Read, Write, Edit, Bash, AskUserQuestion
version: 1.0.0
tags: [init, bootstrap, setup, onboarding]
/42-init — Project Bootstrap
Zet een schoon klantproject op voor gebruik van de 42-SEO-Skills plugin. Zes stappen, in deze volgorde. Ga pas door naar de volgende stap als de vorige geslaagd is.
Stap 1 — Profiel kiezen
Vraag de gebruiker één AskUserQuestion met deze opties:
| Profiel | Voor | Aantal skills |
|---|---|---|
content |
Blogs, editorial, thought leadership | 13 |
ecom |
Webshops, productpagina's, categorieën | 16 |
technical |
Hreflang/sitemap/schema/migrations | 14 |
full |
Alles (agency of onbekend) | alle 59 |
Lees het gekozen profiel:
cat "${CLAUDE_PLUGIN_ROOT}/profiles/<profiel>.json"
Parse skills[] — die heb je straks nodig voor stap 5.
Stap 2 — Klantnaam
Vraag: "Wat is de naam (slug) van dit project? Bijvoorbeeld: acme-nl, klant-xyz."
Valideer: alleen [a-z0-9-]. Bij hoofdletters of spaties: vervang automatisch en toon
de genormaliseerde vorm ter bevestiging.
Maak aan:
mkdir -p "42-reports/<klant-slug>"
Stap 3 — Auth (.env)
Check of .env al bestaat in cwd. Als niet:
cp "${CLAUDE_PLUGIN_ROOT}/.env.example" .env
Lees de lege .env in, toon de verplichte velden en vraag welke keys de gebruiker
nu wil invullen. Minimaal nodig voor de gekozen profielen:
- content / ecom:
GOOGLE_API_KEY(Gemini),DATAFORSEO_LOGIN+DATAFORSEO_PASSWORD - technical:
FIRECRAWL_API_KEY(alleen als gebruiker Firecrawl gebruikt) - full: alles bovenstaand +
GSC_SERVICE_ACCOUNT_JSON(pad naar service account file)
Gebruiker kan overslaan ("later") — alleen waarschuwen dat sommige skills dan falen met duidelijke error.
Stap 4 — Gedeelde Python venv
De venv is gedeeld over alle klantprojecten en staat op ~/.claude/venvs/42-seo/.
Check eerst of hij al bestaat:
VENV="$HOME/.claude/venvs/42-seo"
if [ ! -d "$VENV" ]; then
mkdir -p "$HOME/.claude/venvs"
python3 -m venv "$VENV"
"$VENV/bin/pip" install --upgrade pip
"$VENV/bin/pip" install -r "${CLAUDE_PLUGIN_ROOT}/requirements.txt"
fi
Als hij wel bestaat: pip install --upgrade om nieuwe/bijgewerkte packages uit
requirements.txt te installeren (idempotent).
Schrijf daarna een .envrc of leg uit hoe te activeren:
source ~/.claude/venvs/42-seo/bin/activate
Optionele deps (playwright, spacy, reportlab, etc.): vraag alleen bij
profielen die ze nodig hebben. Bijvoorbeeld playwright alleen als 42-internal-links
of 42-seo-agi in profiel zit.
Stap 5 — Skill allowlist via disabledSkills
Bereken welke skills uit moeten staan op basis van het profiel. Pak alle 59 skills min de geselecteerde set, en converteer naar glob-patterns waar mogelijk voor compactheid.
Schrijf .claude/settings.local.json:
mkdir -p .claude
Genereer JSON:
{
"disabledSkills": [
"42-ecom-*",
"42-product-titles",
"42-geo-sales",
"42-programmatic-seo"
],
"42-init": {
"profile": "content",
"client": "<klant-slug>",
"initializedAt": "<ISO datum>"
}
}
Als er al een .claude/settings.local.json is — merge in plaats van overschrijven.
Bewaar bestaande keys (bv. permissions, env).
Belangrijk: 42-init zelf mag nooit op de disabled-lijst staan, anders kan de
gebruiker niet her-initialiseren.
Stap 6 — Samenvatting tonen
Toon een korte samenvatting:
✓ 42-SEO-Skills geïnitialiseerd voor <klant-slug>
Profiel: content (13 skills actief)
Venv: ~/.claude/venvs/42-seo (gedeeld)
Reports: ./42-reports/<klant-slug>/
Auth: .env (ingevuld: GOOGLE_API_KEY, DATAFORSEO_*)
.env (nog leeg: GSC_SERVICE_ACCOUNT_JSON)
Eerste stap: /42-audit <domein>
of: /42-seo-project start <domein>
Herstart-hint tonen: "Herstart je Claude Code-sessie (/reload) zodat de
allowlist actief wordt."
Fouten en edge cases
- Geen
python3: waarschuw en stop. Vraag om Python 3.11+ te installeren. - venv failure: toon de foutmelding letterlijk, niet uitleggen alsof het werkt.
- Geen schrijfrechten in cwd: stop, vraag om in project-root te staan.
- Al geïnitialiseerd (settings.local.json heeft
42-init.profile): vraag of gebruiker wil overschrijven of aanvullen.
Re-init flow
Als /42-init opnieuw gedraaid wordt in een project dat al een 42-init-sectie
heeft in .claude/settings.local.json, bied drie opties:
- Profiel wijzigen — overschrijf
disabledSkills, behoud .env en venv - Alleen deps bijwerken — skip settings en .env, alleen
pip install -U - Opnieuw beginnen — wis settings, .env, reports (met bevestiging!)
Notes voor Claude
- Gebruik AskUserQuestion voor alle keuzes, niet free-text prompts
- Voer bash in project-root uit (niet
cdnaar plugin-root) - Verwijs naar scripts met
${CLAUDE_PLUGIN_ROOT}/scripts/... - De gedeelde venv beteken dat alle klantprojecten dezelfde package-versies delen
— als een klant een oudere versie nodig heeft, waarschuw en bied aan project-
lokale venv (
./.venv) te maken als override