# Claude Code-plugin — gotchas ("ikke gjør dette") Feil som faktisk har brutt plugins i dette repoet. ## Hooks - **`hooks` som array.** Det er et **objekt** med event-nøkler (`PreToolUse`, `PostToolUse`, `Stop`, `SessionStart`, `UserPromptSubmit`, …). En array feiler stille / lastes ikke. - **`matcher` som nestet objekt.** Det er en **enkel string** — `"Bash"`, `"Write|Edit"`. Et objekt der er feil. - **Deklarere `"hooks"` i `plugin.json`.** Ikke gjør det — Claude Code auto-discoverer `hooks/hooks.json`. Dobbel-deklarasjon = uforutsigbar oppførsel. - **Hardkode stier i hook-commands.** Bruk `${CLAUDE_PLUGIN_ROOT}` — plugin-roten varierer per installasjon. - **Bash-/Python-avhengige hooks.** Runtime-hooks skal være Node.js `.mjs` (cross-platform). Hvis du *må* bruke bash: bash 3.2-kompatibel (ingen `declare -A`, `readarray`/`mapfile`, `|&`) — macOS-default er 3.2. ## Context-budget - **Laste en hel katalog** (`references/`, `references/ai-security/`). Navngi spesifikke filer. Hele kataloger sprenger budsjettet for nedstrøms-arbeid. - **Bruke `general-purpose` + "les agentfilen X"** i stedet for en registrert `subagent_type`. Det dobler kostnaden og hopper over agent-definisjonens egen verktøy-/modell-konfig. - **Preloade "i tilfelle".** Max-3-filer-per-invokasjon. Trenger du en fjerde, les den når behovet oppstår. - **Parallell agent-spawning uten grunn.** Sekvensiell er default; parallell krever begrunnelse (uavhengige oppgaver, ikke "raskere"). - **Plugin-`CLAUDE.md` som prosa-essay.** Under 100 linjer, tabell-basert. Lang = ignorert (samme dynamikk som Cursor-regler). ## Manifest & struktur - **`plugin.json` uten `auto_discover`** (eller med komponenter både auto-discovered *og* manuelt deklarert). Hold det konsistent — auto-discovery for commands/agents/skills/hooks. - **Feil filnavn-mønster.** Agenter: `descriptive-name-agent.md`. Commands: `command.md`. Skills: `skill-name/SKILL.md`. Avvik = komponenten oppdages ikke. - **Skill-`description` som bare sier hva, ikke når.** Triggering avhenger av at description-en beskriver *aktiveringssituasjonen*. "Does X" trigges ikke; "Use when the user asks to X / mentions Y" trigges. - **Agent-`description` uten when-to-use.** Samme: agenten velges på description-en. Inkluder konkrete triggere / eksempler. ## Prosess - **Oppdatere `CLAUDE.md` i en separat commit etterpå.** Samme commit som endringen — ny agent + agent-tabell, ny command + command-tabell, ny hook + hook-oversikt. - **Glemme versjonssync.** Versjonsbump? Oppdater package.json/`plugin.json`, README-badges, CHANGELOG, konstanter — alle i samme commit. - **Skrive kode i andre repos / utvide scope etter godkjent plan** uten eksplisitt klarsignal.