Checkstack uses a set of shared configurations and scripts to maintain consistency and reduce boilerplate across all packages and plugins.
Instead of defining full TypeScript configurations in every package, we use @checkstack/tsconfig, which exports specialized base configurations.
| Config | Path | Usage |
|---|---|---|
| Base | @checkstack/tsconfig/base.json |
Common settings for all packages |
| Backend | @checkstack/tsconfig/backend.json |
For backend plugins and core (includes Bun types) |
| Frontend | @checkstack/tsconfig/frontend.json |
For React-based frontend plugins (React, Vite) |
| Common | @checkstack/tsconfig/common.json |
For platform-agnostic common packages |
In your package’s tsconfig.json, simply extend the appropriate configuration:
{
"extends": "@checkstack/tsconfig/backend.json",
"include": ["src"]
}
To avoid redundant script definitions in package.json, we use the @checkstack/scripts package along with a synchronization tool.
The following scripts should be consistent across all plugins:
typecheck: Runs tsc --noEmit using the shared configuration.lint: Runs our standard code linting suite.lint:code: Runs ESLint with predefined rules and strict error reporting.We provide a tool to automatically keep all package.json and tsconfig.json files in sync with the project’s standards.
How to run synchronization:
# From the root of the monorepo
bun run core/scripts/src/sync.ts
This tool will:
@checkstack/scripts to devDependencies if missing.typecheck and lint scripts.tsconfig.extends is used based on the package type.Use the interactive CLI to create new packages or plugins:
# From the root of the monorepo
bun run cli create
The CLI will guide you through:
core/ (core components) or plugins/ (replaceable providers)| Location | Use For |
|---|---|
core/ |
Core platform components that are essential and non-replaceable |
plugins/ |
Replaceable providers that can be swapped (auth providers, queue backends) |
See Packages vs Plugins Architecture for detailed decision criteria.
If the CLI doesn’t work in your environment:
package.json with a name and version.tsconfig.json.bun run core/scripts/src/sync.ts
bun install to link the new dependencies.This ensures your new package immediately follows all Checkstack architecture and code style rules.