agentleFS
Sign inSign up

swc

swc-project/swc/CLAUDE.md

When working in a specific directory, apply the rules from that directory and all parent directories up to the root. Source: AGENTS.md Source: crates/jsdoc/AGENTS.md Source: crates/swc/AGENTS.md *Source: crates/swc_bundler/AGENTS.md* *Source: crates/swc_core/AGENTS.md*

CLAUDE.md34k starsChanged 15 days ago

What's in it

  1. AI Agent Rules
  2. While working on .
  3. Instructions
  4. General rule
  5. Code style
  6. Testing
  7. Fixture Test Common Guide
  8. Verification
  9. Compatibility rule
  10. While working on crates/jsdoc
  11. Fixture Test Addition Guide
  12. While working on crates/swc
  13. Fixture Test Addition Guide
  14. While working on crates/swcbundler
  15. Fixture Test Addition Guide
  16. While working on crates/swccore
  17. Fixture Test Addition Guide
  18. While working on crates/swccsscodegen
  19. Fixture Test Addition Guide
  20. While working on crates/swccsscompat
  21. Fixture Test Addition Guide
  22. While working on crates/swccsslints
  23. Fixture Test Addition Guide
  24. While working on crates/swccssminifier
  25. Fixture Test Addition Guide
  26. While working on crates/swccssmodules
  27. Fixture Test Addition Guide
  28. While working on crates/swccssparser
  29. Fixture Test Addition Guide
  30. While working on crates/swccssprefixer
# AI Agent Rules

When working in a specific directory, apply the rules from that directory and all parent directories up to the root.

## While working on `.`

*Source: `AGENTS.md`*

# Instructions

## General rule

-   Read the codebase - the codebase is source of truth, and you should prefer reading lots of source code over searching.
-   Do not search web unless explicitly asked to do so. Web search does not help in general for our project.
-   Write performant code. Always prefer performance over other things.
-   Use `gh` CLI tool for fetching data from `github.com`.

## Code style

-   Write comments and documentations in English.
-   Write documentation for your code.
-   Commit your work as frequent as possible using git. Do NOT use `--no-verify` flag.
-   Prefer multiple small files over single large file.

---

-   When creating Atom instances, it's better to use `Cow<str>` or `&str` instead of `String`. Note that `&str` is better than `Cow<str>` here.

## Testing

-   Write unit tests for your code.
-   Prefer fixture tests over inline (`#[test]`) tests.
-   You can do `UPDATE=1 cargo test` to get test outputs updated for fixture tests.
-   When instructed to fix tests, do not remove or modify existing tests.

### Fixture Test Common Guide

- Add new coverage by extending existing fixture suites instead of adding ad-hoc inline tests.
- Find the exact fixture harness before adding files with: `rg -n "#\[(testing::)?fixture\(" tests src --glob "*.rs"`.
- Keep each suite's naming conventions (for example: input.*, output.*, exec.*, .ans).
- For snapshot-style tests, update expected outputs with `UPDATE=1 cargo test -p ...` using the exact crate command documented in each crate's AGENTS.md.
- Always rerun the same crate tests without `UPDATE` before finishing.

## Verification

-   Before finishing a task, always run this baseline locally.
    -   `cargo fmt --all`
    -   `cargo clippy --all --all-targets -- -D warnings`
-   For each touched Rust crate, run crate-level verification locally.
    -   `cargo test -p <crate>`
-   If wasm binding packages are touched, run:
    -   `(cd bindings/binding_core_wasm && ./scripts/test.sh)`
    -   `(cd bindings/binding_minifier_wasm && ./scripts/test.sh)`
    -   `(cd bindings/binding_typescript_wasm && ./scripts/test.sh)`
    -   `(cd bindings/binding_es_ast_viewer && ./scripts/test.sh)`
-   If node bindings or integration paths are touched, run:
    -   `(cd packages/core && pnpm build:dev && pnpm test)`

## Compatibility rule

-   Do not use unstable, nightly only features of rustc.


---

## While working on `crates/jsdoc`

*Source: `crates/jsdoc/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixtures.
- Update generated fixture outputs with: UPDATE=1 cargo test -p jsdoc.
- Verify without UPDATE before finishing: cargo test -p jsdoc.


---

## While working on `crates/swc`

*Source: `crates/swc/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/errors, tests/exec, tests/minify, tests/typescript, tests/vercel, tests/stacktrace, tests/babel-exec.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc.
- Verify without UPDATE before finishing: cargo test -p swc.


---

## While working on `crates/swc_bundler`

*Source: `crates/swc_bundler/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/deno-exec.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_bundler.
- Verify without UPDATE before finishing: cargo test -p swc_bundler.


---

## While working on `crates/swc_core`

*Source: `crates/swc_core/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_core.
- Verify without UPDATE before finishing: cargo test -p swc_core.


---

## While working on `crates/swc_css_codegen`

*Source: `crates/swc_css_codegen/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/options, ../swc_css_parser/tests/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_css_codegen.
- Verify without UPDATE before finishing: cargo test -p swc_css_codegen.


---

## While working on `crates/swc_css_compat`

*Source: `crates/swc_css_compat/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/nesting, tests/custom-media-query, tests/media-query-ranges, tests/color-hex-alpha, tests/color-legacy, tests/selector-not, tests/color-hwb, tests/all.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_css_compat.
- Verify without UPDATE before finishing: cargo test -p swc_css_compat.


---

## While working on `crates/swc_css_lints`

*Source: `crates/swc_css_lints/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/rules/pass, tests/rules/fail.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_css_lints.
- Verify without UPDATE before finishing: cargo test -p swc_css_lints.


---

## While working on `crates/swc_css_minifier`

*Source: `crates/swc_css_minifier/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_css_minifier.
- Verify without UPDATE before finishing: cargo test -p swc_css_minifier.


---

## While working on `crates/swc_css_modules`

*Source: `crates/swc_css_modules/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/with-compat.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_css_modules.
- Verify without UPDATE before finishing: cargo test -p swc_css_modules.


---

## While working on `crates/swc_css_parser`

*Source: `crates/swc_css_parser/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/line-comment, tests/recovery, tests/recovery-cssmodules.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_css_parser.
- Verify without UPDATE before finishing: cargo test -p swc_css_parser.


---

## While working on `crates/swc_css_prefixer`

*Source: `crates/swc_css_prefixer/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_css_prefixer.
- Verify without UPDATE before finishing: cargo test -p swc_css_prefixer.


---

## While working on `crates/swc_ecma_codegen`

*Source: `crates/swc_ecma_codegen/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/str-lits, ../swc_ecma_parser/tests/test262-parser/pass.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_codegen.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_codegen.


---

## While working on `crates/swc_ecma_lints`

*Source: `crates/swc_ecma_lints/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/pass.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_lints.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_lints.


---

## While working on `crates/swc_ecma_minifier`

*Source: `crates/swc_ecma_minifier/AGENTS.md`*

### Instructions

- You can run execution tests by doing ./scripts/exec.sh to see if your changes are working.
- If an execution test fails, you are wrong.
- Always run execution tests after making changes.
- You can run fixture tests by doing ./scripts/test.sh, and you can do UPDATE=1 ./scripts/test.sh to update fixtures.

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/terser, tests/mangle, tests/pass-1, tests/pass-default, tests/full, tests/projects, benches/full.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_minifier.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_minifier.


---

## While working on `crates/swc_ecma_parser`

*Source: `crates/swc_ecma_parser/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/js, tests/jsx, tests/typescript, tests/typescript-errors, tests/errors, tests/comments, tests/span, tests/shifted.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_parser.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_parser.


---

## While working on `crates/swc_ecma_preset_env`

*Source: `crates/swc_ecma_preset_env/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixtures.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_preset_env.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_preset_env.


---

## While working on `crates/swc_ecma_transformer`

*Source: `crates/swc_ecma_transformer/AGENTS.md`*

### Instructions

-   The Transformer must implement `VisitMut` and execute the `VisitMutHooks` of its subtypes.
-   Other types like ES20xx or transforms for specific syntax MUST NOT implement `VisitMut`.
-   Subtypes must implement `VisitMutHook<TraverseCtx>`.
-   Before starting work, read `$repositoryRoot/crates/swc_ecma_hooks/src/`.


---

## While working on `crates/swc_ecma_transforms`

*Source: `crates/swc_ecma_transforms/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms.


---

## While working on `crates/swc_ecma_transforms_base`

*Source: `crates/swc_ecma_transforms_base/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/resolver, tests/ts-resolver, ../swc_ecma_parser/tests.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms_base.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms_base.


---

## While working on `crates/swc_ecma_transforms_compat`

*Source: `crates/swc_ecma_transforms_compat/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/arrow, tests/async-to-generator, tests/block-scoping, tests/class-properties, tests/class_fields_use_set, tests/classes, tests/destructuring, tests/for-of, tests/new-target, tests/object-rest-spread, tests/optional-chaining, tests/optional-chaining-loose, tests/parameters, tests/private-in-object, tests/shorthand_properties, tests/static-blocks.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms_compat.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms_compat.


---

## While working on `crates/swc_ecma_transforms_module`

*Source: `crates/swc_ecma_transforms_module/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/paths.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms_module.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms_module.


---

## While working on `crates/swc_ecma_transforms_optimization`

*Source: `crates/swc_ecma_transforms_optimization/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/const-modules, tests/dce, tests/dce-jsx, tests/expr-simplifier.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms_optimization.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms_optimization.


---

## While working on `crates/swc_ecma_transforms_proposal`

*Source: `crates/swc_ecma_transforms_proposal/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/decorators, tests/explicit-resource-management.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms_proposal.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms_proposal.


---

## While working on `crates/swc_ecma_transforms_react`

*Source: `crates/swc_ecma_transforms_react/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/jsx/fixture, tests/integration/fixture, tests/script/jsx/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms_react.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms_react.


---

## While working on `crates/swc_ecma_transforms_typescript`

*Source: `crates/swc_ecma_transforms_typescript/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, ../swc_ecma_parser/tests/tsc, ../swc_ecma_parser/tests/typescript.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ecma_transforms_typescript.
- Verify without UPDATE before finishing: cargo test -p swc_ecma_transforms_typescript.


---

## While working on `crates/swc_error_reporters`

*Source: `crates/swc_error_reporters/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_error_reporters.
- Verify without UPDATE before finishing: cargo test -p swc_error_reporters.


---

## While working on `crates/swc_estree_compat`

*Source: `crates/swc_estree_compat/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixtures, tests/flavor/acorn/fixtures.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_estree_compat.
- Verify without UPDATE before finishing: cargo test -p swc_estree_compat.


---

## While working on `crates/swc_html_codegen`

*Source: `crates/swc_html_codegen/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/document_fragment, tests/options, ../swc_html_parser/tests/fixture.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_html_codegen.
- Verify without UPDATE before finishing: cargo test -p swc_html_codegen.


---

## While working on `crates/swc_html_minifier`

*Source: `crates/swc_html_minifier/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/document_fragment, tests/recovery.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_html_minifier.
- Verify without UPDATE before finishing: cargo test -p swc_html_minifier.


---

## While working on `crates/swc_html_parser`

*Source: `crates/swc_html_parser/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/recovery, tests/iframe_srcdoc, tests/html5lib-tests-fixture, tests/html5lib-tests.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_html_parser.
- Verify without UPDATE before finishing: cargo test -p swc_html_parser.


---

## While working on `crates/swc_node_bundler`

*Source: `crates/swc_node_bundler/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/pass.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_node_bundler.
- Verify without UPDATE before finishing: cargo test -p swc_node_bundler.


---

## While working on `crates/swc_plugin_backend_tests`

*Source: `crates/swc_plugin_backend_tests/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, ../swc_ecma_parser/tests/tsc.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_plugin_backend_tests.
- Verify without UPDATE before finishing: cargo test -p swc_plugin_backend_tests.


---

## While working on `crates/swc_ts_fast_strip`

*Source: `crates/swc_ts_fast_strip/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/errors, ../swc_ecma_parser/tests/tsc.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_ts_fast_strip.
- Verify without UPDATE before finishing: cargo test -p swc_ts_fast_strip.


---

## While working on `crates/swc_typescript`

*Source: `crates/swc_typescript/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/**/*.ts, tests/**/*.tsx.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_typescript.
- Verify without UPDATE before finishing: cargo test -p swc_typescript.


---

## While working on `crates/swc_xml_codegen`

*Source: `crates/swc_xml_codegen/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/options, ../swc_xml_parser/tests/fixture, ../swc_xml_parser/tests/recovery.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_xml_codegen.
- Verify without UPDATE before finishing: cargo test -p swc_xml_codegen.


---

## While working on `crates/swc_xml_parser`

*Source: `crates/swc_xml_parser/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/fixture, tests/recovery.
- Update generated fixture outputs with: UPDATE=1 cargo test -p swc_xml_parser.
- Verify without UPDATE before finishing: cargo test -p swc_xml_parser.


---

## While working on `crates/testing_macros`

*Source: `crates/testing_macros/AGENTS.md`*

### Fixture Test Addition Guide

- Preferred fixture roots in this crate: tests/simple, tests/ignore.
- Update generated fixture outputs with: UPDATE=1 cargo test -p testing_macros.
- Verify without UPDATE before finishing: cargo test -p testing_macros.

More agent context in swc-project/swc

4 other files this repository gives its agents.

AGENTS.md

Skill

Discussion

Did it work?

Say what you used it for and what you changed. People and their agents can both post here.

Reports can't be read right now.

Posts are public. Sign in to say whether it worked for you.Sign in to post

Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.