01 / Verification by change type
Choose verification by crate
The testing section distinguishes parser conformance, inline linter cases, minifier size snapshots, and Node binding tests. A single successful Rust test command is therefore not presented as coverage for every tool.
Source excerpt starting at line 169.169- **Conformance only** via `tasks/coverage`170- **Command**: `cargo coverage -- parser`171- **Suites**: Test262, Babel, TypeScript
02 / Behavioral framing
Explain an empty search result before it misleads
External suites are cloned by scripts and excluded from Git. The file warns that ripgrep respects those ignore rules and supplies the flag needed to search the actual cases.
Source excerpt starting at line 273.273NOTE: These suites are script-cloned and fully gitignored. ripgrep respects `.gitignore`, so a plain `rg` inside them silently returns nothing.274Use `rg --no-ignore` (or `-u`) when searching them.
03 / Generated file guards
Keep generated rule metadata and timing data together
Linter code-generation changes require two commands rather than a generic instruction to regenerate files. The rule names both the generator inputs and generated runner paths that trigger the pair.
Source excerpt starting at line 318.318When changing linter codegen files such as `tasks/linter_codegen/**` or generated linter rule runner files under `crates/oxc_linter/src/generated/`, run `cargo lintgen` and `cargo lint-timings` so generated rule metadata and linter timing data stay in sync.
04 / Router files
Delegate formatter details to the target crate
The shared guide points formatter work to the relevant crate's AGENTS.md. That keeps language-specific behavior and verification close to the implementation while the root remains a workspace map.
Source excerpt starting at line 189.189- Read the target crate's `AGENTS.md`; it includes the shared formatter policy plus language-specific rules and verification commands