facet.yaml) is the source of truth for what a facet contains, what other facets it composes text from, and which MCP servers it references. This page defines every field in the manifest schema.
Test
Example
Identity
| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | Facet name. MUST be non-empty. |
version | Yes | string | Semver version string. |
description | No | string | Human-readable description. |
author | No | string | Author name or identifier. |
name and version fields MUST be present. A manifest missing either field MUST be rejected.
Consumers MUST tolerate unrecognized top-level fields. Unknown fields MUST be ignored — not rejected.
Text Assets
Text assets are the locally authored content included in the facet.| Field | Required | Type | Description |
|---|---|---|---|
skills | No | array of strings | Skill names. Each corresponds to a file in the facet. |
agents | No | map of string → agent descriptor | Agent name → agent descriptor (description, prompt, platform config). |
commands | No | map of string → command descriptor | Command name → command descriptor (description, prompt). |
facets section. A manifest with no text assets MUST be rejected.
Agent Descriptor
| Field | Required | Type | Description |
|---|---|---|---|
description | No | string | Human-readable description of the agent. |
prompt | Yes | string, {file: path}, or {url: url} | The agent’s prompt content or a reference to it. |
platforms | No | map of string → platform config | Platform name → platform-specific agent configuration. |
prompt field MUST be present. It MAY be:
- A string containing the prompt text directly
- An object with a
filekey containing a path relative to the facet root - An object with a
urlkey containing a URL to fetch the prompt from
platforms section is OPTIONAL. It contains platform-specific configuration (tool access, permissions, model preferences) keyed by platform name. The CLI validates platform config against known platform schemas at build and publish time. Unknown platforms produce a warning. Invalid config for a known platform is a build error.
Command Descriptor
| Field | Required | Type | Description |
|---|---|---|---|
description | No | string | Human-readable description of the command. |
prompt | Yes | string, {file: path}, or {url: url} | The command’s prompt content or a reference to it. |
prompt field follows the same rules as the agent descriptor’s prompt.
Composed Facets
Thefacets section declares text composed from other published facets. Each entry is either a compact string or a selective object.
Compact Form
Takes all text assets from the referenced facet:"name@version". For scoped names: "@scope/name@version".
Selective Form
Cherry-picks specific assets from the referenced facet:| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | Source facet name. |
version | Yes | string | Exact version to compose from. |
skills | No | array of strings | Skill names to include. |
agents | No | array of strings | Agent names to include. |
commands | No | array of strings | Command names to include. |
skills, agents, or commands). A selective entry with none MUST be rejected.
Composition Semantics
Text composition is resolved before the facet archive reaches the registry. Thefacets section serves dual purpose:
- Composition directive — instructs the build/publish process which text assets to include from other facets.
- Attribution record — documents exactly where composed content came from.
"name@1.0.0"). The composed text is frozen at that version in the archive.
Naming Constraints
Composed asset names MUST NOT collide with locally authored asset names. If a composed facet includes a skill namedcode-review and the local facet also declares a skill named code-review, this is a naming collision. Collisions MUST be detected at build time and MUST be an error.
Server References
Theservers section declares MCP server references. MCP servers are a separate artifact type from facets (see MCP Server Assets). The servers section declares which servers this facet needs. There are two forms depending on the server’s execution mode.
Source-Mode
A string value declares a floor version constraint:Ref-Mode
An object value with animage field declares an OCI image reference:
: for tags, @ for digests. At install time, the CLI resolves tags to digests and pins the digest in the lockfile.
Server Reference Summary
| Key | Value type | Mode | Description |
|---|---|---|---|
| server name | string | Source-mode | Floor version — minimum acceptable version (e.g., "1.0.0"). |
| server name | object | Ref-mode | Object with image field containing an OCI image reference. |
Schema Constraints
- A facet MUST have at least one text asset (locally authored or composed).
- Selective
facetsentries MUST include at least one asset type. - Composed asset names MUST NOT collide with locally authored asset names.
- The
@character is used for both scoping (@scope/name) and version pinning (name@version). Scoped and versioned:@scope/name@version. - Consumers MUST tolerate unrecognized fields. Unknown fields MUST be ignored.
- The manifest MUST NOT be modified by any tooling — it is immutable.