# Authoring generators



## Who this is for [#who-this-is-for]

You want generator behavior beyond what enrichments expose, or you're writing a new generator from scratch. You'll be reading and writing TypeScript in `.skmtc/<project>/<gen-name>/src/`.

None of this is required to use SKMTC — if you haven't used it as a consumer yet, start with [`using/`](/docs/using). Authoring makes more sense once you've felt the customization limits, and it's more approachable than it sounds: generators build output with template literals (not ASTs) and compose with each other, so most authoring work is editing recognizable TypeScript. The [Authoring generators section of the docs front page](/docs#authoring-generators) shows both ideas in real generator code.

## The customization gradient [#the-customization-gradient]

```
Use stock          → install + accept defaults
Configure          → enrichments in client.json
Customize behavior → clone + edit source     ← extending starts here
Author new         → write a new generator
```

## Tutorials [#tutorials]

Linear walkthroughs to learn by doing.

* [01 — Cloning a generator](/docs/authoring/tutorials/01-cloning-a-generator)
* [02 — Authoring a model generator](/docs/authoring/tutorials/02-authoring-a-model-generator)
* [03 — Authoring an operation generator](/docs/authoring/tutorials/03-authoring-an-operation-generator)

## How-to guides [#how-to-guides]

Recipes for specific problems.

* [Change export paths](/docs/authoring/how-to/change-export-paths)
* [Change identifier conventions](/docs/authoring/how-to/change-identifier-conventions)
* [Add a field type](/docs/authoring/how-to/add-a-field-type)
* [Swap a peer dependency](/docs/authoring/how-to/swap-a-peer-dependency)
* [Add enrichment options](/docs/authoring/how-to/add-enrichment-options)
* [Compose with another generator](/docs/authoring/how-to/compose-with-another-generator)
* [Handle GraphQL instead of OAS](/docs/authoring/how-to/handle-graphql-instead-of-oas)

## Recipes [#recipes]

Complete worked examples.

* [Design system across many APIs](/docs/authoring/recipes/design-system-across-many-apis)
* [Custom form field renderer](/docs/authoring/recipes/custom-form-field-renderer)

## Shared resources you'll need [#shared-resources-youll-need]

* [Concepts](/docs/concepts) — the DSL, the pipeline, cross-generator coordination, refs
* [API reference](/docs/reference/api) — `@skmtc/core` exports, OAS object model, DSL classes
* [CLI reference](/docs/reference/cli) — `clone`, `create`, `dev`, `bundle`
* [Stock generators reference](/docs/reference/stock-generators) — source layout and clone seams per generator
* [Explanation](/docs/explanation) — design rationale for the architecture you'll be extending
