⚡ October 2026 Milestone • Linux Foundation Agentic AI Foundation

One SKILL.md, Every Agent: How to Build a Single Agent Skill That Works in Claude Code, Codex, Cursor & Copilot

● Universal Skill Architecture Standardized Specification
Central SKILL.md document radiating connections to multiple AI coding agent environments including Claude Code, Cursor, Codex, Copilot, and Gemini CLI
Figure 1: The Single-Canon Architecture: A single SKILL.md file authored in .agents/skills executes across all major agent runtimes without manual synchronization or syntactic conversion.

💡 Quick Answer: Can One SKILL.md Work Across Every Agent?

Yes — one SKILL.md can run across all agents. Since 22 October 2026, Agent Skills is a vendor-neutral open standard governed by the Linux Foundation's Agentic AI Foundation (AAIF), already adopted across 70+ development platforms. A skill works everywhere if it (1) uses only the spec's standardized frontmatter fields, (2) lives in the shared .agents/skills directory, and (3) is symlinked or junction-mapped into each agent's native directory.

Below is the comprehensive cross-platform directory map, frontmatter compatibility rules, tested Windows/macOS junction commands, and a complete copyable worked skill verified in production.

1. What Changed on 22 October 2026: Agent Skills Got a Neutral Home

On 22 October 2026, Anthropic formally donated the Agent Skills specification — including the name, the format, the open GitHub organization, and the agentskills.io reference website — to the Agentic AI Foundation (AAIF), a directed fund under the Linux Foundation.

The same day, the AAIF also welcomed foundational open-source contributions from other industry leaders: OpenAI's Open Responses, Hugging Face's OpenEnv, and Alibaba's OpenSandbox. Overnight, the foundation expanded from 3 to 10 hosted projects, establishing a unified neutral governance consortium for autonomous software engineering.

● Community Announcement Banner Free • No Signup • Client-Side
One SKILL.md, Every Agent title card summarizing the cross-platform specification
Figure 2: The Open Agent Skills standard removes vendor lock-in. Skills are no longer proprietary tool extensions — they are open, portable instruction packages.

What Anthropic Actually Donated — And What It Didn't

It is critical to distinguish between specification governance and asset ownership:

  • What was donated: The formal format definition, the parser schemas, the documentation repositories, and the trademark rights. Decisions on future schema versions are now voted on by a vendor-neutral technical steering committee led by maintainers across participating organizations.
  • What was NOT donated: Your proprietary workflows and intellectual property. A SKILL.md you author remains your file, hosted in your repository, licensed under whatever terms you choose. You do not need a Linux Foundation membership, an enterprise subscription, or anyone's approval to create or distribute skills.

The Numbers: Why Cross-Platform Portability Is Now the Default

Prior to the donation, software teams hesitated to invest heavily in agent skills out of concern that Anthropic might keep the format proprietary to Claude Code. The numbers reported at the official AAIF handover put an end to that concern:

70+ Integrated Development Platforms
1,000,000+ Public & Enterprise Skills Authored
~280 Million Cumulative Runtime Skill Installs

With native ingestion active across Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, and Gemini CLI, authoring separate prompt files for each IDE is dead. One standard file handles all of them.

What Did NOT Change: Each Agent Still Scans a Different Folder

Here is the critical nuance that product launch press releases gloss over: the file syntax is standardized, but directory paths are not yet unified.

Claude Code looks inside .claude/skills. GitHub Copilot looks inside .github/skills. OpenCode scans .opencode/skills. The official AAIF standard dictates .agents/skills, which Cursor, Codex, and Gemini CLI read natively. Achieving universal portability is fundamentally a file-organization and link architecture problem. Once configured, you never write duplicate rules again.

2. What an Agent Skill Is (The 60-Second Version)

An Agent Skill is a self-contained directory containing a primary SKILL.md file that pairs machine-readable YAML frontmatter with human-readable Markdown instructions, optionally accompanied by modular subdirectories:

.agents/skills/invoice-chaser/
├── SKILL.md          # Frontmatter metadata + procedural steps (mandatory)
├── scripts/          # Deterministic scripts for exact tasks (optional)
│   └── date_calc.py  # Zero-hallucination arithmetic or schema formatters
├── references/       # Dense specifications opened on-demand (optional)
│   └── collections_policy.md
└── assets/           # Output templates and email drafts (optional)
    └── reminder_templates.json
● Memory Economics Context Budget Architecture
Comparison of always-loaded startup metadata versus on-demand full skill loading
Figure 3: Why Skills Cost Almost Nothing: Progressive disclosure decouples registry indexing from instruction consumption. Only name and description load at startup (~40 tokens per skill); heavy procedural text loads exclusively on intent match.

Progressive Disclosure: Why the Description IS the Product

Traditional system prompts suffer from compounding context drag: if you inject 50 procedural guides into every LLM request, you waste 40,000 tokens before the user types a word, triggering severe attention sinks and context drift.

Agent Skills solve this via progressive disclosure:

  1. At Agent Boot (System Initialization): The agent parses only the name and description of every installed skill. This uses roughly 30–50 tokens per skill. A developer can have 60 skills registered in our Skills Hub while consuming less than 2,500 total tokens of system context.
  2. During Active Conversation: When a user request matches the intent described in the frontmatter, the agent invokes an internal tool to load the complete SKILL.md body into working memory.
  3. During Procedural Execution: Files located in references/ or assets/ are loaded solely if the procedural steps explicitly instruct the model to inspect them.
⚠️ The Frontmatter Budgeting Trap

Because agents evaluate your description to decide activation, the description is the entire trigger mechanism. Write it as an activation criteria rather than a passive summary. Crucially, flagship models like Codex budget approximately 2% of their context window for skill descriptions before truncating. Front-load critical action verbs and specific user keywords at the beginning of the field.

3. The Cross-Platform Folder Map & Symlink Architecture

To achieve write-once portability, never maintain disparate copies across .claude, .cursor, and .github. Establish one master canonical directory in .agents/skills, and create filesystem links for legacy tool paths:

● Cross-Platform Cheat Sheet Standardized Paths
Detailed cheat sheet showing directory locations for Claude Code, GitHub Copilot, OpenCode, Codex, and Cursor
Figure 4: The Cross-Platform Folder Map: Point every vendor-specific folder directly back to the single master .agents/skills repository.
Agent / Runtime Personal Path (Global / User) Project Path (Repo Root) Native Ingestion Status
AAIF Shared Standard ~/.agents/skills/ .agents/skills/ CANONICAL MASTER
Claude Code ~/.claude/skills/ .claude/skills/ Symlink from .agents/skills
GitHub Copilot ~/.copilot/skills/ or ~/.agents/skills/ .github/skills/, .agents/skills/ Reads .agents natively
Cursor IDE ~/.cursor/skills/ .agents/skills/ or .cursor/rules/ Reads .agents natively
Codex / OpenAI ~/.agents/skills/ .agents/skills/ Reads .agents natively
OpenCode ~/.config/opencode/skills/ .opencode/skills/, .agents/skills/ Fallbacks to .claude & .agents
Gemini CLI ~/.gemini/antigravity/skills/ .agents/skills/ Reads .agents natively

The Universal Linking Setup (Tested macOS, Linux & Windows)

To prevent divergence, follow this strict protocol: Edit only the master copy in .agents/skills. Then create a filesystem pointer:

On macOS & Linux (Terminal):

# 1. Create your canonical repository
mkdir -p ~/.agents/skills ~/.claude/skills

# 2. Symlink the skill directory from the canon into Claude Code
ln -s ~/.agents/skills/invoice-chaser ~/.claude/skills/invoice-chaser

# For project-level root configurations:
ln -s ../.agents/skills/invoice-chaser .claude/skills/invoice-chaser

On Windows 10 & 11 (Command Prompt / PowerShell):

Standard symbolic links on Windows require Administrator elevation or Windows Developer Mode. However, NTFS Directory Junctions work instantly with standard user permissions:

:: Run in Command Prompt (CMD) as standard user:
mklink /J "%USERPROFILE%\.claude\skills\invoice-chaser" "%USERPROFILE%\.agents\skills\invoice-chaser"

:: Or inside a Git project repository:
mklink /J ".claude\skills\invoice-chaser" ".agents\skills\invoice-chaser"

If utilizing PowerShell, execute the native junction command:

New-Item -ItemType Junction -Path "$env:USERPROFILE\.claude\skills\invoice-chaser" -Target "$env:USERPROFILE\.agents\skills\invoice-chaser"

Once linked, every edit made in .agents/skills/invoice-chaser/SKILL.md is reflected instantly across Claude Code, Cursor, Copilot, and Codex with zero synchronization latency.

4. Build One Skill, Step by Step

You do not need complex frameworks to construct a production skill. You can build, validate, and convert any skill directly inside our browser-based Skill Builder Studio. Here is the engineering logic step-by-step:

Step 1 — Pick a Proven Repeat Task

Never invent a skill from speculative theory. Select a multi-step task you have executed in chat at least twice. If your prompt is still unpolished, generate and structure it inside our Prompt Generator before turning it into a permanent skill.

Step 2 — Author Strict Portable Frontmatter

The official AAIF specification permits only a tight subset of frontmatter attributes. Vendor-specific flags (like custom Claude subagent parameters) will trigger validation errors during upload flows. Stick to the universal standard:

Field Portability Specification Rule & Formatting
name ✅ Required 1–64 characters, lowercase alphanumeric and single hyphens. Must exactly match the directory name.
description ✅ Required What it does + exact triggering scenarios. Place keywords and trigger verbs first.
license ✅ Standard SPDX identifier (e.g. MIT, Apache-2.0, or Proprietary).
compatibility ✅ Standard Target environment flags (e.g. node >= 18, python 3.11).
metadata ✅ Standard Arbitrary key-value mappings (author, version, contact). Safe across all tools.
allowed-tools ⚠️ Partial Respected by Claude Code and Cursor; ignored by generic CLI agents. Never rely on it as a security gate.

Step 3 — Write Concise, Deterministic Instructions

Structure the Markdown body into five distinct semantic blocks:

  • When to use: Explicit user intent triggers.
  • When NOT to use: Explicit negative boundaries preventing false triggers.
  • Required inputs: What data must be present before the model proceeds.
  • Execution steps: Chronological, numbered procedural logic.
  • Output specification: Exact JSON schemas, markdown formats, or code structures.

The 500-Line Limit: Keep the main SKILL.md strictly under 500 lines (approximately 5,000 tokens). Move lengthy policy documents, contract templates, and massive reference lists into the references/ directory.

Step 4 — Add Scripts Only When One Correct Answer Exists

Do not waste LLM reasoning tokens on math, date formatting, or deterministic file hashing. If an invoice requires calculating exact overdue interest at 1.5% compounding monthly, write a 15-line script in scripts/interest_calc.py. Reserve LLM instructions for qualitative reasoning, tone, and synthesis.

Step 5 — The Complete Worked Example: Invoice Chaser

Unlike developer-only examples that flood GitHub, here is a complete, enterprise-grade skill written for professional finance and operations teams:

---
name: invoice-chaser
description: Draft a polite-but-firm payment reminder for an overdue invoice. Use when the user mentions an unpaid, overdue, or late invoice, a client who hasn't paid, or asks for a payment follow-up email. Not for quotes, receipts, or first invoices.
license: MIT
metadata:
  author: PromptStaging
  version: 1.0.0
---

# Invoice Chaser

## When to Use
- An invoice has passed its agreed net-30 / net-15 payment due date.
- The user asks to draft a reminder, follow-up, or escalation message to an unpaid client.
- **DO NOT USE FOR:** Issuing brand new invoices, quoting new prospective deals, or drafting payment receipts.

## Inputs to Collect (Ask Only If Missing)
1. Client organization name and contact person.
2. Invoice ID number, currency, and gross outstanding amount.
3. Original due date and calculated days overdue.
4. Total count of prior reminders previously delivered.

## Procedural Steps
1. **Determine Tone Stage Based on Days Overdue:**
   - **Stage 1 (1–7 Days Overdue):** Gentle nudge. Assume an administrative oversight or accounts payable processing delay. Maintain warm partnership tone.
   - **Stage 2 (8–21 Days Overdue):** Firm reminder. Reiterate agreed contract terms, reference invoice number and attached statement. Inquire if invoice validation or re-submission is required.
   - **Stage 3 (22+ Days Overdue):** Formal final notice. State the concrete contractual consequence (temporary suspension of services, accrual of standard late interest, or transfer to outside collections) effective exactly 7 days from delivery.
2. **Draft the Communication:**
   - Subject line format: `Payment Reminder: Invoice #[ID] — [Amount] due [Date]`
   - Keep total email length under 120 words.
   - Include clear wire/ACH or digital payment remittance details.
3. **Guardrails & Boundaries:**
   - Never invent statutory penalties or discounts unless the user confirms contract clause availability.
   - Output ONLY the subject line and formatted email body unless the user explicitly asks for strategic commentary.

## Output Format
Subject: Payment Reminder: Invoice #[ID] — [Currency][Amount]

Dear [Contact Name],

[Email Body matching Stage 1, 2, or 3]

Best regards,
[User Name / Accounts Receivable]

You can load this skill directly into our Skill Builder Studio, test alternative parameters, and convert it into Cursor MDC format or Claude Code subagent rules with one click.

5. Test It in Three Agents Before You Ship It

A skill that fails to trigger when needed is worthless; a skill that triggers on every unrelated query is a nuisance. Before publishing any skill to team repositories or the public Skills Directory, execute our standardized 5-Prompt Trigger Test:

● Verification Protocol Deterministic Quality Gate
The 5-Prompt Trigger Test breakdown showing three positive triggers and two negative triggers
Figure 5: The 5-Prompt Quality Gate: Verify 3 diverse positive triggers and 2 adjacent negative boundaries. Pass criteria: 3/3 positive fires and 0/2 false fires.

Executing the Verification Matrix

Feed the following five distinct queries into Claude Code, Cursor, and Copilot with your skill installed:

P1 (Should Trigger — Formal): "Client hasn't paid invoice #1042 — it's 12 days late. Draft something firm but polite."
P2 (Should Trigger — Colloquial / Slang): "chase Nova Retail for the $48,000 bill pls, they keep ignoring me"
P3 (Should Trigger — Terse Action): "Write a payment follow-up email for an invoice that was due on the 3rd."
P4 (Should NOT Trigger — Proposal / Quote): "Send a price quote to a brand-new client for the website project."
P5 (Should NOT Trigger — Receipt / Acknowledgment): "Make a receipt for invoice #0998 — they finally paid it."

Scoring Rule: To approve the skill for team-wide deployment, you must score 3/3 on positive triggers and 0/2 on false fires across all target agents. If it under-triggers, expand the description keywords; if it over-triggers, add explicit negative boundaries. Run the outputs through our Quality Check Builder to audit formatting consistency.

🔒 Security Alert: Treat Skills Like Executable Packages

Scripts contained inside a skill's scripts/ directory execute with your full local terminal permissions and environment variables. Never clone third-party skills from unverified repositories without inspecting every Python, Node, or Bash script inside. Pin skills to committed Git SHA hashes rather than raw branches.

6. Skills vs MCP vs AGENTS.md: Which Layer Is Which?

Developers frequently conflate Agent Skills with Model Context Protocol (MCP) and repository rule files like AGENTS.md. They are not competing alternatives — they are complementary architectural layers:

● Full-Stack Agent Architecture Composed Runtime Layers
Architectural comparison between SKILL.md, MCP Servers, and AGENTS.md
Figure 6: The Three Layers of Agentic Software: SKILL.md provides procedural know-how on demand; MCP Servers provide live capability and API access; AGENTS.md establishes standing repository rules.
Layer Primary Function Context Loading Timing Production Example
SKILL.md
The Know-How
Reasoning procedures, formatting specifications, domain judgement rubrics. On Trigger Only
(Zero cost when idle)
"How to perform forensic general ledger discrepancy triage"
MCP Server
The Capability
Live execution tools, database connections, third-party API read/write access. Tool Schemas Upfront
(Deferred search in newer agents)
"Execute read-only SQL SELECT queries against production PostgreSQL"
AGENTS.md
The House Rules
Invariant repository guidelines, architectural rules, test enforcement mandates. Every Session
(Always-on system context)
"Use pnpm; never edit schema migrations; run Playwright before reporting done"

The Convergence: MCP SEP-2640 Protocol Extension

In September 2026, the Model Context Protocol working group finalized SEP-2640, enabling MCP servers to publish Agent Skills alongside their tool schemas.

This eliminates the historical disconnect between tools and usage instructions: an enterprise database server can now expose both a query_database executable tool AND a packaged sql-optimization-skill that teaches the model how to construct efficient indexes before running queries. You can build and test both halves inside our MCP Configuration Studio and follow the full tutorial in our Complete MCP Blueprint.

7. Troubleshooting: The 6 Failures Everyone Hits

Symptom Root Cause Engineering Fix
Skill never triggers Description reads like a passive essay summary rather than a scenario trigger list. Rewrite description to start with: "Use when the user mentions [exact user phrases]...".
Skill triggers on unrelated queries Missing negative boundary constraints in frontmatter description. Add explicit exclusions: "Do NOT trigger for quotes, receipts, or new orders.".
Description is truncated by agent Codex or runtime exceeds the 2% context budget reserved for registry descriptions. Keep frontmatter description under 160 characters; front-load primary trigger nouns.
claude.ai / API rejects file upload File contains non-standard custom YAML properties in frontmatter. Strip frontmatter to strictly standard fields (name, description, license, metadata).
Skill induces severe latency / token burn SKILL.md body exceeds 500 lines; massive reference documentation pasted inline. Move reference manuals into references/ and instruct agent to inspect on-demand.
Edits do not sync on Windows File was copied manually rather than linked with an NTFS Junction (path drift). Delete the out-of-sync copy and run mklink /J to map directly to .agents/skills.

8. Frequently Asked Questions

Does one skill work in Claude Code, Codex and Cursor?

Yes — the Agent Skills format is a shared standard, and all three read SKILL.md files. What differs is the folder each one scans; keep the master in .agents/skills and link or copy it into each agent's folder using the folder map.

Where do I put SKILL.md files?

In a folder named exactly after the skill, inside a skills directory: .agents/skills/<name>/SKILL.md for the shared standard location, .claude/skills/<name>/SKILL.md for Claude Code, and .github/skills/<name>/SKILL.md for Copilot projects. Personal skills live in the matching folders under your home directory.

How long should a SKILL.md be?

Keep the body under 500 lines (about 5,000 tokens). Longer material belongs in references/ files inside the skill folder, which the agent opens only when the task needs them.

Do I need to code to write a skill?

No. A skill is a Markdown file with a small YAML header. Scripts are optional and only worth adding when a step has exactly one correct answer. The invoice-chaser example in this guide is prose only.

Is SKILL.md the same as AGENTS.md?

No. AGENTS.md holds always-on project rules and loads every session. A SKILL.md loads only when a request matches its description — it is on-demand know-how, not standing rules. Most setups use both.

Are Claude Skills and Agent Skills the same thing?

Agent Skills is the open standard Anthropic created and donated to the Linux Foundation's Agentic AI Foundation in October 2026. 'Claude Skills' is Anthropic's implementation of that same standard inside Claude products — skills written to the standard also work in other agents.

9. Start Now: Build & Deploy Your First Skill

You have the folder map, the frontmatter rules, and the verification framework. Take one prompt you or your team re-runs weekly and turn it into a permanent cross-platform skill:

🛠️

Skill Builder Studio

Generate complete SKILL.md files with validated YAML frontmatter, export to Cursor MDC, and test against edge cases 100% in your browser.

Launch Skill Builder →
📚

Skills Directory (66 Skills)

Browse 66 production-tested agent skills across software engineering, forensic accounting, legal compliance, and marketing.

Browse Skills Hub →
TJ

Written by TJ Singh

Founder of PromptStaging. Engineering robust, zero-framework AI developer tooling, autonomous agent skills, and client-side inference utilities. Verified against latest production models across Anthropic, OpenAI, and Google.

📬

Get Battle-Tested Agent Blueprints

No hype, no spam. Only production prompt chains, verified agent skills, and architecture breakdowns delivered straight to your inbox.