Claude Code Plugin Reference

Zweryfikowane kontrakty Claude Code hook, skill, command i plugin.json względem rzeczywistego repozytorium

Autor: athola · athola/claude-night-market

Testowano · Działa ★ 8.8/10

Claude Code Plugin Reference — Zweryfikowane kontrakty Claude Code hook, skill, command i plugin.json względem rzeczywistego repozytorium

Co robi ten skill

Dokument referencyjny obejmujący mechanizmy wtyczek Claude Code: kontrakty pól plugin.json i metadata.json, frontmatter SKILL.md, frontmatter poleceń i agentów, rejestrację hooków w hooks.json, kontrakt ładunku stdin-JSON, kształty werdyktów permissionDecision, semantykę kodów wyjścia oraz instalację marketplace i synchronizację wersji. Uruchamia się, gdy tworzysz lub debugujesz wtyczkę, umiejętność, polecenie, agenta lub hook Claude Code. Treść jest skompilowana z repozytorium athola/claude-night-market, więc mniej więcej jedna trzecia to konwencje lokalne dla repozytorium (nazwy wtyczek night-market, skrypty sanctum, ograniczenia hosta Python 3.9) obok przenośnych kontraktów uprzęży.

Raport z testu

Sklonowano repozytorium, potwierdzono, że frontmatter parsuje się z name + 158-znakowym description, i sprawdzono 13 cytowanych plików (check_plugin_hooks.py, validate_budget.py, hook_io.py, tdd_bdd_gate.py, marketplace.json, python39-compat.yml, ...) — wszystkie obecne; brak curl|sh, base64 lub tekstu iniekcji w żadnym miejscu w pliku o długości 511 linii. Instalacja została uruchomiona w świeżym mktemp HOME i umieściła SKILL.md w ~/.claude/skills/claude-code-plugin-reference/SKILL.md. Test wyjścia: napisałem hook PreToolUse blokujący `git commit --no-verify` dwukrotnie, wyodrębniłem oba ciała Pythona i uruchomiłem je — linia bazowa wydrukowała permissionDecision "block" (nie jedno z allow/deny/ask) i zakończyła się kodem 2, a także uległa awarii z nieprzechwyconym JSONDecodeError (exit 1) zarówno na `echo not-json`, jak i na pustym stdin; wersja zgodna z umiejętnością wydrukowała "deny", zakończyła się kodem 0 we wszystkich trzech przypadkach i wysłała diagnostykę do stderr. Uruchomiłem również własną bramę repozytorium przeciwko obu manifestom: `python3 scripts/check_plugin_hooks.py` odrzucił mój bazowy plugin.json (exit 1, "hooks array contains './hooks/hooks.json'") i zaakceptował ten zgodny z umiejętnością (exit 0). Frazy wyzwalające — POWINNY załadować: "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?" — załadowałbym go dla wszystkich trzech. NIE POWINNY: "Run the test suite and publish 1.9.16 to the marketplace" (jawne "Do not use for ops" w opisie kieruje mnie do night-market-operations, mimo że sekcja Marketplace istnieje) i "Write a Python CLI that parses JSON from stdin" (brak kontekstu wtyczki) — odrzuciłem oba. Dokumentacja straciła jeden punkt: treść twierdzi, że `"hooks": []` jest "verified across all 23 manifests", ale na dysku tylko 11 z 23 zawiera klucz, a 12 całkowicie go pomija (ten sam efekt, błędne sformułowanie), a "used here" w opisie nigdy nie nazywa repozytorium, so a standalone installer gets night-market-only pointers (/sanctum:update-plugins, plugins/imbue, sibling night-market-* skills) mixed into portable harness facts. Nie mogłem uruchomić Pythona 3.9 lokalnie, więc twierdzenie datetime.UTC / py39 jest niezweryfikowane przez wykonanie; każde inne twierdzenie, które sprawdziłem (herald's 10s registered vs 8s internal timeout, anomalia vow_no_ai_attribution warn/block, DESCRIPTION_MAX = 160, docstring stdin-first hook_io), dokładnie odpowiadało źródłu.

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

Instalacja

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.

Komendy i przykładowe prompty

  • /claude-code-plugin-referenceZweryfikowane kontrakty Claude Code hook, skill, command i plugin.json względem rzeczywistego repozytorium

Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):

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