Files
factorio-clusterio/AGENTS.md
T
bbassieandClaude Opus 5.5 e94abe51c9 Lint with Oxlint through Vite+ instead of ESLint
Replace ESLint, typescript-eslint, eslint-plugin-node and the flat
config helpers with vite-plus, which runs Oxlint for vp lint. The rules
are carried over from eslint.config.mjs by @oxlint/migrate into the lint
section of the root vite.config.ts. The formatting rules ESLint
deprecated run as @stylistic rules through Oxlint's JS plugin support,
and disable comments naming them are updated to the @stylistic names.

@stylistic understands TypeScript syntax that the core rules skipped,
so the autofix adds missing semicolons and spaces in type literals and
aliases. Leading | and & in multiline types stay where they were.

Oxlint's node/no-sync also reports identifiers ending in Sync that are
not calls. The test helper techSync is renamed and the two other names
are ignored.

Refs #1127

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 22:53:13 +00:00

2.7 KiB

Working on Clusterio

Clusterio manages distributed Factorio servers through a controller, hosts, and plugins.

Read contributing for the project map, setup, commands, debugging, tests, and code style. For PR reviews, follow the review guide, including its candidate ledger and final evidence audit. Use the detailed guides for the affected area:

Working rules

  • Inspect git status before editing. Preserve unrelated work and external plugin repositories; continue an existing task branch.
  • Read the relevant source and tests before changing behavior. If documentation and implementation disagree, report the discrepancy and distinguish observed behavior from intended policy. Update affected documentation in the same change.
  • Follow nearby code and the lint section of vite.config.ts: tabs, double quotes, semicolons, and .js extensions in relative TypeScript imports. Import shared public APIs through @clusterio/lib and check Node/browser exports when changing them.
  • Run commands from the root using the pinned pnpm version and the documented Node requirements. Install with pnpm install --no-frozen-lockfile; the lockfile is intentionally ignored.
  • pnpm build compiles TypeScript. It does not regenerate validators or production web bundles; use the appropriate package's prepare script. Edit sources, not generated outputs.
  • Start validation with focused tests, then run pnpm test and pnpm lint for code changes when possible. Root tests include integration setup even with fast/external exclusions. The harness needs Factorio, recreates temp/test/, and shares ports 8880/4443; do not run competing suites.
  • Report checks, failures, skips, and unverified behavior precisely. Documentation-only changes need path, command, and formatting checks.
  • Preview cleanup with node clean.js --dry-run; see the cleanup scopes. Runtime-data deletion and release publication require explicit authorization. Keep local configs, credentials, runtime data, and generated output out of commits.
  • Follow the PR template, including ### Changelog (None. when appropriate).