agentleFS
mattmirelesmattmireles/gemma-tuner-multimodal/.claude/skills/create-skill/SKILL.md

create-skill

Skill1.5k starsChanged 4 days agoMITView on GitHub

Guides users through creating effective Agent Skills for Cursor. Use when you want to create, write, or author a new skill, or asks about skill structure, best practices, or SKILL.md format.

We split this skill into the rules it gives an agent

27 rules. 0 are common, 20 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 129 edited versions we read keep these.

  • 20

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When the user wants a personal (global) skill—not something checked into a single repo—treat “create this skill” as “create it for Cursor, …

    line 14
  2. Very specific:

    Implementation habit: after authoring SKILL.md, run mkdir -p for each path above and copy the same file (or write once and cp to each root).

    line 27
  3. Very specific:

    When creating a new project skill (checked into a repository), always install the same SKILL.md (and any reference.md / scripts/ siblings) …

    line 31
  4. Distinctive:

    Before creating a skill, gather essential information from the user about:

    line 47
  5. Distinctive:

    Trigger scenarios: When should the agent automatically apply this skill?

    line 51
  6. Distinctive:

    If you have previous conversation context, infer the skill from what was discussed.

    line 58
  7. Distinctive:

    If you need clarification, use the AskQuestion tool when available:

    line 62
  8. Distinctive:

    If the AskQuestion tool is not available, ask these questions conversationally.

    line 70
  9. Distinctive:

    Project default: When adding a new checked-in skill, create it in Cursor, Claude Code, and Codex locations above (see Default: project …

    line 99
  10. Very specific:

    IMPORTANT: Never create your skills in ~/.cursor/skills-cursor/.

    line 101
  11. Very specific:

    Every skill requires a SKILL.md file with YAML frontmatter and markdown body:

    line 117
  12. Distinctive:

    WHEN: When the agent should use it (trigger scenarios)

    line 160
  13. Very specific:

    Put essential information in SKILL.md.

    line 223
  14. Distinctive:

    Ensure consistency across uses

    line 368
  15. Distinctive:

    When helping a user create a skill, follow this process:

    line 434
  16. Distinctive:

    If you have access to the AskQuestion tool, use it for efficient structured gathering.

    line 445
  17. Distinctive:

    Write a specific, third-person description

    line 450
  18. Distinctive:

    Create the directory structure

    line 456
  19. Very specific:

    Write the SKILL.md file with frontmatter

    line 457
  20. Distinctive:

    Create any supporting reference files

    line 458
  21. Distinctive:

    Create any utility scripts if needed

    line 459
  22. Very specific:

    Verify the SKILL.md is under 500 lines

    line 465
  23. Distinctive:

    Check that the description is specific and includes trigger terms

    line 466
  24. Distinctive:

    Ensure consistent terminology throughout

    line 467
  25. Distinctive:

    Verify all file references are one level deep

    line 468
  26. Distinctive:

    Test that the skill can be discovered and applied

    line 471
  27. Distinctive:

    Before finalizing a skill, verify:

    line 531

“Common” is measured: kept by at least 6 in 10 of the 129 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Creating Skills in Cursor

This skill guides you through creating effective Agent Skills for Cursor. Skills are markdown files that teach the agent how to perform specific tasks: reviewing PRs using team standards, generating commit messages in a preferred format, querying database schemas, or any specialized workflow.

Default: mirror personal skills everywhere

When the user wants a personal (global) skill—not something checked into a single repo—treat “create this skill” as “create it for Cursor, Claude Code, Codex, and Agents” unless they explicitly narrow scope (examples: “Cursor only”, “don’t touch ~/.agents”, “repo skill only”).

Mirror targets (same directory layout: skill-name/SKILL.md). Write one canonical SKILL.md, then install identical copies under:

#PathLoad by
1~/.cursor/skills/skill-name/Cursor (personal)
2~/.claude/skills/skill-name/Claude Code (user)
3~/.codex/skills/skill-name/Codex
4~/.agents/skills/skill-name/Agents layouts that read ~/.agents/skills

~/.codex/skills/.system/ is bundled—never mirror into .system/; only into sibling skill-name/ folders.

Implementation habit: after authoring SKILL.md, run mkdir -p for each path above and copy the same file (or write once and cp to each root). If a directory does not exist yet, create it—avoid leaving a skill in only one tree.

Default: project skills triple mirror (repo)

When creating a new project skill (checked into a repository), always install the same SKILL.md (and any reference.md / scripts/ siblings) in all of:

#PathTool
1.claude/skills/skill-name/Canonical checked-in copy (this repo)
2.cursor/skills/skill-name/Symlink → .claude/skills/... for Cursor
3.agents/skills/skill-name/Symlink → .claude/skills/... for Agents/Codex layouts

Skip a path only when the user explicitly narrows scope (e.g. “Cursor only in this repo”).

This repo: Project skills are versioned under .claude/skills/ (canonical). .cursor/skills/ and .agents/skills/ use per-skill symlinks to ../../.claude/skills/<name> (see each folder’s README.md). After adding a skill, create the symlink in both bridge dirs and run the sync snippet in .cursor/skills/README.md if you batch-add.

Project skills (repo) do not automatically go under ~/ unless the user asks.

Before You Begin: Gather Requirements

Before creating a skill, gather essential information from the user about:

  1. Purpose and scope: What specific task or workflow should this skill help with?
  2. Target location: Personal → default mirror everywhere. Project → default .claude/skills/ as canonical plus symlinks in .cursor/skills/ and .agents/skills/ (this repo); do not install under ~/ unless the user asks. Confirm any explicit single-tool exception before skipping a mirror path.
  3. Trigger scenarios: When should the agent automatically apply this skill?
  4. Key domain knowledge: What specialized information does the agent need that it wouldn't already know?
  5. Output format preferences: Are there specific templates, formats, or styles required?
  6. Existing patterns: Are there existing examples or conventions to follow?

Inferring from Context

If you have previous conversation context, infer the skill from what was discussed. You can create skills based on workflows, patterns, or domain knowledge that emerged in the conversation.

Gathering Additional Information

If you need clarification, use the AskQuestion tool when available:

Example AskQuestion usage:
- "Where should this skill be stored?" with options like ["Personal—mirror Cursor + Claude + Codex + ~/.agents (default)", "Project—triple mirror .cursor + .claude + .agents (default)", "Single-tool exception (explicit)"]
- "Should this skill include executable scripts?" with options like ["Yes", "No"]

If the AskQuestion tool is not available, ask these questions conversationally.


Skill File Structure

Directory Layout

Skills are stored as directories containing a SKILL.md file:

skill-name/
├── SKILL.md              # Required - main instructions
├── reference.md          # Optional - detailed documentation
├── examples.md           # Optional - usage examples
└── scripts/              # Optional - utility scripts
    ├── validate.py
    └── helper.sh

Storage Locations

TypePathScope
Personal~/.cursor/skills/skill-name/Available across all your projects
Project.cursor/skills/skill-name/Cursor (repo; shared with team)
Project.claude/skills/skill-name/Claude Code (repo; shared with team)
Project.agents/skills/skill-name/Codex / Agents (repo; symlink to .claude/skills/skill-name, like .cursor/skills/)

Project default: When adding a new checked-in skill, create it in Cursor, Claude Code, and Codex locations above (see Default: project skills triple mirror (repo)).

IMPORTANT: Never create your skills in ~/.cursor/skills-cursor/. That directory is for Cursor-shipped defaults (including this create-skill document). Cursor may replace files there on upgrade—if you customize something under skills-cursor, keep a backup or maintain your own copy under ~/.cursor/skills/.

Same skill in Claude Code, Codex, or Agents

Other assistants use their own user-level trees (same layout: skill-name/SKILL.md):

ToolTypical user skills pathNotes
Claude Code~/.claude/skills/skill-name/Repo-specific skills can also live in .claude/skills/ inside a project
Codex~/.codex/skills/skill-name/Often alongside ~/.codex/skills/.system/ (bundled); do not edit .system
Agents~/.agents/skills/skill-name/Separate tree from Codex; not every install has it

For personal skills, follow Default: mirror personal skills everywhere: repo-agnostic text when the skill should work in any checkout, then identical SKILL.md in each user-level path (not “on request”—unless the user opted out of a tool).

SKILL.md Structure

Every skill requires a SKILL.md file with YAML frontmatter and markdown body:

---
name: your-skill-name
description: Brief description of what this skill does and when to use it
---

# Your Skill Name

## Instructions
Clear, step-by-step guidance for the agent.

## Examples
Concrete examples of using this skill.

Required Metadata Fields

FieldRequirementsPurpose
nameMax 64 chars, lowercase letters/numbers/hyphens onlyUnique identifier for the skill
descriptionMax 1024 chars, non-emptyHelps agent decide when to apply the skill

Writing Effective Descriptions

The description is critical for skill discovery. The agent uses it to decide when to apply your skill.

Description Best Practices

  1. Write in third person (the description is injected into the system prompt):
    • ✅ Good: "Processes Excel files and generates reports"
    • ❌ Avoid: "I can help you process Excel files"
    • ❌ Avoid: "You can use this to process Excel files"
  2. Be specific and include trigger terms:
    • ✅ Good: "Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction."
    • ❌ Vague: "Helps with documents"
  3. Include both WHAT and WHEN:
    • WHAT: What the skill does (specific capabilities)
    • WHEN: When the agent should use it (trigger scenarios)

Description Examples

# PDF Processing
description: Extract text and tables from PDF files, fill forms, merge documents. Use when working with PDF files or when the user mentions PDFs, forms, or document extraction.

# Excel Analysis
description: Analyze Excel spreadsheets, create pivot tables, generate charts. Use when analyzing Excel files, spreadsheets, tabular data, or .xlsx files.

# Git Commit Helper
description: Generate descriptive commit messages by analyzing git diffs. Use when the user asks for help writing commit messages or reviewing staged changes.

# Code Review
description: Review code for quality, security, and best practices following team standards. Use when reviewing pull requests, code changes, or when the user asks for a code review.

Core Authoring Principles

1. Concise is Key

The context window is shared with conversation history, other skills, and requests. Every token competes for space.

Default assumption: The agent is already very smart. Only add context it doesn't already have.

Challenge each piece of information:

  • "Does the agent really need this explanation?"
  • "Can I assume the agent knows this?"
  • "Does this paragraph justify its token cost?"

Good (concise):

## Extract PDF text

Use pdfplumber for text extraction:

\`\`\`python
import pdfplumber

with pdfplumber.open("file.pdf") as pdf:
    text = pdf.pages[0].extract_text()
\`\`\`

Bad (verbose):

## Extract PDF text

PDF (Portable Document Format) files are a common file format that contains
text, images, and other content. To extract text from a PDF, you'll need to
use a library. There are many libraries available for PDF processing, but we
recommend pdfplumber because it's easy to use and handles most cases well...

2. Keep SKILL.md Under 500 Lines

For optimal performance, the main SKILL.md file should be concise. Use progressive disclosure for detailed content.

3. Progressive Disclosure

Put essential information in SKILL.md; detailed reference material in separate files that the agent reads only when needed.

# PDF Processing

## Quick start
[Essential instructions here]

## Additional resources
- For complete API details, see [reference.md](reference.md)
- For usage examples, see [examples.md](examples.md)

Keep references one level deep - link directly from SKILL.md to reference files. Deeply nested references may result in partial reads.

4. Set Appropriate Degrees of Freedom

Match specificity to the task's fragility:

Freedom LevelWhen to UseExample
High (text instructions)Multiple valid approaches, context-dependentCode review guidelines
Medium (pseudocode/templates)Preferred pattern with acceptable variationReport generation
Low (specific scripts)Fragile operations, consistency criticalDatabase migrations

Common Patterns

Template Pattern

Provide output format templates:

## Report structure

Use this template:

\`\`\`markdown
# [Analysis Title]

## Executive summary
[One-paragraph overview of key findings]

## Key findings
- Finding 1 with supporting data
- Finding 2 with supporting data

## Recommendations
1. Specific actionable recommendation
2. Specific actionable recommendation
\`\`\`

Examples Pattern

For skills where output quality depends on seeing examples:

## Commit message format

**Example 1:**
Input: Added user authentication with JWT tokens
Output:
\`\`\`
feat(auth): implement JWT-based authentication

Add login endpoint and token validation middleware
\`\`\`

**Example 2:**
Input: Fixed bug where dates displayed incorrectly
Output:
\`\`\`
fix(reports): correct date formatting in timezone conversion

Use UTC timestamps consistently across report generation
\`\`\`

Workflow Pattern

Break complex operations into clear steps with checklists:

## Form filling workflow

Copy this checklist and track progress:

\`\`\`
Task Progress:
- [ ] Step 1: Analyze the form
- [ ] Step 2: Create field mapping
- [ ] Step 3: Validate mapping
- [ ] Step 4: Fill the form
- [ ] Step 5: Verify output
\`\`\`

**Step 1: Analyze the form**
Run: \`python scripts/analyze_form.py input.pdf\`
...

Conditional Workflow Pattern

Guide through decision points:

## Document modification workflow

1. Determine the modification type:

   **Creating new content?** → Follow "Creation workflow" below
   **Editing existing content?** → Follow "Editing workflow" below

2. Creation workflow:
   - Use docx-js library
   - Build document from scratch
   ...

Feedback Loop Pattern

For quality-critical tasks, implement validation loops:

## Document editing process

1. Make your edits
2. **Validate immediately**: \`python scripts/validate.py output/\`
3. If validation fails:
   - Review the error message
   - Fix the issues
   - Run validation again
4. **Only proceed when validation passes**

Utility Scripts

Pre-made scripts offer advantages over generated code:

  • More reliable than generated code
  • Save tokens (no code in context)
  • Save time (no code generation)
  • Ensure consistency across uses
## Utility scripts

**analyze_form.py**: Extract all form fields from PDF
\`\`\`bash
python scripts/analyze_form.py input.pdf > fields.json
\`\`\`

**validate.py**: Check for errors
\`\`\`bash
python scripts/validate.py fields.json
# Returns: "OK" or lists conflicts
\`\`\`

Make clear whether the agent should execute the script (most common) or read it as reference.


Anti-Patterns to Avoid

1. Windows-Style Paths

  • ✅ Use: scripts/helper.py
  • ❌ Avoid: scripts\helper.py

2. Too Many Options

# Bad - confusing
"You can use pypdf, or pdfplumber, or PyMuPDF, or..."

# Good - provide a default with escape hatch
"Use pdfplumber for text extraction.
For scanned PDFs requiring OCR, use pdf2image with pytesseract instead."

3. Time-Sensitive Information

# Bad - will become outdated
"If you're doing this before August 2025, use the old API."

# Good - use an "old patterns" section
## Current method
Use the v2 API endpoint.

## Old patterns (deprecated)
<details>
<summary>Legacy v1 API</summary>
...
</details>

4. Inconsistent Terminology

Choose one term and use it throughout:

  • ✅ Always "API endpoint" (not mixing "URL", "route", "path")
  • ✅ Always "field" (not mixing "box", "element", "control")

5. Vague Skill Names

  • ✅ Good: processing-pdfs, analyzing-spreadsheets
  • ❌ Avoid: helper, utils, tools

Skill Creation Workflow

When helping a user create a skill, follow this process:

Phase 1: Discovery

Gather information about:

  1. The skill's purpose and primary use case
  2. Storage location (personal → confirm default full mirror vs explicit single-tool exception; project → default triple mirror unless explicit exception)
  3. Trigger scenarios
  4. Any specific requirements or constraints
  5. Existing examples or patterns to follow

If you have access to the AskQuestion tool, use it for efficient structured gathering. Otherwise, ask conversationally.

Phase 2: Design

  1. Draft the skill name (lowercase, hyphens, max 64 chars)
  2. Write a specific, third-person description
  3. Outline the main sections needed
  4. Identify if supporting files or scripts are needed

Phase 3: Implementation

  1. Create the directory structure
  2. Write the SKILL.md file with frontmatter
  3. Create any supporting reference files
  4. Create any utility scripts if needed
  5. Personal skills: mirror the skill directory (at minimum SKILL.md; include reference.md / scripts/ if present) to ~/.cursor/skills/, ~/.claude/skills/, ~/.codex/skills/, and ~/.agents/skills/, unless the user specified an exception. Do not stop after the first path.
  6. Project skills: mirror to .cursor/skills/, .claude/skills/, and .agents/skills/ at the repository root (identical SKILL.md via symlinks to .claude), unless the user specified an exception. Do not stop after the first path. Add .cursor/skills/<name> and .agents/skills/<name> symlinks when creating a new skill (see This repo note above).

Phase 4: Verification

  1. Verify the SKILL.md is under 500 lines
  2. Check that the description is specific and includes trigger terms
  3. Ensure consistent terminology throughout
  4. Verify all file references are one level deep
  5. Personal skills: confirm the same SKILL.md exists in every mirror path (no stray single-tool install)
  6. Project skills: confirm the same SKILL.md exists under .cursor/skills/, .claude/skills/, and .agents/skills/ (per-skill symlinks for Cursor and Agents)
  7. Test that the skill can be discovered and applied

Complete Example

Here's a complete example of a well-structured skill:

Directory structure:

code-review/
├── SKILL.md
├── STANDARDS.md
└── examples.md

SKILL.md:

---
name: code-review
description: Review code for quality, security, and maintainability following team standards. Use when reviewing pull requests, examining code changes, or when the user asks for a code review.
---

# Code Review

## Quick Start

When reviewing code:

1. Check for correctness and potential bugs
2. Verify security best practices
3. Assess code readability and maintainability
4. Ensure tests are adequate

## Review Checklist

- [ ] Logic is correct and handles edge cases
- [ ] No security vulnerabilities (SQL injection, XSS, etc.)
- [ ] Code follows project style conventions
- [ ] Functions are appropriately sized and focused
- [ ] Error handling is comprehensive
- [ ] Tests cover the changes

## Providing Feedback

Format feedback as:
- 🔴 **Critical**: Must fix before merge
- 🟡 **Suggestion**: Consider improving
- 🟢 **Nice to have**: Optional enhancement

## Additional Resources

- For detailed coding standards, see [STANDARDS.md](STANDARDS.md)
- For example reviews, see [examples.md](examples.md)

Summary Checklist

Before finalizing a skill, verify:

Core Quality

  • Description is specific and includes key terms
  • Description includes both WHAT and WHEN
  • Written in third person
  • SKILL.md body is under 500 lines
  • Consistent terminology throughout
  • Examples are concrete, not abstract

Structure

  • File references are one level deep
  • Progressive disclosure used appropriately
  • Workflows have clear steps
  • No time-sensitive information

Personal (global) skills

  • Mirrored to ~/.cursor/skills/, ~/.claude/skills/, ~/.codex/skills/, and ~/.agents/skills/ unless the user explicitly excluded a target

Project (repo) skills

  • Identical SKILL.md under .cursor/skills/, .claude/skills/, and .agents/skills/ (per-skill symlinks to .claude/skills/<name> for Cursor + Agents)

If Including Scripts

  • Scripts solve problems rather than punt
  • Required packages are documented
  • Error handling is explicit and helpful
  • No Windows-style paths

Download now (ZIP)

  • Other versions139 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 13

    1. xstongxue/best-skills★ 2.9k95% same
    2. thedesignproject/agent-skills★ 8890% same
    3. ArangoGutierrez/claude-toolkit★ 490% same
    4. tomimor/skills★ 228% same
    5. 32103210/cursor-skills★ 195% same
    6. fotocanvas/qoderwork-skills★ 188% same
    7. Goodnessmbakara/codex-skills★ 190% same
    8. JameMy0001/antigravity-skills-hub★ 187% same
    9. leishifu666/skills★ 190% same
    10. PandelisZ/skills★ 195% same

    3 more not listed

    Wrote their own version · 126

    1. microsoft/vscode★ 194ksame name
    2. CherryHQ/cherry-studio★ 53ksame name
    3. videojs/video.js★ 40ksame name
    4. BuilderIO/agent-native★ 7.6ksame name
    5. stagewise-io/stagewise★ 6.8ksame name
    6. dotnet/skills★ 5.8ksame name
    7. Lilac-Labs/gini-agent★ 1.9ksame name
    8. Open-Curiosity/gini-agent★ 1.9ksame name
    9. zylos-ai/zylos-core★ 1.2ksame name
    10. SethGammon/Citadel★ 927same name

    116 more not listed

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • Used alongsideProjects with it also use review-bugbot, migrate-to-skills and 7 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • 0mlkrizzz655335vSkill

      review-bugbot

      缺陷导向代码审查。用 Bugbot 子代理找 bug。

      Also in 5 projects that use this

    • 32103210Skill

      migrate-to-skills

      Convert 'Applied intelligently' Cursor rules (.cursor/rules/*.mdc) and slash commands (.cursor/commands/*.md) to Agent Skills format (.cursor/skills/). Use when you want to migrate rules or commands to skills, convert .mdc rules to SKILL.md format, or consolidate commands into the skills directory.

      Also in 8 projects that use this

    • 32103210Skill

      update-cursor-settings

      Modify Cursor/VSCode user settings in settings.json. Use when you want to change editor settings, preferences, configuration, themes, font size, tab size, format on save, auto save, keybindings, or any settings.json values.

      Also in 8 projects that use this

    • PandelisZSkill

      update-cli-config

      View and modify Cursor CLI configuration settings in ~/.cursor/cli-config.json. Use when the user wants to change CLI settings, configure permissions, switch approval mode, enable vim mode, toggle display options, configure sandbox, or manage any CLI preferences.

      Also in 7 projects that use this

    • huyvpSkill

      cost-reducer

      Reduce cloud, infrastructure, and operational costs while maintaining performance. Use when writing database queries, configuring cloud resources, optimizing bundles, setting up caching, choosing between services, sizing instances, configuring CDN, managing storage, or reviewing code for cost inefficiencies. Covers AWS/GCP/Vercel pricing, database optimization, serverless tuning, image pipelines, observability costs, and FinOps practices.

      Also in 10 projects that use this

    • xfstudioSkill

      trigger-dev

      Trigger.dev expert for background jobs, AI workflows, and reliable async execution with excellent developer experience and TypeScript-first design. Use when: trigger.dev, trigger dev, background task, ai background job, long running task.

      Also in 11 projects that use this

    • +1 more from 32103210
  • In this repository20 other files it gives its agents.

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.