# Introduction



**skmtc** generates idiomatic TypeScript source code from an OpenAPI v3 or
GraphQL schema — types, validators, query hooks, mocks, forms, and server
routes, all from one schema, in one run, all consistent with each other.

The generators themselves are ordinary packages you can read, clone, and
edit. Most teams start by running the stock generators unchanged, then
clone the one or two whose output they want to shape.

## Pick your path [#pick-your-path]

### Generate code from your schema [#generate-code-from-your-schema]

Start here if you have a schema and want working output.

1. [Your first generation](/docs/using/tutorials/01-your-first-generation) —
   install the CLI, run one generator, read the files it wrote (\~5 minutes).
2. [Multiple generators](/docs/using/tutorials/02-multiple-generators) —
   types, validators, and query hooks from the same schema, consistent with
   each other.
3. [Customize with enrichments](/docs/using/tutorials/03-customize-with-enrichments) —
   per-operation overrides in `client.json`, without touching generator code.

Then, as the need arises: [skip or include operations](/docs/using/how-to/skip-or-include-operations),
[pin the schema source](/docs/using/how-to/pin-schema-source),
[run in CI](/docs/using/how-to/use-in-ci-cd), and
[debug a failing generation](/docs/using/how-to/debug-failing-generation).

### Make the generators yours [#make-the-generators-yours]

Start here when stock output is close but not right — different naming,
different file layout, a different peer library.

1. [Clone vs install](/docs/concepts/clone-vs-install) — when to fork a
   generator into your project and when to keep the published package.
2. [Cloning a generator](/docs/authoring/tutorials/01-cloning-a-generator) —
   pull the source local and enter the edit loop.
3. [Authoring a model generator](/docs/authoring/tutorials/02-authoring-a-model-generator) —
   build one from scratch, per schema component.
4. [Authoring an operation generator](/docs/authoring/tutorials/03-authoring-an-operation-generator) —
   the same, per API operation.

The concepts behind the authoring surface, in reading order:
[Anatomy of a generator](/docs/authoring/anatomy-of-a-generator),
[The three phases](/docs/concepts/the-three-phases),
[Projections and Snippets](/docs/concepts/projections-and-snippets),
[How generators produce output](/docs/concepts/how-generators-produce-output).

### Decide whether skmtc fits [#decide-whether-skmtc-fits]

* [Comparison to other tools](/docs/explanation/comparison-to-other-tools) —
  openapi-generator, Orval, Kubb, and where skmtc differs.
* [Design philosophy](/docs/explanation/design-philosophy) — the bets the
  tool makes and the tradeoffs it accepts.
* [Status and roadmap](/docs/explanation/status-and-roadmap) — what is
  stable, what is active, what is experimental.

## Reference [#reference]

* [CLI commands](/docs/reference/cli/overview)
* [Engine API](/docs/reference/api/core-overview)
* [`client.json` settings](/docs/reference/settings/client-json-schema)
* [Stock generators catalog](/docs/reference/stock-generators/overview)
* [Glossary](/docs/reference/glossary)
