00-system/skills/skill-dev/create-skill/SKILL.md
Create reusable workflow skills. Load when user wants to automate repeating work. Keywords: create skill, new skill, automate this, make reusable, save workflow. Suggest when user describes patterns (every week I..., I always...).
npx skillsauth add abdullahbeam/nexus-design-abdullah create-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before creating a skill, AI MUST check stats.pending_onboarding for learn_skills:
Check if learn_skills is in stats.pending_onboarding. If present AND this is user's FIRST skill:
💡 Before creating your first skill, would you like a quick 10-minute tutorial
on what makes workflows "skill-worthy"? It covers:
- The 3-criteria skill-worthiness framework
- How skills are structured (SKILL.md, scripts/, references/)
- How AI triggers skills automatically
Say 'learn skills' to start the tutorial, or 'skip' to create directly.
If user says 'skip': Proceed with skill creation but add this note at the end:
💡 Tip: Run 'learn skills' later to understand the skill system deeply.
If learn_skills NOT in pending_onboarding: Proceed normally without suggestion.
If user is creating similar items (report-jan, report-feb, report-mar pattern):
💡 I notice you're creating similar items. This is a perfect use case for
a SKILL instead of multiple projects/files. Want to 'learn skills' first
to understand how to capture this as a reusable workflow?
This skill provides guidance for creating effective 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.
The context window is a public good. Skills share the context window with everything else Claude needs: system prompt, conversation history, other Skills' metadata, and the actual user request.
Default assumption: Claude is already very smart. Only add context Claude doesn't already have. Challenge each piece of information: "Does Claude really need this explanation?" and "Does this paragraph justify its token cost?"
Prefer concise examples over verbose explanations.
Match the level of specificity to the task's fragility and variability:
High freedom (text-based instructions): Use when multiple approaches are valid, decisions depend on context, or heuristics guide the approach.
Medium freedom (pseudocode or scripts with parameters): Use when a preferred pattern exists, some variation is acceptable, or configuration affects behavior.
Low freedom (specific scripts, few parameters): Use when operations are fragile and error-prone, consistency is critical, or a specific sequence must be followed.
Think of Claude as exploring a path: a narrow bridge with cliffs needs specific guardrails (low freedom), while an open field allows many routes (high freedom).
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 intended to be loaded into context as needed
└── assets/ - Files used in output (templates, icons, fonts, etc.)
Every SKILL.md consists of:
name and description fields that determine when Claude uses the skillscripts/)Executable code (Python/Bash/etc.) for tasks that require deterministic reliability or are repeatedly rewritten.
scripts/rotate_pdf.py for PDF rotation tasksreferences/)Documentation and reference material intended to be loaded as needed into context to inform Claude's process and thinking.
references/finance.md for financial schemas, references/mnda.md for company NDA template, references/policies.md for company policies, references/api_docs.md for API specificationsassets/)Files not intended to be loaded into context, but rather used within the output Claude produces.
assets/logo.png for brand assets, assets/slides.pptx for PowerPoint templates, assets/frontend-template/ for HTML/React boilerplate, assets/font.ttf for typographyA skill should only contain essential files that directly support its functionality. Do NOT create extraneous documentation or auxiliary files, including:
The skill should only contain the information needed for an AI agent to do the job at hand. It should not contain auxilary context about the process that went into creating it, setup and testing procedures, user-facing documentation, etc. Creating additional documentation files just adds clutter and confusion.
Skills use a three-level loading system to manage context efficiently:
Keep SKILL.md body to the essentials and under 500 lines to minimize context bloat. Split content into separate files when approaching this limit. When splitting out content into other files, it is very important to reference them from SKILL.md and describe clearly when to read them, to ensure the reader of the skill knows they exist and when to use them.
Key principle: When a skill supports multiple variations, frameworks, or options, keep only the core workflow and selection guidance in SKILL.md. Move variant-specific details (patterns, examples, configuration) into separate reference files.
Pattern 1: High-level guide with references
# PDF Processing
## Quick start
Extract text with pdfplumber:
[code example]
## Advanced features
- **Form filling**: See [FORMS.md](FORMS.md) for complete guide
- **API reference**: See [REFERENCE.md](REFERENCE.md) for all methods
- **Examples**: See [EXAMPLES.md](EXAMPLES.md) for common patterns
Claude loads FORMS.md, REFERENCE.md, or EXAMPLES.md only when needed.
Pattern 2: Domain-specific organization
For Skills with multiple domains, organize content by domain to avoid loading irrelevant context:
bigquery-skill/
├── SKILL.md (overview and navigation)
└── reference/
├── finance.md (revenue, billing metrics)
├── sales.md (opportunities, pipeline)
├── product.md (API usage, features)
└── marketing.md (campaigns, attribution)
When a user asks about sales metrics, Claude only reads sales.md.
Similarly, for skills supporting multiple frameworks or variants, organize by variant:
cloud-deploy/
├── SKILL.md (workflow + provider selection)
└── references/
├── aws.md (AWS deployment patterns)
├── gcp.md (GCP deployment patterns)
└── azure.md (Azure deployment patterns)
When the user chooses AWS, Claude only reads aws.md.
Pattern 3: Conditional details
Show basic content, link to advanced content:
# DOCX Processing
## Creating documents
Use docx-js for new documents. See [DOCX-JS.md](DOCX-JS.md).
## Editing documents
For simple edits, modify the XML directly.
**For tracked changes**: See [REDLINING.md](REDLINING.md)
**For OOXML details**: See [OOXML.md](OOXML.md)
Claude reads REDLINING.md or OOXML.md only when the user needs those features.
Important guidelines:
Skill creation involves these steps:
Follow these steps in order, skipping only if there is a clear reason why they are not applicable.
BEFORE starting skill creation work, initialize TodoWrite to track progress and give user visibility:
TodoWrite with all workflow steps:
- Understand skill with concrete examples
- Plan reusable skill contents (scripts, references, assets)
- Initialize skill structure with init_skill.py
- Implement scripts and resources
- Write SKILL.md instructions
- Package skill with validation
- Test and iterate
- Close session to save progress
This creates transparency and allows progress tracking throughout the multi-step process.
Mark tasks complete as you finish each step. Update the todo list in real-time to show progress.
Skip this step only when the skill's usage patterns are already clearly understood. It remains valuable even when working with an existing skill.
First, check recent conversation (10-20 messages) for workflow patterns:
If a pattern is detected, offer: "I noticed you just [completed workflow]. Want to save this as a skill?" If the user confirms, use that workflow as the concrete example. If no pattern exists, continue below.
To create an effective skill, clearly understand concrete examples of how the skill will be used. This understanding can come from either direct user examples or generated examples that are validated with user feedback.
For example, when building an image-editor skill, relevant questions include:
To avoid overwhelming users, avoid asking too many questions in a single message. Start with the most important questions and follow up as needed for better effectiveness.
Conclude this step when there is a clear sense of the functionality the skill should support.
Mark this todo complete before proceeding.
After understanding the skill requirements, AI always loads the mental-models framework to review available thinking frameworks, then offers 2-3 relevant options to deepen skill design.
Pattern (Proactive Offering):
Example Offer:
Now let's think through this skill design. I've reviewed the mental models catalog and recommend:
1. **First Principles** – Strip assumptions, find fundamental truths
Best for: Novel skill workflows, challenging existing approaches
2. **Stakeholder Mapping** – Identify all affected parties and interests
Best for: Skills with multiple user types or use cases
3. **Pre-Mortem** – Imagine failure modes before implementation
Best for: Complex skills with potential failure points
Which approach sounds most useful for designing this skill? Or continue without structured analysis?
When to Offer:
Loading Pattern:
User picks: "First Principles + Pre-Mortem"
AI loads:
→ mental-models/references/cognitive-models.md (First Principles section)
→ mental-models/references/diagnostic-models.md (Pre-Mortem section)
→ Apply questions from both models to refine skill design
Benefits:
See: mental-models framework for full catalog
To turn concrete examples into an effective skill, analyze each example by:
Example: When building a pdf-editor skill to handle queries like "Help me rotate this PDF," the analysis shows:
scripts/rotate_pdf.py script would be helpful to store in the skillExample: When designing a frontend-webapp-builder skill for queries like "Build me a todo app" or "Build me a dashboard to track my steps," the analysis shows:
assets/hello-world/ template containing the boilerplate HTML/React project files would be helpful to store in the skillExample: When building a big-query skill to handle queries like "How many users have logged in today?" the analysis shows:
references/schema.md file documenting the table schemas would be helpful to store in the skillTo establish the skill's contents, analyze each concrete example to create a list of the reusable resources to include: scripts, references, and assets.
Suggest a skill name: Based on the workflow, suggest a hyphen-case name following conventions (verb-noun pattern preferred). Present: "I'd call this: {suggested-name}. Sound good?" User confirms or provides an alternative. See references/naming-guidelines.md for conventions.
Mark this todo complete before proceeding.
At this point, it is time to actually create the skill.
Skip this step only if the skill being developed already exists, and iteration or packaging is needed. In this case, continue to the next step.
When creating a new skill from scratch, always run the init_skill.py script. The script conveniently generates a new template skill directory that automatically includes everything a skill requires, making the skill creation process much more efficient and reliable.
Usage:
scripts/init_skill.py <skill-name> --path <output-directory>
The script:
scripts/, references/, and assets/After initialization, customize or remove the generated SKILL.md and example files as needed.
Mark this todo complete before proceeding.
When editing the (newly-generated or existing) skill, remember that the skill is being created for another instance of Claude to use. Include information that would be beneficial and non-obvious to Claude. Consider what procedural knowledge, domain-specific details, or reusable assets would help another Claude instance execute these tasks more effectively.
Consult these helpful guides based on your skill's needs:
These files contain established best practices for effective skill design.
To begin implementation, start with the reusable resources identified above: scripts/, references/, and assets/ files. Note that this step may require user input. For example, when implementing a brand-guidelines skill, the user may need to provide brand assets or templates to store in assets/, or documentation to store in references/.
Added scripts must be tested by actually running them to ensure there are no bugs and that the output matches what is expected. If there are many similar scripts, only a representative sample needs to be tested to ensure confidence that they all work while balancing time to completion.
Any example files and directories not needed for the skill should be deleted. The initialization script creates example files in scripts/, references/, and assets/ to demonstrate structure, but most skills won't need all of them.
Writing Guidelines: Always use imperative/infinitive form.
Write the YAML frontmatter with name and description:
name: The skill namedescription: Be specific about what the skill does and when to use it
Do not include any other fields in YAML frontmatter.
Write instructions for using the skill and its bundled resources.
Mark this todo complete before proceeding.
Once development of the skill is complete, it must be packaged into a distributable .skill file that gets shared with the user. The packaging process automatically validates the skill first to ensure it meets all requirements:
scripts/package_skill.py <path/to/skill-folder>
Optional output directory specification:
scripts/package_skill.py <path/to/skill-folder> ./dist
The packaging script will:
Validate the skill automatically, checking:
Package the skill if validation passes, creating a .skill file named after the skill (e.g., my-skill.skill) that includes all files and maintains the proper directory structure for distribution. The .skill file is a zip file with a .skill extension.
If validation fails, the script will report the errors and exit without creating a package. Fix any validation errors and run the packaging command again.
Optional: Nexus-v3 Integration
If using Nexus-v3 framework: Skills placed in 03-skills/ (user) or 00-system/skills/ (system) auto-integrate. The framework's loader scans YAML metadata on startup—no manual registration needed. Skills work standalone or in Nexus without modification.
After successful packaging, the packaging script will check if the skill is ready for Notion export and display:
📤 SHARE WITH TEAM
Would you like to export this skill to Notion?
→ Makes skill discoverable by your team
→ Enables collaborative improvement
→ Recommended for production-ready skills
To export, say: 'export this skill to Notion'
Mark this todo complete before proceeding.
After packaging your skill, consider sharing it with the team via Notion. This makes your work discoverable and enables collaborative improvement.
Benefits of sharing:
To share:
Simply say "export this skill to Notion" or use the export-skill-to-notion skill directly.
What happens during export:
query-notion-db and import using import-skill-to-nexusThe workflow looks like:
You: "Export this skill to Notion"
AI: Based on the skill's purpose, I suggest Team: "General"
(This is a utility skill for [description])
Is this correct? (yes/no)
You: "yes"
AI: 📤 Ready to push skill to Notion:
Skill Name: my-skill
Team: General
Owner: Your Name
File: my-skill.skill (includes scripts/, references/, assets/)
Push to Notion? (yes/no)
You: "yes"
AI: ✅ Skill pushed to Notion!
🔗 https://notion.so/...
Skip this step if:
Notion export validation:
The packaging script automatically checks Notion-readiness:
For more details:
Mark this todo complete after deciding (share or skip).
After testing the skill, users may request improvements. Often this happens right after using the skill, with fresh context of how the skill performed.
Iteration workflow:
Mark this todo complete when iteration is done.
python 00-system/core/nexus-loader.py --skill close-session
Then execute close-session workflow per SKILL.md
development
Load when user says "mental model", "think through this", "structured thinking", "help me decide", "analyze this problem", "first principles", "pre-mortem", "stakeholder mapping", "what framework should I use", or any specific model name. Provides 59 thinking frameworks for decision-making, problem decomposition, and strategic analysis.
development
Generate comprehensive philosophy and standards documents for any domain (UX design, landing pages, email outbound, API design, etc.). Load when user says "create philosophy doc", "generate standards for [domain]", "build best practices guide", or "create benchmarking document". Conducts deep research, synthesizes findings, and produces structured philosophy documents with principles, frameworks, anti-patterns, checklists, case studies, and metrics.
development
Validate Nexus-v3 system integrity and fix common issues automatically. Load when user mentions "validate system", "check system", or "fix problems". Runs comprehensive checks on folder structure, metadata files, and framework consistency with auto-repair capabilities.
development
Load when user says "validate docs", "check documentation consistency", "docs vs implementation", or "find documentation mismatches". Systematically compares implementation code against documentation to identify and fix inconsistencies.