Built-in Plugins
ZenStack ships with a set of built-in plugins. They fall into the following two categories.
Core Plugins
Most of the core functionalities of ZenStack are implemented as or supported by a few core plugins. They're vital to the operation of ZenStack and are enabled automatically as needed. Core plugins are implemented inside the zenstack npm package and have names starting with @core/.
Here's a quick overview of them:
- 
Transforms ZModel to Prisma schema and runs prisma generateto generate Prisma Client.
- 
Transforms ZModel to lightweight Javascript to be used at runtime. 
- 
Transforms access policies into partial Prisma query objects for injecting Prisma queries at runtime. 
- 
Transforms ZModel into Zod schemas for validating input data at runtime. 
The ZenStack CLI automatically decides whether a core plugin should be enabled based on the ZModel. You can also explicitly declare a core plugin to override its options. For example, declare a @core/prisma plugin to output the generated Prisma schema file to a custom location:
plugin prisma {
    provider = "@core/prisma"
    output = "src/db/prisma/schema.prisma"
}
Maintained Plugins
Besides core plugins, the ZenStack team maintains a set of useful but non-essential plugins. They are implemented in separate npm packages under the @zenstackhq organization.
- 
Generates frontend data query hooks for targeting Tanstack Query. In Part III and Part IV of this guide, you'll learn more about using ZenStack for full-stack development. 
- 
Generates frontend data query hooks for targeting SWR. In Part III and Part IV of this guide, you'll learn more about using ZenStack for full-stack development. 
- 
Generates tRPC routers for database queries and mutations. 
- 
Generates OpenAPI specs from the ZModel schema.