Research: Agent Skills β Creating, Enabling & Distributing SKILL.md Capabilities
Deep Research Report | Tech Innovation Tracker (Mode 2) | July 2026
1. π§ TL;DR
Agent Skills are the open standard for packaging reusable, procedural knowledge for AI agents. A Skill is nothing more than a folder with a SKILL.md file (YAML frontmatter + Markdown instructions), optionally bundled with scripts/, references/, and assets/. The format was created by Anthropic for Claude Code, then published as an open, vendor-neutral specification at agentskills.io in late 2025. It has since been adopted by 70+ agent products β Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, Goose, and more.
The core mechanism that makes Skills cheap at scale is progressive disclosure: agents load only name + description (~100 tokens) at startup for every installed Skill, and only pull the full SKILL.md body (and any referenced files) into context when a task actually matches. This is directly relevant to your Knowledge Harness / Hermes architecture β it's the same "load only what's needed" principle you're already applying to procedural memory.
For you specifically: there are now three separate ecosystems worth distinguishing β
- Anthropic's native Skills (Claude Code, claude.ai, Claude API) β filesystem-based, first-party.
- The open
agentskills.iospec β the portable format underlying all of the above, now cross-agent. - Third-party distribution tooling β
vercel-labs/skills(thenpx skillsCLI) and directories likeofficialskills.sh, which let you install/manage Skills across any of the 70+ supported agents from one command line, not just Claude.
2. π What It Is β Core Concept
Problem it solves: LLM agents are broadly capable but lack durable, task-specific procedural context. Historically you'd either (a) re-paste the same instructions into every conversation, (b) bloat the system prompt with everything upfront, or (c) build a bespoke tool/fine-tune per workflow. Skills solve this the same way your Hermes/vault split solves memory: separate what an agent generically knows from how to do this one specific recurring thing, and load the "how" only on demand.
Core mechanism β Progressive Disclosure (3 stages):
| Stage | What loads | Token cost | Trigger |
|---|---|---|---|
| Discovery | name + description (frontmatter only) |
~100 tokens/skill | Always, at session start |
| Activation | Full SKILL.md body |
<5,000 tokens (recommended) | When a request matches the description |
| Execution | scripts/, references/, assets/ |
Effectively unlimited | Only when explicitly referenced/run |
Mental model: A Skill is an onboarding doc you'd hand a new hire β a short cover sheet (frontmatter) that says "here's what I do and when to call me," a body that's the actual playbook, and an appendix of scripts/reference material you'd only flip to if the task demanded it. The agent is the new hire; it doesn't memorize the appendix, it just knows where to look.
This is architecturally the same discretization bet you flagged from the Forge/TMLR synthesis β compress the interface (metadata) so it's cheap to hold many of them in context, and defer the expensive payload (instructions/code) until it's structurally justified by the task.
3. βοΈ How It Works β Technical Depth
3.1 File structure
my-skill/
βββ SKILL.md # Required: YAML frontmatter + Markdown instructions
βββ scripts/ # Optional: executable code (Python, Bash, JS β agent-dependent)
βββ references/ # Optional: docs the agent reads on demand (keep 1 level deep)
βββ assets/ # Optional: templates, sample files, static resources
3.2 SKILL.md frontmatter spec (agentskills.io)
---
name: pdf-processing
description: Extract PDF text, fill forms, merge files. Use when handling PDFs.
license: Apache-2.0
metadata:
author: example-org
version: "1.0"
---
| Field | Required | Constraints |
|---|---|---|
name |
Yes | β€64 chars; lowercase letters, numbers, hyphens only; no leading/trailing/consecutive hyphens; must match the parent folder name |
description |
Yes | β€1024 chars; must state both what it does and when to use it; no XML angle brackets </> (injection risk) |
license, metadata.* |
No | Freely extensible β spec-compliant runtimes ignore unrecognized keys |
Claude-specific constraints (platform.claude.com) β slightly stricter than the open spec:
namecannot contain the reserved words"anthropic"or"claude".- Neither field may contain XML tags.
Design decision worth noting for your Agent Spec template: the reason the format is minimal (two required fields, everything else optional) is portability β any spec-compliant runtime can ignore fields it doesn't understand, so a Skill written for Claude Code loads cleanly in Codex or Cursor without modification, provided you avoid platform-specific features (see Β§4).
3.3 The Claude-specific execution model
This is the part that differs materially from a "generic prompt template," and matters for your harness thinking:
- Claude's environment is a VM with filesystem + bash access. Skills are literal directories on that VM.
- When triggered, Claude runs
bash: read my-skill/SKILL.mdβ the instructions enter context via a tool call, not via pre-injection. - If
SKILL.mdreferencesFORMS.mdor a script, Claude reads/executes those only if the task needs them β via further bash calls. - Scripts never enter context. Claude runs
scripts/validate.pyvia bash and receives only stdout/stderr. This is the load-bearing efficiency point: deterministic code stays deterministic and cheap, while the LLM only "sees" the result β directly mirroring your harness-over-model principle (push correctness into code, not into token generation).
3.4 Limitations & tradeoffs
- Under 500 lines / <5k tokens recommended for the main
SKILL.mdβ anything longer should be split intoreferences/, since the whole body loads atomically once triggered (no partial-loading of a single file). - One level of reference nesting only β
SKILL.md β references/x.mdis fine;references/x.md β references/y.mdis discouraged, because progressive disclosure degrades if agents have to chain-follow links. - Not portable by default across all features β
allowed-tools,context: fork, and hooks are Claude Codeβspecific extensions not universally supported (see comparison table in Β§4). - Description quality is the actual bottleneck. Multiple independent sources converge on the same finding: skills fail to trigger not because of bad instructions but because of vague descriptions. The description is effectively a routing/retrieval signal, not documentation β treat it like you'd treat an embedding-search query, not a doc header.
3.5 Minimal working example
---
name: readme-writer
description: Creates and writes professional README.md files for software projects. Use when the user asks for a README, project documentation, or repo overview.
---
# README Writer
## When to Use
Trigger when the user asks to create, write, or update a README.md.
## Instructions
1. Inspect the repo structure (list top-level dirs, package manifest).
2. Draft: Title, one-line description, install steps, usage example, license.
3. Write the file to the repo root.
## Examples
See `references/example-readme.md` for a fully worked template.
4. π Comparison & Landscape
4.1 Anthropic-native surfaces vs. the open standard
| Surface | Skill types | Storage | Sharing scope |
|---|---|---|---|
| Claude Code | Custom Skills only | .claude/skills/ (project) or ~/.claude/skills/ (personal) β pure filesystem |
Personal, project (git-committed), or via Claude Code Plugins |
| claude.ai | Pre-built (pptx/xlsx/docx/pdf) + Custom | Uploaded as .zip via Settings β Features |
Per-user only β not shared org-wide, no admin/central management |
| Claude API | Pre-built + Custom | Uploaded via /v1/skills endpoint; referenced by skill_id in the container param |
Workspace-wide β all workspace members see uploaded Skills |
| Claude Platform on AWS / Microsoft Foundry | Same as API | Same as API | Same as API |
Critical gotcha: Skills do not sync across these surfaces. A Skill uploaded to claude.ai is invisible to the API and vice versa; Claude Code Skills are filesystem-only and separate from both. If you want the same Skill available in Claude Code and claude.ai and the API, you maintain and upload it three times, independently.
4.2 The open ecosystem β three distinct pieces of tooling
| Tool | What it actually is | Role |
|---|---|---|
| agentskills.io | The spec itself (originally developed by Anthropic, now open-governed at github.com/agentskills/agentskills) |
Defines the portable SKILL.md contract every agent below reads |
vercel-labs/skills (npx skills) |
An installer/package-manager CLI β think npm for Skills |
Adds/removes/updates Skills across 70 supported agents (Claude Code, Cursor, Codex, OpenCode, Gemini CLI, Goose, Copilot, etc.) from one command, with symlink or copy install modes |
| officialskills.sh | A curated directory/marketplace of official (vendor-published) Skills, maintained by the VoltAgent team | Discovery layer β "no AI-generated filler," lists Anthropic's own skills (e.g. skill-creator, mcp-builder) alongside vetted third-party ones |
Feature-parity gaps across agents (from vercel-labs/skills compatibility matrix):
| Feature | OpenCode | Claude Code | Cursor | Copilot | Others |
|---|---|---|---|---|---|
| Basic Skills (SKILL.md) | β | β | β | β | β (universal) |
allowed-tools frontmatter |
β | β | β | β | Mostly β |
context: fork |
β | β | β | β | Claude Codeβonly |
| Hooks | β | β | β | β | Claude Code, Cline, Kiro CLI only |
Positioning verdict: Skills are an additive, protocol-layer standard β not a replacement for MCP or tool-use. They solve a different problem: MCP/tools give an agent capabilities (things it can call); Skills give it procedural knowledge (how and when to use what it already has, plus deterministic scripts it can run directly). This is directly analogous to your "standardize the seam, hot-swap the implementation" principle β Skills are becoming a second seam alongside MCP and A2A in the agent protocol stack.
4.3 Direct alternatives / adjacent approaches
- Custom system-prompt sections β the pre-standard approach; doesn't scale past a handful of workflows, no progressive disclosure, blows the context budget.
- RAG over a docs corpus β good for facts, poor for procedures with branching logic and executable steps; Skills are prescriptive, RAG is retrieval.
- Fine-tuning β solves a different problem (behavior baked into weights); expensive, not auditable, not hot-swappable. Fails your deterministic-first / harness-over-model bar outright.
- MCP servers β expose tools; Skills expose know-how. They compose: a Skill's instructions can tell an agent which MCP tool to call and in what sequence.
5. π Perspective β Hosting Skills as a Remote Service (Skills over MCP)
This is a genuinely different architecture from everything in Β§4, and worth separating out: instead of copying SKILL.md folders onto every machine that needs them, you run one Skills server and let any MCP-compatible agent β yours or someone else's β discover and pull skills from it over the network. This is exactly the pattern your "VPS-hosted MCP server on Hetzner" horizon item is aiming at, just applied to Skills specifically instead of only FlashRank/Hermes.
5.1 Why this is a distinct pattern, not just "MCP as usual"
MCP servers normally expose tools (things the agent can call). Skills-over-MCP instead exposes Skills as MCP Resources β read-only, hierarchical content the agent fetches on demand. The mental shift: a tool is a verb ("do this"); a Skill-as-resource is a document ("here's how"). Both travel over the same MCP connection, but they solve different problems, and β per your own framing to me β tools genuinely are the second priority here; the resource-based Skill catalog is the primitive that matters.
5.2 The protocol-level effort already underway
This isn't just community tooling β Anthropic's own MCP standards body has a working group actively formalizing this: the Skills Over MCP Working Group, building on proposal SEP-2640 (Skills Extension, Extensions Track). The design:
- Each Skill is served as a set of
skill://URIs β e.g.skill://pdf-processing/SKILL.md,skill://pdf-processing/scripts/extract.py. - A server can expose one Skill or hundreds; a well-known catalog resource lets a host read lightweight
name+descriptionmetadata for all of them up front β this is progressive disclosure, just running over the wire instead of over a local filesystem. - Deliberately not a new MCP primitive β it reuses the existing Resources primitive, so any MCP client that already implements Resources gets Skills support close to free. (Adoption gap: many clients don't fully implement Resources yet β this is the open risk.)
- Ships as an MCP extension, meaning a server can bundle "the tool" (via MCP tools) and "the manual for the tool" (via the Skill resource) together β the working group's own framing is "ship the manual with the product." Directly relevant to your Tool-Fleet Doctor idea: a fleet-observability MCP server that also ships its own usage Skill would demonstrate the pattern you'd be auditing for in other people's servers.
- Open problem the WG has already surfaced empirically: models frequently try calling tools directly and ignore an available Skill, even when told about it in server instructions β adherence degrades further as context fills up. This is a live reliability gap, not a solved one; worth tracking before you depend on it for anything audit-critical.
- Open governance question the WG is still working through, relevant to your Compliance platform: should a host trust a Skill from an MCP server automatically? Should enterprise admins be able to approve/block/pin specific skills, the way you'd already want for FINTRAC/OSFI-relevant content? Their example is exactly your shape of problem β a vendor's generic Skill vs. your own internal policy-specific Skill for the same task, and which one should win.
5.3 Working implementations today (pre-standardization)
Several projects already implement "Skills as an MCP server" ahead of the formal spec landing β useful as reference architectures, not necessarily as things to depend on long-term:
| Project | Approach | Notable detail |
|---|---|---|
FastMCP SkillsProvider (Python) |
Point it at a directory (e.g. ~/.claude/skills); it auto-exposes every valid skill subfolder as MCP resources |
Cleanest reference implementation if you're building your own server in Python β this is what a Hetzner-hosted "Hermes Skills Server" would most naturally be built on |
agentskills-mcp (zouyingcao) |
Implements the 4-tool pattern explicitly: load_skill_metadata_op (always), load_skill_op (on trigger), read_reference_file_op (on demand), run_shell_command_op (execution) |
Supports both stdio (local) and SSE/HTTP (mcp.transport=sse, remote) β this is the direct answer to "host it somewhere and let others use it" |
agent-skills-mcp (DiscreteTom, Rust) |
Two modes: system_prompt (skill info folded into MCP server instructions) or tool (skills registered as callable tools) β tool mode exists specifically because many agents ignore MCP server instructions |
Illustrates the adherence problem from Β§5.2 concretely β this is a workaround, not a fix |
skillport |
CLI + MCP server; supports categorized skill sets (e.g. one MCP endpoint scoped to development,testing, another to writing,research) via SKILLPORT_ENABLED_CATEGORIES |
Closest to a real access-control primitive β relevant to your boundary-router thinking (local-only vs. public-eligible categories, mapped to separate MCP endpoints) |
| Microsoft Foundry "Skills REST API" (preview) | Enterprise-grade version of the same idea: author SKILL.md once, store centrally, load into any hosted agent container via API |
Shows what this looks like once a vendor productizes it β a preview of where the OSS tools above are heading |
5.4 What this buys you concretely, mapped to your architecture
- A single source of truth. Instead of
npx skillscopying files to N machines, one Hetzner-hosted server is the canonical Skill store; every agent (your laptop's Claude Code, a teammate's Cursor, a future hosted agent) pulls the same version live. This directly resolves the "no cross-surface sync" gotcha flagged in Β§4.1 β the sync problem disappears if nothing is copied in the first place. - Skills become a Localz/Compliance product surface, not just a personal productivity trick. A hosted Skills-over-MCP endpoint is a legitimate "callable connector" in the same category as the FlashRank/Hermes exposure you already planned β e.g., a "Compliance Reasoning Skill Server" that any client agent (yours or a customer's) can point at, with the actual regulatory-prose instructions never leaving your infrastructure.
- Access control is now a server-side concern, which is a better fit for your Trust & Governance instincts than filesystem permissions ever were β you can categorize, version, gate, and audit which Skills are servable to which caller, exactly the shape of control the WG itself is still debating for the ecosystem at large.
- This is genuinely pre-1.0. SEP-2640 is a working draft, adoption in mainstream MCP clients is not yet universal, and the model-adherence problem (Β§5.2) is unresolved. Good rung-5/rung-6-style validation target for the A2A Ladder methodology β build it now on
agentskills-mcpor FastMCP's provider as a working prototype, but don't put it on the critical path for anything regulated until the spec and client support mature.
6. π» Perspective β Skills Inside IDEs (Claude Code, Cursor, Windsurf, VS Code/Copilot)
The second angle you raised β using Skills (with or without MCP) inside the IDE you're actually coding in β is where the format is furthest along in practice, but with real fragmentation underneath the shared file format.
6.1 Directory conventions differ; the file format doesn't
| IDE / Tool | Skills directory | Global (personal) skills? | Always-on context file | Agent engine |
|---|---|---|---|---|
| Claude Code | .claude/skills/ (project) + ~/.claude/skills/ (personal) |
β Yes | CLAUDE.md |
Native CLI agent |
| Cursor | .cursor/skills/ (project only) |
β No | .cursorrules / .cursor/rules/*.mdc |
Composer |
| Windsurf | .windsurf/skills/ (project only) |
β No | .windsurfrules |
Cascade |
| VS Code + GitHub Copilot | Via Copilot Extensions / instructions files (no native SKILL.md folder convention as of mid-2026) |
β No | copilot-instructions.md |
Copilot Agent mode |
The load-bearing fact: the same SKILL.md file β frontmatter and body β works unmodified in Claude Code, Cursor, and Windsurf. What differs is (a) where you put the folder and (b) which extra frontmatter fields get honored. Claude Codeβspecific fields like context: fork and hooks are silently ignored by Windsurf and Cursor rather than causing errors β this is intentional per the open-spec design (Β§3.2): unrecognized keys are ignored, not rejected, which is exactly what makes cross-agent portability work.
6.2 The practical fragmentation problem
Because global/personal skills only exist in Claude Code, Cursor and Windsurf users must copy the same Skill into every project's local skills/ folder β there's no personal library equivalent. This is a real point of friction if you code across FullStackFusions, Localz, and Compliance repos in the same IDE and want one shared "commit message style" or "API error-handling pattern" Skill everywhere: in Claude Code it's one file in ~/.claude/skills/; in Cursor or Windsurf you're maintaining N copies (or a symlink/sync script) across N project repos.
This is precisely the gap npx skills and skillport (Β§4.2, Β§5.3) exist to close β both explicitly support "install to Cursor, Windsurf, Copilot, and any MCP client from one source," which is the practical answer to fragmentation rather than a spec-level fix. Given you already use uvx-style installers for other tools in your stack (the Agent Skills standard note in your own tooling β uvx library-skills --claude), skillport's uv tool install skillport / skillport add workflow would slot into an identical mental model.
6.3 Skills vs. "always-on rules" files β a design decision, not a preference
Every IDE in this table has two distinct context mechanisms, and conflating them is the most common practical mistake:
CLAUDE.md/.cursorrules/.windsurfrules/copilot-instructions.mdβ loaded on every interaction, always in context. Correct for stack-wide facts: "we use FastAPI + pgvector," "always runpip install --break-system-packages."SKILL.mdin a skills folder β loaded only when the task matches thedescription. Correct for a specific, bounded procedure: "how to add a new Alembic migration," "how to run the FlashRank benchmark harness."
Putting a bounded procedure in the always-on file wastes context budget on every single turn; putting stack-wide facts in a Skill means they're invisible unless the description happens to match. This maps directly onto your declarative-vs-procedural memory boundary discipline β the always-on file is closer to your Obsidian vault's role (durable, general, always relevant), the Skill folder is closer to Hermes's role (specific, bounded, loaded on demand). Worth treating IDE skill folders as literally an instance of the same boundary you've already designed, not a separate concept to learn.
6.4 Claude Code specifically: the two paths converge
Because Claude Code supports both native filesystem Skills and MCP, it's the one IDE where Β§5 and Β§6 meet directly: you can either drop a SKILL.md into ~/.claude/skills/, or connect Claude Code to a remote Skills-over-MCP server (claude mcp add skillport -- uvx skillport-mcp, or your own Hetzner-hosted agentskills-mcp instance) and get the same skills without local files at all. For a team where you're the only Claude Code power-user today but may onboard collaborators onto Cursor or Windsurf later, starting with a hosted MCP Skills server rather than a personal ~/.claude/skills/ folder is the more future-proof choice β it's the one architecture that serves all four IDEs in the table above from a single canonical source, sidestepping the fragmentation in Β§6.2 entirely.
7. π Relevance to Your Stack
Hermes (procedural memory layer): This is the closest conceptual sibling to what you've already built. Skills are essentially a standardized, filesystem-native serialization format for exactly the "how-to" knowledge Hermes is designed to hold. Worth an explicit design question: should Hermes emit SKILL.md-compatible files as one of its output formats, so procedural knowledge learned/accumulated in Hermes becomes directly loadable by any Claude Code session (or any of the 70 agents npx skills supports) without a bespoke integration layer? That would make Hermes a Skill factory, not just an ambient agent.
Knowledge Harness / Synto wiki: The three-tier loading model (metadata β instructions β resources) in Skills is a near-exact match for the declarative/procedural/episodic tiering you've already designed. Your boundary router (local-only vs. public-eligible) maps cleanly onto the Claude API's workspace-wide sharing vs. Claude Code's filesystem-personal/project split β you already have the access-control primitive; Skills just gives it a standard file format to enforce against.
A2A Offload Mesh / Agent Stack Radar: Skills sit at the same protocol layer you've been mapping (MCP, A2A, Skills) as the three legs of the agent interoperability stack. For the Radar, Skills likely belongs in a "Standardize" or "Trial" ring given: (a) it's genuinely open-governed now (not Anthropic-proprietary), (b) 70-agent adoption is real breadth, but (c) feature parity is uneven (hooks/context:fork are Claude Code exclusives) and cross-surface sync inside Anthropic's own products is not solved β a real gap for anything you'd call production-grade multi-surface deployment.
Compliance/GRC AI β evidence-gated discovery process: The Claude docs' own security section is directly usable as a starting checklist for your evidence bar: audit every bundled file (SKILL.md, scripts, assets) for unexpected network calls or file-access patterns before trusting a third-party Skill; treat Skills from unknown sources like installing unreviewed software. Given your "no vibe-coded tools in regulated contexts" rule, officialskills.sh's "official, vendor-published only" curation model is a better sourcing policy for anything touching the Compliance platform than the broader (and much larger) skills.sh community index, which includes unaudited community submissions.
FullStackFusions (unresolved): There's a clean, empirically-flavored Part 7 or spin-off post here: "I benchmarked SKILL.md description quality vs. trigger accuracy" β several sources (Agentman, Medium) converge on "if a skill doesn't trigger, it's the description, not the instructions" as received wisdom, but none of them show measured trigger-rate data. That's a gap matching your brand (real numbers replace placeholders).
8. π How to Get Started
Path A β Claude Code (most relevant to your current environment)
# Create the skeleton
mkdir -p ~/.claude/skills/my-skill/{scripts,references,assets}
cd ~/.claude/skills/my-skill
Write SKILL.md with name + description frontmatter (template above). Claude Code discovers it automatically β no registration step. Use ~/.claude/skills/ for personal/global use, .claude/skills/ inside a repo for project/team-shared (git-committed) use.
Fastest bootstrap β use Anthropic's own skill-creator skill (found via officialskills.sh), which guides you through drafting, running before/after test cases, and iterating on the description until trigger accuracy is acceptable:
npx skills add https://github.com/anthropics/skills --skill skill-creator
Path B β Cross-agent install via the open CLI
If you want a Skill available across Claude Code and other agents you use (OpenCode, Cursor, Gemini CLI, etc.) from a single source of truth:
# Install a skill repo to all detected agents
npx skills add vercel-labs/agent-skills --all
# Install one specific skill to specific agents
npx skills add vercel-labs/agent-skills --skill frontend-design -a claude-code -a opencode
# Scaffold a new skill
npx skills init my-skill
Default install mode is symlink (single canonical copy, all agents point to it β easiest to update); use --copy only if the target agent doesn't support symlinks.
Path C β claude.ai (personal, non-technical use)
Settings β Features β upload a .zip containing your SKILL.md (+ optional subfolders). Requires Pro/Max/Team/Enterprise with code execution enabled. Remember: this is per-user, not synced to Claude Code or the API β you'd re-upload separately if you want the same Skill there.
Path D β Claude API (for anything you productize, e.g. Localz or Compliance agent backends)
Requires three beta headers: code-execution-2025-08-25, skills-2025-10-02, files-api-2025-04-14. Upload custom Skills via /v1/skills; reference by skill_id in the container parameter alongside the code-execution tool. Uploaded Skills are workspace-wide β relevant if Localz or the Compliance platform later needs a shared, versioned Skill library across a team rather than per-developer filesystem copies.
First thing to try
Write one Skill for a workflow you already repeat by hand across sessions β e.g., "Localz listing QA checklist" or "Compliance report formatting" β deliberately keep it under 5k tokens, and test whether Claude reaches for it unprompted on a naturally-phrased request. If it doesn't trigger, rewrite the description before touching the instructions (per the trigger-accuracy finding in Β§3.4).
Validate before trusting
# skills-ref reference library validates frontmatter + naming conventions
(referenced in the agentskills.io spec β check current install instructions in the repo before adding to a CI/lint step for your own Skills library.)
9. π References & Links
- Skills Over MCP Working Group charter β https://modelcontextprotocol.io/community/working-groups/skills-over-mcp
- SEP-2640 experimental reference implementation β https://github.com/modelcontextprotocol/experimental-ext-skills
- "Skills Over MCP" explainer β https://aaif.io/blog/skills-over-mcp/
- FastMCP Skills Provider docs β https://gofastmcp.com/servers/providers/skills
agentskills-mcp(remote SSE/HTTP Skills server) β https://github.com/zouyingcao/agentskills-mcpagent-skills-mcp(Rust, tool/system_prompt modes) β https://github.com/DiscreteTom/agent-skills-mcpskillport(cross-agent Skill manager, CLI + MCP) β https://github.com/gotalab/skillport- Windsurf Skills guide (
.windsurf/skills/, Cascade) β https://www.agensi.io/learn/windsurf-skills-how-to-add-skill-md - Agent Skills specification β https://agentskills.io/specification
- Agent Skills overview / client showcase β https://agentskills.io/home
- Open spec repo (Apache-2.0 code / CC-BY-4.0 docs) β https://github.com/agentskills/agentskills
- Anthropic official Agent Skills docs β https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview
- Claude Code Skills guide β https://code.claude.com/docs/en/skills
- Skills in the API β https://platform.claude.com/docs/en/build-with-claude/skills-guide
- Anthropic engineering blog: "Equipping agents for the real world with Agent Skills" β https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills
vercel-labs/skillsCLI (open agent skills tool, MIT, 22.4kβ ) β https://github.com/vercel-labs/skills- officialskills.sh (curated official-only skills directory) β https://officialskills.sh
- Anthropic's own
skillsrepo (skill-creator, mcp-builder, template, etc.) β https://github.com/anthropics/skills - Claude Help Center: What are Skills? β https://support.claude.com/en/articles/12512176-what-are-skills
- Claude Help Center: Creating custom Skills β https://support.claude.com/en/articles/12512198-creating-custom-skills
ποΈ Quick Reference Index
[Concept] Progressive Disclosure β 3-stage loading (metadata β instructions β resources) that keeps many skills cheap in context
[Spec] agentskills.io β open, vendor-neutral SKILL.md format spec, originated by Anthropic, now community-governed
[Tool] npx skills (vercel-labs/skills) β CLI to install/manage Skills across 70+ agents from one source of truth
[Tool] skill-creator (Anthropic) β official skill for drafting, testing, and iterating on new Skills
[Resource] officialskills.sh β curated directory of vendor-published (not community) Skills
[Concept] Skill sharing scope β claude.ai (per-user), Claude API (workspace-wide), Claude Code (filesystem: personal/project)
[Constraint] No cross-surface sync β a Skill uploaded to claude.ai, API, and Claude Code must be maintained 3x separately
[Concept] Skill vs MCP vs A2A β Skills = procedural know-how; MCP = tool access; A2A = agent-to-agent delegation; complementary, not competing
[Concept] Skills over MCP (SEP-2640) β serving Skills as MCP Resources via skill:// URIs; formal WG-driven proposal, not yet finalized
[Risk] Model tool-preference bug β agents often call tools directly and skip an available Skill even when told to check it first; unresolved in the WG's own testing
[Tool] FastMCP SkillsProvider β Python library that turns a local skills directory into a full MCP resource server in ~3 lines
[Tool] agentskills-mcp / skillport β working remote-hosting implementations for Skills-over-MCP, pre-dating the formal spec
[Concept] Skills fragmentation across IDEs β only Claude Code has a personal/global skills folder; Cursor and Windsurf are project-scoped only, so a hosted MCP server is the only single-source-of-truth option across all three
[Concept] Rules file vs Skill file β CLAUDE.md/.cursorrules/.windsurfrules = always-on context; SKILL.md = loaded only on task match; mirrors your declarative-vault vs procedural-Hermes boundary directly
Related
- hermes-harness-spec β the vault's own harness/agent architecture; FIX-AGENT (Β§2 addition, 2026-07-04) is the first concrete instance of "Hermes emits SKILL.md" this research asks about in Β§7
- agent_harness_hands_on β harness-over-model principle this research draws the direct parallel to in Β§3.3
- harness-rtk-headroom-synthesis β same "push correctness into deterministic code, not token generation" thesis this note applies to Skills' script-execution model