| # Agent Guidelines for Apache DataFusion | |
| ## Developer Documentation | |
| - [Quick Start Setup](docs/source/contributor-guide/development_environment.md#quick-start) | |
| - [Testing Quick Start](docs/source/contributor-guide/testing.md#testing-quick-start) | |
| - [Open Contribution and Assigning tickets](docs/source/contributor-guide/index.md#open-contribution-and-assigning-tickets) | |
| - [Choosing What Kind of Test to Write](docs/source/contributor-guide/testing.md#choosing-what-kind-of-test-to-write) | |
| - [Before Submitting a PR](docs/source/contributor-guide/index.md#before-submitting-a-pr) | |
| - [Reviewing Pull Requests](docs/source/contributor-guide/pr_review.md) | |
| - [Contributor Guide](docs/source/contributor-guide/index.md) | |
| - [Architecture Guide](docs/source/contributor-guide/architecture.md) | |
| ## Before Starting Work | |
| Before you start work on an issue, you MUST follow the instructions in | |
| [Open Contribution and Assigning tickets](docs/source/contributor-guide/index.md#open-contribution-and-assigning-tickets). You must ensure duplicate work is not being created. | |
| Do not create multiple PRs if this is your first time contributing. | |
| ## Before Committing | |
| Before committing any changes, you MUST follow the instructions in | |
| [Before Submitting a PR](docs/source/contributor-guide/index.md#before-submitting-a-pr) | |
| and ensure the required checks listed there pass. Do not commit code that | |
| fails any of those checks. | |
| At a minimum, you MUST run and fix any errors from these commands before | |
| committing: | |
| ```bash | |
| # Format code | |
| cargo fmt --all | |
| # Lint (must pass with no warnings) | |
| cargo clippy --all-targets --all-features -- -D warnings | |
| ``` | |
| You can also run the full lint suite used by CI: | |
| ```bash | |
| ./dev/rust_lint.sh | |
| # or auto-fix: ./dev/rust_lint.sh --write --allow-dirty | |
| ``` | |
| When creating a PR, you MUST follow the [PR template](.github/pull_request_template.md). | |
| ## Testing | |
| When adding tests, you MUST follow | |
| [Choosing What Kind of Test to Write](docs/source/contributor-guide/testing.md#choosing-what-kind-of-test-to-write): | |
| If documentation files changed then run | |
| ```bash | |
| ./ci/scripts/doc_prettier_check.sh --write --allow-dirty | |
| ``` | |
| Otherwise, run extended tests | |
| ```bash | |
| RUST_BACKTRACE=1 cargo test --profile ci \ | |
| --exclude datafusion-examples --exclude datafusion-benchmarks --exclude datafusion-cli \ | |
| --workspace --lib --tests --bins \ | |
| --features avro,json,backtrace,extended_tests,recursive_protection,parquet_encryption | |
| ``` | |
| For modified code identify local benchmarks(if any) and run them against `main`. See [Benchmarks](benchmarks/README.md). | |
| ## Agent Skills | |
| Repository-specific agent skills live under `.ai/skills/`. Each subdirectory is | |
| a single skill with a `SKILL.md` (YAML frontmatter + body). Check that | |
| directory for applicable skills before working on a task; new skills go in | |
| `.ai/skills/<skill-name>/SKILL.md`. |