skills/plugin-authoring/SKILL.md
Reference skill for Claude Code plugin and hook authoring. Covers plugin.json schema, all 15 hook events, exit code semantics, matchers, environment variables, caching behavior, and proven Agonda patterns. Use when designing hooks, scaffolding plugins, validating hook configuration, or debugging hook behavior. Not a workflow — a knowledge base that other skills reference.
npx skillsauth add alavida-ai/skills plugin-authoringInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Knowledge base for building correct Claude Code plugins and hooks. Read the quick reference below, then navigate to the detailed reference files as needed.
{
"name": "{name}",
"version": "0.1.0",
"description": "{what this plugin does}",
"hooks": "./hooks/hooks.json",
"skills": "./skills/"
}
Required field: name. The hooks field MUST be present for hooks to load. The skills field defaults to ./skills/ if omitted.
{
"description": "{what these hooks do}",
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "bash \"${CLAUDE_PLUGIN_ROOT}/hooks/session-start.sh\"",
"timeout": 10,
"statusMessage": "Bootstrapping..."
}
]
}
]
}
}
Three nesting levels: event → matcher group → hook handler array.
| Exit Code | Meaning | Stdout | Stderr | |-----------|---------|--------|--------| | 0 | Success / allow | Parsed for JSON output | Ignored | | 2 | Blocking error | Ignored | Fed back to Claude as error | | Other | Non-blocking error | Ignored | Shown in verbose mode only |
| Reference | Read when... | |-----------|-------------| | plugin-structure.md | Creating plugin.json, understanding directory layout, debugging cache issues, checking activation flow | | hook-events.md | Choosing which events to hook, checking what input each event receives, understanding blocking behavior | | hook-types-and-output.md | Writing hook handlers, choosing command vs prompt vs agent, structuring JSON output, using hookSpecificOutput | | matchers-and-environment.md | Filtering when hooks fire, writing regex matchers, using environment variables, structuring hooks.json | | gotchas-and-debugging.md | Hooks not firing, unexpected behavior, cache not refreshing, debugging strategy, common pitfalls | | agonda-patterns.md | Implementing workspace discovery, compound loops, governance enforcement, SessionStart bootstrap, using proven Agonda hook templates |
development
Generate beautiful, self-contained HTML pages that visually explain systems, code changes, plans, and data. Use when the user asks for a diagram, architecture overview, diff review, plan review, project recap, comparison table, or any visual explanation of technical concepts. Also use proactively when you are about to render a complex ASCII table (4+ rows or 3+ columns) — present it as a styled HTML page instead.
tools
Guide for authoring skills in the Agonda system. Covers two skill templates (CLI/API and knowledge processing), YAML frontmatter spec, progressive disclosure patterns, config management, and shipping checklists. Use when creating a new skill, validating skill structure, or understanding skill conventions.
development
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," or "SEO health check." For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema-markup.
development
Invisible git layer for non-technical users. Handles commits, pushes, pulls, branching, and conflict resolution automatically — surfacing decisions only when human judgment is required, in plain business language with no git jargon. ALWAYS activate this skill when working with a non-technical user in a GitHub repo. Also activate when the user says "save my work," "send for review," "what changed," "am I up to date," or "publish my changes."