
Skill Creator
- 36 installs
- 22 repo stars
- Updated February 19, 2026
- markpitt/claude-skills
Helps with ai & agent building tasks.
About
skill-creator is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- skill-creator
- AI & Agent Building
- AI-coding skill
Skill Creator by the numbers
- 36 all-time installs (skills.sh)
- Ranked #8,608 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/markpitt/claude-skills --skill skill-creatorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 36 |
|---|---|
| repo stars | ★ 22 |
| Last updated | February 19, 2026 |
| Repository | markpitt/claude-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
Skill Creator
This skill provides guidance for creating effective skills.
About Skills
Skills are modular, self-contained packages that extend Claude's capabilities by providing specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific domains or tasks—they transform Claude from a general-purpose agent into a specialized agent equipped with procedural knowledge that no model can fully possess.
Skill Categories
Skills are most powerful for repeatable workflows. Three common categories:
1. Document & Asset Creation — Generating consistent documents, presentations, apps, and designs with embedded style guides, templates, and quality checklists (e.g., frontend-design, docx-creator) 2. Workflow Automation — Multi-step processes with consistent methodology, including coordination across multiple MCP servers (e.g., skill-creator, sprint-planner) 3. MCP Enhancement — Workflow guidance layered on top of existing MCP tool access, teaching Claude how to use a service effectively rather than just what it can do (e.g., sentry-code-review)
Core Design Principles
Progressive Disclosure
Skills use a three-level loading system to manage context efficiently:
1. Metadata (name + description) — Always in context (~100 words) 2. SKILL.md body — Loaded when skill triggers (<5k words) 3. Bundled resources — Loaded as needed by Claude (unlimited*)
*Unlimited because scripts can be executed without reading into context window.
Composability
Claude can load multiple skills simultaneously. Skills should work well alongside others—don't assume the skill is the only capability available.
Portability
Skills work identically across Claude.ai, Claude Code, and the API. Create a skill once and it works across all surfaces without modification.
Skills + MCP
For MCP integrations, skills add a knowledge layer on top of tool access:
| MCP (Connectivity) | Skills (Knowledge) | |
|---|---|---|
| Provides | Tool access and real-time data | Workflows and best practices |
| Answers | What Claude can do | How Claude should do it |
Without skills, users connecting an MCP server must figure out workflows themselves, leading to inconsistent results and support burden. Skills embed best practices so they activate automatically.
See references/workflow-patterns.md for five proven patterns (sequential orchestration, multi-MCP coordination, iterative refinement, context-aware tool selection, domain-specific intelligence).
Anatomy of a Skill
Every skill consists of a required SKILL.md file and optional bundled resources:
skill-name/
├── SKILL.md (required)
│ ├── YAML frontmatter metadata (required)
│ │ ├── name: (required)
│ │ └── description: (required)
│ └── Markdown instructions (required)
└── Bundled Resources (optional)
├── scripts/ - Executable code (Python/Bash/etc.)
├── references/ - Documentation loaded into context as needed
└── assets/ - Files used in output (templates, icons, fonts, etc.)Important: Do NOT include `README.md` inside the skill folder. All documentation goes in SKILL.md or references/. A repo-level README is fine for human visitors to a GitHub repo hosting the skill, but it must not be inside the skill folder itself.
SKILL.md
Metadata Quality: The name and description in YAML frontmatter determine when Claude will use the skill. Be specific about what the skill does and when to use it. Use third-person phrasing (e.g., "This skill should be used when..." rather than "Use this skill when...").
YAML Frontmatter Fields:
---
name: skill-name-in-kebab-case # required; lowercase, hyphens only, max 64 chars
description: What it does and when. # required; WHAT + WHEN, max 1024 chars
license: MIT # optional; for open-source skills
allowed-tools: "Bash(python:*) WebFetch" # optional; restrict available tools
compatibility: Requires internet access # optional; environment requirements, 1-500 chars
metadata: # optional; custom key-value pairs
author: Your Name
version: 1.0.0
mcp-server: your-service-name
tags: [automation, productivity]
---Security restrictions:
- No XML angle brackets (
< >) anywhere in frontmatter (appears in system prompt) - Names with "claude" or "anthropic" prefix are reserved
Writing effective descriptions — structure: [What it does] + [When to use it] + [Key capabilities]
# Good — specific trigger phrases
description: Manages Linear project workflows including sprint planning and task
creation. Use when user mentions "sprint", "Linear tasks", "project planning",
or asks to "create tickets".
# Good — file types + trigger phrases
description: Analyzes Figma design files and generates developer handoff docs.
Use when user uploads .fig files or asks for "design specs" or
"design-to-code handoff".
# Bad — too vague, no triggers
description: Helps with projects.To prevent over-triggering, add explicit exclusions:
description: Advanced CSV statistical analysis for regression, clustering, and
modeling. Do NOT use for simple data exploration (use data-viz skill instead).Bundled Resources (optional)
Scripts (scripts/)
Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten.
- When to include: When the same code is rewritten repeatedly, or deterministic correctness is critical
- Example:
scripts/rotate_pdf.pyfor PDF rotation tasks - Benefits: Token efficient, deterministic, may be executed without loading into context
- Note: Scripts may still need to be read for patching or environment-specific adjustments
References (references/)
Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking.
- When to include: For documentation that Claude should consult while working
- Examples:
references/schema.mdfor database schemas,references/api_docs.mdfor API specs,references/policies.mdfor company policies - Best practice: If files are large (>10k words), include grep search patterns in SKILL.md
- Avoid duplication: Information should live in SKILL.md or references files, not both. Keep SKILL.md lean—move detailed reference material, schemas, and examples to references files.
Assets (assets/)
Files used in the output Claude produces, not loaded into context.
- When to include: When the skill needs files that will appear in the final output
- Examples:
assets/logo.pngfor brand assets,assets/slides.pptxfor PowerPoint templates,assets/frontend-template/for HTML/React boilerplate - Benefits: Separates output resources from documentation, enables Claude to use files without loading them into context
Skill Creation Process
To create a skill, follow these steps in order, skipping only with clear reason.
Step 1: Understand the Skill with Concrete Examples
Skip only when usage patterns are already clearly understood.
Gather 2–3 concrete use cases by asking targeted questions—avoid overwhelming users with too many at once:
- "What functionality should this skill support?"
- "Can you give examples of how this skill would be used?"
- "What would a user say to trigger this skill?"
Also define success criteria before building:
Quantitative targets (rough benchmarks):
- Skill triggers on ~90% of relevant queries (test with 10–20 representative prompts)
- Consistent tool call count per workflow (compare with/without skill enabled)
- 0 failed API calls per workflow (if MCP-dependent)
Qualitative targets:
- Users don't need to redirect Claude mid-workflow
- Consistent results across sessions
- New users can accomplish the task on first try with minimal guidance
Conclude when there is a clear picture of the functionality and what success looks like.
Step 2: Plan the Reusable Skill Contents
To turn concrete examples into an effective skill, analyze each example by:
1. Considering how to execute it from scratch 2. Identifying what scripts, references, and assets would help when repeating it
| Use Case | Analysis | Resource |
|---|---|---|
| "Rotate this PDF" | Same code rewritten each time | scripts/rotate_pdf.py |
| "Build me a todo app" | Same HTML/React boilerplate each time | assets/hello-world/ template |
| "How many users logged in?" | Table schemas re-discovered each time | references/schema.md |
| "Review this PR via Sentry" | Complex multi-MCP workflow | Structured sequence in SKILL.md |
Produce a list of the reusable resources to include.
Step 3: Initialize the Skill
Skip only if the skill already exists and only iteration is needed.
When creating a new skill from scratch, always run the init_skill.py script:
scripts/init_skill.py <skill-name> --path <output-directory>The script:
- Creates the skill directory with proper structure
- Generates a SKILL.md template with frontmatter and TODO placeholders
- Creates example resource directories:
scripts/,references/, andassets/ - Adds example files in each directory that can be customized or deleted
After initialization, customize or remove the generated SKILL.md and example files as needed.
Step 4: Edit the Skill
The skill is being created for another Claude instance to use. Focus on procedural knowledge, domain-specific details, and reusable assets that would be non-obvious.
Start with Reusable Skill Contents
Implement the resources identified in Step 2 first: scripts/, references/, and assets/ files. User input may be required for domain-specific content (e.g., brand assets, company policies, API documentation).
Delete any example files not needed for the skill—the initialization script creates placeholders to demonstrate structure, but most skills won't need all of them.
Update SKILL.md
Writing style: Use imperative/infinitive form (verb-first), not second person. Write "To accomplish X, do Y" rather than "You should do X." This maintains consistency and clarity for AI consumption.
To complete SKILL.md, answer:
1. What is the purpose of the skill? 2. When should it be used? 3. How should Claude use each bundled resource?
Critical instruction guidelines:
- Put critical instructions near the top; use
## Criticalor## Importantheaders - For must-follow validations, prefer deterministic scripts over language instructions—code is reliable, language interpretation is not:
CRITICAL: Before calling create_project, run scripts/validate_input.py- Move detailed documentation to
references/and link to it; keep SKILL.md under 5,000 words - For step ordering that matters, number steps explicitly and document dependencies between them
For MCP-enhancing skills, also include:
- Exact MCP tool names (case-sensitive, as they appear in the server)
- Validation at each workflow stage
- Error handling for common MCP failures (auth, rate limits, timeouts)
Step 5: Test the Skill
Run three types of tests:
1. Triggering tests — Does the skill load at the right times?
- Test obvious queries that should trigger it
- Test paraphrased versions of those queries
- Verify it does NOT trigger on unrelated topics
- Debug tip: Ask Claude "When would you use the [skill name] skill?" — Claude will quote the description back, revealing gaps
2. Functional tests — Does the skill produce correct outputs?
- Verify valid outputs are generated
- Confirm API/MCP calls succeed (if applicable)
- Test error handling paths
- Cover edge cases
3. Performance comparison — Does the skill improve results?
- Run the same task with and without the skill
- Compare: number of back-and-forth messages, failed API calls, tokens consumed
Effective iteration strategy: Focus on a single challenging task until Claude succeeds, then extract the winning approach into the skill. Once there's a working foundation, expand to multiple test cases for coverage.
Step 6: Package the Skill
scripts/package_skill.py <path/to/skill-folder>Optional output directory:
scripts/package_skill.py <path/to/skill-folder> ./distThe packaging script:
1. Validates the skill, checking:
- YAML frontmatter format and required fields
- Naming conventions and directory structure
- Description completeness and quality
- No
README.mdinside the skill folder
2. Packages into a distributable zip file if validation passes
Fix any validation errors and rerun if validation fails.
Step 7: Distribute
For individuals / open-source: 1. Host on GitHub with a clear repo-level README (for human visitors—not inside the skill folder) 2. For MCP-enhancing skills, link to the skill from your MCP documentation and explain why using both together is valuable 3. Provide an installation guide pointing users to Settings > Capabilities > Skills > Upload
For organizations (January 2026+):
- Admins can deploy skills workspace-wide via Claude Console
- Automatic updates and centralized management are available
For programmatic / API use:
- Use the
/v1/skillsendpoint to list and manage skills - Add skills to Messages API requests via the
container.skillsparameter - Requires the Code Execution Tool beta
Step 8: Iterate
After testing, improve based on observed signals:
Under-triggering (skill doesn't load for relevant queries, users invoke it manually):
- Add more specific trigger phrases to the description
- Include technical terms and exact phrases users say
- Ask Claude "When would you use [skill name]?" to surface blind spots
Over-triggering (skill loads for irrelevant queries, users disable it):
- Add negative triggers ("Do NOT use for...")
- Narrow the description scope with more specific language
Execution issues (inconsistent results, users correcting output, failed MCP calls):
- Move critical instructions to the top of SKILL.md
- Replace ambiguous language with deterministic validation scripts
- Add explicit step ordering and error handling
Troubleshooting
Skill Won't Upload
| Error | Cause | Fix |
|---|---|---|
| "Invalid frontmatter" | Missing --- delimiters or unclosed quotes | Add delimiters, fix YAML syntax |
| "Invalid skill name" | Spaces, capitals, or underscores in name | Rename to kebab-case |
| "Could not find SKILL.md" | File not named exactly SKILL.md | Rename (case-sensitive) |
Instructions Not Followed
- Move critical instructions to the top; use
## Critical/## Importantheaders - Replace language-based validations with executable scripts (code is deterministic)
- Keep instructions concise and direct—move detailed content to
references/ - If Claude skips steps: add "Take your time—quality over speed. Do not skip validation steps." (Most effective when placed in the user's prompt rather than SKILL.md)
Skill Context Too Large / Slow Responses
- Keep SKILL.md under 5,000 words
- Move detailed docs to
references/and link to them from SKILL.md - Limit enabled skills to 20–50 simultaneously
Resources
- Anthropic Skills Documentation
- Example Skills Repository — anthropics/skills
- Skills Best Practices Guide
- Claude Developers Discord — community support
references/workflow-patterns.md— Five proven patterns for MCP and automated workflows
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.Workflow Patterns for Skills
Five proven patterns for MCP-enhanced and automated workflow skills. These emerged from early adopters and internal teams—use them as starting points, not rigid templates.
---
Pattern 1: Sequential Workflow Orchestration
Use when: Users need multi-step processes executed in a specific order with dependencies between steps.
## Workflow: Onboard New Customer
### Step 1: Create Account
Call MCP tool: `create_customer`
Parameters: name, email, company
### Step 2: Setup Payment
Call MCP tool: `setup_payment_method`
Wait for: payment method verification
### Step 3: Create Subscription
Call MCP tool: `create_subscription`
Parameters: plan_id, customer_id (from Step 1)
### Step 4: Send Welcome Email
Call MCP tool: `send_email`
Template: welcome_email_templateKey techniques:
- Explicit step ordering with numbered steps
- Document dependencies between steps (e.g., "customer_id from Step 1")
- Validation at each stage before proceeding
- Rollback instructions for failures
---
Pattern 2: Multi-MCP Coordination
Use when: Workflows span multiple services and data must flow between them.
Example: Design-to-development handoff
## Phase 1: Design Export (Figma MCP)
1. Export design assets from Figma
2. Generate design specifications
3. Create asset manifest
## Phase 2: Asset Storage (Drive MCP)
1. Create project folder in Drive
2. Upload all assets
3. Generate shareable links
## Phase 3: Task Creation (Linear MCP)
1. Create development tasks
2. Attach asset links to tasks
3. Assign to engineering team
## Phase 4: Notification (Slack MCP)
1. Post handoff summary to #engineering
2. Include asset links and task referencesKey techniques:
- Clear phase separation by service
- Explicit data passing between MCPs (store IDs/links from each phase)
- Validate outputs before moving to next phase
- Centralized error handling with clear recovery steps
---
Pattern 3: Iterative Refinement
Use when: Output quality improves with multiple rounds of generation and validation.
Example: Report generation
## Iterative Report Creation
### Initial Draft
1. Fetch data via MCP
2. Generate first draft report
3. Save to temporary file
### Quality Check
1. Run validation script: `scripts/check_report.py`
2. Identify issues:
- Missing sections
- Inconsistent formatting
- Data validation errors
### Refinement Loop
1. Address each identified issue
2. Regenerate affected sections
3. Re-validate
4. Repeat until quality threshold met
### Finalization
1. Apply final formatting
2. Generate summary
3. Save final versionKey techniques:
- Explicit quality criteria defined upfront
- Validation scripts for objective checks
- Clear stopping condition (quality threshold, max iterations)
- Separate draft storage from final output
---
Pattern 4: Context-Aware Tool Selection
Use when: The same outcome is achieved with different tools depending on input type, size, or context.
Example: Smart file storage
## Smart File Storage
### Decision Tree
1. Check file type and size
2. Determine best storage location:
- Large files (>10MB): Use cloud storage MCP
- Collaborative docs: Use Notion/Docs MCP
- Code files: Use GitHub MCP
- Temporary files: Use local storage
### Execute Storage
Based on decision:
- Call the appropriate MCP tool
- Apply service-specific metadata
- Generate access link
### Provide Context to User
Explain which storage was chosen and whyKey techniques:
- Clear, unambiguous decision criteria
- Fallback options for each branch
- Transparency about choices made
- Consistent output format regardless of path taken
---
Pattern 5: Domain-Specific Intelligence
Use when: The skill's value is specialized knowledge embedded in logic, not just tool access.
Example: Payment processing with compliance
## Payment Processing with Compliance
### Before Processing (Compliance Check)
1. Fetch transaction details via MCP
2. Apply compliance rules:
- Check sanctions lists
- Verify jurisdiction allowances
- Assess risk level
3. Document compliance decision
### Processing
IF compliance passed:
- Call payment processing MCP tool
- Apply appropriate fraud checks
- Process transaction
ELSE:
- Flag for review
- Create compliance case
### Audit Trail
- Log all compliance checks
- Record processing decisions
- Generate audit reportKey techniques:
- Domain expertise is embedded in the decision logic, not just in the prompt
- Compliance/validation happens before action
- Comprehensive documentation and audit trails
- Clear governance for failure/exception cases
- Store domain rules in
references/for easy updating (e.g.,references/compliance-rules.md)
---
Choosing a Pattern
| Situation | Recommended Pattern |
|---|---|
| Fixed sequence of dependent steps | Sequential Orchestration |
| Workflow touches Notion + Linear + Slack | Multi-MCP Coordination |
| Quality improves with retries | Iterative Refinement |
| Different tools for different inputs | Context-Aware Tool Selection |
| Business rules / compliance logic | Domain-Specific Intelligence |
Most real-world skills combine two or more patterns. Start with the dominant pattern for your primary workflow, then layer in others as needed.
#!/usr/bin/env python3
"""
Skill Initializer - Creates a new skill from template
Usage:
init_skill.py <skill-name> --path <path>
Examples:
init_skill.py my-new-skill --path skills/public
init_skill.py my-api-helper --path skills/private
init_skill.py custom-skill --path /custom/location
"""
import sys
from pathlib import Path
SKILL_TEMPLATE = """---
name: {skill_name}
description: [TODO: Complete and informative explanation of what the skill does and when to use it. Include WHEN to use this skill - specific scenarios, file types, or tasks that trigger it.]
---
# {skill_title}
## Overview
[TODO: 1-2 sentences explaining what this skill enables]
## Structuring This Skill
[TODO: Choose the structure that best fits this skill's purpose. Common patterns:
**1. Workflow-Based** (best for sequential processes)
- Works well when there are clear step-by-step procedures
- Example: DOCX skill with "Workflow Decision Tree" → "Reading" → "Creating" → "Editing"
- Structure: ## Overview → ## Workflow Decision Tree → ## Step 1 → ## Step 2...
**2. Task-Based** (best for tool collections)
- Works well when the skill offers different operations/capabilities
- Example: PDF skill with "Quick Start" → "Merge PDFs" → "Split PDFs" → "Extract Text"
- Structure: ## Overview → ## Quick Start → ## Task Category 1 → ## Task Category 2...
**3. Reference/Guidelines** (best for standards or specifications)
- Works well for brand guidelines, coding standards, or requirements
- Example: Brand styling with "Brand Guidelines" → "Colors" → "Typography" → "Features"
- Structure: ## Overview → ## Guidelines → ## Specifications → ## Usage...
**4. Capabilities-Based** (best for integrated systems)
- Works well when the skill provides multiple interrelated features
- Example: Product Management with "Core Capabilities" → numbered capability list
- Structure: ## Overview → ## Core Capabilities → ### 1. Feature → ### 2. Feature...
Patterns can be mixed and matched as needed. Most skills combine patterns (e.g., start with task-based, add workflow for complex operations).
Delete this entire "Structuring This Skill" section when done - it's just guidance.]
## [TODO: Replace with the first main section based on chosen structure]
[TODO: Add content here. See examples in existing skills:
- Code samples for technical skills
- Decision trees for complex workflows
- Concrete examples with realistic user requests
- References to scripts/templates/references as needed]
## Resources
This skill includes example resource directories that demonstrate how to organize different types of bundled resources:
### scripts/
Executable code (Python/Bash/etc.) that can be run directly to perform specific operations.
**Examples from other skills:**
- PDF skill: `fill_fillable_fields.py`, `extract_form_field_info.py` - utilities for PDF manipulation
- DOCX skill: `document.py`, `utilities.py` - Python modules for document processing
**Appropriate for:** Python scripts, shell scripts, or any executable code that performs automation, data processing, or specific operations.
**Note:** Scripts may be executed without loading into context, but can still be read by Claude for patching or environment adjustments.
### references/
Documentation and reference material intended to be loaded into context to inform Claude's process and thinking.
**Examples from other skills:**
- Product management: `communication.md`, `context_building.md` - detailed workflow guides
- BigQuery: API reference documentation and query examples
- Finance: Schema documentation, company policies
**Appropriate for:** In-depth documentation, API references, database schemas, comprehensive guides, or any detailed information that Claude should reference while working.
### assets/
Files not intended to be loaded into context, but rather used within the output Claude produces.
**Examples from other skills:**
- Brand styling: PowerPoint template files (.pptx), logo files
- Frontend builder: HTML/React boilerplate project directories
- Typography: Font files (.ttf, .woff2)
**Appropriate for:** Templates, boilerplate code, document templates, images, icons, fonts, or any files meant to be copied or used in the final output.
---
**Any unneeded directories can be deleted.** Not every skill requires all three types of resources.
"""
EXAMPLE_SCRIPT = '''#!/usr/bin/env python3
"""
Example helper script for {skill_name}
This is a placeholder script that can be executed directly.
Replace with actual implementation or delete if not needed.
Example real scripts from other skills:
- pdf/scripts/fill_fillable_fields.py - Fills PDF form fields
- pdf/scripts/convert_pdf_to_images.py - Converts PDF pages to images
"""
def main():
print("This is an example script for {skill_name}")
# TODO: Add actual script logic here
# This could be data processing, file conversion, API calls, etc.
if __name__ == "__main__":
main()
'''
EXAMPLE_REFERENCE = """# Reference Documentation for {skill_title}
This is a placeholder for detailed reference documentation.
Replace with actual reference content or delete if not needed.
Example real reference docs from other skills:
- product-management/references/communication.md - Comprehensive guide for status updates
- product-management/references/context_building.md - Deep-dive on gathering context
- bigquery/references/ - API references and query examples
## When Reference Docs Are Useful
Reference docs are ideal for:
- Comprehensive API documentation
- Detailed workflow guides
- Complex multi-step processes
- Information too lengthy for main SKILL.md
- Content that's only needed for specific use cases
## Structure Suggestions
### API Reference Example
- Overview
- Authentication
- Endpoints with examples
- Error codes
- Rate limits
### Workflow Guide Example
- Prerequisites
- Step-by-step instructions
- Common patterns
- Troubleshooting
- Best practices
"""
EXAMPLE_ASSET = """# Example Asset File
This placeholder represents where asset files would be stored.
Replace with actual asset files (templates, images, fonts, etc.) or delete if not needed.
Asset files are NOT intended to be loaded into context, but rather used within
the output Claude produces.
Example asset files from other skills:
- Brand guidelines: logo.png, slides_template.pptx
- Frontend builder: hello-world/ directory with HTML/React boilerplate
- Typography: custom-font.ttf, font-family.woff2
- Data: sample_data.csv, test_dataset.json
## Common Asset Types
- Templates: .pptx, .docx, boilerplate directories
- Images: .png, .jpg, .svg, .gif
- Fonts: .ttf, .otf, .woff, .woff2
- Boilerplate code: Project directories, starter files
- Icons: .ico, .svg
- Data files: .csv, .json, .xml, .yaml
Note: This is a text placeholder. Actual assets can be any file type.
"""
def title_case_skill_name(skill_name):
"""Convert hyphenated skill name to Title Case for display."""
return ' '.join(word.capitalize() for word in skill_name.split('-'))
def init_skill(skill_name, path):
"""
Initialize a new skill directory with template SKILL.md.
Args:
skill_name: Name of the skill
path: Path where the skill directory should be created
Returns:
Path to created skill directory, or None if error
"""
# Determine skill directory path
skill_dir = Path(path).resolve() / skill_name
# Check if directory already exists
if skill_dir.exists():
print(f"❌ Error: Skill directory already exists: {skill_dir}")
return None
# Create skill directory
try:
skill_dir.mkdir(parents=True, exist_ok=False)
print(f"✅ Created skill directory: {skill_dir}")
except Exception as e:
print(f"❌ Error creating directory: {e}")
return None
# Create SKILL.md from template
skill_title = title_case_skill_name(skill_name)
skill_content = SKILL_TEMPLATE.format(
skill_name=skill_name,
skill_title=skill_title
)
skill_md_path = skill_dir / 'SKILL.md'
try:
skill_md_path.write_text(skill_content)
print("✅ Created SKILL.md")
except Exception as e:
print(f"❌ Error creating SKILL.md: {e}")
return None
# Create resource directories with example files
try:
# Create scripts/ directory with example script
scripts_dir = skill_dir / 'scripts'
scripts_dir.mkdir(exist_ok=True)
example_script = scripts_dir / 'example.py'
example_script.write_text(EXAMPLE_SCRIPT.format(skill_name=skill_name))
example_script.chmod(0o755)
print("✅ Created scripts/example.py")
# Create references/ directory with example reference doc
references_dir = skill_dir / 'references'
references_dir.mkdir(exist_ok=True)
example_reference = references_dir / 'api_reference.md'
example_reference.write_text(EXAMPLE_REFERENCE.format(skill_title=skill_title))
print("✅ Created references/api_reference.md")
# Create assets/ directory with example asset placeholder
assets_dir = skill_dir / 'assets'
assets_dir.mkdir(exist_ok=True)
example_asset = assets_dir / 'example_asset.txt'
example_asset.write_text(EXAMPLE_ASSET)
print("✅ Created assets/example_asset.txt")
except Exception as e:
print(f"❌ Error creating resource directories: {e}")
return None
# Print next steps
print(f"\n✅ Skill '{skill_name}' initialized successfully at {skill_dir}")
print("\nNext steps:")
print("1. Edit SKILL.md to complete the TODO items and update the description")
print("2. Customize or delete the example files in scripts/, references/, and assets/")
print("3. Run the validator when ready to check the skill structure")
return skill_dir
def main():
if len(sys.argv) < 4 or sys.argv[2] != '--path':
print("Usage: init_skill.py <skill-name> --path <path>")
print("\nSkill name requirements:")
print(" - Hyphen-case identifier (e.g., 'data-analyzer')")
print(" - Lowercase letters, digits, and hyphens only")
print(" - Max 40 characters")
print(" - Must match directory name exactly")
print("\nExamples:")
print(" init_skill.py my-new-skill --path skills/public")
print(" init_skill.py my-api-helper --path skills/private")
print(" init_skill.py custom-skill --path /custom/location")
sys.exit(1)
skill_name = sys.argv[1]
path = sys.argv[3]
print(f"🚀 Initializing skill: {skill_name}")
print(f" Location: {path}")
print()
result = init_skill(skill_name, path)
if result:
sys.exit(0)
else:
sys.exit(1)
if __name__ == "__main__":
main()
#!/usr/bin/env python3
"""
Skill Packager - Creates a distributable zip file of a skill folder
Usage:
python utils/package_skill.py <path/to/skill-folder> [output-directory]
Example:
python utils/package_skill.py skills/public/my-skill
python utils/package_skill.py skills/public/my-skill ./dist
"""
import sys
import zipfile
from pathlib import Path
from quick_validate import validate_skill
def package_skill(skill_path, output_dir=None):
"""
Package a skill folder into a zip file.
Args:
skill_path: Path to the skill folder
output_dir: Optional output directory for the zip file (defaults to current directory)
Returns:
Path to the created zip file, or None if error
"""
skill_path = Path(skill_path).resolve()
# Validate skill folder exists
if not skill_path.exists():
print(f"❌ Error: Skill folder not found: {skill_path}")
return None
if not skill_path.is_dir():
print(f"❌ Error: Path is not a directory: {skill_path}")
return None
# Validate SKILL.md exists
skill_md = skill_path / "SKILL.md"
if not skill_md.exists():
print(f"❌ Error: SKILL.md not found in {skill_path}")
return None
# Run validation before packaging
print("🔍 Validating skill...")
valid, message = validate_skill(skill_path)
if not valid:
print(f"❌ Validation failed: {message}")
print(" Please fix the validation errors before packaging.")
return None
print(f"✅ {message}\n")
# Determine output location
skill_name = skill_path.name
if output_dir:
output_path = Path(output_dir).resolve()
output_path.mkdir(parents=True, exist_ok=True)
else:
output_path = Path.cwd()
zip_filename = output_path / f"{skill_name}.zip"
# Create the zip file
try:
with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:
# Walk through the skill directory
for file_path in skill_path.rglob('*'):
if file_path.is_file():
# Calculate the relative path within the zip
arcname = file_path.relative_to(skill_path.parent)
zipf.write(file_path, arcname)
print(f" Added: {arcname}")
print(f"\n✅ Successfully packaged skill to: {zip_filename}")
return zip_filename
except Exception as e:
print(f"❌ Error creating zip file: {e}")
return None
def main():
if len(sys.argv) < 2:
print("Usage: python utils/package_skill.py <path/to/skill-folder> [output-directory]")
print("\nExample:")
print(" python utils/package_skill.py skills/public/my-skill")
print(" python utils/package_skill.py skills/public/my-skill ./dist")
sys.exit(1)
skill_path = sys.argv[1]
output_dir = sys.argv[2] if len(sys.argv) > 2 else None
print(f"📦 Packaging skill: {skill_path}")
if output_dir:
print(f" Output directory: {output_dir}")
print()
result = package_skill(skill_path, output_dir)
if result:
sys.exit(0)
else:
sys.exit(1)
if __name__ == "__main__":
main()
#!/usr/bin/env python3
"""
Quick validation script for skills - minimal version
"""
import sys
import os
import re
from pathlib import Path
def validate_skill(skill_path):
"""Basic validation of a skill"""
skill_path = Path(skill_path)
# Check SKILL.md exists
skill_md = skill_path / 'SKILL.md'
if not skill_md.exists():
return False, "SKILL.md not found"
# Read and validate frontmatter
content = skill_md.read_text()
if not content.startswith('---'):
return False, "No YAML frontmatter found"
# Extract frontmatter
match = re.match(r'^---\n(.*?)\n---', content, re.DOTALL)
if not match:
return False, "Invalid frontmatter format"
frontmatter = match.group(1)
# Check required fields
if 'name:' not in frontmatter:
return False, "Missing 'name' in frontmatter"
if 'description:' not in frontmatter:
return False, "Missing 'description' in frontmatter"
# Extract name for validation
name_match = re.search(r'name:\s*(.+)', frontmatter)
if name_match:
name = name_match.group(1).strip()
# Check naming convention (hyphen-case: lowercase with hyphens)
if not re.match(r'^[a-z0-9-]+$', name):
return False, f"Name '{name}' should be hyphen-case (lowercase letters, digits, and hyphens only)"
if name.startswith('-') or name.endswith('-') or '--' in name:
return False, f"Name '{name}' cannot start/end with hyphen or contain consecutive hyphens"
# Extract and validate description
desc_match = re.search(r'description:\s*(.+)', frontmatter)
if desc_match:
description = desc_match.group(1).strip()
# Check for angle brackets
if '<' in description or '>' in description:
return False, "Description cannot contain angle brackets (< or >)"
return True, "Skill is valid!"
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python quick_validate.py <skill_directory>")
sys.exit(1)
valid, message = validate_skill(sys.argv[1])
print(message)
sys.exit(0 if valid else 1)