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:

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.yaml for deterministic formatting
  • pnpm commands execute both tools: pnpm exec eslint and pnpm 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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →