Claude Code Plugin Reference

Contratti di hook, skill, comando e plugin.json di Claude Code verificati rispetto a un repository reale

di athola · athola/claude-night-market

Promosso ★ 8.8/10

Claude Code Plugin Reference — Contratti di hook, skill, comando e plugin.json di Claude Code verificati rispetto a un repository reale

Cosa fa

Un documento di riferimento che copre il meccanismo dei plugin di Claude Code: contratti dei campi plugin.json e metadata.json, frontmatter di SKILL.md, frontmatter di comando e agente, registrazione degli hook in hooks.json, il contratto del payload JSON di stdin, forme di verdetto permissionDecision, semantica dei codici di uscita e installazione del marketplace e blocco della versione. Si attiva quando si sta creando o debuggando un plugin, skill, comando, agente o hook di Claude Code. Il contenuto è compilato dal repository athola/claude-night-market, quindi circa un terzo di esso è convenzione locale del repository (nomi di plugin night-market, script sanctum, vincoli host Python 3.9) insieme ai contratti portatili dell'harness.

Rapporto di test

Clonato il repository, confermato che il frontmatter si analizza con nome + una descrizione di 158 caratteri, e controllato a campione 13 file citati (check_plugin_hooks.py, validate_budget.py, hook_io.py, tdd_bdd_gate.py, marketplace.json, python39-compat.yml, ...) — tutti presenti; nessun curl|sh, base64 o testo di iniezione in tutto il file di 511 righe. L'installazione è stata eseguita in una HOME temporanea pulita e SKILL.md è stato posizionato in ~/.claude/skills/claude-code-plugin-reference/SKILL.md. Test di output: ho scritto un hook PreToolUse che bloccava `git commit --no-verify` due volte, estratto entrambi i corpi Python e li ho eseguiti — la baseline ha stampato permissionDecision "block" (non uno di allow/deny/ask) ed è uscita con codice 2, e si è bloccata con un JSONDecodeError non gestito (exit 1) sia su `echo not-json` che su stdin vuoto; la versione seguita dalla skill ha stampato "deny", è uscita con codice 0 in tutti e tre i casi e ha inviato diagnostici a stderr. Ho anche eseguito il gate del repository stesso contro entrambi i manifest: `python3 scripts/check_plugin_hooks.py` ha rifiutato il mio plugin.json baseline (exit 1, "hooks array contains './hooks/hooks.json'") e ha accettato quello seguito dalla skill (exit 0). Frasi di attivazione — DOVREBBE caricare: "How do I register a PreToolUse hook in my plugin's hooks.json?", "My plugin hook isn't firing, it reads CLAUDE_TOOL_INPUT and gets nothing", "What frontmatter does a SKILL.md need and how does Skill(plugin:name) resolve?" — lo caricherei per tutti e tre. NON DOVREBBE: "Run the test suite and publish 1.9.16 to the marketplace" (la descrizione esplicita "Do not use for ops" mi indirizza a night-market-operations, anche se esiste una sezione Marketplace) e "Write a Python CLI that parses JSON from stdin" (nessun contesto di plugin) — ho rifiutato entrambi. I documenti hanno perso un punto: il corpo afferma che `"hooks": []` è "verified across all 23 manifests" ma su disco solo 11 su 23 contengono la chiave e 12 la omettono completamente (stesso effetto, formulazione sbagliata), e la descrizione "used here" non nomina mai il repository, quindi un installatore standalone ottiene puntatori solo per night-market (/sanctum:update-plugins, plugins/imbue, skill sorelle night-market-*) mescolati a fatti portatili dell'harness. Non sono riuscito a eseguire Python 3.9 localmente, quindi l'affermazione datetime.UTC / py39 non è verificata dall'esecuzione; ogni altra affermazione che ho controllato (herald's 10s registered vs 8s internal timeout, l'anomalia vow_no_ai_attribution warn/block, DESCRIPTION_MAX = 160, la docstring stdin-first di hook_io) corrispondeva esattamente alla sorgente.

Testato il: 2026-07-21 · Claude Code 2.x (agent harness)

Installazione

git clone --depth 1 https://github.com/athola/claude-night-market.git /tmp/claude-code-plugin-reference-src
mkdir -p ~/.claude/skills
cp -R /tmp/claude-code-plugin-reference-src/.claude/skills/claude-code-plugin-reference ~/.claude/skills/claude-code-plugin-reference
# Single markdown file, no deps, no scripts, nothing to run.
# The skill lives in the repo's own .claude/skills/ (a project skill), not in a plugin.
# The ~15 scripts it cites (scripts/check_plugin_hooks.py, plugins/abstract/scripts/validate_budget.py,
#   plugins/sanctum/scripts/update_versions.py, ...) all exist in the clone at /tmp/claude-code-plugin-reference-src
#   but NOT next to the installed skill, so the "re-verify" commands in its Provenance section
#   only run from inside a night-market checkout. Keep the clone if you want them.
# Plugin-marketplace alternative does NOT ship this skill: /plugin marketplace add athola/claude-night-market
#   installs the plugins under plugins/, and this file is not registered in any plugin.json.

Comandi e prompt di esempio

  • /claude-code-plugin-referenceContratti di hook, skill, comando e plugin.json di Claude Code verificati rispetto a un repository reale

Gli skill si attivano con richieste in linguaggio naturale, senza comandi da ricordare. Dopo l'installazione, prompt come questi lo attivano (in inglese):

  • Explain how Claude Code skills are triggered
  • Help me author a new Claude Code plugin
  • Debug why my hook isn't firing correctly