Help us improve
Share bugs, ideas, or general feedback.
From majestic-tools
Guides skill file creation with naming conventions, directory structures (flat/nested/progressive), frontmatter fields, and invocation controls for Claude Code plugins and slash commands.
npx claudepluginhub majesticlabs-dev/majestic-marketplace --plugin majestic-toolsHow this skill is triggered — by the user, by Claude, or both
Slash command
/majestic-tools:skill-structureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Custom slash commands and skills are the same thing. A file at `.claude/commands/review.md` and a skill at `.claude/skills/review/SKILL.md` both create `/review`. Existing `.claude/commands/` files keep working. Skills add: a directory for supporting files, frontmatter to control invocation, and automatic context loading.
Guides creation of Claude Code skills and slash commands: SKILL.md structure, frontmatter fields, invocation controls, commands vs skills, and best practices.
Guides creating and optimizing Claude Code Skills with activation patterns, frontmatter structure, hooks, workflows, and best practices. Use for new skills, memory conversions, activation debugging.
Guides developers in creating, improving, and organizing SKILL.md files for Claude Code plugins, covering frontmatter, triggers, structure, progressive disclosure, hooks, budgets, and best practices.
Share bugs, ideas, or general feedback.
Custom slash commands and skills are the same thing. A file at .claude/commands/review.md and a skill at .claude/skills/review/SKILL.md both create /review. Existing .claude/commands/ files keep working. Skills add: a directory for supporting files, frontmatter to control invocation, and automatic context loading.
If a skill and command share the same name, the skill takes precedence.
When to use which:
| Type | When |
|---|---|
Command file (commands/name.md) | Simple single-file workflow, no supporting files |
Skill directory (skills/name/SKILL.md) | Needs references, background knowledge, or progressive disclosure |
| Rule | Example |
|---|---|
| Format | kebab-case, lowercase, 1-64 chars |
| Pattern | ^[a-z][a-z0-9]*(-[a-z0-9]+)*$ |
| Must match | Directory name exactly |
Good/Bad Examples:
| Good | Bad | Why |
|---|---|---|
stimulus-coder | MySkill | Uppercase not allowed |
tdd-workflow | skill_helper | Underscores not allowed |
pdf-processing | -invalid | Can't start with hyphen |
seo-content | skill--bad | No consecutive hyphens |
plugins/majestic-rails/skills/stimulus-coder/SKILL.md
-> name: stimulus-coder
-> invoked as: /majestic-rails:stimulus-coder
plugins/majestic-company/skills/ceo/strategic-planning/SKILL.md
-> name: strategic-planning
-> invoked as: /majestic-company:ceo:strategic-planning
Key Points:
name field is ONLY the final skill name (not the full path)name exactlyFor complex skills, split into multiple files:
my-skill/
+-- SKILL.md (overview, <500 lines)
+-- references/
| +-- patterns.md (detailed patterns)
| +-- examples.md (extended examples)
+-- scripts/
+-- helper.py (utility scripts)
Rules:
scripts/, references/, assets/---
name: skill-name # Matches directory, defaults to dir name if omitted
description: What it does... # Recommended, max 1024 chars
allowed-tools: Read Bash # Optional, space-delimited
---
| Field | Required | Description |
|---|---|---|
name | No | Lowercase letters, numbers, hyphens (max 64 chars). Defaults to directory name. |
description | Recommended | What it does AND when to use it. Max 1024 chars. |
argument-hint | No | Hint during autocomplete. Example: [issue-number] |
disable-model-invocation | No | true = Claude cannot auto-load. For manual workflows. Default: false |
user-invocable | No | false = hidden from / menu. For background knowledge. Default: true |
allowed-tools | No | Tools without permission prompts. Example: Read, Bash(git *) |
model | No | haiku, sonnet, or opus |
context | No | fork to run in isolated subagent context |
agent | No | Subagent type when context: fork: Explore, Plan, general-purpose, or custom |
[What it does]. Use when [trigger contexts]. Triggers on [specific keywords].
Rules:
| Frontmatter | User can invoke | Claude can invoke | When loaded |
|---|---|---|---|
| (default) | Yes | Yes | Description always in context, full content on invocation |
user-invocable: false | No | Yes | Description always in context, loads when relevant |
Decision guide:
user-invocable: falseNote: Avoid disable-model-invocation: true. Commands/skills with side effects should use confirmation steps (AskUserQuestion) rather than blocking model invocation entirely.
Use $ARGUMENTS for user input. If not present in content, arguments are appended automatically.
---
name: fix-issue
---
Fix GitHub issue $ARGUMENTS following our coding standards.
Individual args: $ARGUMENTS[0] or shorthand $0, $1, $2.
The !`command` syntax runs shell commands before content reaches Claude:
## Context
- Current branch: !`git branch --show-current`
- PR diff: !`gh pr diff`
Commands execute immediately; output replaces the placeholder.
Add context: fork to run in isolation (no conversation history):
---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---
Research $ARGUMENTS thoroughly...
| Tools Needed | Example Use Case |
|---|---|
Read, Grep, Glob | Search codebase for patterns |
Bash(git *) | Git operations only |
Bash(gh *) | GitHub CLI operations |
WebFetch | Fetch external documentation |
| None | Pure knowledge/guidance |
^[a-z][a-z0-9]*(-[a-z0-9]+)*$AskUserQuestion for confirmation if skill has side effectsallowed-tools set if specific tools neededscripts/, references/, assets/