AGENTS.md SKILL.md Agent Skills AI coding agents open standards 2026

AGENTS.md vs SKILL.md: What's the Difference and When to Use Both (2026)

The Prompt Shelf ·

AGENTS.md and SKILL.md solve different problems and were built by different companies, nine months apart, before ending up under the same neutral governance umbrella. AGENTS.md is a single plain-Markdown file, read in full on every turn, for the standing rules a coding agent needs regardless of task. SKILL.md is a folder-based format that loads progressively — a short description first, full instructions only if the task actually matches — for procedures that apply sometimes, not always. Most repos that have outgrown a single instruction file need both, not a replacement of one by the other.

Quick Answer

AGENTS.mdSKILL.md
FormatSingle Markdown file, no required frontmatterDirectory with SKILL.md (YAML frontmatter + Markdown), plus optional scripts/, references/, assets/
LoadedIn full, every turn, from session startMetadata only at startup; full body on activation; bundled files only when referenced
Built forRepository-wide conventions: build commands, architecture, standing constraintsTask-specific procedures: a migration script, a review checklist, a domain workflow
Originated byOpenAI, August 2025Anthropic, published as open standard December 2025
Now governed byContributed to the Agentic AI Foundation (Linux Foundation) at its foundingPublished openly; adopted broadly, with governance still consolidating

Two Standards, Same Neutral Home, Nine Months Apart

AGENTS.md shipped first. OpenAI released it in August 2025, developed with input from Codex, Amp, Google’s Jules, Cursor, and Factory — a group of competing tool-makers agreeing on one shared instruction-file format instead of five incompatible proprietary ones. It caught on fast: by the end of 2025 it was cited as adopted by more than 60,000 open source projects, and read natively by Amp, Codex, Cursor, Devin, Factory, Gemini CLI, GitHub Copilot, Jules, and VS Code, among others.

On December 9, 2025, the Linux Foundation announced the Agentic AI Foundation (AAIF) — a neutral home for exactly this kind of cross-vendor infrastructure — with three founding project contributions: Anthropic’s Model Context Protocol, Block’s Goose, and OpenAI’s AGENTS.md. Amazon Web Services, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, and OpenAI signed on as platinum members.

Nine days later, on December 18, 2025, Anthropic published Agent Skills — the format behind SKILL.md — as an open specification at agentskills.io, distinct from (and newer than) the Skills feature it had already shipped inside Claude.ai and Claude Code two months earlier, in October 2025. Adoption moved fast here too: Microsoft added support in VS Code and OpenAI added it to Codex CLI within about 48 hours, and independent trackers of the ecosystem list Cursor, GitHub, OpenCode, Amp, Letta, and Goose as early adopters as well. Unlike AGENTS.md, Agent Skills’ long-term governance wasn’t tied to AAIF at launch — coverage from the time describes stewardship as still being worked out, even as the AAIF itself was actively growing as an institutional option.

The short version: two different companies solved two different problems, nine months apart, and the industry converged on treating both as shared infrastructure rather than a proprietary format war. That’s why “vs” is slightly the wrong framing — they’re not really competing for the same job.

What AGENTS.md Actually Is

A single Markdown file, conventionally at the repository root, with no required frontmatter and no formal schema — “use whatever headings make sense for the project” is close to the entire structural guidance in the spec. Common sections: project overview, setup and build commands, testing conventions, and things an agent wouldn’t otherwise know (which directories are off-limits, how PRs should be scoped).

The practical constraint isn’t format, it’s size and loading behavior. OpenAI Codex documents a 32 KiB combined limit across all discovered instruction files (project_doc_max_bytes) — content past that threshold gets silently dropped, not truncated with a warning. And because AGENTS.md is read in full on every turn in every tool that supports it, a bloated file has a real, ongoing token cost whether or not a given task touches the part that’s relevant.

What SKILL.md / Agent Skills Actually Is

A skill is a directory, not a file — SKILL.md is just the required entry point:

skill-name/
├── SKILL.md          # required: frontmatter + instructions
├── scripts/           # optional: executable code
├── references/        # optional: docs, loaded on demand
└── assets/             # optional: templates, static resources

The frontmatter is a real schema, not a free-for-all:

FieldRequiredConstraint
nameYes1–64 chars, lowercase + hyphens, must match the parent directory name
descriptionYes1–1024 chars — what the skill does and when to use it; this is what the agent evaluates before deciding to load the rest
licenseNoLicense name or reference to a bundled file
compatibilityNoUp to 500 chars — environment requirements (e.g. “Requires git, docker, jq”)
metadataNoArbitrary string key-value pairs
allowed-toolsNoExperimental — space-separated list of pre-approved tools

The spec’s own guidance on size is specific: keep the SKILL.md body under roughly 5,000 tokens and under 500 lines; anything longer belongs in a references/ file the agent loads only if it needs it. That’s the structural difference from AGENTS.md in one sentence — AGENTS.md has no equivalent on-demand tier, so an equally long AGENTS.md file has nowhere cheaper to live.

Progressive Disclosure Is the Whole Point

This is the mechanism that makes SKILL.md a genuinely different tool rather than “AGENTS.md, but in a folder”:

  1. Metadata (roughly 100 tokens per skill). Every skill’s name and description load at startup, cheap enough that having dozens of skills available costs almost nothing until one is used.
  2. Instructions (the SKILL.md body). Loads only once a skill is activated — either the agent judges it relevant from the description, or (in tools that support it) a trigger keyword matches.
  3. Resources. Files in scripts/, references/, assets/ load only when the loaded instructions actually reference them.

AGENTS.md has exactly one loading tier: full content, every turn, no matter what. That’s a feature when the content genuinely applies to every task — nobody wants “run tests before committing” to be conditionally loaded. It’s a cost when the content only matters sometimes — a detailed PDF-processing procedure, a rarely-used migration runbook, a niche compliance checklist. Those belong in a skill, where they’re free to have until the moment they’re actually needed.

When to Use Each

Put it in AGENTS.md if…Put it in a skill if…
It applies to nearly every task in the repoIt’s relevant to a specific, identifiable subset of tasks
It’s short — a paragraph, a command, a constraintIt’s long enough that loading it on every turn would be wasteful
It doesn’t need executable scripts or reference docs alongside itIt bundles a script, a template, or documentation the agent should read only on demand
You want every tool that reads AGENTS.md to see it, with zero setupYou want it portable as a self-contained package — shareable, versionable, droppable into other repos

A repo that only has three build commands and a couple of “don’t touch this directory” rules probably doesn’t need a single skill — AGENTS.md covers it. A repo where “generate a compliance report,” “run the database migration checklist,” and “audit third-party licenses” are all occasional, multi-step, script-backed procedures is exactly what skills were built for.

Using Both Together

They compose, and most non-trivial repos end up doing exactly that:

# AGENTS.md
## Setup
pnpm install && pnpm dev

## Conventions
- TypeScript strict mode. No `any` without a comment.
- New API routes need a test under tests/api/.

## Available skills
See .agents/skills/ for task-specific procedures
(database migrations, license audits, PR review checklist).
.agents/skills/
├── db-migration/
│   └── SKILL.md
└── license-audit/
    ├── SKILL.md
    └── scripts/audit.py

AGENTS.md stays short because it’s paying a token cost every turn. The skills carry everything that’s detailed and situational, and cost nothing until a task actually calls for them. This is also the direction tools built around both formats are pointing users — OpenHands’s own SDK documentation, for instance, now files AGENTS.md under “legacy context” specifically to contrast it with the newer, cheaper skills path for anything that isn’t a standing, universal rule.

Which Tools Read Which

ToolReads AGENTS.mdReads SKILL.md / Agent Skills
Claude CodeYes (as CLAUDE.md; AGENTS.md needs an @AGENTS.md import or symlink)Yes — Skills originated here
OpenAI Codex CLI / ChatGPTYes, one of the original co-designersYes, added within about 48 hours of the December 2025 open-standard release
CursorYes, as an alternative to .cursor/rulesYes
GitHub CopilotYes (CLI and coding agent)Yes (GitHub added support alongside the standard’s release)
VS CodeVia Copilot integrationYes, added by Microsoft within days of launch
Google JulesYes, root-level onlyNot documented as of this writing
Amp, Goose, OpenCode, LettaYesYes

The overlap is the headline, not the gap — most tools building serious agentic coding support now read both, which is exactly what “shared infrastructure instead of a format war” was supposed to produce.

The Common Mistake: Duplicating Content in Both

The failure mode isn’t picking the wrong one — it’s writing the same instructions into both and letting them drift. If a build command changes, and it’s both in AGENTS.md and copy-pasted into a skill’s SKILL.md, one of them goes stale. Keep AGENTS.md as the single source for anything universal, reference it from a skill if a skill genuinely needs to repeat something (“see AGENTS.md for setup”) rather than restating it, and let skills own only the parts that are genuinely conditional.

FAQ

Q1. Should I use AGENTS.md or SKILL.md for my repo? Most repos need both, not one or the other. AGENTS.md for standing, universal rules (build commands, conventions, constraints); SKILL.md-based skills for task-specific procedures that shouldn’t cost tokens on every turn.

Q2. Who created AGENTS.md and who created SKILL.md? AGENTS.md was released by OpenAI in August 2025, developed with Codex, Amp, Google’s Jules, Cursor, and Factory. SKILL.md is the file format behind Anthropic’s Agent Skills, published as an open standard in December 2025, after the Skills feature itself shipped inside Claude in October 2025.

Q3. Are AGENTS.md and SKILL.md both open standards now? AGENTS.md was contributed to the Agentic AI Foundation (Linux Foundation) at the foundation’s founding on December 9, 2025, alongside MCP and Goose. Agent Skills was published openly nine days later; its long-term governance structure was still being established at launch, even as adoption moved quickly across major tools.

Q4. Does SKILL.md replace AGENTS.md? No. They’re documented as complementary in every serious technical source, including tools like OpenHands that support both — AGENTS.md for content that applies to (nearly) every task, skills for content that only applies sometimes.

Q5. What’s the token-cost difference in practice? AGENTS.md content is injected into every turn regardless of relevance. A skill’s metadata (name + description) is what’s always present — roughly 100 tokens per skill — with the full body only loading once the skill is actually activated. A repo with a dozen rarely-used skills costs far less than the same content pasted into one large AGENTS.md.

Q6. Can a SKILL.md file have subdirectories or file-scoped rules the way some AGENTS.md setups do? Not through the frontmatter fields defined in the base Agent Skills spec — those cover name, description, license, compatibility, metadata, and the experimental allowed-tools. Some tools add their own extensions on top (OpenHands’s triggers and paths fields, for example) for keyword- or file-triggered activation, but those aren’t part of the portable base spec.

Q7. Does Claude Code read AGENTS.md automatically? Not by default — Claude Code reads CLAUDE.md. The standard fix is a one-line @AGENTS.md import at the top of CLAUDE.md, or a symlink, so both formats stay in sync without duplicating content.

Browse real AGENTS.md and SKILL.md examples from open-source repositories in our gallery.

Related Articles

Explore the collection

Browse all AI coding rules — CLAUDE.md, .cursorrules, AGENTS.md, and more.

Browse Rules