Skip to main content
By the end of this guide you will have a working .facet file ready to publish or share. Install the CLI first: see Setup.

Scaffold a new facet

Pass the assets you want and the CLI writes the manifest plus a starter file for each:
Run facet create my-facet with no authoring flags for an interactive wizard. See facet create.
That gives you:
Each text-asset type has a conventional path. Asset names are single segment: lowercase ASCII, digits, and hyphens, with no slashes. Skills and commands share one namespace, so they cannot reuse a name. See Asset names.

Understand the manifest

facet.json is the source of truth for what the facet contains:
facet.json
Each text-asset type maps a name to a descriptor. A descriptor needs a description and may carry optional adapters metadata. A facet needs at least one asset, which can be an MCP server instead. The full schema lives in the manifest specification.

Ship supporting files

The top-level files array declares supplementary files such as README.md or LICENSE. They ship in the archive and are integrity-protected, but never install onto disk. A skill can declare its own files, which install and remove with it:
facet.json
Declare exact paths, not globs. Top-level paths cannot point under skills/, and a skill’s paths are relative to its own directory and cannot list SKILL.md. Binary and empty files are fine.For routine manifest changes, use facet modify:

Write your content

Replace each starter file with your own markdown.skills/code-review/SKILL.md holds reusable guidelines, following the Agent Skills specification:
agents/reviewer.md is the agent’s system prompt:
commands/review-pr.md is a workflow the user invokes:
Asset identity lives in the manifest. A primary file may carry YAML front matter, which ships verbatim, but at install time the manifest’s name and description are merged over it. Set metadata with facet modify rather than in front matter.
Adapter-specific settings such as tool lists or model preferences also live in the manifest:

Verify, then build

Validate without producing an artifact:
When it passes, build the distributable archive:
A scoped identity nests: @acme/my-facet writes to dist/@acme/my-facet-0.0.0.facet. See facet build.

Keep editing

  • facet modify makes one scriptable change at a time. This is the fastest path.
  • facet edit is an interactive workbench that also reconciles facet.json with files you added, renamed, or removed on disk.
Finish with facet build --verify to confirm the facet still builds.