OpenWork Linting and Formatting Tools: ESLint and Prettier Configuration Guide
OpenWork uses ESLint for static code analysis and Prettier for automatic code formatting, with ESLint 3.8.3 locked in pnpm-lock.yaml and extensive ESLint directives throughout the TypeScript codebase.
The openwork repository from different-ai enforces code quality through a two-tool approach common in modern TypeScript monorepos. This guide examines how these tools are configured, where evidence appears in source files, and how to run them in your local environment.
ESLint: Static Analysis Across the Monorepo
OpenWork relies on ESLint as its primary linting tool. Evidence appears throughout the codebase in the form of directive comments that suppress or configure rules for specific lines.
ESLint Directives in Source Files
Thousands of // eslint-disable-* comments appear across the TypeScript source tree. These directives surface in:
- Core library code including Zod type validation (
dev/.opencode/node_modules/zod/src/v3/ZodError.ts) - OpenWork UI components and application packages
- Generated and third-party code merged into the workspace
The prevalence of these directives indicates a project-wide ESLint configuration extending standard TypeScript and Next.js rule sets.
Running ESLint
Execute ESLint across the entire workspace with this command:
pnpm exec eslint . --ext .ts,.tsx,.js,.jsx
For package-scoped linting, navigate to individual package directories where discrete ESLint configurations may exist.
Prettier: Consistent Code Formatting
OpenWork locks Prettier 3.8.3 as its formatting engine. This version appears explicitly in pnpm-lock.yaml【pnpm-lock.yaml】, ensuring reproducible formatting across all development environments.
Prettier Version Verification
The lockfile entry confirms the exact package version installed for the monorepo. This deterministic approach prevents formatting drift between contributor machines and CI pipelines.
Running Prettier
Format all source files in the workspace:
pnpm exec prettier --write .
Format a specific new file before committing:
echo "export const foo = 42;" > src/foo.ts
pnpm exec prettier --write src/foo.ts
Key Configuration Files
| File | Purpose |
|---|---|
pnpm-lock.yaml |
Locks prettier@3.8.3 in the dependency tree |
packages/@openwork/app/.eslintrc.json |
Package-level ESLint configuration (typical location) |
packages/@openwork/app/.prettierrc.json |
Package-level Prettier formatting rules (typical location) |
| Source file ESLint directives | Inline rule suppression and configuration |
Integration in the Development Workflow
ESLint and Prettier serve complementary roles in openwork's quality pipeline:
- ESLint catches bugs, anti-patterns, and style violations through static analysis
- Prettier automatically reformats code to eliminate debates about indentation, quote style, and line length
Together they enforce consistency without manual intervention. The pnpm workspace structure allows per-package customization while inheriting shared base rules.
Summary
- ESLint provides static analysis with extensive directive comments visible across the TypeScript codebase
- Prettier 3.8.3 is locked in
pnpm-lock.yamlfor deterministic formatting - pnpm commands execute both tools:
pnpm exec eslintandpnpm exec prettier - Package-level configs in
packages/@openwork/app/extend shared monorepo rules - No root config file visible in analysis—configuration likely distributed across workspace packages
Frequently Asked Questions
What version of Prettier does openwork use?
OpenWork locks Prettier 3.8.3 as recorded in pnpm-lock.yaml. This version is installed consistently across all workspace packages through the pnpm monorepo structure.
Where is the ESLint configuration file in openwork?
The analysis did not reveal a root ESLint configuration file. ESLint configuration likely exists at the package level—for example, in packages/@openwork/app/.eslintrc.json—with each package extending shared base rules for the monorepo's TypeScript and Next.js standards.
How do I run linting and formatting in openwork?
Use pnpm to execute both tools:
pnpm exec eslint . --ext .ts,.tsx,.js,.jsx
pnpm exec prettier --write .
Run these from the workspace root to process all packages, or navigate to individual package directories for scoped execution.
Does openwork use ESLint and Prettier together?
Yes. ESLint handles static analysis for code quality and potential bugs, while Prettier handles purely stylistic formatting. This separation prevents conflicting rules and allows each tool to specialize—ESLint for correctness, Prettier for presentation.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →