A Skillset workspace has two authored inputs: skillset.yaml selects workspace behavior, and .skillset/ contains the canonical source. Everything Skillset writes is derived from those inputs and explicit operational state.
skillset.yaml + .skillset/
↓ resolve and validate
source graph + target support
↓ render per target
destination plan
↓ explicit confirmation
provider-native files + skillset.lock provenanceResolve source intent
Skillset loads addressable source units—skills, rules, project agents, plugins, hooks, and related resources—into one graph. Workspace and plugin defaults can cascade into a unit, while narrower explicit configuration wins.
The graph expresses author intent, not a promise that every provider has the same file format or capability.
Validate before writing
Skillset validates source shape, references, target compatibility, destination safety, and ownership before a confirmed build writes output. The generated support matrix describes registry-owned feature support; it does not guarantee that every source unit can reach every target.
When a target cannot represent an intent faithfully, the build reports that boundary instead of inventing parity. The feature reference explains the public behavior; render-result internals explain the maintainer contract behind per-build render-result evidence.
Render target-native output
Rendering has two independent axes. Each applicable adopted Agent standard produces its portable baseline from the source graph; compile.targets selects provider renderers, which emit independent provider-native files or add a native delta to a compatible baseline. There is no standards selector in workspace, plugin, or frontmatter configuration.
In the first-author fixture, one rule becomes a Claude rule and contributes to Codex AGENTS.md; when Agent Instructions is adopted, the same source also inherently owns the portable root or scoped AGENTS.md baseline. The planner writes a compatible shared file once and records its standard owner plus provider consumer.
A destination is the concrete path and format receiving one output. A render is the transformation that produces it. The complete deterministic set is a projection.
Preview, confirm, and record ownership
skillset build computes and displays a destination plan. It writes nothing by default. skillset build --yes confirms that plan and writes managed files plus nearby skillset.lock provenance, the lock.
Locks connect source paths, generated paths, hashes, target state, and ownership. They let later checks distinguish managed output from unrelated neighboring files.
Detect drift
If canonical source changes without regeneration, the expected projection and checked-in files have drift. skillset diff and preview builds show the change; skillset check --only outputs fails until a confirmed build makes output current.
Generated files remain reviewable and committable, but they are not source truth. Edit .skillset/, then regenerate. If an intentional target-side edit must become source, use the bounded reconciliation workflow in the development loop.
Stop at the repository boundary
Deterministic files are not runtime authority. Skillset renders files. It does not install, trust, activate, symlink, or mutate user-level provider configuration. See Build Versus Activation.