一键导入
skill-creator
Creating and authoring new AI skills with proper SKILL.md structure, YAML frontmatter validation, directory conventions, and registration workflow
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Creating and authoring new AI skills with proper SKILL.md structure, YAML frontmatter validation, directory conventions, and registration workflow
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Installing, updating, and uninstalling AI skills from Git repositories, ZIP archives, and manual placement. Use this skill whenever a user asks to install, download, add, import, set up, or save a skill.
测试用 Skill Alpha,用于验证基本功能
测试用 Skill Beta,包含脚本执行功能
基于 SOC 职业分类
| name | skill-creator |
| description | Creating and authoring new AI skills with proper SKILL.md structure, YAML frontmatter validation, directory conventions, and registration workflow |
| version | 1.2.0 |
| author | system |
| tags | ["system","meta","skill-management","authoring","creating"] |
This skill guides you through the complete process of creating a new AI skill for the system. A skill is a reusable instruction bundle that teaches the AI how to perform a specific type of task. Skills follow the AgentSkills open specification.
Skills use progressive disclosure to manage context efficiently:
name + description loaded at startup for all skills<skill-name>/ # Directory name = skill name (lowercase + hyphens)
├── SKILL.md # Required: metadata + instructions
├── scripts/ # Optional: executable code
│ ├── script.py
│ ├── script.sh
│ └── ...
├── references/ # Optional: reference docs loaded on demand
│ ├── api-spec.md
│ ├── configuration-guide.md
│ └── ...
├── assets/ # Optional: templates, configs, resources
│ ├── template.json
│ ├── icon.svg
│ └── ...
└── ... # Any additional files or directories
<skill-name>/
└── SKILL.md
A single SKILL.md file is all that's required. The optional directories are for organizing larger skills.
| Source | Directory | Persistence |
|---|---|---|
| System (built-in) | {SKILLS_DIR}/.system/<name>/ | Synced from bundled-skills/ on startup, overwritten on upgrade, cannot be uninstalled |
| User (installed) | {SKILLS_DIR}/<name>/ | Installed by user, can be updated/uninstalled |
SKILLS_DIR defaults to ~/.guada/skills/ (where ~ is the user's home directory, e.g. C:\Users\<username>\.guada\skills on Windows); configurable via SKILLS_DIR environment variable.
---
<YAML frontmatter>
---
<Markdown body>
--- must be at line 1 of the file/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/--- before body content| Field | Required | Type | Max | Constraints |
|---|---|---|---|---|
name | ✅ Yes | string | 64 chars | [a-z0-9-]+, cannot start/end with -, must match directory name |
description | ✅ Yes | string | 1024 chars | Non-empty, third-person, describes what + when |
version | ❌ No | string | — | Semantic version (recommended: semver e.g. "1.0.0") |
author | ❌ No | string | — | Creator name or identifier |
tags | ❌ No | string[] | — | Classification keywords for matching |
license | ❌ No | string | — | License name or reference |
compatibility | ❌ No | string | 500 chars | Environment requirements (product, packages, network, etc.) |
dependencies | ❌ No | string[] | — | Names of other skills this skill depends on |
The system enforces these rules:
✓ name is present (required)
✓ 1-64 characters
✓ matches ^[a-z0-9-]+$ (lowercase letters, digits, hyphens only)
✓ does not start or end with a hyphen
✓ does not contain consecutive hyphens (-- inferred by the pattern)
✓ matches the parent directory name (case-insensitive)
Examples:
✅ code-review
✅ data-analyzing-v2
✅ translation-helper
❌ Code-Review (uppercase not allowed)
❌ code_review (underscore not allowed)
❌ -code-review (leading hyphen)
❌ code-review- (trailing hyphen)
❌ code--review (consecutive hyphens)
A good name is short, scannable, and self-explanatory:
pdf, docx, xlsx, mcp-buildertool, helper, utils, my-script — these don't tell Claude when to triggerslack-gif-creator, web-artifacts-builder, theme-factorydata-analyzing-v2 (not data-analyzing-final-final)Good names read like CLI commands — users and AI alike can guess what they do by reading the name alone.
The description is the primary trigger mechanism — it's what Claude reads to decide whether to use the skill. Get this right above all else.
Claude has a tendency to undertrigger skills — not use them when they'd be useful. To combat this, make descriptions a little pushy. Include not just what the skill does, but specific contexts where it should trigger — even if the user doesn't explicitly ask for it.
Pattern:
<what it does>. Use this skill whenever <context A>, <context B>, or <context C>,
even if the user doesn't explicitly mention <keyword>.
Good:
Creating slide decks, pitch decks, and presentations. Use this skill any time
a .pptx file is involved in any way — as input, output, or both. Trigger
whenever the user mentions "deck," "slides," "presentation," or references a
.pptx filename, regardless of what they plan to do with the content afterward.
Poor (too passive):
Creating PowerPoint presentations
Ask yourself: what are all the ways a user might ask for this? List the synonyms, casual phrasings, and edge cases:
Cover these in the description so Claude catches them all.
Good:
Generating comprehensive code review reports, identifying potential bugs,
security vulnerabilities, and style violations in pull requests. Use when
reviewing PRs or analyzing code quality.
Poor:
Code review tool
---
name: data-analyzing
description: Analyzing structured datasets, identifying trends, and generating statistical summary reports
version: 2.1.0
author: team-data
tags: [analysis, data-science, reporting]
license: MIT
compatibility: Requires Python 3.10+ with pandas and numpy
---
Only name and description are loaded into the system prompt at startup. The AI uses this to determine if a skill might be relevant to the user's request. This is why description must include trigger keywords.
When the AI decides a skill is relevant, it reads the full SKILL.md body from its file path (provided in the skills list). This is the core instruction content.
When the skill body references files from scripts/, references/, or assets/, the AI reads them on demand. This keeps the initial skill activation lean.
If a skill's instructions exceed 100-200 lines, split them:
writing-assistant/
├── SKILL.md # Core instructions + overview
├── references/
│ ├── style-guide.md # Detailed style rules (loaded only when style is relevant)
│ ├── grammar-rules.md # Grammar reference (loaded only for grammar tasks)
│ └── templates.md # Output templates (loaded when generating)
├── scripts/
│ └── validate-markdown.js # Validation script (run when checking output)
└── assets/
└── template-letter.docx # Template file (download when creating letters)
Determine:
my-skill-name)Create the skill directory in your current working directory for development:
mkdir -p <skill-name>
Directory name must match the planned name field.
Create {SKILLS_DIR}/<skill-name>/SKILL.md with:
---
name: my-skill-name
description: What this skill does and when to use it
---
# Skill Instructions
Detailed instructions the AI should follow when this skill is activated.
mkdir scripts/ references/ assets/
Before installing, run the bundled validation script to check for errors:
node ~/.guada/skills/skill-creator/scripts/validate-skill.mjs <skill-name>
Or if you're in the skill-creator directory:
node scripts/validate-skill.mjs <skill-name>
This checks 14 items: frontmatter format, name rules (lowercase, length, no leading/trailing hyphens), directory-name consistency, description constraints, optional fields, body length, and directory structure. All must pass before proceeding.
If validation fails, fix the reported issues and re-run until it passes.
After validation passes, move the skill directory to the system's skills directory:
mv <skill-name> ~/.guada/skills/<skill-name>
Windows users:
~maps to your user directory, i.e.C:\Users\<username>\.guada\skills\.
You can also move the<skill-name>folder via File Explorer toC:\Users\<username>\.guada\skills\.
Once placed in ~/.guada/skills/, the file watcher automatically detects the new SKILL.md and registers the skill within seconds — no manual action needed.
Use the read tool to confirm the skill is registered:
read({ path: "~/.guada/skills/my-skill-name/SKILL.md" })
This checks 14 items including frontmatter format, name rules, directory-name consistency, description constraints, optional fields, and directory structure. See scripts/validate-skill.mjs for details.
| Section | Purpose | Required? |
|---|---|---|
| Overview | What the skill does, when it activates | Recommended |
| Prerequisites | Required tools, credentials, setup | If applicable |
| Instructions | Step-by-step guidance | Core content |
| Rules & Constraints | Boundaries, dos and don'ts | Recommended |
| Examples | Complete usage walkthroughs | Recommended |
| Troubleshooting | Common issues | If applicable |
| References | Links to related files/dirs | If applicable |
Today's LLMs are smart — they have good theory of mind and can go beyond rote instructions when given proper understanding. Instead of heavy-handed ALWAYS / MUST / NEVER, explain the reasoning:
## Good: Explain the WHY
Use the imperative verb form (e.g. "Generate a report") rather than descriptive
("This skill generates a report"). The imperative form makes the instruction
actionable — Claude will execute it directly rather than reading about it.
## Poor: Rigid MUST/ALWAYS
ALWAYS use imperative form. NEVER use descriptive form.
When you find yourself typing ALL CAPS or extremely rigid structures, that's a yellow flag — try to reframe and explain the why.
Every line in a skill is executed on every invocation. Remove things that aren't pulling their weight:
scripts/Skills are used millions of times across unpredictable prompts. Don't write instructions that only work for the examples you tested:
Use imperative form in instructions. Tell Claude what to do, not what the skill is about.
Defining output formats — be explicit about structure:
## Report structure
ALWAYS use this exact template:
# [Title]
## Executive summary
## Key findings
## Recommendations
Examples with Input/Output — useful for format-oriented skills:
## Commit message format
**Example 1:**
Input: Added user authentication with JWT tokens
Output: feat(auth): implement JWT-based authentication
Skills must not contain malware, exploit code, or content that could compromise system security. A skill's intent should not surprise the user if described honestly. Don't go along with requests to create misleading skills or skills designed for unauthorized access.
##, ###) to structure contentsee references/style-guide.md---
name: hello-world
description: Printing a friendly greeting and demonstrating basic skill structure
version: 1.0.0
author: system
tags: [example, demonstration]
---
# Hello World — Example Skill
## Overview
A minimal example skill that demonstrates the SKILL.md format.
## Instructions
When asked to say hello:
1. Respond with a friendly greeting
2. Include the user's name if known
3. Ask how you can help them today
## Rules
- Always be polite and friendly
- Keep the greeting concise
| Phase | Action | Method |
|---|---|---|
| Create | Author SKILL.md + optional resources | Manual or via this skill |
| Place | Put in correct directory | ~/.guada/skills/<name>/ |
| Register | Auto-detected by file watcher | Within seconds, no manual action |
| Verify | Confirm it's loaded | read({ path: "~/.guada/skills/<name>/SKILL.md" }) |
| Use | Mention in conversation | AI matches and activates |
| Update (same name) | Edit SKILL.md, auto-detected | File watcher reloads automatically |
| Update (renamed) | Move directory | File watcher detects removal + new registration |
| Disable | Toggle in UI settings | Does not uninstall; excluded from prompt |
| Uninstall | Remove directory | File watcher detects removal and unregisters |
Place executable code in scripts/. The AI can read and run these files:
scripts/
├── transform.py # Data transformation script
├── generate_report.sh # Report generation script
└── ...
The AI can:
Best practice: When test runs reveal Claude repeatedly writing the same helper logic across different prompts, bundle it into a script under scripts/ instead. This saves every future invocation from reinventing the wheel.
Place reference documentation in references/. The AI loads these on demand:
references/
├── api-docs.md # API reference
├── configuration.md # Setup guide
├── faq.md # Frequently asked questions
└── ...
Reference from within SKILL.md:
For detailed API documentation, see references/api-docs.md.
Place templates, configuration files, icons, and output resources in assets/:
assets/
├── template.json # JSON template file
├── config.yml # Default configuration
├── icon.svg # Skill icon
└── ...
The system validates on every automatic scan or reload, triggered by the file watcher on any SKILL.md change:
✓ File exists: <dir>/SKILL.md
✓ YAML frontmatter present and properly delimited
✓ Frontmatter parsed as valid YAML object
✓ name: present (≤64 chars)
✓ name: matches ^[a-z0-9-]+$
✓ name: no leading/trailing hyphens
✓ name: matches directory name (case-insensitive)
✓ description: present (≤1024 chars)
✓ SHA256 content_hash computed for change detection
This skill bundles scripts/validate-skill.mjs — a more comprehensive Node.js validation tool that you run before installation. It checks everything the system checks, plus additional guardrails:
14 checks performed:
| Category | Check |
|---|---|
| File structure | SKILL.md exists, frontmatter delimiters correct |
| Format parsing | YAML frontmatter parses correctly |
| name field | Present, ≤64 chars, lowercase/digits/hyphens only, no leading/trailing hyphens |
| Name match | Directory name matches frontmatter name |
| description | Present, ≤1024 chars, no angle brackets |
| Optional fields | version (semver), author, tags, license, compatibility |
| Body content | Not empty, >500 lines warns to split |
| Directory structure | Non-standard subdirectory warnings |
Usage:
# Via absolute path (recommended)
node ~/.guada/skills/skill-creator/scripts/validate-skill.mjs <skill-directory>
# Or via relative path from the skill-creator directory
node scripts/validate-skill.mjs <skill-directory>
Exit codes:
0 — all checks passed1 — errors found and must be fixedThis skill follows the AgentSkills open specification for interoperability. The system's name field:
[a-z0-9-]) — per spec requirementmanifest.name.toLowerCase()