# Extension points — oxc-project/oxc

> Canonical page: https://codevetter.com/unpack/oxc/extension-points

# Extension points — oxc-project/oxc

Scanned commit 7f65b757df7c3225320d8f7e051e64873f80f988 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Extensions attach to explicit Rust traits, generated registries, callback interfaces, and dispatch tables. Native lint rules and JavaScript lint plugins enter through different mechanisms. Formatter integration owns language routing and host services, while language crates implement formatting. Compiler hooks and filesystem abstractions provide composition points without requiring changes to application startup.
- Native lint rules implement Rule hooks for configuration, AST nodes, whole-file analysis, Jest/Vitest nodes, and per-file should_run selection. — [crates/oxc_linter/src/rule.rs#L19-75](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_linter/src/rule.rs#L19-L75)
- Rule metadata is declared with declare_oxc_lint, as demonstrated by NoDebugger; the generated rule enum identifies cargo lintgen as its regeneration command. — [crates/oxc_linter/src/rules/eslint/no_debugger.rs#L45-51](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_linter/src/rules/eslint/no_debugger.rs#L45-L51) [crates/oxc_linter/src/generated/rules_enum.rs#L1-13](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_linter/src/generated/rules_enum.rs#L1-L13)
- External lint plugins supply workspace create/destroy, plugin loading, rule configuration, and per-file lint callbacks carrying rule IDs, options IDs, settings, globals, and allocator access. — [crates/oxc_linter/src/external_linter.rs#L15-67](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_linter/src/external_linter.rs#L15-L67) [crates/oxc_linter/src/lib.rs#L78-84](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_linter/src/lib.rs#L78-L84)
- RuntimeFileSystem is an injection boundary for reading and writing linted files; LintService accepts it for filesystem linting, source linting, and parse-diagnostic collection. — [crates/oxc_linter/src/service/runtime.rs#L184-203](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_linter/src/service/runtime.rs#L184-L203) [crates/oxc_linter/src/service/mod.rs#L74-106](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_linter/src/service/mod.rs#L74-L106)
- Whole-file formatter support plugs into classify_file_kind and FormatStrategy::from_format_config; classification returns None for excluded or unsupported targets and gates Prettier strategies on napi. — [apps/oxfmt/src/core/support.rs#L15-91](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/apps/oxfmt/src/core/support.rs#L15-L91) [apps/oxfmt/src/core/format.rs#L138-169](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/apps/oxfmt/src/core/format.rs#L138-L169)
- Embedded language support plugs into route and dispatcher assembly; aliases resolve centrally, with typed Native, Prettier, and Unsupported outcomes. — [apps/oxfmt/src/core/embed/dispatcher.rs#L76-105](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/apps/oxfmt/src/core/embed/dispatcher.rs#L76-L105)
- Language-server tools implement ToolBuilder::build and Tool methods for configuration, watchers, commands, code actions, formatting, and diagnostic lifecycle behavior. — [crates/oxc_language_server/src/tool.rs#L11-58](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_language_server/src/tool.rs#L11-L58) [crates/oxc_language_server/src/tool.rs#L60-106](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_language_server/src/tool.rs#L60-L106) [crates/oxc_language_server/src/tool.rs#L110-138](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_language_server/src/tool.rs#L110-L138)
- CompilerInterface exposes stage options and after_parse/after_semantic/after_transform hooks with early termination; formatter test consumers separately implement FixtureFormatter with language-owned options and fingerprints. — [crates/oxc/src/compiler.rs#L54-125](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc/src/compiler.rs#L54-L125) [crates/oxc_formatter_tests/src/harness.rs#L85-94](https://github.com/oxc-project/oxc/blob/7f65b757df7c3225320d8f7e051e64873f80f988/crates/oxc_formatter_tests/src/harness.rs#L85-L94)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
