How Skills works

Being listed doesn't mean a skill is safe, compatible or any good — it means it's a real skill in a public repo, read and checked as described here.

Where the skills come from

We look for public GitHub repos that hold SKILL.md files in two ways: a list of repos we review by hand, and GitHub's repo search over topics such as agent-skills, claude-skills and codex-skills. You can also send us a repo through Get listed.

We read a repo only when it is public, not a fork and not archived, has had a push in the last 12 months, and has at least 50 stars or is on our reviewed list. A repo whose file list GitHub cuts short is skipped, because a file we never saw could not be checked.

Each skill is read at one commit, the latest on its repo's default branch when we read it, and its page names that commit. We read files through GitHub's APIs; when we have to fetch a file's raw bytes, we use them only if they match the fingerprint Git records for that file.

An official collection is a repo published from a vendor's own GitHub organisation that we chose to feature. The choice is ours, not the vendor's.

We don't store the names of commit authors or committers, and we drop e-mail addresses from a skill's metadata.

What counts as a skill

A skill is a folder with a SKILL.md file in it. We list two kinds: standalone skills, and skills that a Claude Code plugin in the same repo ships, as its .claude-plugin/marketplace.json maps them.

Three kinds are counted on their repo's page but not listed: a repo's own internal skills, kept in an agent's folder such as .claude/skills for work on that repo; test fixtures and templates; and mirrors, such as vendored copies and translated docs.

A folder identical to a skill listed elsewhere is a copy: we list the original once, and the copy's address leads to it. A skill held for review isn't listed at all (see the pattern check).

How we count

The data as of 26 Oct 2026 lists 3,888 skills from 42 repos by 41 publishers. 10,489 more SKILL.md folders are counted on repo pages but not listed, 988 copies are merged into their originals and 25 skills are held for review.

A copy is a folder whose files are identical to another's, so Git gives both the same fingerprint. The same SKILL.md with different files, or the same name and description, is not a copy, and both stay listed.

The original is the one we already treated as the original; otherwise the one in an official collection, then the repo GitHub created first, then the one we saw first, then the one with more stars. We review any change of original before it applies. The copies count on a skill's page counts other owners' repos only: forks and the same owner's other repos don't add to it.

Repo stars are GitHub stars on the repo that holds the skill, not on the skill itself.

We ask search engines to index a skill's page only when its repo is an official collection or has at least 50 stars, its SKILL.md has at least 20 lines after the frontmatter, and its description has at least 40 characters. Repo pages with fewer than 2 listed skills, publisher pages with fewer than 3 unless GitHub has verified the organisation's domain, and category pages with fewer than 10 skills stay out of search too. Every page stays readable here.

The pattern check

We read every text file in each listed skill's folder, at the commit its page names, and match it against the 45 rules below (rules version 2026.10.26). We don't run the skill, we don't read the web pages it points to, and we can't judge everything its instructions might lead an agent to do. The same rules run in your browser on Check a repo.

A gate rule can set a skill's status, and the skill's page lists what it found. A signal never sets the status: most describe what the skill can touch, and R07, R20, R37 and R39 are kept with the check but not shown on skill pages. A text file over 384 KB, or one we couldn't fetch in full, is an item to review (R21, R46), and so is a binary, archive or document we can't look inside (R32). Images and fonts are listed on the skill's page and never set its status.

What each status means

Nothing flagged
No gate rule matched at high or critical severity.
Items to review
A gate rule matched at high severity, or part of the skill couldn't be read.
Held for review
A gate rule matched at critical severity, which only R01, R02, R03, R04, R25 and R43 can reach. The skill gets no page and isn't listed, and its repo page says how many skills aren't listed while QAI reviews a check result. In an official collection the finding is an item to review instead.

Severity is each rule's usual level. A match inside quoted or described text can drop one level, and “install this first” wording next to a download raises that download finding by one (R07). Any other gate finding that would reach critical stops at high.

Pattern check rules
RuleWhat it looks forWhy it mattersSeverityGate or signal
R01Download piped into a shellRuns whatever the server sends, with no chance to read it first. A vendor's own documented installer counts as high, not critical.CriticalGateCritical · Gate
R02Encoded command that gets runHides the real command from anyone reading the skill.CriticalGateCritical · Gate
R03Removing the macOS download warningLets a downloaded program open without macOS asking you first.CriticalGateCritical · Gate
R04Password-protected archiveA password stops virus scanners from looking inside the archive.CriticalGateCritical · Gate
R05Download of a program or installerA "required tool" fetched from a link is a common lure, and the file can change after our check.HighSignalHigh · Signal
R06Web address that is a bare IP numberA bare IP address has no domain owner to hold to account and is hard to recognise.HighGateHigh · Gate
R07"Install this first" wording next to a downloadFake prerequisites are how download lures get run; this raises the download finding next to it by one level.HighSignalHigh · Signal
R08Link to a paste site or link shortenerThe text behind the link can be swapped at any time without changing the skill.HighSignalHigh · Signal
R09Instructions to fetch and follow a web pageThe skill's real behaviour then lives outside the files we checked and can change after our check.MediumSignalMedium · Signal
R10Look-alike domainA domain a letter or two away from a well-known one, or a brand name with extra words, can impersonate a vendor.HighSignalHigh · Signal
R11Reads a credential storeSSH keys, cloud credentials, browser logins, keychains and wallets are what stealers go after.HighSignalHigh · Signal
R12Dumps every environment variableEnvironment variables often hold API keys and tokens.MediumSignalMedium · Signal
R13Sends data to a host the SKILL.md never namesAn upload to a destination the instructions don't mention can carry your data away unnoticed.HighSignalHigh · Signal
R14Webhook, bot or tunnel address used as a dropChat webhooks, bot APIs and tunnels are easy places to collect data sent from your machine.HighSignalHigh · Signal
R15Sends the conversation or system prompt elsewhereYour chat and your instructions can hold private data.HighSignalHigh · Signal
R16Hard-coded secretA live key in a public repo can be used by anyone, including to receive data sent from your machine.HighSignalHigh · Signal
R17Asks for secrets in chat, or prints themSecrets pasted into a chat or printed to output end up in logs and transcripts.MediumSignalMedium · Signal
R18Instructions in HTML comments or hidden HTMLComments and hidden elements don't show when the page is rendered, but the agent still reads them.HighGateHigh · Gate
R19Invisible or direction-changing charactersInvisible characters can hide instructions, and direction overrides make text read differently from how it runs.HighGateHigh · Gate
R20Letters from mixed alphabetsA Cyrillic or Greek letter that looks Latin can disguise a command, a name or a domain.MediumSignalMedium · Signal
R21Padding, or a file too large to readLong runs of blank space push text past what people and scanners look at, and files over 384 KB are not read.HighGateHigh · Gate
R22Telling the agent to hide what it doesKeeping steps from you takes away your chance to stop them.HighGateHigh · Gate
R23Instruction-override phrasesPhrases such as "ignore previous instructions" try to replace your instructions with the skill's.HighGateHigh · Gate
R24Text aimed at reviewers or scannersClaims that a skill is approved, or notes addressed to automated reviewers, try to talk a check out of flagging it.HighGateHigh · Gate
R25Scheduled task or startup itemCron jobs, launch agents, services and Windows Run keys keep running after the skill is removed.CriticalGateCritical · Gate
R26Writes to agent memory or settingsChanges to CLAUDE.md, AGENTS.md or agent settings carry into every later session.HighSignalHigh · Signal
R27Installs more skills or tool servers without askingA skill that installs others with the prompts switched off can spread itself.HighGateHigh · Gate
R28Turns off system protectionsAntivirus exclusions, firewall changes, wide-open permissions and sudo edits weaken the whole machine.CriticalSignalCritical · Signal
R29Destructive commandDeleting a home or system folder, or writing over a disk, can't be undone.CriticalSignalCritical · Signal
R30Package source redirectedPointing pip, npm, Go or Cargo at another server lets that server choose what gets installed.HighSignalHigh · Signal
R31Package installed from a link, unpinned, or under a look-alike nameWhat a link or an unpinned runner installs can change after our check, and a one-letter typo installs an impostor.MediumSignalMedium · Signal
R32Binary, compiled, archived or document fileWe can't read inside these files, and pointing an agent at one to run or unpack it has been used to get past checks.HighGateHigh · Gate
R33Hidden or unreferenced code fileCode in a hidden file, or that SKILL.md never mentions, may do things the instructions don't describe.MediumSignalMedium · Signal
R34Broad tools pre-approved in allowed-toolsClaude Code lets these tools run without asking during the turn that uses the skill, and doesn't wait for the folder's trust prompt.HighGateHigh · Gate
R35Command that runs as the skill loadsClaude Code runs !command lines before the agent reads the skill. It checks each one against your permission rules first, and outside auto mode one that isn't allowed stops the skill.MediumSignalMedium · Signal
R36Hooks in the frontmatterHooks run commands automatically on agent events until the session ends.MediumSignalMedium · Signal
R37Description written to always be pickedWording such as "always use this skill" tries to win the agent's choice over other skills.MediumSignalMedium · Signal
R38Name copied from another skillSome installers keep the first skill they find with a given name, so a copied or look-alike name can stand in for the real one.HighGateHigh · Gate
R39Reserved or brand name from another publisherAnthropic reserves "anthropic" and "claude" in skill names, and a vendor name from someone else can impersonate it.HighSignalHigh · Signal
R40Wallet, seed phrase or trading actionsThese can move money directly, and transfers can't be reversed.HighSignalHigh · Signal
R41Affiliate or referral linksInserted referral links earn someone money from your agent's actions.MediumSignalMedium · Signal
R43Credential read plus a send to an unnamed host or dropReading keys or the environment and then sending data to a host the skill never names, or sending a key to a webhook, tunnel or bare IP address, is the shape of an infostealer. A key sent to the vendor that issued it doesn't count.CriticalGateCritical · Gate
R44Load-time command pre-approved by allowed-toolsWhen the skill's allowed-tools pre-approves the shell, Claude Code runs its !command lines as the skill loads without asking, unless your own deny or ask rules cover them.HighGateHigh · Gate
R45Installs more skills or tool serversEach added skill, plugin or tool server brings instructions and code this check never read.MediumSignalMedium · Signal
R46A text file we couldn't readPart of the skill never reached the check: a script or text file was not fetched, came back cut short or could not be decoded. That makes it an item to review, never nothing flagged.HighGateHigh · Gate

What a skill can touch

The same read records what a skill can touch, from its files and frontmatter, and sums it up as a capability level. This is how much a skill can do, not whether it is risky.

Instructions only
None of the capabilities in the other two levels. Its text can still ask the agent, in plain words, to run commands.
Scripts or outside hosts
It runs shell commands, bundles scripts, names web addresses, reaches the network, pre-approves tools, runs commands as it loads or includes files we can't read, and nothing puts it in the next level.
Shell, network or credentials
It can run code and reach the network, pre-approves broad tools such as the shell or file editing, tells the agent to run or unpack a file we can't read, or touches credentials, adds hooks, sets up background tasks, installs more skills, changes agent settings, turns off system protections, deletes data, handles money, downloads software or follows outside instructions.
  • Runs shell commands. Its instructions or files give the agent commands to run on your computer.
  • Reaches the network. It sends or fetches data over the internet, for example with curl, an HTTP library or a package install.
  • Names web addresses. It mentions outside web addresses the agent may visit. We list them but don't follow them.
  • Bundles scripts. The folder holds code files the agent may run.
  • Pre-approves tools. Its allowed-tools field lists tools the agent may use without asking you first, in agents that honour it.
  • Runs commands as it loads. Claude Code runs its !command lines when the skill loads, before the agent reads it, if your permission rules allow them.
  • Adds hooks. Its frontmatter registers commands that run automatically on agent events for the rest of the session.
  • Touches credentials. It reads, asks for or contains keys, tokens, passwords or similar secrets.
  • Downloads software. It fetches programs or packages from the internet, or from a package source other than the default.
  • Follows outside instructions. It tells the agent to fetch text from the web and act on it. That text can change after our check.
  • Sets up background tasks. It schedules jobs or startup items that can keep running after you remove the skill.
  • Installs more skills. It tells the agent to install other skills, plugins or tool servers.
  • Changes agent settings. It writes to agent memory or settings files such as CLAUDE.md, AGENTS.md or .claude/settings.json.
  • Turns off system protections. It removes download warnings, adds antivirus exclusions, switches off a firewall or loosens permissions.
  • Deletes data. It includes commands that delete whole folders, wipe disks or overwrite devices.
  • Handles money. It handles wallets, seed phrases, token approvals, trading keys or referral links.
  • Includes files we can't read. It ships binaries, archives or documents whose contents this check cannot look inside.

What the check does not prove

  1. That a skill is safe. Every scanner maker we read says the same: no findings is not proof of no risk.
  2. That its instructions are harmless. Harmful intent can be written in plain English with no suspicious keyword.
  3. That it will stay the same. The repo, and the pages it links to, can change after our check.
  4. That it works or helps. Whether a skill does its job is a separate question we don't test yet.
  5. That a finding means bad intent. Many legitimate skills run commands, reach the network or read keys they need.

Where a skill loads

Each agent reads SKILL.md a little differently. We check the file against each one's published rules; we don't run the skill in any agent.

For each target a SKILL.md Passes, Passes with warnings or Fails: any error fails it, and any warning leaves it passing with warnings. Info is advice and changes nothing. The table shows the most each rule can do to each target; a dash means that target doesn't check the rule. Rules version 2026.10.26. Try them on your own file with Validate a SKILL.md.

Format check rules, with the most each one can do to each target's result
RuleWhat it checksAgent Skills specClaude CodeClaude apps & API uploadOpenAI (Codex & API)VS Code & Copilot
F1The file is named SKILL.mdCodex looks for SKILL.md by its exact name and GitHub Copilot's docs require it. Claude Code and VS Code open SKILL.md by name, so a lowercase skill.md loads only on disks that ignore case. OpenAI's upload and the spec's validator accept either case.Source: docs.github.com (opens in a new tab)ErrorWarningWarningErrorErrorError: Agent Skills spec, OpenAI (Codex & API), VS Code & Copilot · Warning: Claude Code, Claude apps & API upload
F2One SKILL.md per skillOpenAI's Skills API accepts exactly one SKILL.md in a skill bundle, matched in any case. Other agents read only the SKILL.md at the top of the folder, so a second one usually means two skills were packed together.Source: developers.openai.com (opens in a new tab)WarningInfoInfoErrorInfoError: OpenAI (Codex & API) · Warning: Agent Skills spec · Info: Claude Code, Claude apps & API upload, VS Code & Copilot
F3Frontmatter starts on line 1 and is closedThe first line must be --- and a later --- line must close the frontmatter. Without that, Codex and the spec's and Anthropic's validators reject the skill, while Claude Code and VS Code load it under the folder name without its fields. A byte-order mark before the first --- has the same effect everywhere except Claude Code, which removes it.Source: agentskills.io (opens in a new tab)ErrorWarningErrorErrorWarningError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Warning: Claude Code, VS Code & Copilot
F4Frontmatter is valid YAML and reads as writtenStrict parsers reject frontmatter that isn't valid YAML, most often because a value holds an unquoted colon and space, and an unquoted space and # silently ends a value, as YAML reads the rest as a comment. Claude Code (seen in version 2.1.287) and Codex quote broken values and retry, and VS Code reads YAML leniently. The spec's validator also refuses [ ] and { } values, anchors and tags.Source: agentskills.io (opens in a new tab)ErrorWarningErrorErrorWarningError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Warning: Claude Code, VS Code & Copilot
F5The zip holds one folder named after the skillclaude.ai wants the skill folder, named like the skill, as the only thing at the top of the zip. OpenAI's Skills API wants a single top-level folder. Checked only for a zip dropped into the validator.Source: support.claude.com (opens in a new tab)Not checkedNot checkedErrorErrorNot checkedError: Claude apps & API upload, OpenAI (Codex & API) · Not checked: Agent Skills spec, Claude Code, VS Code & Copilot
F6At most 30 MB in totalThe Claude API accepts a skill upload of up to 30 MB, all files combined and uncompressed.Source: platform.claude.com (opens in a new tab)Not checkedNot checkedErrorNot checkedNot checkedError: Claude apps & API upload · Not checked: Agent Skills spec, Claude Code, OpenAI (Codex & API), VS Code & Copilot
F7Within OpenAI's upload limitsOpenAI's Skills API accepts up to 500 files per version, 25 MB per uncompressed file and a 50 MB zip. We know only uncompressed sizes, so the zip limit is an estimate.Source: developers.openai.com (opens in a new tab)Not checkedNot checkedNot checkedErrorNot checkedError: OpenAI (Codex & API) · Not checked: Agent Skills spec, Claude Code, Claude apps & API upload, VS Code & Copilot
F8No build or system clutterAnthropic's packaging script leaves out __pycache__ and node_modules folders, .pyc files, .DS_Store and a top-level evals folder. They add size and files without helping the agent.Source: github.com (opens in a new tab)InfoInfoInfoInfoInfoInfo: Agent Skills spec, Claude Code, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
F9The skill sits one folder below its skills folderZed, VS Code and Claude Managed Agents look exactly one folder below a skills folder, so a skill at .claude/skills/group/my-skill/ isn't found when the repository is opened. Checked only when the skill's path in the repository is known.Source: platform.claude.com (opens in a new tab)WarningNot checkedNot checkedNot checkedWarningWarning: Agent Skills spec, VS Code & Copilot · Not checked: Claude Code, Claude apps & API upload, OpenAI (Codex & API)
F10No symbolic links in the skillA link can point outside the skill, and it can break when the skill is zipped, copied or uploaded. Claude Code loads a linked skill folder, but its plugin validator skips linked entries. Checked only when the file listing marks links.Source: code.claude.com (opens in a new tab)WarningInfoWarningWarningInfoWarning: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Info: Claude Code, VS Code & Copilot
N1Has a nameThe spec and both vendors' uploads require a name. Claude Code, Codex and VS Code fall back to the folder name; GitHub's Copilot docs list the name as required.Source: agentskills.io (opens in a new tab)ErrorInfoErrorErrorWarningError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Warning: VS Code & Copilot · Info: Claude Code
N2The name is at most 64 charactersThe spec, Anthropic, Codex and OpenAI cap the name at 64 characters. VS Code cuts a longer name and then uses the folder name.Source: agentskills.io (opens in a new tab)ErrorNot checkedErrorErrorWarningError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Warning: VS Code & Copilot · Not checked: Claude Code
N3The name uses lowercase letters, digits and single hyphensOnly a–z, 0–9 and hyphens, with no hyphen at either end and never two in a row. The spec's validator also accepts lowercase letters from other alphabets; Anthropic's validator does not. VS Code uses the folder name whenever the two differ, and its docs say a name with other characters fails to load. Letters from other alphabets can look exactly like Latin ones, so we flag them in every profile.Source: agentskills.io (opens in a new tab)ErrorWarningErrorErrorErrorError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot · Warning: Claude Code
N4The name matches its folderThe spec requires it, and claude.ai lists a mismatch as an upload error. VS Code uses the folder name instead, Claude Code answers to both, and OpenAI's own upload example uses a folder named differently from the skill.Source: agentskills.io (opens in a new tab)ErrorInfoErrorWarningWarningError: Agent Skills spec, Claude apps & API upload · Warning: OpenAI (Codex & API), VS Code & Copilot · Info: Claude Code
N5The name avoids the reserved words anthropic and claudeAnthropic's API docs don't allow the words anthropic or claude in a skill name, for example claude-tools.Source: platform.claude.com (opens in a new tab)WarningInfoErrorNot checkedNot checkedError: Claude apps & API upload · Warning: Agent Skills spec · Info: Claude Code · Not checked: OpenAI (Codex & API), VS Code & Copilot
N6The name has no angle bracketsAnthropic's docs bar XML tags in names. Claude Code won't load a skill folder whose name has < or >, and ignores such a name in the frontmatter; VS Code strips tags from names.Source: code.claude.com (opens in a new tab)ErrorErrorErrorErrorWarningError: Agent Skills spec, Claude Code, Claude apps & API upload, OpenAI (Codex & API) · Warning: VS Code & Copilot
N7The name has no namespace prefixSlashes, colons and dots aren't allowed. VS Code's docs warn that a name like myorg:skill fails to load (in practice VS Code falls back to the folder name), and plugins add their own prefix.Source: code.visualstudio.com (opens in a new tab)ErrorNot checkedErrorErrorWarningError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Warning: VS Code & Copilot · Not checked: Claude Code
N8The name is not one Claude Code reservesClaude Code skips a skill folder named synced, in any case, and won't load a skill named anthropic-skills or anthropic-skills:…, which it keeps for skills synced from claude.ai.Source: code.claude.com (opens in a new tab)Not checkedErrorNot checkedNot checkedNot checkedError: Claude Code · Not checked: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
N9The name has no hidden characters or odd spacingClaude Code refuses names with zero-width, control, private-use or direction-changing characters, and any blank other than single spaces between words: a refused folder name stops the skill loading, and a refused frontmatter name is ignored. Other agents allow only a–z, 0–9 and hyphens.Source: code.claude.com (opens in a new tab)ErrorErrorErrorErrorWarningError: Agent Skills spec, Claude Code, Claude apps & API upload, OpenAI (Codex & API) · Warning: VS Code & Copilot
N10The name says what the skill doesAnthropic's guidance avoids vague names such as helper, utils, tools, documents, data or files.Source: platform.claude.com (opens in a new tab)InfoInfoInfoNot checkedNot checkedInfo: Agent Skills spec, Claude Code, Claude apps & API upload · Not checked: OpenAI (Codex & API), VS Code & Copilot
D1Has a descriptionAgents pick a skill by its description. Codex skips a skill without one, Claude Code uses the first line of the body instead, and VS Code loads it with nothing for the agent to match.Source: agentskills.io (opens in a new tab)ErrorWarningErrorErrorWarningError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Warning: Claude Code, VS Code & Copilot
D2The description is at most 1,024 charactersThe spec, Anthropic and OpenAI's upload cap the description at 1,024 characters. VS Code cuts it there; Codex has no cap.Source: agentskills.io (opens in a new tab)ErrorNot checkedErrorErrorWarningError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Warning: VS Code & Copilot · Not checked: Claude Code
D3The description has no angle bracketsAnthropic's validator rejects any < or > in the description, and its docs bar XML tags. VS Code deletes text between < and >.Source: github.com (opens in a new tab)WarningNot checkedErrorNot checkedWarningError: Claude apps & API upload · Warning: Agent Skills spec, VS Code & Copilot · Not checked: Claude Code, OpenAI (Codex & API)
D4The description fits the 200 characters claude.ai statesThe claude.ai Help Center says 200 characters at most, while Anthropic's API docs and validator allow 1,024. We note it rather than fail it.Source: support.claude.com (opens in a new tab)Not checkedNot checkedInfoNot checkedNot checkedInfo: Claude apps & API upload · Not checked: Agent Skills spec, Claude Code, OpenAI (Codex & API), VS Code & Copilot
D5Description and when_to_use fit in 1,536 charactersClaude Code cuts each entry's combined description and when_to_use text at 1,536 characters in its skill listing. The listing keeps every skill's name, but past its budget (1% of the context window) Claude Code drops descriptions, starting with the skills used least.Source: code.claude.com (opens in a new tab)Not checkedWarningNot checkedNot checkedNot checkedWarning: Claude Code · Not checked: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
D6The description says when to use the skillThe spec and each vendor ask for what the skill does and when to use it. We look for words such as when, if or use, so treat this as a hint.Source: agentskills.io (opens in a new tab)InfoNot checkedNot checkedNot checkedNot checkedInfo: Agent Skills spec · Not checked: Claude Code, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
D7The description is in the third personAnthropic's guidance: the description goes into the system prompt, so write "Processes Excel files", not "I can help you" or "You can use this".Source: platform.claude.com (opens in a new tab)Not checkedInfoInfoNot checkedNot checkedInfo: Claude Code, Claude apps & API upload · Not checked: Agent Skills spec, OpenAI (Codex & API), VS Code & Copilot
D8The description leads with the main jobClaude Code and Codex shorten descriptions when many skills are installed, so the key use case should come first. We flag a first sentence longer than 250 characters.Source: developers.openai.com (opens in a new tab)InfoInfoNot checkedInfoNot checkedInfo: Agent Skills spec, Claude Code, OpenAI (Codex & API) · Not checked: Claude apps & API upload, VS Code & Copilot
O1Only the six spec fieldsUploads to the Claude apps and API, and Anthropic's packaging script, fail on any top-level field besides name, description, license, compatibility, metadata and allowed-tools, and so does the spec's validator. Claude Code, Codex and VS Code ignore fields they don't use.Source: code.claude.com (opens in a new tab)WarningInfoErrorWarningInfoError: Claude apps & API upload · Warning: Agent Skills spec, OpenAI (Codex & API) · Info: Claude Code, VS Code & Copilot
O2Has a license fieldOptional in the spec, but gh skill publish recommends it, and without it readers can't tell whether they may reuse the skill.Source: github.com (opens in a new tab)InfoNot checkedNot checkedNot checkedNot checkedInfo: Agent Skills spec · Not checked: Claude Code, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
O3compatibility is text of 1 to 500 charactersThe spec allows 1 to 500 characters, and Anthropic's validator rejects longer text or a value that isn't text. Claude Code accepts the field but doesn't act on it.Source: agentskills.io (opens in a new tab)ErrorInfoErrorErrorInfoError: Agent Skills spec, Claude apps & API upload, OpenAI (Codex & API) · Info: Claude Code, VS Code & Copilot
O4metadata maps text keys to text valuesThe spec defines metadata as text keys mapped to text values. Codex can't read a skill whose metadata isn't a map and Claude Code drops it; Claude Code also asks that keys not repeat field names such as paths.Source: agentskills.io (opens in a new tab)ErrorWarningWarningErrorInfoError: Agent Skills spec, OpenAI (Codex & API) · Warning: Claude Code, Claude apps & API upload · Info: VS Code & Copilot
O5allowed-tools is one space-separated stringThe spec defines allowed-tools as a space-separated string, and gh skill publish rejects a list. Claude Code also accepts a list.Source: agentskills.io (opens in a new tab)WarningNot checkedInfoInfoInfoWarning: Agent Skills spec · Info: Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot · Not checked: Claude Code
O6No install records in metadatagh skill install writes metadata.github-* (or local-path) into an installed copy, and gh skill publish refuses a SKILL.md that still has them.Source: github.com (opens in a new tab)WarningNot checkedNot checkedNot checkedNot checkedWarning: Agent Skills spec · Not checked: Claude Code, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
B1The body is at most 500 linesThe spec, Anthropic and Claude Code all say to keep SKILL.md under 500 lines and move detail into reference files.Source: agentskills.io (opens in a new tab)WarningInfoInfoNot checkedNot checkedWarning: Agent Skills spec · Info: Claude Code, Claude apps & API upload · Not checked: OpenAI (Codex & API), VS Code & Copilot
B2The body is under about 5,000 tokensThe spec recommends under 5,000 tokens for the instructions, and after compaction Claude Code keeps only the first 5,000 tokens of a skill. Our count is approximate: about four characters per token.Source: agentskills.io (opens in a new tab)WarningInfoInfoNot checkedNot checkedWarning: Agent Skills spec · Info: Claude Code, Claude apps & API upload · Not checked: OpenAI (Codex & API), VS Code & Copilot
B3Links point to files in the skillA relative link to a file that isn't in the skill folder sends the agent to nothing. We check Markdown links outside code blocks.Source: agentskills.io (opens in a new tab)WarningWarningWarningWarningWarningWarning: Agent Skills spec, Claude Code, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
B4Reference files are linked from SKILL.mdKeep references one level deep: SKILL.md should link every reference file directly, not only through another file.Source: platform.claude.com (opens in a new tab)InfoInfoInfoNot checkedNot checkedInfo: Agent Skills spec, Claude Code, Claude apps & API upload · Not checked: OpenAI (Codex & API), VS Code & Copilot
B5Long reference files start with contentsAnthropic suggests a table of contents at the top of any reference file over 100 lines, so a partial read still shows what is in it. Checked when file text is available.Source: platform.claude.com (opens in a new tab)InfoInfoInfoNot checkedNot checkedInfo: Agent Skills spec, Claude Code, Claude apps & API upload · Not checked: OpenAI (Codex & API), VS Code & Copilot
B6Paths use forward slashes and stay in the skillBackslashes break on macOS and Linux, absolute paths don't exist on other machines, and ../ leaves the skill folder once the skill is installed.Source: platform.claude.com (opens in a new tab)WarningWarningWarningWarningWarningWarning: Agent Skills spec, Claude Code, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot
B7MCP tools are named Server:toolFor the Claude apps and API, Anthropic's guidance is to name MCP tools in full, such as GitHub:create_issue. We flag the mcp__server__tool form.Source: platform.claude.com (opens in a new tab)Not checkedNot checkedInfoNot checkedNot checkedInfo: Claude apps & API upload · Not checked: Agent Skills spec, Claude Code, OpenAI (Codex & API), VS Code & Copilot
B8No dated instructionsInstructions such as "before August 2025, use the old API" go stale. Anthropic suggests describing the current way and keeping old patterns in their own section.Source: platform.claude.com (opens in a new tab)InfoInfoInfoNot checkedNot checkedInfo: Agent Skills spec, Claude Code, Claude apps & API upload · Not checked: OpenAI (Codex & API), VS Code & Copilot
B9The body has instructionsThe body is what the agent reads once it picks the skill. An empty body loads but tells the agent nothing.Source: agentskills.io (opens in a new tab)WarningWarningWarningWarningWarningWarning: Agent Skills spec, Claude Code, Claude apps & API upload, OpenAI (Codex & API), VS Code & Copilot

Licences and what we show

We find a skill's licence most specific first: a licence file in the skill's folder, the license field in its SKILL.md, the licence GitHub detects for the repo, then a correction we have reviewed. A licence at the skill level that we can't read stops the search there, so a repo licence never stands in for it. Cards and pages show the licence as we found it, or No licence.

We show a skill's SKILL.md text here only for the original, not a copy, only when its licence is one of MIT, MIT No Attribution, Apache 2.0, BSD 2-Clause, BSD 3-Clause, ISC, BSD Zero Clause, Unlicense, CC0 1.0 or CC BY 4.0, and never when our check flagged hidden or instruction-override text in it. The licence file, and the NOTICE file Apache 2.0 asks for, go beside it when the repo has them, and the text loads only when you ask for it. Otherwise the page links to the file on GitHub.

Categories

Each skill gets up to three categories, from keyword rules over its name, description and folder and its repo's GitHub topics. A skill no rule places goes under Other. Categories are assigned automatically and can be corrected (see disputes, corrections and removal).

Coding & code review · Testing & QA · Frontend & design · Office & PDF · Data & analytics · Cloud & DevOps · Security · AI & ML engineering · Science & research · Writing & content · Marketing & growth · Product & project management · Business & productivity · Agent tooling · Other

How often it refreshes

We rebuild the catalog from GitHub in refreshes, without a fixed date. The data on these pages is as of 26 Oct 2026. Every page says when its facts were read: repo facts carry the date we read them from the GitHub API, and each check names the commit it ran on.

A skill keeps the date we first saw it across refreshes, and its last-changed date is the last commit that touched its folder. Between refreshes a repo can change; a page still describes the commit we read.

Disputes, corrections and removal

If you wrote a skill, own the copyright in it, or are named on a page, email info@qai.io with the page's link and what you'd like changed: a finding you think is wrong, a licence or category to correct, or a page to remove. We respond to removal requests.

Who runs this

QAI runs qai.io/skills. QAI did not write these skills and is not affiliated with their authors unless a page says so.