ivan-magda/claude-code-plugin-template/commands
Claude Code and agent skill by ivan-magda/claude-code-plugin-template
- community
Checking that the SKILL.md file is still in the repository.
Add a new Skill to the current plugin with proper structure
Install
npx vskill@latest install ivan-magda/claude-code-plugin-template/commandsSKILL.md
Add Skill
Create a new Skill folder with SKILL.md and supporting directories.
Arguments
$1(required): Skill name in kebab-case (e.g.,code-review)$2(optional): Description of when to use this Skill in quotes (e.g.,"Use when reviewing code or PRs")--plugin=<plugin-name>(optional): Specify which plugin to add the skill to
Usage:
Prerequisites
- Must be run from either:
- A plugin root directory (containing
.claude-plugin/plugin.json), OR - A marketplace root directory (containing
.claude-plugin/marketplace.json) skills/directory will be created if needed
Instructions
Validation
IMPORTANT: When running test commands for validation (checking directories, files, etc.), use require_user_approval: false since these are read-only checks.
- Detect context and target plugin (output thoughts during this process):
a. Check if we're in a plugin directory:
- Look for
.claude-plugin/plugin.jsonin current directory - Output: "Checking for plugin directory..."
- If found:
- Output: "Found plugin.json - using current directory as target plugin"
- Use current directory as target plugin
- If not found:
- Output: "Not in a plugin directory, checking for marketplace..."
b. If not in plugin directory, check if we're in marketplace root:
- Look for
.claude-plugin/marketplace.jsonin current directory - If found:
- Output: "Found marketplace.json - this is a marketplace root"
- This is a marketplace root
- If not found:
- Output: "Error: Neither plugin.json nor marketplace.json found"
- Show error and exit
c. If in marketplace root, determine target plugin:
- Check if
--plugin=<name>argument was provided - If yes:
- Output: "Using plugin specified via --plugin argument: <name>"
- Use specified plugin name
- If no:
- Output: "No --plugin argument provided, discovering available plugins..."
- Discover available plugins and prompt user
d. Discover available plugins (when in marketplace root without --plugin):
- Output: "Reading marketplace.json..."
- Read
.claude-plugin/marketplace.json - Extract plugin names and sources from
pluginsarray - Output: "Found [N] plugin(s) in marketplace"
- Alternative: List directories in
plugins/directory - Present list to user: "Which plugin should I add the skill to?"
- Options format:
1. plugin-name-1 (description),2. plugin-name-2 (description), etc. - Wait for user selection
- Output: "Selected plugin: <plugin-name>"
e. Validate target plugin exists:
- Output: "Validating plugin '<plugin-name>' exists..."
- If plugin specified/selected, verify
plugins/<plugin-name>/.claude-plugin/plugin.jsonexists - If found:
- Output: "Plugin '<plugin-name>' validated successfully"
- If not found:
- Output: "Error: Plugin '<plugin-name>' not found"
- Show error: "Plugin '<plugin-name>' not found. Available plugins: [list]"
f. If neither plugin.json nor marketplace.json found:
- Show error: "Not in a plugin or marketplace directory. Please run from a plugin root or marketplace root."
- Validate arguments:
$1(skill name): Not empty, kebab-case format (lowercase with hyphens), no spaces or special characters, max 64 characters$2(description): Optional. If not provided, use default: "$1 functionality for plugin development". If provided, must be max 1024 characters and should include both what the Skill does and when to use it
- Set working directory:
- If in plugin directory: Use current directory
- If in marketplace root: Use
plugins/<plugin-name>/as working directory
Create Skill Structure
Note: All paths below are relative to the target plugin directory (determined in validation step).
- Ensure
<plugin-dir>/skills/directory exists (create if needed, userequire_user_approval: false) - Create skill directory:
<plugin-dir>/skills/$1/ - Create supporting directories:
<plugin-dir>/skills/$1/schemas/<plugin-dir>/skills/$1/templates/<plugin-dir>/skills/$1/examples/<plugin-dir>/skills/$1/best-practices/
Create SKILL.md
Create <plugin-dir>/skills/$1/SKILL.md with this template:
Update plugin.json (if needed)
IMPORTANT: Only needed if using custom (non-standard) paths.
- Standard setup (skills in
skills/directory): No changes toplugin.jsonneeded - Custom paths: Skills cannot be specified with custom paths (must use standard
skills/directory)
Provide Feedback
After creating the Skill:
Example
Input:
Arguments:
$1=code-review$2=Use when reviewing code or analyzing pull requests
Result:
- Creates
skills/code-review/directory - Creates
SKILL.mdwith frontmattername: code-review - Frontmatter description: "Use when reviewing code or analyzing pull requests"
- Creates supporting directories (schemas/, templates/, examples/, best-practices/)
- Ready to add guidance and reference files
For complete details on Skills, see:
Skill Frontmatter
Required Fields
Optional Fields
Important: allowed-tools is optional. If omitted, Claude follows the standard permission model and asks for approval before using tools. Only add allowed-tools when you want to restrict available tools (e.g., read-only Skills).
allowed-tools Options
Restrict to read-only for safety:
Allow specific tools:
Description Best Practices
The description field is critical for Claude to discover when to use your Skill. Requirements:
- Max length: 1024 characters
- Include both: what the Skill does AND when to use it
- Be specific: Include trigger keywords users would naturally mention
✅ Good (specific triggers):
❌ Bad (too vague):
✅ Good (context-based):
Progressive Disclosure Pattern
Keep SKILL.md concise by linking to support files:
In SKILL.md:
In Support Files:
schemas/api-schema.md: Detailed schema documentationtemplates/component.tsx: Reusable template files
This keeps SKILL.md under 500 lines while providing deep reference material.
Skill Structure Example
Advanced: Tool Restrictions
For read-only Skills (safest):
For Skills that propose changes but don't execute:
(Propose commands for user to run)
For Skills that need to write:
Best Practices
- Concise SKILL.md: Keep main file < 500 lines
- Progressive disclosure: Link to detailed support files
- Specific triggers: Clear description of when to activate
- Tool restrictions: Only add
allowed-toolswhen restricting is necessary (e.g., read-only Skills) - Organized support: Use all subdirectories for comprehensive guidance
Common Mistakes to Avoid
❌ Name doesn't match directory
✅ Name matches directory
❌ Vague description
✅ Specific triggers
Validation Checklist
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/plugin-development/commands/add-skill.md
Popularity
- Repository stars
- 44
- Repository forks
- 11
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 19 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ivan-magda/claude-code-plugin-template/commands)