---
title: "How Rendering Works"
description: "Traces canonical Skillset source through validation and target rendering into deterministic provider-native destinations."
---

> Documentation Index
> Fetch the complete documentation index at: https://nimbus.focal.host/llms.txt
> Use this file to discover all available pages before exploring further.

# How Rendering Works

<a id="how-rendering-works"></a>

A Skillset [workspace](/skillset/glossary/#workspace) has two authored inputs: `skillset.yaml` selects workspace behavior, and `.skillset/` contains the [canonical source](/skillset/glossary/#canonical-source). Everything Skillset writes is derived from those inputs and explicit operational state.

```text
skillset.yaml + .skillset/
        ↓ resolve and validate
source graph + target support
        ↓ render per target
destination plan
        ↓ explicit confirmation
provider-native files + skillset.lock provenance
```

## Resolve source intent

Skillset loads addressable [source units](/skillset/glossary/#source-unit)—skills, rules, [project agents](/skillset/glossary/#project-agent), plugins, hooks, and related resources—into one graph. Workspace and plugin defaults can [cascade](/skillset/glossary/#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](/skillset/glossary/#target) compatibility, [destination](/skillset/glossary/#destination) safety, and ownership before a confirmed [build](/skillset/glossary/#build) writes output. The generated [support matrix](/skillset/reference/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](/skillset/reference/features/) explains the public behavior; [render-result internals](https://github.com/outfitter-dev/skillset/blob/24800e02ed4e7150ea1bc7130c35603c98ea9da2/docs/development/features/render-results.md) explain the maintainer contract behind per-build [render-result](/skillset/glossary/#render-result) evidence.

## Render target-native output

Rendering has two independent axes. Each applicable adopted [Agent standard](/skillset/glossary/#agent-standard) produces its portable [baseline](/skillset/glossary/#baseline) from the source graph; `compile.targets` selects provider [renderers](/skillset/glossary/#render), which emit independent [provider-native](/skillset/glossary/#provider-native) files or add a native [delta](/skillset/glossary/#delta) to a compatible baseline. There is no standards selector in workspace, plugin, or frontmatter configuration.

In the first-author fixture, one [rule](/skillset/glossary/#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](/skillset/glossary/#owner) plus provider [consumer](/skillset/glossary/#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](/skillset/glossary/#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](/skillset/glossary/#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/glossary/#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](/skillset/guides/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](/skillset/start/build-versus-activation/).

Source: https://nimbus.focal.host/skillset/start/how-rendering-works/index.mdx
