

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1<!--2Guidance for AI agents working in the Selenium monorepo.3Language-specific details live in respective subdirectories.4-->5## Overview67Selenium is a Bazel-built monorepo implementing the W3C WebDriver (and related) protocols,8shipping multiple language bindings plus Grid and Selenium Manager.9The repository README is aimed at contributors; end-user docs live elsewhere.1011### Local contributor customization12- The `.local/` directory is available for customization, generated artifacts, scratch work, and temporary files. It is ignored by Git except for `.local/README.md`.13- A contributor may create `.local/AGENTS.md` for personal repo-specific instructions and preferences. Before beginning any task, check whether `.local/AGENTS.md` exists; if it exists, read it with your file-reading tool and apply it as the contributor's local instruction overlay.14- If `.local/agent/skills/` exists, inspect its `*/SKILL.md` files and treat them as additional user-defined skills.1516## Invariants (don't violate unless explicitly asked)17- Maintain API/ABI compatibility by default (users upgrade by changing only the version number); public functionality may be removed only after it has gone through the [Deprecation policy](#deprecation-policy) below18- Avoid repo-wide refactors/formatting; prefer small, reversible diffs1920## Toolchain21- The project uses Bazelisk with a hermetic Bazel toolset. Do not run tests or execute Selenium code assuming a language-specific local development environment is configured.22- Rakefile tasks are executed with a bundled jruby wrapped with `go`/`go.bat` and frequently used by CI jobs23- Prefer targeted Bazel commands; use `bazel query ...` to locate labels before build/test2425## Execution model26- Use `bazel query` to explore build graph before reading files27- Attempt to execute Bazel commands directly. If prevented due to network/toolchain restrictions within the sandbox, fall back to suggesting copy/paste commands for the user on a separate line.28- When the default output directory is restricted or when working in a git worktree, isolate build output with `--output_base`. It is a startup flag, so it goes *before* the command, and anchor it to the worktree root so it resolves the same from any directory: `bazel --output_base="$(git rev-parse --show-toplevel)/.local/output-base" build //...` (not after `build`/`test`/`query`).2930## Repo layout31Bindings (see `AGENTS.md` in each directory for language-specific details):32- Java: `java/`33- Python: `py/`34- Ruby: `rb/`35- JavaScript: `javascript/selenium-webdriver/`36- .NET: `dotnet/`3738Shared/high-risk areas:39- `rust/` (Selenium Manager, see `rust/AGENTS.md`)40- `common/` (build/test wiring; affects multiple areas)41- `common/src/` (test HTML fixtures)42- `javascript/atoms/` (shared JS atoms; high blast radius)43- `scripts/`, `rake_tasks/`, `.github/`, `Rakefile` (tooling/build)44- `third_party/` treat as read-only45- `bazel-*/` treat as generated output4647## Cross-binding consistency checks48When changing user-visible behavior, compare with at least one other binding:49- Example: `rg <term> java/ py/ rb/ dotnet/ javascript/selenium-webdriver/`5051If behavior is shared/low-level (protocol, serialization, "remote"/transport), suggest follow-up parity work or to file an issue5253## Testing54When implementing solutions prefer writing a test for it first55Prefer small (unit) tests over browser tests for speed/reliability56Avoid mocks—they can misrepresent API contracts5758Useful flags:59- `--test_size_filters=small` (unit tests only)60- `--test_output=all` (display console output)61- `--cache_test_results=no` (force re-run)62See language-specific AGENTS.md for applicable testing usage6364## Logging65Add logging where users may need insight into what's happening66See language-specific AGENTS.md for applicable logging usage6768## Deprecation policy69This project does not follow semantic versioning (semver); before removing public functionality, mark it as deprecated with a message pointing to the alternative.70See language-specific AGENTS.md for applicable deprecation usage7172## General Guidelines73- Comments should explain *why*, not *what* - prefer well-named methods over comments74- PRs should focus on one thing; we squash PRs to default `trunk` branch75- Prefer copying files to deleting and recreating to maintain git history76- Avoid running `bazel clean --expunge`77- Formatting:78 - `./scripts/format.sh` without arguments will run everything similar to running `./go format` but with failure information; With `--pre-commit` flag it only checks staged changes; With `--pre-push` flag it only checks committed changes with trunk.79 - If `./scripts/format.sh` is already referenced in a pre-commit or pre-push hook, let the hooks handle formatting80 - If not, run or suggest `./scripts/format.sh --pre-push` before pushing to avoid CI formatter failures8182## High risk changes (request verification before modifying unless explicitly instructed)83- Everything referenced above as high risk84- WebDriver/BiDi semantics, capability parsing, wire-level behavior85- Dependency updates / `MODULE.bazel` / repin flows86- Grid routing/distributor/queue logic8788## After making code changes89- Call out any high risk areas touched90- Note cross-binding impact and any follow-up issues needed9192## Reviewing pull requests93See `.github/pr_review.md` for agentic review priorities and scope.94
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| SeleniumHQ/seleniumjava/AGENTS.md · 34k | AGENTS.md | teststyledocs | 58/100 | 14 days ago | |
| SeleniumHQ/seleniumrb/AGENTS.md · 34k | AGENTS.md | teststyletypestesting-strategy+2 | 58/100 | 14 days ago | |
| SeleniumHQ/seleniumdotnet/AGENTS.md · 34k | AGENTS.md | teststyledocs | 73/100 | 9 days ago | |
| SeleniumHQ/seleniumpy/AGENTS.md · 34k | AGENTS.md | teststyletypesdeployment+2 | 80/100 | 14 days ago | |
| SeleniumHQ/seleniumrust/AGENTS.md · 34k | AGENTS.md | teststyledocs | 44/100 | 14 days ago | |
| SeleniumHQ/seleniumjavascript/selenium-webdriver/AGENTS.md · 34k | AGENTS.md | teststyledocs | 44/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| mui/material-uiAGENTS.md · 99k | AGENTS.md | setupbuildtestlint-format+9 | 100/100 | 14 days ago | |
| elastic/elasticsearchx-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/AGENTS.md · 78k | AGENTS.md | buildtestlint-formatstyle+2 | 100/100 | 14 days ago | |
| code-yeongyu/oh-my-openagentpackages/web/AGENTS.md · 68k | AGENTS.md | setupbuildtestlint-format+6 | 100/100 | 13 days ago | |
| TryGhost/Ghoste2e/AGENTS.md · 55k | AGENTS.md | setupteststylearch+2 | 100/100 | today | |
| n8n-io/n8npackages/@n8n/agents/AGENTS.md · 201k | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| duckduckgo/content-scope-scriptsspecial-pages/AGENTS.md · 70 | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| deepseek-ai/deepseek-harnessnative/landlock-run/AGENTS.md · 104k | AGENTS.md | setupteststylearch+3 | 100/100 | today | |
| rails/railsAGENTS.md · 59k | AGENTS.md | teststylearchgit+4 | 100/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/seleniumhq-selenium-agents)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.