{"owner":"SeleniumHQ","repo":"selenium","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"<!--\nGuidance for AI agents working in the Selenium monorepo.\nLanguage-specific details live in respective subdirectories.\n-->\n## Overview\n\nSelenium is a Bazel-built monorepo implementing the W3C WebDriver (and related) protocols,\nshipping multiple language bindings plus Grid and Selenium Manager.\nThe repository README is aimed at contributors; end-user docs live elsewhere.\n\n### Local contributor customization\n- The `.local/` directory is available for customization, generated artifacts, scratch work, and temporary files. It is ignored by Git except for `.local/README.md`.\n- 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.\n- If `.local/agent/skills/` exists, inspect its `*/SKILL.md` files and treat them as additional user-defined skills.\n\n## Invariants (don't violate unless explicitly asked)\n- 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) below\n- Avoid repo-wide refactors/formatting; prefer small, reversible diffs\n\n## Toolchain\n- 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.\n- Rakefile tasks are executed with a bundled jruby wrapped with `go`/`go.bat` and frequently used by CI jobs\n- Prefer targeted Bazel commands; use `bazel query ...` to locate labels before build/test\n\n## Execution model\n- Use `bazel query` to explore build graph before reading files\n- 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.\n- 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`).\n\n## Repo layout\nBindings (see `AGENTS.md` in each directory for language-specific details):\n- Java: `java/`\n- Python: `py/`\n- Ruby: `rb/`\n- JavaScript: `javascript/selenium-webdriver/`\n- .NET: `dotnet/`\n\nShared/high-risk areas:\n- `rust/` (Selenium Manager, see `rust/AGENTS.md`)\n- `common/` (build/test wiring; affects multiple areas)\n- `common/src/` (test HTML fixtures)\n- `javascript/atoms/` (shared JS atoms; high blast radius)\n- `scripts/`, `rake_tasks/`, `.github/`, `Rakefile` (tooling/build)\n- `third_party/` treat as read-only\n- `bazel-*/` treat as generated output\n\n## Cross-binding consistency checks\nWhen changing user-visible behavior, compare with at least one other binding:\n- Example: `rg <term> java/ py/ rb/ dotnet/ javascript/selenium-webdriver/`\n\nIf behavior is shared/low-level (protocol, serialization, \"remote\"/transport), suggest follow-up parity work or to file an issue\n\n## Testing\nWhen implementing solutions prefer writing a test for it first \nPrefer small (unit) tests over browser tests for speed/reliability\nAvoid mocks—they can misrepresent API contracts\n\nUseful flags:\n- `--test_size_filters=small` (unit tests only)\n- `--test_output=all` (display console output)\n- `--cache_test_results=no` (force re-run)\nSee language-specific AGENTS.md for applicable testing usage\n\n## Logging\nAdd logging where users may need insight into what's happening\nSee language-specific AGENTS.md for applicable logging usage\n\n## Deprecation policy\nThis project does not follow semantic versioning (semver); before removing public functionality, mark it as deprecated with a message pointing to the alternative.\nSee language-specific AGENTS.md for applicable deprecation usage\n\n## General Guidelines\n- Comments should explain *why*, not *what* - prefer well-named methods over comments\n- PRs should focus on one thing; we squash PRs to default `trunk` branch\n- Prefer copying files to deleting and recreating to maintain git history\n- Avoid running `bazel clean --expunge`\n- Formatting: \n  - `./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.\n  - If `./scripts/format.sh` is already referenced in a pre-commit or pre-push hook, let the hooks handle formatting \n  - If not, run or suggest `./scripts/format.sh --pre-push` before pushing to avoid CI formatter failures\n\n## High risk changes (request verification before modifying unless explicitly instructed)\n- Everything referenced above as high risk\n- WebDriver/BiDi semantics, capability parsing, wire-level behavior\n- Dependency updates / `MODULE.bazel` / repin flows\n- Grid routing/distributor/queue logic\n\n## After making code changes\n- Call out any high risk areas touched\n- Note cross-binding impact and any follow-up issues needed\n\n## Reviewing pull requests\nSee `.github/pr_review.md` for agentic review priorities and scope.\n"},"files":{"AGENTS.md":"<!--\nGuidance for AI agents working in the Selenium monorepo.\nLanguage-specific details live in respective subdirectories.\n-->\n## Overview\n\nSelenium is a Bazel-built monorepo implementing the W3C WebDriver (and related) protocols,\nshipping multiple language bindings plus Grid and Selenium Manager.\nThe repository README is aimed at contributors; end-user docs live elsewhere.\n\n### Local contributor customization\n- The `.local/` directory is available for customization, generated artifacts, scratch work, and temporary files. It is ignored by Git except for `.local/README.md`.\n- 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.\n- If `.local/agent/skills/` exists, inspect its `*/SKILL.md` files and treat them as additional user-defined skills.\n\n## Invariants (don't violate unless explicitly asked)\n- 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) below\n- Avoid repo-wide refactors/formatting; prefer small, reversible diffs\n\n## Toolchain\n- 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.\n- Rakefile tasks are executed with a bundled jruby wrapped with `go`/`go.bat` and frequently used by CI jobs\n- Prefer targeted Bazel commands; use `bazel query ...` to locate labels before build/test\n\n## Execution model\n- Use `bazel query` to explore build graph before reading files\n- 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.\n- 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`).\n\n## Repo layout\nBindings (see `AGENTS.md` in each directory for language-specific details):\n- Java: `java/`\n- Python: `py/`\n- Ruby: `rb/`\n- JavaScript: `javascript/selenium-webdriver/`\n- .NET: `dotnet/`\n\nShared/high-risk areas:\n- `rust/` (Selenium Manager, see `rust/AGENTS.md`)\n- `common/` (build/test wiring; affects multiple areas)\n- `common/src/` (test HTML fixtures)\n- `javascript/atoms/` (shared JS atoms; high blast radius)\n- `scripts/`, `rake_tasks/`, `.github/`, `Rakefile` (tooling/build)\n- `third_party/` treat as read-only\n- `bazel-*/` treat as generated output\n\n## Cross-binding consistency checks\nWhen changing user-visible behavior, compare with at least one other binding:\n- Example: `rg <term> java/ py/ rb/ dotnet/ javascript/selenium-webdriver/`\n\nIf behavior is shared/low-level (protocol, serialization, \"remote\"/transport), suggest follow-up parity work or to file an issue\n\n## Testing\nWhen implementing solutions prefer writing a test for it first \nPrefer small (unit) tests over browser tests for speed/reliability\nAvoid mocks—they can misrepresent API contracts\n\nUseful flags:\n- `--test_size_filters=small` (unit tests only)\n- `--test_output=all` (display console output)\n- `--cache_test_results=no` (force re-run)\nSee language-specific AGENTS.md for applicable testing usage\n\n## Logging\nAdd logging where users may need insight into what's happening\nSee language-specific AGENTS.md for applicable logging usage\n\n## Deprecation policy\nThis project does not follow semantic versioning (semver); before removing public functionality, mark it as deprecated with a message pointing to the alternative.\nSee language-specific AGENTS.md for applicable deprecation usage\n\n## General Guidelines\n- Comments should explain *why*, not *what* - prefer well-named methods over comments\n- PRs should focus on one thing; we squash PRs to default `trunk` branch\n- Prefer copying files to deleting and recreating to maintain git history\n- Avoid running `bazel clean --expunge`\n- Formatting: \n  - `./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.\n  - If `./scripts/format.sh` is already referenced in a pre-commit or pre-push hook, let the hooks handle formatting \n  - If not, run or suggest `./scripts/format.sh --pre-push` before pushing to avoid CI formatter failures\n\n## High risk changes (request verification before modifying unless explicitly instructed)\n- Everything referenced above as high risk\n- WebDriver/BiDi semantics, capability parsing, wire-level behavior\n- Dependency updates / `MODULE.bazel` / repin flows\n- Grid routing/distributor/queue logic\n\n## After making code changes\n- Call out any high risk areas touched\n- Note cross-binding impact and any follow-up issues needed\n\n## Reviewing pull requests\nSee `.github/pr_review.md` for agentic review priorities and scope.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"<!--\nGuidance for AI agents working in the Selenium monorepo.\nLanguage-specific details live in respective subdirectories.\n-->\n## Overview\n\nSelenium is a Bazel-built monorepo implementing the W3C WebDriver (and related) protocols,\nshipping multiple language bindings plus Grid and Selenium Manager.\nThe repository README is aimed at contributors; end-user docs live elsewhere.\n\n### Local contributor customization\n- The `.local/` directory is available for customization, generated artifacts, scratch work, and temporary files. It is ignored by Git except for `.local/README.md`.\n- 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.\n- If `.local/agent/skills/` exists, inspect its `*/SKILL.md` files and treat them as additional user-defined skills.\n\n## Invariants (don't violate unless explicitly asked)\n- 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) below\n- Avoid repo-wide refactors/formatting; prefer small, reversible diffs\n\n## Toolchain\n- 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.\n- Rakefile tasks are executed with a bundled jruby wrapped with `go`/`go.bat` and frequently used by CI jobs\n- Prefer targeted Bazel commands; use `bazel query ...` to locate labels before build/test\n\n## Execution model\n- Use `bazel query` to explore build graph before reading files\n- 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.\n- 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`).\n\n## Repo layout\nBindings (see `AGENTS.md` in each directory for language-specific details):\n- Java: `java/`\n- Python: `py/`\n- Ruby: `rb/`\n- JavaScript: `javascript/selenium-webdriver/`\n- .NET: `dotnet/`\n\nShared/high-risk areas:\n- `rust/` (Selenium Manager, see `rust/AGENTS.md`)\n- `common/` (build/test wiring; affects multiple areas)\n- `common/src/` (test HTML fixtures)\n- `javascript/atoms/` (shared JS atoms; high blast radius)\n- `scripts/`, `rake_tasks/`, `.github/`, `Rakefile` (tooling/build)\n- `third_party/` treat as read-only\n- `bazel-*/` treat as generated output\n\n## Cross-binding consistency checks\nWhen changing user-visible behavior, compare with at least one other binding:\n- Example: `rg <term> java/ py/ rb/ dotnet/ javascript/selenium-webdriver/`\n\nIf behavior is shared/low-level (protocol, serialization, \"remote\"/transport), suggest follow-up parity work or to file an issue\n\n## Testing\nWhen implementing solutions prefer writing a test for it first \nPrefer small (unit) tests over browser tests for speed/reliability\nAvoid mocks—they can misrepresent API contracts\n\nUseful flags:\n- `--test_size_filters=small` (unit tests only)\n- `--test_output=all` (display console output)\n- `--cache_test_results=no` (force re-run)\nSee language-specific AGENTS.md for applicable testing usage\n\n## Logging\nAdd logging where users may need insight into what's happening\nSee language-specific AGENTS.md for applicable logging usage\n\n## Deprecation policy\nThis project does not follow semantic versioning (semver); before removing public functionality, mark it as deprecated with a message pointing to the alternative.\nSee language-specific AGENTS.md for applicable deprecation usage\n\n## General Guidelines\n- Comments should explain *why*, not *what* - prefer well-named methods over comments\n- PRs should focus on one thing; we squash PRs to default `trunk` branch\n- Prefer copying files to deleting and recreating to maintain git history\n- Avoid running `bazel clean --expunge`\n- Formatting: \n  - `./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.\n  - If `./scripts/format.sh` is already referenced in a pre-commit or pre-push hook, let the hooks handle formatting \n  - If not, run or suggest `./scripts/format.sh --pre-push` before pushing to avoid CI formatter failures\n\n## High risk changes (request verification before modifying unless explicitly instructed)\n- Everything referenced above as high risk\n- WebDriver/BiDi semantics, capability parsing, wire-level behavior\n- Dependency updates / `MODULE.bazel` / repin flows\n- Grid routing/distributor/queue logic\n\n## After making code changes\n- Call out any high risk areas touched\n- Note cross-binding impact and any follow-up issues needed\n\n## Reviewing pull requests\nSee `.github/pr_review.md` for agentic review priorities and scope.\n","category":"root","tokens":1342}]}