|
| 1 | +# Skills — first-party capability plan |
| 2 | + |
| 3 | +Skills are the "how" half of the catalog: [Agent Skills](https://agentskills.io/specification) |
| 4 | +directories (`SKILL.md` with YAML frontmatter + optional `scripts/`, `references/`, `assets/`) |
| 5 | +that carry procedure the way integrations carry capability. vision.md already stakes skills as |
| 6 | +a first-party capability and an artifact kind; this plan pins the concrete shape. |
| 7 | + |
| 8 | +Decisions (Ethan, 2026-09-01). The design splits three ways: **bring in**, **use**, **manage**. |
| 9 | + |
| 10 | +## Format and posture |
| 11 | + |
| 12 | +- The skill format is the [agentskills.io spec](https://agentskills.io/specification), |
| 13 | + unmodified. Executor stores and serves skills; it never interprets bodies. |
| 14 | +- **Skills are pure content.** Executor does not execute `scripts/` — end agents run them |
| 15 | + locally if they choose. Bundled scripts are stored and served like any other skill file. |
| 16 | +- **Security is deferred to users**, matching the trust posture integrations have today. If |
| 17 | + integrations grow an import-trust mechanism, skills adopt the same one. Imports are still |
| 18 | + hash-pinned (see below), so what you reviewed is what you have. |
| 19 | + |
| 20 | +## Bring in |
| 21 | + |
| 22 | +- **CLI, `npx skills`-shaped**: `executor skills add <owner>/<repo>` (GitHub), plus import |
| 23 | + from the local filesystem (`executor skills add ./path`). Same discovery walk as the |
| 24 | + ecosystem CLI: `SKILL.md` directories under the usual container layouts. |
| 25 | +- **Dashboard**: drop-in link, like adding an integration — paste a GitHub URL, we fetch and |
| 26 | + auto-fill name/description/file listing from the skill's frontmatter for confirmation. |
| 27 | +- **Pinning + manual sync only.** Imports record source + content hash (lockfile semantics, |
| 28 | + the shape `skills-lock.json` already has). No background auto-update: a manual |
| 29 | + `executor skills sync` and a dashboard "check for updates" re-fetch from the source and |
| 30 | + show what changed before applying. |
| 31 | + |
| 32 | +## Use |
| 33 | + |
| 34 | +- **Adopt the MCP spec now**: serve skills per |
| 35 | + [SEP-2640](https://github.com/modelcontextprotocol/modelcontextprotocol/issues/2640) |
| 36 | + (`io.modelcontextprotocol/skills`) — each skill file a resource under `skill://`, plus the |
| 37 | + `skill://index.json` enumeration. Track the SEP as it moves through review. |
| 38 | +- **Pass-through**: when an upstream MCP server connected as an integration serves skills via |
| 39 | + the extension, Executor re-serves them transparently alongside locally stored ones — same |
| 40 | + index, same addressing, provenance recorded. |
| 41 | +- **Code mode, while the spec standardizes**: the `execute` sandbox gets a `skills` function |
| 42 | + set — `skills.search()` / `skills.get(name)` — index entries are frontmatter only |
| 43 | + (name + description); bodies load only via `get`. Skills stay under `skills.*`; they do |
| 44 | + **not** appear in the general `tools.search` results. |
| 45 | +- **Materialize to disk**: `executor skills sync` can also write the catalog into |
| 46 | + `.agents/skills/` for agents that only read local files. |
| 47 | + |
| 48 | +## Manage |
| 49 | + |
| 50 | +- **Own dashboard page**, separate from integrations: list, inspect (rendered SKILL.md + |
| 51 | + file tree), import, sync, delete. |
| 52 | +- **Scoped like everything else**: a skill is personal or workspace-owned; visibility is |
| 53 | + union per the standard scope merge. |
| 54 | +- **Toolsets**: skills attach to toolsets exactly like tools, so a scoped MCP endpoint |
| 55 | + serves the toolset's tools and its skills as one unit. |
| 56 | + |
| 57 | +## Naming |
| 58 | + |
| 59 | +The MCP host's existing `skills` tool serves Executor's own how-to docs |
| 60 | +(`packages/core/execution/src/skills.ts`) and its comments already document models mistaking |
| 61 | +it for a general skill reader. **Rename the internal tool** (it is a docs reader, not a skill |
| 62 | +store) and free the `skills` name for the real capability. The internal registry stays a |
| 63 | +separate, hand-curated thing. |
| 64 | + |
| 65 | +## Sequencing |
| 66 | + |
| 67 | +1. Rename the internal `skills` tool; land the skill store (workspace/personal scoped, |
| 68 | + file-backed) with `skills.search`/`skills.get` in code mode. |
| 69 | +2. Bring-in surfaces: CLI add (GitHub + filesystem) with lockfile pinning, dashboard drop-in, |
| 70 | + manual sync. |
| 71 | +3. Serve per SEP-2640 and pass through upstream MCP-served skills; `.agents/skills/` |
| 72 | + materialization. |
| 73 | +4. Toolset attachment and the dashboard page's full management surface. |
| 74 | + |
| 75 | +## References |
| 76 | + |
| 77 | +- Spec: <https://agentskills.io/specification> |
| 78 | +- SEP-2640 skills extension: <https://github.com/modelcontextprotocol/modelcontextprotocol/issues/2640>; |
| 79 | + incubation: <https://github.com/modelcontextprotocol/experimental-ext-skills> |
| 80 | +- `.well-known/agent-skills` discovery RFC (future serve surface): |
| 81 | + <https://github.com/cloudflare/agent-skills-discovery-rfc> |
| 82 | +- Ecosystem CLI the bring-in mirrors: <https://github.com/vercel-labs/skills> |
0 commit comments