Claude Code Plugin Reference

Claude Code Hook-, Skill-, Befehls- und plugin.json-Verträge gegen ein echtes Repo verifiziert

von athola · athola/claude-night-market

Getestet · Funktioniert ★ 8.8/10

Claude Code Plugin Reference — Claude Code Hook-, Skill-, Befehls- und plugin.json-Verträge gegen ein echtes Repo verifiziert

Was es kann

Ein Referenzdokument, das die Claude Code Plugin-Maschinerie abdeckt: plugin.json- und metadata.json-Feldverträge, SKILL.md Frontmatter, Befehls- und Agenten-Frontmatter, Hook-Registrierung in hooks.json, der stdin-JSON-Payload-Vertrag, permissionDecision-Urteilsformen, Exit-Code-Semantik sowie Marktplatz-Installation und Versions-Lockstep. Es wird ausgelöst, wenn Sie ein Claude Code Plugin, einen Skill, einen Befehl, einen Agenten oder einen Hook erstellen oder debuggen. Der Inhalt wird aus dem athola/claude-night-market Repo kompiliert, sodass etwa ein Drittel davon Repo-lokale Konventionen (night-market Plugin-Namen, sanctum-Skripte, Python 3.9 Host-Beschränkungen) neben den portablen Harness-Verträgen sind.

Testbericht

Das Repo geklont, bestätigt, dass der Frontmatter mit name + einer 158-Zeichen-Beschreibung parst, und 13 zitierte Dateien stichprobenartig überprüft (check_plugin_hooks.py, validate_budget.py, hook_io.py, tdd_bdd_gate.py, marketplace.json, python39-compat.yml, ...) — alle vorhanden; kein curl|sh, base64 oder Injection-Text irgendwo in der 511-Zeilen-Datei. Die Installation erfolgte in einem frischen mktemp HOME und platzierte SKILL.md unter ~/.claude/skills/claude-code-plugin-reference/SKILL.md. Output-Test: Ich schrieb einen PreToolUse-Hook, der `git commit --no-verify` zweimal blockierte, extrahierte beide Python-Bodys und führte sie aus — die Baseline druckte permissionDecision „block“ (nicht einer von allow/deny/ask) und beendete mit Exit-Code 2, und sie stürzte mit einem unbehandelten JSONDecodeError (Exit-Code 1) sowohl bei `echo not-json` als auch bei leerem stdin ab; die Skill-befolgte Version druckte „deny“, beendete mit Exit-Code 0 in allen drei Fällen und sendete Diagnosen an stderr. Ich führte auch das eigene Gate des Repos gegen beide Manifeste aus: `python3 scripts/check_plugin_hooks.py` lehnte mein Baseline plugin.json ab (Exit-Code 1, „hooks array contains './hooks/hooks.json'“) und akzeptierte das Skill-befolgte (Exit-Code 0). Trigger-Formulierungen — SOLLTE laden: „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?“ — ich würde es für alle drei laden. SOLLTE NICHT: „Run the test suite and publish 1.9.16 to the marketplace“ (die explizite „Do not use for ops“-Anweisung der Beschreibung leitet mich zu night-market-operations, obwohl ein Marketplace-Abschnitt existiert) und „Write a Python CLI that parses JSON from stdin“ (kein Plugin-Kontext) — beides abgelehnt. Die Dokumentation verliert einen Punkt: Der Body behauptet, `"hooks": []` sei „verified across all 23 manifests“, aber auf der Festplatte tragen nur 11 von 23 den Schlüssel und 12 lassen ihn ganz weg (gleicher Effekt, falsche Formulierung), und die Beschreibung „used here“ nennt nie das Repo, sodass ein eigenständiger Installer nur night-market-spezifische Hinweise (/sanctum:update-plugins, plugins/imbue, Geschwister-night-market-*-Skills) mit portablen Harness-Fakten vermischt erhält. Ich konnte Python 3.9 lokal nicht ausführen, daher ist die datetime.UTC / py39-Behauptung durch Ausführung unbestätigt; jede andere Behauptung, die ich überprüfte (herald's 10s registered vs 8s internal timeout, die vow_no_ai_attribution warn/block-Anomalie, DESCRIPTION_MAX = 160, hook_io's stdin-first docstring), stimmte genau mit der Quelle überein.

Getestet am: 2026-07-21 · Claude Code 2.x (agent harness)

Installation

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.

Befehle & Beispiel-Prompts

  • /claude-code-plugin-referenceClaude Code Hook-, Skill-, Befehls- und plugin.json-Verträge gegen ein echtes Repo verifiziert

Skills reagieren auf normale Anfragen — keine Slash-Befehle nötig. Nach der Installation aktivieren Prompts wie diese den Skill (auf Englisch):

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