Back to skills
SkillHub ClubShip Full StackFull Stack
extension-create
Imported from https://github.com/kynoptic/markdownlint-trap.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Stars
1
Hot score
77
Updated
March 20, 2026
Overall rating
C2.9
Composite score
2.9
Best-practice grade
C56.0
Install command
npx @skill-hub/cli install kynoptic-markdownlint-trap-extension-create
Repository
kynoptic/markdownlint-trap
Skill path: .claude/skills/extension-create
Imported from https://github.com/kynoptic/markdownlint-trap.
Open repositoryBest for
Primary workflow: Ship Full Stack.
Technical facets: Full Stack.
Target audience: everyone.
License: Unknown.
Original source
Catalog source: SkillHub Club.
Repository owner: kynoptic.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install extension-create into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/kynoptic/markdownlint-trap before adding extension-create to shared team environments
- Use extension-create for development workflows
Works across
Claude CodeCodex CLIGemini CLIOpenCode
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: extension-create
descriptive-title: Creating Claude Code Extensions
description: Creates slash commands, subagents/workflows, or agent skills using the Claude request type framework. Analyzes requirements, determines the optimal extension type (command/subagent/skill), decides project vs personal scope, and generates properly structured files following templates and best practices. Use when creating new commands, workflows, or skills, or when the user mentions "create a command", "new workflow", "build a skill", or requests custom Claude Code extensions.
platforms: ["claude-code"]
status: stable
allowed-tools: ["Read","Write","Bash","Grep","Glob","AskUserQuestion"]
category: development
tags: ["claude-code","extensions","skills","commands","workflows","scaffolding"]
---
# Creating extensions
Creates slash commands, subagents/workflows, or agent skills for Claude Code following the decision framework and best practices.
## What you should do
When invoked, guide the user through creating the right type of extension:
1. **Understand the requirement** - Gather information about what the user wants to create:
- What task or capability do they want to add?
- How complex is the workflow?
- Should it be manually triggered or automatically discovered?
- Does it generate extensive output or "chatter"?
- Does it need supporting files, scripts, or templates?
- Is this for personal use or team-wide adoption?
2. **Evaluate using the framework** - Apply the Claude request type framework criteria:
- **Initiation**: User-only (manual) or Discoverable (automatic)?
- **Context needs**: Full conversation history or summary context?
- **Verbosity**: Manageable output or extensive (pollutes main thread)?
- **Specialization**: General purpose or needs specialist persona?
- **Resource use**: Standard (instructions only) or heavy (requires references/scripts)?
3. **Determine the extension type** based on evaluation profile:
**Slash Command** when:
- User-only initiation (manual trigger required)
- Full context needed
- Manageable output
- Generalist (no special persona)
- Standard resources (single file sufficient)
**Subagent/Workflow** when:
- Discoverable (automatic invocation)
- Summary context (context isolation needed)
- **Extensive verbosity** (PRIMARY INDICATOR - pollutes main thread)
- **Specialist persona** (PRIMARY INDICATOR - needs distinct system prompt)
- Standard resources
**Agent Skill** when:
- Discoverable (automatic invocation)
- Any context needs
- Any verbosity level
- Any specialization level
- **Heavy resource use** (PRIMARY INDICATOR - requires multiple files, scripts, templates, or references)
4. **Determine the scope and format** - Critical: Different formats for different scopes:
**Project-specific** (Claude Code format):
- **Project-level**: `.claude/commands/`, `.claude/subagents/`, `.claude/skills/` (shared with team)
- **Personal-level**: `~/.claude/commands/`, `~/.claude/subagents/`, `~/.claude/skills/` (personal only)
- Uses Claude Code format (minimal frontmatter, platform-specific)
**Agent-playbook global** (Multi-platform format):
- **Repository**: `core/workflows/`, `core/skills/` in agent-playbook repo
- Uses extended frontmatter with `platforms`, `status`, `category`, `tags`
- Gets distributed to multiple platforms via build process
- **Ask user to check if this is agent-playbook repo** before using this format
Ask the user which scope, then use the appropriate format.
5. **Generate the extension** - Use format based on scope (see reference files for complete examples):
**Project-specific (Claude Code format)**:
- Minimal frontmatter
- Platform-specific conventions
- See [COMMANDS.md](COMMANDS.md), [WORKFLOWS.md](WORKFLOWS.md), [SKILLS.md](SKILLS.md) for Claude Code format
**Agent-playbook global (Multi-platform format)**:
- Extended frontmatter with `platforms: ["claude-code"]`, `status`, `category`, `tags`
- Platform-agnostic content
- Build process transforms for each platform
- Only use if user confirms this is agent-playbook repository
6. **Validate and test** - Ensure the extension follows best practices:
- Correct file location
- Proper frontmatter format
- Clear, actionable instructions
- Follows naming conventions
- Includes appropriate metadata
## Decision framework reference
Use this quick reference to determine extension type:
### Primary indicators (strongest signals)
- **Extensive verbosity** → Subagent (context isolation required)
- **Specialist persona** → Subagent (distinct system prompt needed)
- **Heavy resources** → Skill (multiple files, scripts, templates)
### Supporting indicators
- **User-only initiation** → Slash command (manual trigger)
- **Discoverable initiation** → Subagent or Skill (automatic)
- **Single file sufficient** → Slash command (simplest)
- **Context pollution** → Subagent (isolate the chatter)
## File naming conventions
**Slash commands**: `<area>[-<subarea>]-<verb>[-<object>].md`
- Examples: `git-review.md`, `docs-format.md`, `test-run.md`
**Subagents/workflows**: `<area>[-<subarea>]-<verb>[-<object>].md`
- Examples: `repo-code-quality-review.md`, `git-commit.md`, `docs-organize.md`
**Agent skills**: `<area>[-<subarea>]-<verb>[-<object>]/SKILL.md`
- Directory name uses kebab-case
- Examples: `creating-agent-skills/`, `tests-run/`, `gh-project-setup/`
All names use:
- Kebab-case (lowercase with hyphens)
- American English spelling
- Imperative verbs for workflows
- Gerund form for skill names
## Best practices by type
### Slash commands
- Keep it simple (one file only)
- Use clear argument hints
- Specify allowed-tools if restrictive
- Write clear, direct instructions
For detailed slash command best practices, see [COMMANDS.md](COMMANDS.md).
### Subagents/workflows
- Define clear persona and specialization
- Include step-by-step invocation workflow
- Specify model if non-default needed
- Restrict tools to minimum required
- USE PROACTIVELY statement in description
For detailed workflow best practices, see [WORKFLOWS.md](WORKFLOWS.md).
### Agent skills
- Use gerund form naming ("Managing X")
- Write third-person descriptions
- Include specific trigger keywords
- Keep `SKILL.md` under 500 lines
- Use progressive disclosure for details
- Test discovery with real scenarios
For detailed skill best practices, see [SKILLS.md](SKILLS.md).
## Example interactions
**User request**: "Create a command to run my tests"
- **Analysis**: User-only, manageable output, single purpose → **Slash command**
- **Scope**: Ask if project or personal
- **Location**: `.claude/commands/test-run.md` (project) or `~/.claude/commands/test-run.md` (personal)
- **Format**: Claude Code format (minimal frontmatter)
**User request**: "I need something that does a deep code quality audit"
- **Analysis**: Extensive verbosity (would pollute main thread), specialist persona needed → **Subagent**
- **Scope**: Ask if project-specific or global (agent-playbook)
- **Location**: `.claude/subagents/code-quality-audit.md` (project) or `core/workflows/code-quality-audit.md` (agent-playbook)
- **Format**: Claude Code format for project, multi-platform for agent-playbook
**User request**: "Create a workflow for managing GitHub Projects with our team conventions"
- **Analysis**: Heavy resources (needs field IDs, templates, examples), team-wide → **Skill**
- **Scope**: Ask if project-specific or global (agent-playbook)
- **Location**: `.claude/skills/gh-project-manage/SKILL.md` (project) or `core/skills/gh-project-manage/SKILL.md` (agent-playbook)
- **Format**: Claude Code format for project, multi-platform for agent-playbook
## Output format
When creating an extension, provide:
1. **Analysis summary**:
- Extension type chosen and why
- Scope (project vs personal)
- File location
2. **Complete file content** with proper formatting
3. **Next steps**:
- How to `test` or `use` it
- Any additional setup needed
- `Build` or `distribution` steps if applicable
## Format selection guide
**CRITICAL**: Use the correct format for the scope.
### For project-specific extensions
**Location**: `.claude/` directories in any project
**Format**: Claude Code format (minimal frontmatter)
**When**: Extension is specific to this project or personal workflow
Example workflow frontmatter:
```yaml
---
name: workflow-name
description: Brief description. USE PROACTIVELY when <trigger>.
persona: You are a <role> specializing in <specialization>.
tools: Bash, Read, Grep, Glob
model: haiku
---
```
### For agent-playbook global extensions
**Location**: `core/workflows/`, `core/skills/` in agent-playbook repo ONLY
**Format**: Multi-platform format (extended frontmatter)
**When**: Extension should be available globally across all projects and platforms
Example workflow frontmatter:
```yaml
---
name: workflow-name
descriptive-title: Human-readable title
description: Brief description. USE PROACTIVELY when <trigger>.
persona: You are a <role> specializing in <specialization>.
tools: Bash, Read, Grep, Glob
model: haiku
---
```
**Check first**: Ask "Is this the agent-playbook repository?" before using multi-platform format.
### After creation (agent-playbook only)
If created in `core/`:
1. Run `npm run build:claude` to generate distribution files
2. Run `npm run dist:local` to deploy to `~/.claude/`
## Remember
- **Primary indicators** (verbosity, specialization, resources) are strongest signals
- **Context pollution** is the key heuristic for subagents
- **Automatic discovery** is the key benefit of skills over commands
- **Simplicity** favors commands over more complex types
- When uncertain, ask the user clarifying questions
- Default to project-level unless clearly personal
- Always follow repository conventions and templates
## Reference documentation
For detailed best practices by type:
- [COMMANDS.md](COMMANDS.md) - Complete slash command reference with patterns and examples
- [WORKFLOWS.md](WORKFLOWS.md) - Comprehensive subagent/workflow guide with system prompt patterns
- [SKILLS.md](SKILLS.md) - Detailed skill creation guide with progressive disclosure strategies
## Official documentation
For complete details:
- **Request type framework**: `docs/type-decision-framework.md`
- **Extension architecture**: `docs/claude-code-extension-architecture.md`
- **Slash commands**: <https://code.claude.com/docs/en/slash-commands>
- **Agent skills**: <https://code.claude.com/docs/en/skills>
- **Subagents**: <https://code.claude.com/docs/en/sub-agents>