Hook Development for Claude Code Plugins
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
Generate new Navigator slash commands following project conventions.
$ npx skills add qf-studio/navigator --skill plugin-slash-command -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install qf-studio/navigator plugin-slash-command --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/qf-studio/navigator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/plugin-slash-command .claude/skills/plugin-slash-command && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "plugin-slash-command" agent skill from https://github.com/qf-studio/navigator/tree/main/skills/plugin-slash-command into .claude/skills/plugin-slash-command/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-slash-command", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/qf-studio/navigator/tree/main/skills/plugin-slash-commandType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add qf-studio/navigator --skill plugin-slash-command -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install qf-studio/navigator plugin-slash-command --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qf-studio/navigator.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/plugin-slash-command .agents/skills/plugin-slash-command && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "plugin-slash-command" agent skill from https://github.com/qf-studio/navigator/tree/main/skills/plugin-slash-command into .agents/skills/plugin-slash-command/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-slash-command", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add qf-studio/navigator --skill plugin-slash-command -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install qf-studio/navigator plugin-slash-command --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qf-studio/navigator.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/plugin-slash-command .cursor/skills/plugin-slash-command && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "plugin-slash-command" agent skill from https://github.com/qf-studio/navigator/tree/main/skills/plugin-slash-command into .cursor/skills/plugin-slash-command/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-slash-command", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/qf-studio/navigator.git --path skills/plugin-slash-command--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add qf-studio/navigator --skill plugin-slash-command -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install qf-studio/navigator plugin-slash-command --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qf-studio/navigator.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/plugin-slash-command .gemini/skills/plugin-slash-command && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "plugin-slash-command" agent skill from https://github.com/qf-studio/navigator/tree/main/skills/plugin-slash-command into .gemini/skills/plugin-slash-command/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-slash-command", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install qf-studio/navigator plugin-slash-commandInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add qf-studio/navigator --skill plugin-slash-command -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/qf-studio/navigator.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/plugin-slash-command .github/skills/plugin-slash-command && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "plugin-slash-command" agent skill from https://github.com/qf-studio/navigator/tree/main/skills/plugin-slash-command into .github/skills/plugin-slash-command/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-slash-command", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add qf-studio/navigator --skill plugin-slash-command -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install qf-studio/navigator plugin-slash-command --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/qf-studio/navigator.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/plugin-slash-command .opencode/skills/plugin-slash-command && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "plugin-slash-command" agent skill from https://github.com/qf-studio/navigator/tree/main/skills/plugin-slash-command into .opencode/skills/plugin-slash-command/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "plugin-slash-command", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
plugin-slash-commandGenerate new Navigator slash commands following project conventions.
Plugin Slash Command is an agent skill from qf-studio/navigator. Generate new Navigator slash commands following project conventions. Use when user says "add slash command", "create command", "new /nav command", or "add /nav:[name] command".
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files (for example `examples/medium-command-example.md`, `examples/simple-command-example.md` and `functions/command_generator.py`).
It sits in Agent Workflows, covering Hooks and plugins. The repository describes itself as: Finish What You Start — Context engineering for Claude Code. Sessions last 20+ exchanges instead of crashing at 7. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f1cf0eb. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditGrepGlobBashFrom allowed-tools in the SKILL.md frontmatter.
Ships script files (Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Plugin Slash Command loads about 3k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 516 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Grep, Glob, BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from qf-studio/navigator at commit f1cf0eb, republished under its MIT licence (© qf-studio). 516 words, ~2,963 tokens.
.claude/skills/plugin-slash-command/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Generate new slash commands for the Navigator plugin following established conventions and patterns.
Auto-invoke when user says:
Ask user:
Use Task agent to find similar commands:
"Find existing Navigator commands similar to [purpose]:
- Commands in commands/*.md
- Similar complexity level
- Common structure patterns
- Return 2-3 best examples"What to extract from examples:
Based on complexity level:
Simple commands:
- YAML frontmatter (description)
- Title
- What This Does (2-3 sentences)
- Usage (basic syntax + examples)
- When to Use (2-3 scenarios)
- Expected Output
- Troubleshooting (2-3 common issues)
- Closing statementMedium commands:
- YAML frontmatter
- Title + overview
- What This Does (detailed explanation)
- When to Use (5-6 scenarios with examples)
- Usage / Execution Steps
- Output Format
- Integration notes (if applicable)
- Troubleshooting (4-5 issues)
- Best Practices
- Closing statementComplex commands:
- YAML frontmatter
- Title + comprehensive overview
- What This Does (with comparisons)
- Execution Plan (multi-step)
- Pre-flight checks
- Step-by-step implementation
- Validation steps
- Integration with PM tools (if applicable)
- Success criteria
- Troubleshooting (comprehensive)
- Edge cases
- Performance notes
- Closing statementUse predefined function: functions/command_generator.py
# Generates command markdown following Navigator conventions
generate_command(
name="[command-name]",
description="[one-line purpose]",
complexity="simple|medium|complex",
sections={
"what_this_does": "...",
"when_to_use": [...],
"usage": "...",
"execution_steps": [...],
"troubleshooting": [...]
}
)File location: commands/[command-name].md
Structure:
Use predefined function: functions/command_validator.py
Checks:
Display:
✅ Slash Command Created: /nav:[command-name]
File: commands/[command-name].md
Lines: [count]
Complexity: [simple/medium/complex]
Try it:
/nav:[command-name]
What it does:
[brief description]
Next steps:
1. Test the command manually
2. Update plugin documentation if public-facing
3. Add to CLAUDE.md command list if neededUser: "Add a slash command for showing Navigator version"
Execution:
Gather requirements:
Name: version
Purpose: Display current Navigator plugin version
Complexity: Simple
Type: User-facingAnalyze similar (via Task agent):
Found similar: marker.md (simple, informational)
Pattern: Short description → Usage → When to use → OutputDesign structure:
- Frontmatter
- Title: "Navigator Version Info"
- What This Does: 1 paragraph
- Usage: Basic syntax
- When to Use: 2-3 scenarios
- Output Format: Example
- Closing statementGenerate: commands/version.md
---
description: Display Navigator plugin version and system info
---
# Navigator Version Info
Check which version of Navigator you're running.
## What This Does
Displays the current Navigator plugin version, Claude Code version, and system configuration.
## Usage
```bash
/nav:versionReporting issues:
Checking updates:
System diagnostics:
Navigator Plugin
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Version: 2.2.0
Installed: /Users/you/.claude/plugins/navigator
Config: .agent/.nav-config.json
System:
- Claude Code: 1.5.0
- Project: /Users/you/project
- Platform: darwinKeep your Navigator up to date for latest features 🚀
Validate: ✅ All checks pass
Show usage:
✅ Slash Command Created: /nav:version
File: commands/version.md
Lines: 45
Complexity: Simple
Try it: /nav:versionUser: "Create a command for archiving old task documentation"
Execution:
Gather requirements:
Name: archive-tasks
Purpose: Move completed tasks to archive directory
Complexity: Medium (file operations, validation)
Type: User-facingAnalyze similar:
Found: markers.md (file management, user selection)
Found: compact.md (multi-step process)
Pattern: Overview → Execution Plan → Steps → ValidationDesign structure:
- Frontmatter
- Title + overview
- What This Does (comparison with manual approach)
- When to Use (5 scenarios)
- Execution Plan (Step 1-4)
- Output Format
- Troubleshooting (4 issues)
- Best Practices
- ClosingGenerate: commands/archive-tasks.md (full content)
Validate: ✅ All checks pass
Show usage: Command ready to use
After generating command, show:
✅ Slash Command Created: /nav:[name]
Structure:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📄 commands/[name].md
Sections:
✅ YAML frontmatter
✅ Title and overview
✅ What This Does
✅ When to Use ([N] scenarios)
✅ Usage / Execution Plan
✅ [Additional sections based on complexity]
✅ Troubleshooting
✅ Closing statement
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Command: /nav:[name]
Purpose: [brief description]
Lines: [count]
Test it:
/nav:[name]
Documentation:
- Add to README.md if user-facing
- Update CLAUDE.md command list
- Add to plugin.json if neededPattern: Simple structure, quick output Examples: version, status, list Sections: Description → Usage → Output
Pattern: Execute something, show result Examples: marker, compact, archive Sections: Description → Execution → Validation → Result
Pattern: Multi-step process, checks Examples: init, migrate, setup Sections: Pre-flight → Steps → Validation → Troubleshooting
Pattern: User selection, operations, feedback Examples: markers (list/load), tasks (list/select) Sections: Overview → Modes → Operations → Results
Problem: Command content is sparse, missing sections
Solutions:
Problem: Tone or structure feels off
Solutions:
Problem: Invalid frontmatter
Solutions:
description field existspython -c "import yaml; yaml.safe_load(open('commands/[name].md').read().split('---')[1])"Problem: Examples don't feel realistic
Solutions:
This skill succeeds when:
The plugin-slash-command skill automates Navigator command creation, ensuring consistency and saving development time 🔧
© qf-studio, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files in skills/plugin-slash-command of qf-studio/navigator.
Open the folder on GitHubat commit f1cf0eb
Plugin Slash Command next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Plugin Slash Command this skillqf-studio/navigator | 354 | — | ~3k | Automated safety check: Notes | MIT | |
| Hook Development for Claude Code Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~4.1k | Automated safety check: Notes | Apache-2.0 | |
| Claude Code Agent Developmentanthropics/claude-plugins-official | 38k | 8 repos | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Claude Code Skill Developer Guidediet103/claude-code-infrastructure-showcase | 10k | 11 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Plugin Settings Patternanthropics/claude-plugins-official | 38k | 7 repos | ~3k | Automated safety check: Pass | Apache-2.0 | |
| MCP Integration for Pluginsanthropics/claude-plugins-official | 38k | 11 repos | ~3.1k | Automated safety check: Pass | Apache-2.0 |
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
anthropics/claude-plugins-official
Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.
diet103/claude-code-infrastructure-showcase
A guide to creating and managing Claude Code skills with auto-activation: skill-rules.json triggers, hooks, enforcement levels, YAML frontmatter and progressive disclosure.
anthropics/claude-plugins-official
Shows how Claude Code plugins keep per-project settings and state in .claude/plugin-name.local.md files with YAML frontmatter and a markdown body.
anthropics/claude-plugins-official
Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.
anthropics/claude-plugins-official
Explains how to write Claude Code slash commands: Markdown files with YAML frontmatter, arguments, file references, bash context and interactive prompts.
qf-studio/navigator
Create REST/GraphQL API endpoint with validation, error handling, and tests.
qf-studio/navigator
Load Navigator documentation navigator when starting development session, resuming work, or beginning new feature.
qf-studio/navigator
Generate backend tests (unit, integration, mocks) for existing code.
qf-studio/navigator
Create database migration with schema changes and rollback. An agent skill from qf-studio/navigator.
qf-studio/navigator
Create React/Vue component with TypeScript, tests, and styles.
qf-studio/navigator
Generate frontend component tests (React Testing Library, Vue Test Utils, snapshot) for existing components.
Categories
Generate new Navigator slash commands following project conventions. Plugin Slash Command is an agent skill from qf-studio/navigator. Generate new Navigator slash commands following project conventions.
Plugin Slash Command fits situations like: user says add slash command; new /nav command; add /nav:[name] command.
Run `npx skills add qf-studio/navigator --skill plugin-slash-command -a claude-code`. Or copy the skill folder (skills/plugin-slash-command in qf-studio/navigator) into .claude/skills/plugin-slash-command in your project. Claude Code loads it when a task matches its description.
Run `npx skills add qf-studio/navigator --skill plugin-slash-command -a codex`. Or copy the skill folder (skills/plugin-slash-command in qf-studio/navigator) into .agents/skills/plugin-slash-command in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add qf-studio/navigator --skill plugin-slash-command -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/plugin-slash-command, .gemini/skills/plugin-slash-command, .github/skills/plugin-slash-command and .opencode/skills/plugin-slash-command in your project.
Going by SKILL.md and its folder, Plugin Slash Command needs Python for the scripts in its folder. Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Grep, Glob, Bash.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Plugin Slash Command is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Plugin Slash Command: Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Claude Code Agent Development (anthropics/claude-plugins-official, 38k stars), Claude Code Skill Developer Guide (diet103/claude-code-infrastructure-showcase, 10k stars) and Plugin Settings Pattern (anthropics/claude-plugins-official, 38k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
qf-studio (a GitHub organization) maintains it in qf-studio/navigator, which has 354 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on October 7, 2026.
Source: qf-studio/navigator on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.