@codegeneai/quality
Declarative, schema-driven quality pipeline (lint, format, test orchestration) for monorepos and single packages — built on Bun, written in TypeScript.
bun add -D @codegeneai/quality
bun x quality init
bun x quality checkThat's it — quality init drops a starter .qualityrc.jsonc in your repo, and quality check runs the pipeline.
<details <summary<strongTable of contents</strong</summary
- Why this exists
- Core concepts
- Getting started
- Shards and profiles
- Configuration reference
- Files and shards
- Auto-fix defaults
- CLI reference (quality)
- Global ignore
- Built-in adapters
- package-catalog
- Husky hooks (recommended)
- Stage specs
- Groups & parallel execution
- Command adapter options
- Extending adapters
- Schema & validation
- CLI reference
- Nested configs
- Development
- Contributing
- License
</details
Why this exists
Most repos end up gluing together husky, lint-staged, biome (or eslint + prettier), and a stack of bespoke shell scripts to enforce quality before commits and in CI. @codegeneai/quality collapses that pile into a single declarative config file: pipelines, profiles (local, pre-commit, pre-push, ci), stage adapters, hooks, and reporters all live in .qualityrc.jsonc. You compose checks without writing TypeScript, share configuration across monorepo packages via nested configs, and run the same pipeline locally and in CI.
It pairs especially well with Bun and Biome but does not require either at the stage level — any check that can be expressed as a command or implemented as a stage adapter fits.
Core concepts
- Stage adapters – Modules that implement a single responsibility (import hygiene, filenames, structure, bun-native, command, etc.). Adapters expose metadata (label, description, supported modes) and an execution hook.
- Presets – Named option bundles defined per adapter under stages.<adapter.presets. Presets can extend other presets (single or multiple inheritance) and configure defaults such as groups, modes, hooks, and adapter options.
- Profiles – Named pipelines that order stages, set reporters, and attach hooks. Profiles can extend one another, allowing "local" and "ci" variants with small diffs.
- Groups – Stages can join a group to opt into parallel execution, fail-fast semantics, or shared metadata.
- Hooks & reporters – Declarative shell commands that run on start/success/failure, and reporters (summary/json/junit/verbose) that consume pipeline results.
- Schema-first – A bundled JSON Schema models the entire configuration surface so editors and CI can validate configs.
Getting started
- Install: bun add -D @codegeneai/quality.
- After installing, run bun x quality init in your repo to generate a starter .qualityrc.jsonc (the stack demonstrates presets, command stages, and grouped adapters).
- Reference the schema inside .qualityrc files to enable editor IntelliSense:
{
"$schema": "./node_modules/@codegeneai/quality/schemas/qualityrc.schema.json",
"stages": {
"command": {
"presets": {
"docs:check": {
"continueOnError": true,
"options": {
"abortPipelineOnFailure": false,
"commands": ["bun run docs:lint"]
}
}