{"owner":"cypress-io","repo":"cypress","hasSkills":true,"totalSkillsCount":336,"totalTokensCount":117526,"categories":["root-instruction","claude-rule","anthropic-skill","plugin-manifest","cursor-rule"],"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md","CLAUDE.md",".claude/skills/building-cypress-binary/SKILL.md",".circleci/AGENTS.md",".claude/skills/debugging-cypress-artifacts/SKILL.md",".cursor/skills/server-mocha-to-vitest/SKILL.md","cli/AGENTS.md","cli/CLAUDE.md",".circleci/CLAUDE.md","npm/AGENTS.md","npm/CLAUDE.md","packages/AGENTS.md","packages/CLAUDE.md","scripts/AGENTS.md","scripts/CLAUDE.md","system-tests/AGENTS.md","system-tests/CLAUDE.md","tooling/AGENTS.md","tooling/CLAUDE.md",".claude/rules/generated-files.md",".claude/rules/runtime-floor-browser.md",".claude/rules/runtime-floor-user-node.md",".claude/rules/snapshots.md",".claude/rules/test-runner.md","packages/agent-info/AGENTS.md","packages/agent-info/CLAUDE.md","packages/agent-info/README.md","packages/agent-info/package.json","packages/agent-info/tsconfig.json","packages/app/.eslintrc.json","packages/app/AGENTS.md","packages/app/CLAUDE.md","packages/app/README.md","packages/app/package.json","packages/app/tsconfig.json","packages/config/AGENTS.md","packages/config/CLAUDE.md","packages/config/README.md","packages/config/package.json","packages/config/tsconfig.cjs.json","packages/config/tsconfig.esm.json","packages/config/tsconfig.json","packages/cypress-sessions/AGENTS.md","packages/cypress-sessions/CLAUDE.md","packages/cypress-sessions/package.json","packages/cypress-sessions/tsconfig.json","packages/data-context/AGENTS.md","packages/data-context/CLAUDE.md","packages/data-context/README.md","packages/data-context/package.json","packages/data-context/tsconfig.json","packages/data-context/tsconfig.test.json","packages/driver/AGENTS.md","packages/driver/CLAUDE.md","packages/driver/README.md","packages/driver/cross-origin-testing.md","packages/driver/package.json","packages/driver/tsconfig.json","packages/electron/AGENTS.md","packages/electron/CLAUDE.md","packages/electron/README.md","packages/electron/package.json","packages/electron/tsconfig.base.json","packages/electron/tsconfig.cjs.json","packages/electron/tsconfig.esm.json","packages/electron/tsconfig.json","packages/errors/AGENTS.md","packages/errors/CLAUDE.md","packages/errors/README.md","packages/errors/package.json","packages/errors/tsconfig.cjs.json","packages/errors/tsconfig.esm.json","packages/errors/tsconfig.json","packages/eslint-config/AGENTS.md","packages/eslint-config/CLAUDE.md","packages/eslint-config/README.md","packages/eslint-config/package.json","packages/eslint-config/tsconfig.json","packages/example/AGENTS.md","packages/example/CLAUDE.md","packages/example/README.md","packages/example/package.json","packages/example/tsconfig.json","packages/example/tsconfig.prod.json","packages/extension/AGENTS.md","packages/extension/CLAUDE.md","packages/extension/README.md","packages/extension/package.json","packages/extension/tsconfig.app.v2.json","packages/extension/tsconfig.app.v3.json","packages/extension/tsconfig.json","packages/extension/tsconfig.lib.json","packages/frontend-shared/.eslintrc.json","packages/frontend-shared/AGENTS.md","packages/frontend-shared/CLAUDE.md","packages/frontend-shared/README.md","packages/frontend-shared/package.json","packages/frontend-shared/tsconfig.json","packages/https-proxy/AGENTS.md","packages/https-proxy/CLAUDE.md","packages/https-proxy/README.md","packages/https-proxy/package.json","packages/https-proxy/tsconfig.cjs.json","packages/https-proxy/tsconfig.esm.json","packages/https-proxy/tsconfig.json","packages/icons/AGENTS.md","packages/icons/CLAUDE.md","packages/icons/package.json","packages/icons/readme.md","packages/icons/tsconfig.cjs.json","packages/icons/tsconfig.esm.json","packages/icons/tsconfig.json","packages/launcher/AGENTS.md","packages/launcher/CLAUDE.md","packages/launcher/README.md","packages/launcher/package.json","packages/launcher/tsconfig.json","packages/launchpad/.eslintrc.json","packages/launchpad/AGENTS.md","packages/launchpad/CLAUDE.md","packages/launchpad/README.md","packages/launchpad/package.json","packages/launchpad/tsconfig.json","packages/net-stubbing/AGENTS.md","packages/net-stubbing/CLAUDE.md","packages/net-stubbing/README.md","packages/net-stubbing/package.json","packages/net-stubbing/tsconfig.json","packages/network-interception/README.md","packages/network-interception/package.json","packages/network-interception/tsconfig.cjs.json","packages/network-interception/tsconfig.esm.json","packages/network-interception/tsconfig.json","packages/network-tools/AGENTS.md","packages/network-tools/CLAUDE.md","packages/network-tools/README.md","packages/network-tools/package.json","packages/network-tools/tsconfig.check.json","packages/network-tools/tsconfig.cjs.json","packages/network-tools/tsconfig.esm.json","packages/network-tools/tsconfig.json","packages/network/AGENTS.md","packages/network/CLAUDE.md","packages/network/README.md","packages/network/package.json","packages/network/tsconfig.cjs.json","packages/network/tsconfig.esm.json","packages/network/tsconfig.json","packages/packherd-require/AGENTS.md","packages/packherd-require/CLAUDE.md","packages/packherd-require/README.md","packages/packherd-require/package.json","packages/packherd-require/tsconfig.json","packages/proxy/AGENTS.md","packages/proxy/CLAUDE.md","packages/proxy/README.md","packages/proxy/package.json","packages/proxy/tsconfig.json","packages/reporter/.eslintrc.json","packages/reporter/AGENTS.md","packages/reporter/CLAUDE.md","packages/reporter/README.md","packages/reporter/package.json","packages/reporter/tsconfig.json","packages/resolve-dist/AGENTS.md","packages/resolve-dist/CLAUDE.md","packages/resolve-dist/README.md","packages/resolve-dist/package.json","packages/resolve-dist/tsconfig.cjs.json","packages/resolve-dist/tsconfig.esm.json","packages/resolve-dist/tsconfig.json","packages/root/AGENTS.md","packages/root/CLAUDE.md","packages/root/README.md","packages/root/package.json","packages/root/tsconfig.json","packages/runner/AGENTS.md","packages/runner/CLAUDE.md","packages/runner/README.md","packages/runner/package.json","packages/runner/tsconfig.json","packages/scaffold-config/AGENTS.md","packages/scaffold-config/CLAUDE.md","packages/scaffold-config/README.md","packages/scaffold-config/package.json","packages/scaffold-config/tsconfig.browser.json","packages/scaffold-config/tsconfig.cjs.json","packages/scaffold-config/tsconfig.esm.json","packages/scaffold-config/tsconfig.json","packages/server/AGENTS.md","packages/server/CLAUDE.md","packages/server/README.md","packages/server/package.json","packages/server/tsconfig.json","packages/socket/AGENTS.md","packages/socket/CLAUDE.md","packages/socket/README.md","packages/socket/package.json","packages/socket/tsconfig.browser.json","packages/socket/tsconfig.cjs.json","packages/socket/tsconfig.esm.json","packages/socket/tsconfig.json","packages/stderr-filtering/AGENTS.md","packages/stderr-filtering/CLAUDE.md","packages/stderr-filtering/README.md","packages/stderr-filtering/package.json","packages/stderr-filtering/tsconfig.json","packages/telemetry/AGENTS.md","packages/telemetry/CLAUDE.md","packages/telemetry/README.md","packages/telemetry/package.json","packages/telemetry/tsconfig.browser.json","packages/telemetry/tsconfig.cjs.json","packages/telemetry/tsconfig.esm.json","packages/telemetry/tsconfig.json","packages/ts/AGENTS.md","packages/ts/CLAUDE.md","packages/ts/README.md","packages/ts/package.json","packages/ts/tsconfig.json","packages/ts/tslint.json","packages/types/AGENTS.md","packages/types/CLAUDE.md","packages/types/package.json","packages/types/tsconfig.check.json","packages/types/tsconfig.cjs.json","packages/types/tsconfig.esm.json","packages/types/tsconfig.json","packages/v8-snapshot-require/AGENTS.md","packages/v8-snapshot-require/CLAUDE.md","packages/v8-snapshot-require/README.md","packages/v8-snapshot-require/package.json","packages/v8-snapshot-require/tsconfig.json","packages/web-config/AGENTS.md","packages/web-config/CLAUDE.md","packages/web-config/README.md","packages/web-config/package.json","packages/web-config/tsconfig.json","packages/data-context/graphql/README.md","packages/driver/cypress/.eslintrc.json","packages/driver/cypress/tsconfig.json","packages/electron/app/package.json","packages/extension/test/.eslintrc.json","packages/extension/theme/manifest.json","packages/https-proxy/test/.eslintrc.json","packages/launcher/test/.eslintrc.json","packages/net-stubbing/test/.eslintrc.json","packages/network/test/.eslintrc.json","packages/reporter/cypress/.eslintrc.json","packages/runner/injection/.eslintrc.json","packages/server/config/app.json","packages/server/test/.eslintrc.json","packages/socket/test/.eslintrc.json","packages/app/cypress/fixtures/FileChooser.json","packages/app/cypress/fixtures/FileList.json","packages/app/cypress/fixtures/GeneratorSuccess.json","packages/app/cypress/fixtures/found-specs.json","packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json","packages/app/src/debug/gql-DebugRunDetailedView.json","packages/app/src/tap/AGENTS.md","packages/app/src/tap/CLAUDE.md","packages/driver/cypress/fixtures/app.json","packages/driver/cypress/fixtures/boolean.json","packages/driver/cypress/fixtures/example.json","packages/driver/cypress/fixtures/fileSpec.json","packages/driver/cypress/fixtures/foo.bar.baz.json","packages/driver/cypress/fixtures/invalid.json","packages/driver/cypress/fixtures/null.json","packages/driver/cypress/fixtures/number.json","packages/driver/cypress/fixtures/valid.json","packages/driver/cypress/fixtures/yaml.yaml","packages/driver/src/cypress/errorScenarios.md","packages/electron/.cursor/rules/electron-upgrade.mdc","packages/extension/app/v2/manifest.json","packages/extension/app/v3/manifest.json","packages/frontend-shared/cypress/fixtures/TestCurrentProject.json","packages/frontend-shared/cypress/fixtures/config.json","packages/frontend-shared/cypress/fixtures/example.json","packages/frontend-shared/src/locales/en-US.json","packages/net-stubbing/lib/adapters/README.md","packages/reporter/cypress/fixtures/command_error.json","packages/reporter/cypress/fixtures/runnables.json","packages/reporter/cypress/fixtures/runnables_agents.json","packages/reporter/cypress/fixtures/runnables_aliases.json","packages/reporter/cypress/fixtures/runnables_commands.json","packages/reporter/cypress/fixtures/runnables_error.json","packages/reporter/cypress/fixtures/runnables_hooks.json","packages/reporter/cypress/fixtures/runnables_memory.json","packages/reporter/cypress/fixtures/runnables_routes.json","packages/server/lib/adapters/README.md","packages/server/lib/browsers/firefox_automation.md","packages/server/test/scripts/.eslintrc.json","packages/app/cypress/e2e/studio/README.md","packages/app/cypress/fixtures/debug-Failing/gql-Debug.json","packages/app/cypress/fixtures/debug-Passing/gql-Debug.json","packages/driver/src/util/serialization/README.md","packages/frontend-shared/src/shiki/languages/css.tmLanguage.json","packages/frontend-shared/src/shiki/languages/html.tmLanguage.json","packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json","packages/frontend-shared/src/shiki/languages/json.tmLanguage.json","packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json","packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json","packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json","packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json","packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json","packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json","packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json","packages/frontend-shared/src/shiki/themes/ReadMe.md","packages/frontend-shared/src/shiki/themes/cypress.theme.template.json","packages/packherd-require/test/fixtures/circular-deps/package.json","packages/packherd-require/test/fixtures/normal-deps/package.json","packages/proxy/lib/http/util/rewrite-constants.json","system-tests/projects/bun-workspace/packages/app/package.json","system-tests/projects/bun-workspace/packages/shared/package.json","system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json","system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json","npm/vue/cypress/component/basic/plugins/README.md","packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json","packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json","packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json","packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json","packages/app/src/runner/screenshot/reference-screenshots/README.md","packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json","packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json","packages/server/test/support/fixtures/ajax/app.json","packages/server/test/support/fixtures/server/really_big_json.json","packages/data-context/src/codegen/templates/test/nested/Hello.md","packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json","packages/server/test/support/fixtures/cloud/environment/test-project/package.json","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json"],"skills":{"AGENTS.md":"# Cypress Monorepo — AGENTS.md\n\n## Overview\n\nCypress is an open-source end-to-end and component testing framework for the modern web. This monorepo ships the Cypress desktop application and CLI (`cypress`), the JavaScript driver that runs tests in the browser, the Electron-based test runner, a suite of published npm packages (component testing adapters, webpack/vite dev-server integrations, plugins), and the internal tooling used to build and release all of it. Cypress is used by millions of developers to test web applications across Chrome, Firefox, Edge, WebKit, and Electron.\n\n## Workspaces\n\n- **`cli/`** — The main `cypress` npm package (CLI entry point) and co-located component testing framework adapters (`@cypress/react`, `@cypress/vue`, `@cypress/angular`, `@cypress/svelte`, `@cypress/mount-utils`)\n- **`packages/`** — Core internal packages: the test driver, Electron app, HTTP server, proxy, launcher, frontend Vue app, launchpad, reporter, config, data-context, telemetry, types, errors, and more\n- **`npm/`** — Publicly published npm packages: bundler integrations, component testing adapters, plugins, and dev tooling\n- **`tooling/`** — Internal build tooling: V8 snapshot creation, `packherd` dependency bundler, and `electron-mksnapshot`\n- **`system-tests/`** — Full end-to-end system test suite: `test/` runs against the dev app, `test-binary/` against a built Cypress binary\n- **`scripts/`** — Internal build, release, and CI automation scripts\n\n## Task runbooks\n\nStep-by-step procedures live in [`guides/`](./guides/) — start there for any multi-step workflow ([release process](./guides/release-process.md), [writing the changelog](./guides/writing-the-cypress-changelog.md), [V8 snapshots](./guides/v8-snapshots.md), and others indexed in [`guides/README.md`](./guides/README.md)). They are the canonical source for humans and agents alike.\n\n`.claude/skills/*/SKILL.md` adds a thin layer on top for the two workflows that need agent-specific execution guidance — which permissions a phase needs, long-running commands, and host quirks that would be noise in a contributor guide. Claude Code loads them on demand; **other agents should read the file directly**, since nothing loads them automatically:\n\n- [`building-cypress-binary`](./.claude/skills/building-cypress-binary/SKILL.md) — `binary-build` / `binary-package` / `binary-zip`, non-interactive flags, `ELECTRON_RUN_AS_NODE`, macOS signing.\n- [`debugging-cypress-artifacts`](./.claude/skills/debugging-cypress-artifacts/SKILL.md) — bugs that only reproduce in packaged output, the commit/build/clean/reset loop, `CYPRESS_RUN_BINARY`.\n\n`.claude/rules/*.md` is a second thin layer, for facts that are only correct in one part of the tree — which test runner a package uses, which runtime floor a directory is bound by, how a given kind of snapshot is regenerated. Each file carries a `paths:` glob, and Claude Code loads it when it opens a matching file. They are pointers, not sources of truth: every one links back to the guide or `AGENTS.md` section that owns the topic, so **other agents can skip them** and lose nothing.\n\nAdd new guidance to a guide by default. A skill is only warranted when the content is about *running* the task rather than doing it correctly — if a contributor doing the task by hand would need to know it, it belongs in the guide. A rule is only warranted when the guidance is wrong outside a specific path. See [Choosing where guidance goes](./CONTRIBUTING.md#choosing-where-guidance-goes).\n\n## Prerequisites\n\n- **Node**: Use the node version specified in the `.node-version` file (check with `node -v`; run `nvm use` to manage versions)\n- **Package manager**: Yarn 1 (`yarn@1.22.22`) — do not use npm or pnpm\n- **Lerna**: Orchestrated via root `package.json` scripts; installed as a dev dependency\n- **Electron** (for binary builds): handled automatically by `@packages/electron` during build\n\n## Common Commands\n\n### Setup & Development\n\n```bash\n# Install all dependencies (runs post-install hooks automatically)\nyarn\n\n# Start Cypress in dev mode (watch, rebuilds on change)\nyarn dev\n\n# Open the Cypress GUI in dev + global mode\nyarn start\n\n```\n\n### Testing\n\n```bash\n# Run a single package's tests (go through the workspace, not the root test script —\n# the root script hardcodes its own --scope flags and lerna unions them, so\n# `yarn test --scope <pkg>` runs the whole default suite plus that package)\nyarn workspace @packages/server test\n\n# Target a specific vitest spec file (packages that use vitest)\nyarn workspace @packages/config test -- <path-to-spec>\n\n# Target a specific vitest spec by glob pattern\nyarn workspace @packages/net-stubbing test -- \"<glob-pattern>\"\n\n# Target a specific mocha spec file (packages that use mocha)\nyarn workspace @packages/server test-unit -- <path-to-spec>\n\n# Filter mocha tests by name pattern\nyarn workspace @packages/server test-unit -- --grep \"<pattern>\"\n\n# @packages/data-context is the one package on jest, not vitest or mocha\nyarn workspace @packages/data-context test-unit -- <path-to-spec>\n\n# Run system test specs whose file name contains a fragment (not a path);\n# see system-tests/AGENTS.md\nyarn test-system go_spec --browser electron\n\n# Run Cypress headlessly against a specific spec (dev mode)\nyarn cypress:run -- --spec \"path/to/spec.cy.ts\"\n\n# Run Cypress component tests against a specific spec (dev mode)\nyarn cypress:run:ct -- --spec \"path/to/spec.cy.ts\"\n```\n\n### Type Checking\n\n```bash\n# Type-check all TypeScript across the monorepo\nyarn type-check\n\n# Lerna-only type check pass\nyarn check-ts\n```\n\n### Linting & Formatting\n\n```bash\n# Lint all packages (no bail, concurrency 2)\nyarn lint\n\n# Lint and auto-fix specific scopes\nyarn lint:fix\n```\n\n> **Note**: This project does **not** use Prettier. All formatting is enforced via ESLint.\n\nThe repo is mid-migration between two ESLint configs, so ignore rules live in two places: `ignorePatterns` in the root `.eslintrc.js` for the packages still on eslintrc, and the `ignores` block in `packages/eslint-config/src/baseConfig.ts` for the packages on flat config. Build output (`cjs/`, `esm/`, `dist/`) is already ignored in both; do not add a per-package `.eslintignore` for it, since patterns in those files that contain a `/` silently match nothing. [The ESLint migration guide](./guides/eslint-migration.md#6-ignore-build-output-centrally) explains the mechanism.\n\n### Build\n\n```bash\n# Full monorepo build\nyarn build\n\n# Build V8 snapshot (dev)\nyarn build-v8-snapshot-dev\n\n# Build V8 snapshot (prod)\nyarn build-v8-snapshot-prod\n\n# Clean all build artifacts\nyarn clean\n\n# Clean and reinstall (nuclear)\nyarn clean-deps && yarn\n```\n\n## Architecture\n\nOrientation, not a registry — the directories under `packages/`, `npm/`, and `tooling/` are the authoritative list, and each carries its own `AGENTS.md` with the detail. Read a package's own file before working in it rather than relying on the one-liner here.\n\n### CLI & Distribution\n\n- **`cypress` (`cli/`)** — The `cypress` npm package users install. Entry point for `cypress open`, `cypress run`, `cypress install`, etc. The published version is set by semantic-release, not by `cli/package.json` (which stays `0.0.0-development`).\n\n### Test Runner & Driver\n\n- **`@packages/driver`** — The JavaScript test driver that executes user test code inside the browser. Implements Cypress commands, assertions, retries, and all `cy.*` APIs.\n- **`@packages/runner`** — The webpack-bundled runner UI that hosts the AUT (application under test) iframe and driver communication layer.\n- **`@packages/app`** — The Vue 3 frontend for the Cypress GUI / Launchpad. Main visual interface for the desktop app.\n- **`@packages/launchpad`** — Project creation, onboarding, and test file scaffold UI.\n- **`@packages/frontend-shared`** — Shared Vue components and design system tokens used by `app` and `launchpad`.\n- **`@packages/reporter`** — The test results reporter UI component (pass/fail tree, log panel).\n\n### Server & Network\n\n- **`@packages/server`** — HTTP server responsible for serving test files, handling browser launching, socket communication, and orchestrating the test run.\n- **`@packages/proxy`** — HTTP/S proxy that intercepts all browser traffic during a test run.\n- **`@packages/net-stubbing`** — The `cy.intercept` surface: driver-side command, types, and the server-side glue.\n- **`@packages/network-interception`** — Transport-agnostic core behind `cy.intercept`: route matching, subscription planning, handler merging, and config policy. Holds the rules, none of the I/O — every transport is injected behind an interface.\n- **`@packages/network`** — Low-level network protocol utilities.\n- **`@packages/network-tools`** — Higher-level networking helpers used across packages.\n- **`@packages/https-proxy`** — HTTPS proxy implementation for TLS interception.\n\n### Configuration & Data\n\n- **`@packages/config`** — Configuration types, defaults, validation, and the public `defineConfig` API.\n- **`@packages/data-context`** — Centralized GraphQL data access layer for the Cypress app (projects, specs, runs, settings).\n- **`@packages/scaffold-config`** — Logic for scaffolding new testing setups via Launchpad (framework detection, config file generation).\n\n### Desktop & Electron\n\n- **`@packages/electron`** — Electron runtime wrapper, binary building utilities, and auto-update integration.\n- **`@packages/launcher`** — Browser detection and launch logic for Chrome, Firefox, Edge, WebKit, and Electron.\n- **`@packages/extension`** — WebExtension injected into browsers to enable cross-origin features and automation hooks.\n\n### Types, Errors & Utilities\n\n- **`@packages/types`** — Shared TypeScript type definitions used across all packages.\n- **`@packages/errors`** — Cypress error definitions, error templates, and error utilities.\n- **`@packages/socket`** — WebSocket communication library used for driver ↔ server messaging (browser and Node sides).\n- **`@packages/telemetry`** — OpenTelemetry instrumentation wrapper used throughout the monorepo.\n- **`@packages/icons`** — Icon registry and SVG assets.\n- **`@packages/stderr-filtering`** — Stderr output filtering utilities.\n- **`@packages/agent-info`** — Fingerprints the environment block to tell whether Cypress was invoked by an AI coding agent, and which one. Intentionally pure and dependency-free.\n- **`@packages/cypress-sessions`** — The cross-process contract for Cypress sessions: shared schema, on-disk layout, and the liveness-probe route that lets the CLI find a running `cypress open` session and attach over CDP.\n- **`@packages/example`** — The bundled kitchensink example project. Its `cypress/` and `app/` contents are generated from upstream `cypress-example-kitchensink` — change it there, not here.\n- **`@packages/root`** — Root package metadata consumed by the binary build.\n\n### Build & Snapshot Infrastructure\n\n- **`@packages/v8-snapshot-require`** — Module loading utilities for V8 snapshots in Electron.\n- **`@packages/packherd-require`** — Module loader for dependencies bundled by `@tooling/packherd`.\n- **`@packages/web-config`** — Webpack/PostCSS configuration for the Vue frontend bundles.\n- **`@packages/ts`** — Shared TypeScript configuration and `ts-node` register helper.\n- **`@packages/eslint-config`** — Shared ESLint configuration preset used across packages.\n- **`@packages/resolve-dist`** — Resolves paths to compiled distribution artifacts.\n- **`@tooling/v8-snapshot`** — V8 snapshot creation tooling for Electron startup optimization.\n- **`@tooling/packherd`** — Bundles all reachable dependencies from an entry point into a single artifact.\n- **`@tooling/electron-mksnapshot`** — Configurable `mksnapshot` binary wrapper for the target Electron version.\n\n### Component Testing Adapters (published via `npm/`)\n\n- **`@cypress/react`** — Component testing adapter for React.\n- **`@cypress/vue`** — Component testing adapter for Vue.js.\n- **`@cypress/angular`** — Component testing adapter for Angular.\n- **`@cypress/svelte`** — Component testing adapter for Svelte.\n- **`@cypress/mount-utils`** — Shared utilities used by all component testing adapters.\n\n### Bundler Integrations (published via `npm/`)\n\n- **`@cypress/webpack-dev-server`** — Webpack Dev Server launcher for component testing.\n- **`@cypress/vite-dev-server`** — Vite Dev Server launcher for component testing.\n- **`@cypress/webpack-preprocessor`** — Webpack preprocessor for bundling test spec files.\n- **`@cypress/webpack-batteries-included-preprocessor`** — Webpack preprocessor with batteries included (TypeScript, etc.).\n- **`@cypress/vite-plugin-cypress-esm`** — Vite plugin for mutable ESM modules in browser tests.\n\n### Plugins & Dev Tooling (published via `npm/`)\n\n- **`@cypress/grep`** — Plugin to filter test runs by substring/tag.\n- **`@cypress/puppeteer`** — Plugin to enhance Cypress tests with Puppeteer.\n- **`@cypress/schematic`** — Official Angular CLI schematic for adding Cypress.\n- **`@cypress/eslint-plugin-dev`** — ESLint rules shared across Cypress development packages.\n\n## Code Conventions\n\n- **TypeScript for all new code** — New source, specs, and test fixtures must be TypeScript, not JavaScript. This includes system-test project fixtures: use `cypress.config.ts` and `.cy.ts` specs (lightweight fixtures without their own `node_modules` should `export default { ... }` a plain object rather than importing `defineConfig` from `cypress`).\n- **No Prettier** — Formatting is enforced entirely through ESLint. The `.prettierignore` excludes all files.\n- **Single quotes** — `'single'` quote style required for all JS/TS.\n- **No semicolons** — Enforced via ESLint (`semi: 'never'`).\n- **2-space indentation** — Standard across all JS/TS files.\n- **Trailing commas** — Required in multiline contexts (`comma-dangle: 'always-multiline'`).\n- **No `var`** — `var` declarations are an ESLint error; use `const` or `let`.\n- **Template literals** — `prefer-template: 'error'` — no string concatenation.\n- **Object shorthand** — `object-shorthand: 'error'`.\n- **No `console`** — `no-console: 'error'`; use the logger utilities instead.\n- **TypeScript**: `strict: true` base, but `noImplicitAny: false` (implicit `any` allowed for pragmatic reasons).\n- **Type-only imports**: `importsNotUsedAsValues: \"error\"` — use `import type` for type-only imports.\n- **Type guards over `as`** — Narrow with a type guard, an `asserts` function or an `in` check rather than an `as` assertion, and explain any assertion that remains with a \"Safe because\" comment. See [Type Assertions](./guides/typescript.md#type-assertions).\n- **Unused vars**: Unused variables and imports are errors. Unused function parameters and caught errors are allowed, since callbacks often have to accept arguments they ignore. In packages on the flat config, prefix a variable that exists only to be type-checked with `_`.\n- **No `.only` in tests** — `mocha/no-exclusive-tests: 'error'` (ESLint). Caught by `yarn lint` and by pre-commit ESLint (`lint-staged`). For intentional `.only` in fixtures or type samples, use `eslint-disable-next-line mocha/no-exclusive-tests` (with a short comment).\n- **`.skip` requires a comment** — Must include `NOTE:`, `TODO:`, or `FIXME:` comment explaining why.\n- **Blank line before `return`** — Enforced via `padding-line-between-statements`.\n- **Sync FS calls** — Flagged with a warning (except `existsSync`); prefer async variants.\n\n### Code Comments\n\n- **Prefer none** — Always prefer no code comment if the code is self-explanatory.\n- **Explain the why** — When a comment is necessary, use it to explain the *why* and anything relevant that is not directly expressed by the code itself.\n- **Don't repeat yourself** — Do not restate the same comment multiple times in a file as the code flows through each step.\n- **Present state only** — Keep comments relevant to the current state of the code. Do not describe what changed or how the code used to be different.\n- **Name the reason, not the predecessor** — \"Matches what the old plugin did\" is not a *why*, and it rots once that plugin is deleted. State the reason the old code had, and put parity with replaced tooling in the commit message or guide.\n\nBad examples:\n\n```js\n// never wipe the entire jar - the old hack called clearCookies() with no filter\n// we no longer need to clear the state here, CDP added automatically clearing\n// Firefox previously relied on os-level focus, now we use WebDrive BiDi to focus\n```\n\nGood examples:\n\n```js\n// Close any extra pages so they don't leak into other tests\n// Firefox doesn't support this in native BiDi, so we pull remote.location from current frame\n// `cookie`'s serializer rejects an IPv6 literal Domain (e.g. `[::1]`), crashing\n// the proxy. Browsers scope cookies for IP hosts to that host anyway, so omit\n// Domain and let the cookie default to host-only.\n```\n\n## Runtime targets\n\nCode in this monorepo runs in several runtimes, each with its own JavaScript / runtime-API floor. Before using a modern JS or Node/DOM API, identify which runtime a file executes in and confirm the API is supported there — do **not** assume the development Node version. Where each floor is defined:\n\n- **Dev tooling, gulp, build/dev scripts** — the Node version in [`.node-version`](./.node-version).\n- **The bundled app (main/Electron process)** — the Node embedded in the `electron` version pinned in the root [`package.json`](./package.json) (look up that Electron release's Node/V8).\n- **The config/plugins child process** (`@packages/server` `lib/plugins/child/require_async_child.ts`, forked by `@packages/data-context` `ProjectConfigIpc`) and the **`cypress` CLI** (`cli/`) — the *user's* Node, whose supported range is `engines.node` in [`cli/package.json`](./cli/package.json). This floor is lower than the dev/bundled Node, so it is the binding constraint for that code.\n- **Browser-shipped bundles** (`@packages/app`, `@packages/frontend-shared`, `@packages/driver`) — the last 3 major versions of the supported browsers. Since Safari releases majors roughly annually, the last 3 major versions reach back years, making this the most conservative floor. `@packages/driver` runs in the user's AUT browser. For WebKit, Cypress runs the WebKit bundled with the installed `playwright-webkit` version — not the user's system Safari — so the WebKit floor tracks that dependency.\n\nVerify an API against the relevant floor (node.green for Node, caniuse/MDN for browsers) before relying on it.\n\n## Pull Requests\n\n[`CONTRIBUTING.md`](./CONTRIBUTING.md) is the source of truth for PR conventions, including the semantic-release title prefix that determines the next version. The other essentials:\n\n### Changelog & Template\n\n- The semantic title prefix decides whether an entry in [`cli/CHANGELOG.md`](./cli/CHANGELOG.md) is required, which section it belongs in, and how it must be phrased. The [Writing the Cypress Changelog Guide](./guides/writing-the-cypress-changelog.md) is the source of truth for all of it — read it rather than guessing, and note that a `fix` prefix always requires an entry.\n- Verify a changelog entry with `GH_TOKEN=\"$(gh auth token)\" node ./scripts/semantic-commits/validate-binary-changelog.js`, the same check CI's `verify-release-readiness` job runs. It fails without that token, and needs a root `yarn` install.\n- Fill out the [Pull Request Template](./.github/PULL_REQUEST_TEMPLATE.md) completely. Use `N/A` for irrelevant sections rather than deleting them — PRs will not be reviewed if the template is not filled in.\n\n## CI/CD\n\n- **Primary CI**: CircleCI. Config lives in `.circleci/src/` (modular) and is compiled to `.circleci/packed/pipeline.yml`. See [`.circleci/AGENTS.md`](.circleci/AGENTS.md) for when to add a branch to the full-CI allowlist (binary tests, Windows jobs, v8 snapshot validation).\n- **Supplementary**: GitHub Actions for security scanning (Snyk), SBOM generation, browser version auto-updates, and PR validation.\n- **Base branch**: `develop` — all PRs target `develop`; release branches follow `release/X.Y.Z`.\n- **Multi-platform matrix**: Linux x64, Linux ARM64, macOS x64, macOS ARM64, Windows — all run in parallel. Coverage is per-job, not uniform: `unit-tests` runs only on linux-x64 and windows, so a unit test coupled to the host architecture passes CI and still fails locally on arm64. See [`cli/AGENTS.md`](./cli/AGENTS.md) for keeping specs host-independent.\n- **Release gate**: All tests must pass through the `ready-to-release` aggregation job before `npm-release` runs.\n- **External PRs**: Require manual approval via `approve-contributor-pr` gate before CI runs.\n- **Binary builds**: Triggered separately after npm release; cross-platform binaries are assembled and distributed via CDN.\n\n## Cloud agent environments\n\nRunning the repo in a hosted container (Cursor Cloud, Claude Code on the web, and similar). Most of this applies to any of them; bullets that name a host apply only there, so confirm the rest against the container you are in rather than assuming.\n\n### Environment\n\n- Yarn 1.22.22 is pre-installed. Whatever the host runs to prepare the container invokes `yarn`, which runs the postinstall. What it covers depends on `CI` ([`scripts/run-postInstall.js`](./scripts/run-postInstall.js)): with `CI` set, as on Claude Code on the web, it skips `yarn-deduplicate`, `yarn build` and the V8 snapshot, so nothing is built. Check `echo $CI`, and run `yarn build` before anything that loads built packages, such as system tests. After adding or changing a dependency, run `yarn check-lockfile`. If it lists duplicates, run `yarn-deduplicate --strategy=highest` and commit the result, or CI's \"Check yarn.lock is deduplicated\" job fails.\n- The root `package.json` sets `engines.node` to the version in [`.node-version`](./.node-version), so yarn refuses to run any script on an older Node: `The engine \"node\" is incompatible with this module`. Containers that pre-install a lower version need the required one installed before anything else works — see [Matching the required Node version](#matching-the-required-node-version).\n- Browsers and a display differ by host. Cursor Cloud runs Xvfb on `DISPLAY=:1` and ships Chrome at `/usr/bin/google-chrome-stable`. Claude Code on the web has Xvfb installed but leaves `DISPLAY` unset, and has no Chrome — only the Chromium that Playwright bundles under `$PLAYWRIGHT_BROWSERS_PATH`. There, `cypress run` starts its own Xvfb when `DISPLAY` is unset, so the Cypress-based suites do run; pass `--browser \"$PLAYWRIGHT_BROWSERS_PATH/chromium\"` instead of `--browser chrome`, and wrap anything else that needs a display (such as `yarn dev`) in `xvfb-run -a`. On any host, prefix Electron commands with `env -u ELECTRON_RUN_AS_NODE`: some agent hosts set it, and it makes Electron start as plain Node.\n\n### Running Cypress in dev mode\n\n- `yarn dev` starts the Cypress Electron GUI in global/dev mode (Launchpad). It builds Vite bundles for `@packages/app` and `@packages/launchpad`, then launches Electron. The GraphQL server runs at `http://localhost:4444/__launchpad/graphql`.\n- `yarn cypress:run -- --project <path> --browser chrome --headless` runs Cypress headlessly in dev mode. The config file at the target project must NOT `require('cypress')` since it resolves from the project root.\n\n### Running tests\n\n- Prefer scoped tests: `yarn workspace @packages/<name> test`. Do not use `yarn test --scope <name>` — lerna unions scopes with the ones the root `test` script already sets, so it broadens the run instead of narrowing it. `yarn lint --scope` and `yarn check-ts --scope` do narrow correctly.\n- Some test suites (e.g., `@packages/network`) require privileged ports (443) and will fail with EACCES in unprivileged containers — this is expected.\n- `@packages/config` has 2 tests that assert `cypressBinaryRoot` contains `'cypress'`; these fail when the workspace directory name differs (e.g., `/workspace`). This is a known path-dependent issue, not a code bug.\n\n### Running system tests\n\nSpecs in `system-tests/test` run in cloud containers. Specs in `system-tests/test-binary` need Docker and a built binary, so they do not.\n\n1. **Build once:** `env -u ELECTRON_RUN_AS_NODE yarn build`. System tests need all three things it produces: the compiled workspace packages, the dev Electron app in `packages/electron/dist/Cypress`, and the `cli/dist` bundle that fixture projects resolve `cypress` from. Without them the run fails with `Cannot find module '…/lib-dist/index.js'`, `spawn …/dist/Cypress/Cypress ENOENT`, or `Cannot find module '…/cypress/dist/index.js'`.\n2. **Run by file name fragment:** `env -u ELECTRON_RUN_AS_NODE yarn test-system go_spec --browser electron`. The script wraps its argument in `{test,test-binary}/**/*<arg>*`, so a path such as `test/go_spec.js`, or `--spec <path>`, matches nothing. The runner starts its own Xvfb, so `DISPLAY` can stay unset.\n3. **Pick a browser that exists:** Claude Code on the web has no Chrome or Firefox install, so pass `--browser electron`. It runs the Electron variant and reports the other browsers as pending.\n4. **Restore snapshots afterwards:** a local run prunes snapshot keys for tests it skipped. See [`system-tests/AGENTS.md`](./system-tests/AGENTS.md).\n\nIf `yarn build` fails in `@cypress/vue` with `Cannot find module '@cypress/mount-utils'` while `npm/mount-utils/dist` exists, the rollup-plugin-typescript2 cache is stale: delete `npm/vue/node_modules/.cache/rollup-plugin-typescript2` and rerun.\n\n### Linting\n\n- `yarn lint --scope @packages/<name>` for focused lint. Full monorepo lint: `yarn lint`.\n\n### Matching the required Node version\n\nInstall the required version from the repo root, where `nvm` picks it up from [`.nvmrc`](./.nvmrc):\n\n```bash\nexport NVM_DIR=/opt/nvm          # wherever nvm is installed\n. \"$NVM_DIR/nvm.sh\" || true      # see below: sourcing can exit non-zero\nnvm install                      # reads .nvmrc\n```\n\nTwo things bite here:\n\n- **Source `nvm.sh` on its own line.** It exits non-zero when no default version is aliased yet, so `. \"$NVM_DIR/nvm.sh\" && nvm install` silently skips the install and looks like a failed download.\n- **`nvm use` does not survive a new shell.** Containers that put their own Node first on `PATH` keep resolving to it in every new shell, so the version reverts between commands. Prepend the installed version's bin directory to `PATH` in whatever the environment persists across commands (a shell profile, or the session env file that agent harnesses expose):\n\n```bash\necho \"export PATH=\\\"$(nvm which current | xargs dirname):\\$PATH\\\"\" >> ~/.bashrc\n```\n\nVerify with `node -v` in a *fresh* shell rather than the one that ran `nvm use`.\n\nPrefer this over `yarn --ignore-engines`: the flag only silences the check for the install itself. `yarn <script>` still refuses to run afterwards (`Commands cannot run with an incompatible environment`), and the postinstall rebuilds native modules such as `better-sqlite3` against the wrong Node.\n\n### Key caveats\n\n- The postinstall takes ~4-5 minutes (build + V8 snapshot generation). If `yarn` is interrupted, re-run it.\n- `yarn --frozen-lockfile` should be preferred when the lockfile hasn't changed; it falls back to `yarn` (which runs postinstall) if it fails.\n- Do not run `yarn` from within sub-packages. Always run from the repo root.\n","CLAUDE.md":"# CLAUDE.md\n\n## Workflow Orchestration\n\n### 1. Plan Mode Default\n\n- Enter plan mode for ANY non-trivial task (3+ steps or architectural decisions)\n- If something goes sideways, STOP and re-plan immediately - don't keep pushing\n- Use plan mode for verification steps, not just building\n- Write detailed specs upfront to reduce ambiguity\n\n### 2. Subagent Strategy\n\n- Use subagents liberally to keep main context window clean\n- Offload research, exploration, and parallel analysis to subagents\n- For complex problems, throw more compute at it via subagents\n- One task per subagent for focused execution\n\n### 3. Self-Improvement Loop\n\n- After ANY correction from the user: update the closest relevant `CLAUDE.md` file\n- Write rules for yourself that prevent the same mistake\n\n### 4. Verification Before Done\n\n- Never mark a task complete without proving it works\n- Diff behavior between main and your changes when relevant\n- Ask yourself: \"Would a staff engineer approve this?\"\n- Run relevant tests only, check logs, demonstrate correctness\n\n### 5. Demand Elegance (Balanced)\n\n- For non-trivial changes: pause and ask \"is there a more elegant way?\"\n- If a fix feels hacky: \"Knowing everything I know now, implement the elegant solution\"\n- Skip this for simple, obvious fixes - don't over-engineer\n- Challenge your own work before presenting it\n\n## Core Principles\n\n- **Minimal Impact**: Changes should only touch what's necessary. Avoid introducing bugs.\n\n## Working Constraints\n\n- Worktrees must use a full `yarn` install in the worktree. Do not symlink `node_modules` or packages back to another checkout.\n- Packaged-binary integration tests (`system-tests/test-binary`) need Docker and a built binary, so they do not run in the sandbox. When they are needed, provide the exact commands and ask the user to run them.\n- System tests under `system-tests/test` do run in cloud containers once the monorepo is built. Run them yourself rather than handing them off; see [Running system tests](./AGENTS.md#running-system-tests).\n- Keep follow-up work from the same task, such as review fixes and related instruction updates, on that task's branch. Create a separate branch only when the user asks for one.\n- Before committing or pushing, `yarn check-ts`, `yarn lint`, `yarn health-check` (knip), and relevant unit tests must pass locally. CI currently does not block expensive e2e jobs when these fail.\n\n@AGENTS.md\n",".claude/skills/building-cypress-binary/SKILL.md":"---\nname: building-cypress-binary\ndescription: >-\n  Builds and packages the Cypress Electron binary locally (yarn binary-build,\n  binary-package, binary-zip, Docker/Linux parity), including non-interactive\n  --version/--platform flags and unsetting ELECTRON_RUN_AS_NODE for agent hosts.\n  Covers macOS signing, optional env speedups, dist smoke-test pitfalls, and why\n  the tree is dirty after a build. Use when the user asks to build the Cypress\n  binary, binary-package, electron MODULE_NOT_FOUND during binary-build, or\n  local binary zip. For artifact debugging, use debugging-cypress-artifacts.\n---\n\n# Building the Cypress binary\n\nCanonical reference: [guides/building-release-artifacts.md](../../../guides/building-release-artifacts.md) (npm `.tgz` vs binary `.zip`, CI context).\n\nArtifact debugging (packaged CLI, `CYPRESS_RUN_BINARY`, git debug loop): [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## Agent execution\n\nRun from repo root with **Yarn 1** and Node per **`.node-version`**. Request **`network`** for `yarn` / `yarn lerna …`; request **`all`** for `yarn binary-build` and `yarn binary-package` (long runs, temp dir under OS tmp, high memory). Sandbox vs full permissions does **not** fix a failed dist smoke test if **`ELECTRON_RUN_AS_NODE=1`** is set — unset that var instead (below). Do not ask the user to approve each command separately during one build session.\n\n**Prerequisites:** If `node_modules/.bin/lerna` or `rollup` is missing, run **`yarn`** first (postinstall runs the monorepo build; may take several minutes).\n\n**Agent hosts:** Prefix binary commands with **`env -u ELECTRON_RUN_AS_NODE`** (or export `env -u ELECTRON_RUN_AS_NODE` for the shell session). Cursor/Electron environments often set this to `1`, which is unrelated to sandboxing.\n\n## Commands (from repo root)\n\nUse **Yarn 1** and the Node version in `.node-version`.\n\n1. **`yarn binary-build`** — build the Electron app and staging tree (runs broad `lerna` `build` / `build-prod` as part of the pipeline).\n2. **`yarn binary-package`** — package the built binary (electron-builder).\n3. **`yarn binary-zip`** — zip the packaged output.\n\nLinux parity with CI: run `yarn binary-build` and `yarn binary-package` **inside** `yarn docker` if you want the same environment as CI.\n\n### Non-interactive (CI, agents, no TTY)\n\n`scripts/binary/index.js` prompts for missing options via Inquirer. If **`version`** and **`platform`** are already present in argv (parsed with `minimist`), those prompts are skipped.\n\n| Step | Required argv |\n|------|----------------|\n| `binary-build` | `--version <semver>` and `--platform <os>` |\n| `binary-package` | same as build |\n| `binary-zip` | `--platform <os>` only |\n\n**`--platform`:** `darwin` \\| `linux` \\| `win32` (defaults to `os.platform()` when interactive).\n\n**`--version`:** must match what the built app reports from **`node index.js --version`** in the staged `dist/` (via `@packages/root`). On `develop` this is often **not** root `package.json`’s `0.0.0-development` — e.g. a release-style **`15.x.x`** baked into packages. Before a long build, discover it with:\n\n```bash\nenv -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version\n```\n\nOr read stdout from a prior partial build’s `dist/`. A mismatch fails with `different version reported`.\n\n**macOS local example** (skip notarization; Apple Silicon ad-hoc run after pack):\n\n```bash\nexport SKIP_NOTARIZATION=1\nexport RESET_ADHOC_SIGNATURE=1   # arm64 only; harmless to omit on Intel\nexport V8_SNAPSHOT_DISABLE_MINIFY=1   # optional: faster packaging\nBINARY_VERSION=\"$(env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version)\"\nenv -u ELECTRON_RUN_AS_NODE yarn binary-build --version \"$BINARY_VERSION\" --platform darwin\nenv -u ELECTRON_RUN_AS_NODE yarn binary-package --version \"$BINARY_VERSION\" --platform darwin\nyarn binary-zip --platform darwin\n```\n\nYarn 1 forwards extra args to the script; an explicit `--` before flags also works if you prefer it.\n\n## macOS\n\n- Code signing: follow Apple’s code signing setup (see guide link above); [code-signing.md](../../../guides/code-signing.md) for CI-oriented detail.\n- Local builds often skip notarization: set **`SKIP_NOTARIZATION=1`** (notarization needs an Apple Developer Program account).\n\n## Optional environment\n\n| Variable | Effect |\n|----------|--------|\n| `V8_SNAPSHOT_DISABLE_MINIFY=1` | Faster packaging (less minification work). |\n| `RESET_ADHOC_SIGNATURE=1` | **Apple Silicon (M1+)** — often required to run the packaged binary locally after an ad-hoc sign. |\n| `SKIP_NOTARIZATION=1` | Skip macOS notarization for local builds. |\n\n**Unset for binary-build (do not export):** `ELECTRON_RUN_AS_NODE` — see next section.\n\n## Why the repo looks “dirty” afterward\n\nA full binary build drives **`yarn lerna run build`** and **`build-prod`** across packages, writes many **`dist/`** artifacts, uses a **root `build/`** symlink into a temp dir (`scripts/binary/build.ts` → `TMP_BUILD_DIR`), and can leave output **interleaved with source** (**.js` beside `.ts`**, some **`.ts` mutations**). Expect **`git status` to be unusable** until reset.\n\n**Full reset:** `git clean -xfd && yarn` — destroys untracked/ignored files; do not rely on stash here.\n\n**Keeping WIP through a build:** use the commit → build → clean → **`git reset HEAD~1`** loop or a **git worktree** — see [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## `binary-build` dist smoke test and `ELECTRON_RUN_AS_NODE`\n\nAfter Lerna `build` / `build-prod`, `scripts/binary/build.ts` runs **`node index.js --version`** in the staged **`dist/`** tree (`TMP_BUILD_DIR`, e.g. `/tmp/cypress-build/darwin/dist`). `testDistVersion` compares stdout to the **`--version`** argv.\n\n### `Cannot find module 'electron'` (false failure)\n\n**Cause:** Parent shell has **`ELECTRON_RUN_AS_NODE=1`** (common in Cursor/Electron agent hosts). `packages/server/lib/util/electron-app.js` `isRunning()` then returns true, `start-cypress.js` calls **`require('electron')`**, and Node fails — the production **`dist/`** tree does **not** include the `electron` npm package (only the packaged Electron app later).\n\n**Not:** missing `copyAllToDist` / sandbox hiding `node_modules`. Repro: with `ELECTRON_RUN_AS_NODE=1` the staged dist fails; with **`env -u ELECTRON_RUN_AS_NODE`** the same `node …/dist/index.js --version` succeeds.\n\n**Mitigations:**\n\n1. Agents: **`env -u ELECTRON_RUN_AS_NODE yarn binary-build …`** (and package steps).\n2. Repo: `testDistVersion` in `scripts/binary/build.ts` omits **`ELECTRON_RUN_AS_NODE`** from the child `execa` env so builds are stable even when the parent sets it.\n\n### `different version reported`\n\n**Cause:** `--version` argv does not match **`node index.js --version`** from the built dist (version baked via `@packages/root` during the build, which may differ from root `package.json` on `develop`).\n\n**Fix:** Use the discovery command in **Non-interactive** above, or stdout from a partial `dist/` after a failed build.\n",".circleci/AGENTS.md":"# CircleCI Configuration\n\nAgent guidance for `.circleci/` — source configs under `src/` are packed into `packed/` at CI runtime. See [README.md](./README.md) for local CLI setup and the pre-commit `yarn pack-ci --validate` workflow.\n\n## Full CI branch allowlist\n\nMost PR branches run the **pull-request workflow** with path-based job filtering (`generate-pipeline-parameters.sh`). A small set of branch names instead run the **main workflows** (`linux-x64`, `linux-arm64`, `darwin-x64`, `darwin-arm64`, `windows`).\n\n### When to add a branch name\n\nAdd a branch when the change affects behavior that is only validated by main-branch CI — in particular:\n\n- **Windows jobs** — the `windows` workflow (`windows-v8-integration-tests`, `windows-create-build-artifacts`, etc.)\n- **V8 snapshot / packaging tooling** — `v8-integration-tests` on Linux, macOS, and Windows; snapshot cache updates in `tooling/v8-snapshot/cache/`\n- **Full binary tests** — kitchensink, staging, and npm-module verification jobs (see optional gates below). These no longer run on pull requests at all, so an allowlisted branch is the only way to exercise them before merge.\n\nIf only unit/integration tests scoped to changed packages are sufficient, do **not** add the branch — use a normal PR branch instead.\n\n### Where to add the branch name\n\n**Required:** append a **new** `- equal:` entry to the `or:` block in `&full-workflow-filters` in `.circleci/src/pipeline/workflows/@main.yml` (the `when:` at the top of `linux-x64`, reused by `windows` and other platform workflows). Do **not** rename or remove existing entries (`develop`, `update-v8-snapshot-cache-on-develop`, the `release/*` / `electron/*` patterns, or `force-persist-artifacts`):\n\n```yaml\n    or:\n      - equal: [ develop, << pipeline.git.branch >> ]\n      # ... leave existing entries unchanged ...\n      - equal: [ 'your-branch-name', << pipeline.git.branch >> ]  # add this line\n```\n\nPush your work to the branch name you add — do not repurpose an existing allowlisted branch (for example, do not change `update-v8-snapshot-cache-on-develop` to a different name).\n\nThis gate turns on the main/multi-platform workflow graph, including `windows-v8-integration-tests` and `v8-integration-tests` on Linux/macOS. The existing `update-v8-snapshot-cache-on-develop` entry is reserved for automated v8 snapshot cache PRs.\n\nThis gate does not turn on `windows`, `linux-arm64`, `darwin-x64`, or `darwin-arm64` for plain `develop` or `release/*` pushes. On those two, all four run from a scheduled pipeline instead — see \"Scheduled platform CI\" below. Any other branch you add here turns all five on per-push.\n\n**Optional — only if you need more than main workflows + path-filtered jobs:**\n\n| Location | When you also need it |\n|----------|------------------------|\n| `pull-request.yml` exclusion list | Avoid the PR workflow running in parallel with the main workflows on the same branch |\n| `notify-binary-failure`'s `filters:` in `@main.yml` | Testing binary failure alerting on a branch — it is pinned to `develop`, so it never fires elsewhere |\n| `generate-pipeline-parameters.sh` branch override | Force every path-filtered job to run even when changed files would not normally select them (or trigger manually with `run-all-jobs=true`) |\n| `&mainBuildFilters` in `@main.yml` | Binary/kitchensink/staging jobs in `linux-x64` that have an extra branch filter beyond the workflow `when:` |\n\nFor typical v8 snapshot cache work, changes under `tooling/*` already enable `run-v8-tests` via path filtering, so **`&full-workflow-filters` alone is usually enough**.\n\nAfter editing `.circleci/src/`, run `yarn pack-ci --validate` before committing.\n\n### Per-workflow gates\n\nThe `run-*` guards live in the shared job definitions in `@pipeline.yml` (via `halt-if-skipped`), not in the workflow files, so they apply to every workflow below — not just the PR one.\n\n- **`linux-x64`**: `build`, lint, and type checks always run, as do the binary/packaging chain and release gating (`create-and-trigger-packaging-artifacts`, `get-published-artifacts`, `test-binary-*`, `verify-release-readiness`, `ready-to-release`, `npm-release`). Per-package integration/unit jobs, system tests, and `v8-integration-tests` are guarded, so a webhook push to `develop` runs only the ones its changed paths select.\n- **`windows` / `linux-arm64` / `darwin-*`**: none of these three run on a plain `develop` or `release/*` push — see \"Scheduled platform CI\" below for when they do. Inside them, `v8-integration-tests`, `driver-integration-memory-tests`, and (Windows) selected integration/unit jobs are still guarded by `run-*` parameters, but a scheduled run gets all-true from `generate-pipeline-parameters.sh`'s trigger-source check, so nothing inside these workflows is actually path-filtered once one runs.\n\n`linux-x64` runs on any `&full-workflow-filters` branch directly. The other four need more than that. On `develop` and `release/*` they run only from a scheduled pipeline. On `electron/*`, `update-v8-snapshot-cache-on-develop`, or an allowlisted branch, `&full-workflow-filters` alone is enough.\n\n`npm-release` still runs only on `develop`, not on allowlisted feature branches.\n\n### Scheduled platform CI (develop and release/*)\n\nNone of the four runs on every `develop` or `release/*` push. Windows moved for credit cost. The two `darwin-*` workflows moved to free leased self-hosted macOS hardware. `linux-arm64` costs almost nothing and moved for consistency, so all platform coverage lands in one sweep. Per-merge platform signal was not actionable anyway — `develop` passed 47 of 213 runs. A release branch is long-lived enough for a scheduled sweep to cover it the same way.\n\n**What exists today**: a CircleCI Scheduled Pipeline named \"Platform Develop Branch Schedule\" (id `40ddfea0-34c3-47ab-8557-6bdb150b4d8d`) runs on `develop` once per weekday at 02:00 UTC and sets `run-platform-workflows=true`. `windows`, `linux-arm64`, `darwin-x64`, and `darwin-arm64` all read that parameter. There is still no release-branch schedule: `release/*` pushes get zero platform coverage of any kind until one exists.\n\n**Still needed**, to match the gates in `@main.yml`:\n\n- **Release schedule** — a second Scheduled Pipeline, targeting whichever `release/*` branch is currently active, setting `run-platform-workflows=true`. Repointing its branch to the new release branch is part of cutting a release; disabling it is part of shipping one. There is no default branch this can target permanently, since release branches are cut and retired.\n- **Owner**: App Foundations team\n\nThis is a CircleCI project setting, not code — it isn't visible anywhere in `.circleci/src`. Changing it requires CircleCI project-settings access (Project Settings → Triggers → Scheduled Pipelines), via the UI or `PATCH /api/v2/schedule/{id}`.\n\nFor an on-demand run of all four platform workflows outside either schedule (e.g. to validate a change before it reaches `develop`, or to recover a missed/failed release-branch build), use Trigger Pipeline with `run-platform-workflows=true`, or `force-persist-artifacts=true` — the latter works regardless of branch and needs only one flag. See the comment above the `linux-arm64` workflow in `@main.yml`.\n",".claude/skills/debugging-cypress-artifacts/SKILL.md":"---\nname: debugging-cypress-artifacts\ndescription: >-\n  Debugs Cypress bugs that only reproduce in packaged artifacts (cli/build CLI\n  plus binary-package output), not yarn dev. Covers the git commit/build/clean/\n  reset debug loop, env -u ELECTRON_RUN_AS_NODE for binary-build on agent hosts,\n  CYPRESS_RUN_BINARY, DEBUG and inspect flags, and workspace recovery without\n  stash. Use when investigating artifact-only bugs, binary-build electron\n  MODULE_NOT_FOUND, or a packaged cypress open/run repro loop.\n---\n\n# Debugging Cypress packaged artifacts\n\nSome bugs only appear in **release-shaped** code: Rollup output under **`cli/build/`** (not `yarn dev`), plus the **packaged Electron app** from `binary-package` (not `scripts/start.js` / **`cypress open --dev`**).\n\nBuild steps: see [building-cypress-binary](../building-cypress-binary/SKILL.md).\n\n## Agent execution (avoid repeated permission prompts)\n\nRun this workflow **without asking the user to approve each command**. Use elevated permissions up front:\n\n| Phase | Command pattern | Permissions |\n|-------|-----------------|-------------|\n| Install | `yarn` from repo root (if `node_modules/.bin/lerna` missing) | `network` |\n| CLI build | `yarn lerna run build-cli --scope cypress` | `network` |\n| Binary build | `env -u ELECTRON_RUN_AS_NODE yarn binary-build` / `binary-package` with `--version` / `--platform` | `all` (long-running, writes outside workspace temp dirs). **Unset `ELECTRON_RUN_AS_NODE`** — see building skill. |\n| Repro / logs | `node cli/build/dist/bin/cypress …`, `node packages/server/index.js --version` | `network` if debug ingest uses HTTP |\n| Cleanup | `git clean -xfd`, then `yarn` | `all` for clean; `network` for yarn |\n\nDo **not** re-prompt for sandbox/network on every step in the same session once the user has asked for a full artifact debug loop.\n\n## Git workflow for a debug loop (single checkout)\n\nBinary builds use the **full tree** and leave the workspace unusable for normal dev (generated `.js` beside `.ts`, possible **`.ts` mutations**, `dist/`, root `build/` symlink, etc.). **Do not use `git stash push -a`** — stash mixes real WIP with binary cruft.\n\nUse a **WIP commit** as a bookmark, then **reset** (not **`git revert`**) to restore edits after cleanup:\n\n1. **`git checkout -b debug/<topic>`** (or stay on an existing debug branch).\n2. **Analysis edits** (logging, temporary probes, etc.). Commit only what you mean — prefer **`git add <paths>`** over blind **`git commit -a`**, so build noise on tracked files is not swept into the WIP commit.\n3. **`git commit -m \"wip: debug …\"`** if there are changes worth preserving (see **Husky** below if commit fails).\n4. **Build** packaged CLI and binary (see building skill): `yarn lerna run build-cli --scope cypress`, then **`env -u ELECTRON_RUN_AS_NODE yarn binary-build`** / **`binary-package`** with matching **`--version`** (discover via `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version`) and **`--platform`**.\n5. **Repro** with packaged entrypoints (below).\n6. **Restore workspace:**\n   ```bash\n   git clean -xfd && yarn\n   ```\n   Then either:\n   - **`git reset HEAD~1`** (mixed, default) if step 3 succeeded — WIP commit becomes unstaged changes again; **not `git revert`**.\n   - **`git restore --staged --worktree <paths>`** if there was **no WIP commit** (instrumentation-only files listed in step 2). Remove any temporary helper files (e.g. `packages/server/lib/util/debug-agent-log.js`) with `rm`.\n\n7. Repeat from step 2.\n\n**Rules:** Do not **`git reset HEAD~1`** after pushing that WIP commit unless you intend to rewrite remote history. Untracked files not in the WIP commit are **gone** after `git clean -xfd`. `.claude/*` and `.cursor/*` are gitignored except for a short allowlist (`.claude/skills`, `.claude/settings.json`, `.cursor/BUGBOT.md`, `.cursor/environment.json`, `.cursor/Dockerfile`) — those are tracked and survive `git clean -xfd`; anything else you keep under those directories will not.\n\n**Husky:** If **`git commit`** fails with missing **`.husky/_/husky.sh`**, do not loop on commit. Proceed with staged instrumentation, then restore via **`git restore`** in step 6 (or fix Husky / run `yarn` so hooks install, then commit).\n\n**Alternative:** a **separate git worktree** for binary-only work avoids the commit/reset dance; see the building skill’s reset section.\n\n## Packaged CLI entrypoint\n\nAfter **`yarn lerna run build-cli --scope cypress`**:\n\n```bash\nnode <repo>/cli/build/dist/bin/cypress <command>\n```\n\nRollup emits the instrumented entry at **`cli/build/dist/bin/cypress`**. **`cli/build/bin/cypress`** is a **thin copy** of `cli/bin/cypress` (loads `../dist/cli` via a different path) and is **not** the same as the Rollup bundle — do not use it for artifact or agent-log repro.\n\nPrefer an absolute path when cwd might confuse postinstall-relative logic.\n\n## Point the CLI at your packaged binary\n\n```bash\nexport CYPRESS_RUN_BINARY=/path/to/platform/executable\n```\n\nSet the **real executable** (validated in `cli/lib/tasks/state.ts` via `realpath`), not the `.app` folder alone:\n\n| OS | Example shape |\n|----|----------------|\n| macOS | `…/Cypress.app/Contents/MacOS/Cypress` |\n| Linux | `…/Cypress` (unpacked binary) |\n| win32 | `…/Cypress.exe` |\n\nAlign **CLI package version** with the **binary `--version`** used at build time when possible.\n\n## Log and trace flags\n\n- **`DEBUG=cypress:cli*`** — CLI install, verify, spawn.\n- **`DEBUG=cypress:electron*`** — Electron install/open; CLI spawn also uses `cypress:electron`.\n- **`ELECTRON_ENABLE_LOGGING=1`** — unfiltered Electron stderr (`packages/electron/src/open.ts`).\n- Prefer scoped `DEBUG` patterns over **`DEBUG=cypress:*`**.\n\n## Attach debuggers\n\n- **CLI (Node):** `node --inspect-brk <repo>/cli/build/dist/bin/cypress <command>`\n- **Electron main (packaged):** `node <repo>/cli/build/dist/bin/cypress open --inspect-brk` (or `--inspect`); forwarded in `cli/lib/exec/open.ts` / `run.ts`. Use with **`CYPRESS_RUN_BINARY`** so the debuggee is your local package output.\n\n## Debug-session instrumentation (agents)\n\nWhen using Cursor debug-mode HTTP ingest (`127.0.0.1:7709`, session log under **`.cursor/debug-<session>.log`**):\n\n- **Entry layers** to tag: CLI bin → CLI `init` → CLI `spawn` (only when the binary is spawned, not for `version`) → `packages/server/index.js` (`startCypress`) → `packages/server/start-cypress.js`.\n- **Short-lived CLI:** fire-and-forget `fetch` alone often loses events because the process exits first. Also **`appendFileSync`** the same NDJSON line to the session log path (or a small `debug-agent-log.js` helper on the server side) in addition to `fetch`.\n- **Verify server layers** without a full green binary: `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version` from `packages/server` (exercises index + start-cypress; **unset `ELECTRON_RUN_AS_NODE`** if the agent host sets it).\n- **Verify CLI layers:** `node cli/build/dist/bin/cypress version` (does not hit spawn). CLI bin is unaffected by `ELECTRON_RUN_AS_NODE` for the version subcommand, but binary-build still needs the var unset.\n\n## What to skip\n\n- **`--dev`** on `open` / `run`\n- Assuming **`yarn dev`** matches packaged behavior (`cli/lib/tasks/verify.ts` uses `scripts/start.js` when `dev` is true)\n\n## Common workspace gotcha after `yarn`\n\nIf **`yarn`** / Vite fails on **`urqlSchema`** or **`urqlCacheKeys`** imports from `@packages/data-context`, stale **`packages/data-context/src/**/*.js`** files may be shadowing **`.ts`**. Regenerate (`yarn workspace @packages/data-context build`) and remove **`.js` siblings that have a matching `.ts`** under `packages/data-context/src/` before retrying `yarn`.\n",".cursor/skills/server-mocha-to-vitest/SKILL.md":"---\nname: server-mocha-to-vitest\ndescription: >-\n  Converts one @packages/server unit spec from mocha (test/unit/**/*_spec.ts) to\n  vitest (*.spec.ts) without changing what the test proves. Use when migrating a\n  server unit spec, when a converted spec passes but its mocks may not be\n  intercepting, or when the user mentions spec_helper, mockery, proxyquire,\n  sinon, snap-shot-it, or the mocha/vitest split in packages/server.\n---\n\n# Migrate a `@packages/server` unit spec from mocha to vitest\n\nScope: `packages/server/test/unit` only. Integration and performance suites stay on mocha.\n\nThis skill lists the things that go wrong *silently*: a converted spec that is green while\nits mocks never engaged, or that asserts less than the mocha original did. Plain API\nmapping (`sinon.stub` to `vi.fn`, `context` to `describe`)\nis not covered; you already know it. Parent issue: cypress-io/cypress#34846.\n\n## The contract\n\n- `*_spec.ts` runs on mocha via `test/scripts/run.js`. `*.spec.ts` runs on vitest via\n  `packages/server/vitest.config.ts`. `yarn test-unit` runs both.\n- Convert by `git mv foo_spec.ts foo.spec.ts` and rewriting the file. The mocha file must be\n  gone when you finish. Never leave a file half-converted: every `it` in the original is\n  ported, or the file is not touched at all.\n- The new file imports from `vitest` explicitly and uses nothing else for test plumbing:\n  no `spec_helper`, `mockery`, `proxyquire`, `sinon`, `chai` or its plugins, `snap-shot-it`,\n  `mocked-env`. Keep `nock`, `supertest`, `express`, `lodash`, `bluebird` where the original\n  used them for real work.\n- Never weaken a test: no `.skip`, no dropped or loosened assertion, no `vitest -u` to make a\n  snapshot agree. If a test cannot be made green, leave it failing and say why in the PR.\n- Do not touch `.circleci/`, `vitest.config.ts`, or `cloud/environment_spec.ts`. The last one\n  is named in four CI workflows and migrates in its own human PR.\n- Specs never connect to a non-loopback address. Tests must pass on a sandboxed host.\n\n## `spec_helper.js` is not ported. Inline what the file needs.\n\n`test/spec_helper.js` installs root hooks for the whole mocha process. A mocha spec depends\non them even when it never imports `spec_helper`, because some other spec in the same run\ndid. Under vitest each file is on its own, so read `spec_helper.js` and inline only the\nhooks this file actually relies on:\n\n| Original behavior | Inline as |\n|---|---|\n| `setCtx(makeDataContext({}))` before, `getCtx()._reset()` + `clearCtx()` after | only if the SUT calls `getCtx()`; see the GraphQL note below before using `makeDataContext` |\n| `nock.disableNetConnect()` + `nock.enableNetConnect(/localhost/)` before, `nock.cleanAll()` + `nock.enableNetConnect()` after | any spec that uses `nock`, even when the original had no hooks (`cloud/api/create_instance.spec.ts`) |\n| `cache.remove()` before each | specs touching `lib/cache` |\n| `GracefulExit.resetForTesting()` | specs that start servers; it is a silent no-op unless `globalThis.IS_TEST = true` is set first (`server-base.spec.ts`) |\n| `process.env` cloned and restored after each | specs that set env; `vi.stubEnv` + `vi.unstubAllEnvs()` also works |\n| `mockElectron(mockery)` | `vi.mock('electron', ...)` only if the SUT's import graph reaches `electron`; most do not |\n| `sinon.restore()` after each | `vi.restoreAllMocks()`, with the caveat below |\n\nA spec with no hooks is fine. `automation/commands/key_press.spec.ts` needs none.\n\n## Mocks that load the real module without telling you\n\n**Prove each mock intercepts.** Add a temporary `throw` or call count\nto the factory, run the spec, then remove it. A green run alone proves nothing.\n\n**`vi.mock` specifiers must be the string the importer wrote**, resolved from your spec's\nlocation for relative paths. `vi.mock('../../../../lib/cloud/network/fetch')` from the spec\nmatches the SUT's `import ... from '../network/fetch'` because both resolve to the same file.\nA path that resolves elsewhere is ignored and the real module loads.\n\n**A bare `require()` inside the SUT is never intercepted by `vi.mock`**, with or without\n`server.deps.inline`. vite-node hands transformed modules a plain node `require`, and\nvitest's mocker only hooks ESM imports. Seed the CJS cache instead, which is what mockery did:\n\n```ts\nconst requireCjs = createRequire(import.meta.url)\nconst morganPath = requireCjs.resolve('morgan')\n\nrequireCjs.cache[morganPath] = { exports: morganMockFactory } as NodeModule\n// afterAll / afterEach: delete requireCjs.cache[morganPath]\n```\n\nThe `exports` value is exactly what the SUT's `require()` returns, so a callable\n`module.exports = function` package (`morgan`, the `@cypress/*` preprocessors) is mocked with\nthe function itself. Examples: `plugins/child/run_plugins.spec.ts`, `server-base.spec.ts`.\n\n**Partial mocks of node builtins must override `default` too.** A SUT that does\n`import fs from 'fs'` reads `fs.createReadStream` off the default export. Spread the actual\nmodule into both the named exports and a rebuilt `default`, or the real function runs:\n\n```ts\nvi.mock('fs', async (importOriginal) => {\n  const actual = await importOriginal<typeof import('fs')>()\n\n  return { ...actual, createReadStream: stub, default: { ...actual, createReadStream: stub } }\n})\n```\n\nExample: `cloud/api/put_protocol_artifact.spec.ts`.\n\n**A two-hop `proxyquire` chain usually collapses to one `vi.mock` of the leaf.** The second\nhop existed because proxyquire cannot reach a transitive dependency. `vi.mock` applies to the\nwhole module graph, so mock `chrome-remote-interface` once with `vi.hoisted` state and import\nthe SUT statically. Only reach for `vi.resetModules()` plus a dynamic import when the SUT\nholds module-level mutable state that mocha reset by re-requiring. Example:\n`browsers/cri-client.spec.ts`.\n\n**`vi.spyOn` on an ESM namespace import does work** for `lib/*.ts` modules, because vite's\nSSR transform rewrites named imports to live property reads. `vi.spyOn(ensureUrl, 'isListening')`\npatches what `server-base.ts` sees. It keeps the real implementation unless you add\n`.mockImplementation`, which `sinon.stub` did not.\n\n## Assertions that flip meaning\n\n**chai `deep.equal` is `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose value is\n`undefined`, so an expected `{ envUrl: undefined }` also matches an object with no `envUrl` key,\nwhich chai rejects (`cloud/environment.spec.ts`).\n\n**sinon `calledWith` is a prefix match. vitest `toHaveBeenCalledWith` is exact-arity.**\n`client.send('Network.enable', opts, sessionId)` satisfies `calledWith('Network.enable')` but\nfails `toHaveBeenCalledWith('Network.enable')`. Worse, `not.toHaveBeenCalledWith('Fetch.disable')`\npasses vacuously against a 3-argument call. Either assert the full argument list or filter\n`mock.calls` by leading arguments. Examples: `expectCalledWith` in `browsers/cri-client.spec.ts`,\n`callsFor` in `server-base.spec.ts`.\n\n**chai `deep.equal` / `eql` maps to `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose\nvalue is `undefined`, which chai does not. `toStrictEqual` is stricter than chai mainly about\nprototypes: Node's header objects have a null prototype, so spread them into a plain object\nbefore asserting (`request.spec.ts`).\n\n**`sinon.stub().withArgs(x)` returns the filtered stub.** When the original assigned that return\nvalue, the \"filter\" never gated anything and the stub answered every call. Porting it as an\nargument-conditional mock returns `undefined` for the real calls. Read what the mocha stub\nactually did before translating it.\n\n**`vi.restoreAllMocks()` wipes `vi.fn().mockReturnValue(...)`.** `sinon.restore()` left\n`.returns()` behavior on plain stubs alone. Shared fixtures need `vi.fn(() => value)` so the\nimplementation survives restore.\n\n**Bluebird.** Server code still chains `.return()`, `.spread()`, `.tap()` on values it awaits.\nWhere the SUT chains Bluebird methods on a mocked return, `mockResolvedValue` hands back a\nnative promise and the SUT throws a confusing `not a function`. Return `Bluebird.resolve(...)`\nfrom that mock. Check the current SUT first; many call sites are plain `await` now and native\npromises are fine (`ensureUrl.isListening` in `server-base.ts` is one).\n\n**The transpiler is visible in stringified functions.** A test that asserts on\n`fn.toString()` of a handler defined in the spec reads esbuild's output under vitest, not\nts-node's. Keep the assertion exact and update the literal; do not normalize it away.\n\n**Decomposed Unicode literals get normalized by editors.** `'é'` as `e` + U+0301 becomes\nU+00E9 on save. Byte-compare string literals against `git show HEAD:<mocha file>` when a spec\ncontains combining characters (`automation/commands/key_press.spec.ts`).\n\n## GraphQL, nock, timers\n\n**Importing `lib/server-base`, `lib/routes`, or `lib/makeDataContext` builds the GraphQL\nschema a second time** in the worker and `graphql` rejects the duplicate realm. Mock\n`@packages/data-context/graphql/makeGraphQLServer` with `graphqlWS` and `graphQLHTTP` stubs.\nMocking that alone is not enough if you also call `makeDataContext`; use a minimal\n`DataContext` object carrying only the members the SUT touches (`routes.spec.ts`).\n\n**nock `delayConnection` with one large `advanceTimersByTimeAsync`** fires the delayed\nconnection before the request timeout and consumes the wrong interceptor. Use\n`vi.runAllTimersAsync()` in rounds or step the clock in small increments. Also note that\nchaining `delayConnection(5000)` then `delayConnection(0)` on the same interceptor mutates one\nobject, so both replies get delay 0; port that verbatim rather than \"fixing\" it.\n\n**Fake timers:** `vi.useFakeTimers()` / `vi.useRealTimers()` in hooks. `clock.tickAsync(n)`\nbecomes `await vi.advanceTimersByTimeAsync(n)`. A non-async helper that the original `await`ed\nmust stay non-async, or you add a microtask and change what mid-flight assertions observe.\n\n## Source edits for testability\n\nAllowed only when obvious on sight: an optional parameter with a default that preserves\nbehavior, exporting a function that already exists, extracting an inline expression into a\nnamed pure function in the same file. Not allowed: changing control flow, changing a signature\ncallers depend on, touching more than one `lib/` file per batch, or anything you cannot justify\nin one sentence. Every source edit gets its own heading in the PR body. When in doubt, skip the\nspec; it stays in the pool.\n\n## Verify\n\n```bash\nyarn workspace @packages/server test-unit-vitest -- test/unit/<dir>/foo.spec.ts\nyarn workspace @packages/server test-unit          # both runners, from a real terminal\nyarn lint --scope @packages/server\nyarn workspace @packages/server check-ts\n```\n\nRun the converted spec at least twice. Run `test-unit` from a terminal, not with stdout piped\nto a file: `util/tty_spec` needs `process.stdout.getWindowSize`, which only exists on a TTY,\nand fails on develop too when piped. Count `it(` in the mocha original and in the vitest file;\nthey must match (loops that generate tests expand at runtime, so compare the static count).\n\n## Style\n\nSingle quotes, no semicolons, 2-space indent, trailing commas, blank line before `return`,\n`import type` for type-only imports, no `console`. Prefer no comment; when one is needed, say\nwhy in one or two lines and describe the present code, never how it used to work.\n","cli/AGENTS.md":"# CLI Workspace\n\n## Purpose\n\nThe `cli/` workspace contains the `cypress` npm package — the user-facing CLI and programmatic API — plus the first-party component-testing mount adapters that ship bundled inside it. This is the top-level package users install (`npm install cypress`). The mount adapters (`@cypress/react`, `@cypress/vue`, etc.) live here as sibling directories and are published independently on npm, but their built artifacts are also copied into `cli/` so that users can import them as `cypress/react`, `cypress/vue`, etc.\n\n## Package Map\n\n### Main CLI\n\n**cypress** — The `cypress` npm package. Provides the `cypress` binary, programmatic Node.js API, TypeScript type definitions, and re-exports the built CT adapter artifacts.\n\n### Component-Testing Adapters\n\n**@cypress/angular** — Mount adapter for Angular 21+ components.\n\n**@cypress/mount-utils** — Internal shared utilities and types that all CT mount adapters depend on. Not intended for direct use by end users.\n\n**@cypress/react** — Mount adapter for React 18+ components.\n\n**@cypress/svelte** — Mount adapter for Svelte 5+ components.\n\n**@cypress/vue** — Mount adapter for Vue 3 components.\n\n## Workspace Commands\n\n```bash\n# Build the main cypress CLI package\ncd cli && yarn build-cli\n\n# Build only (no pre/post steps)\ncd cli && yarn build\n\n# Run a specific unit test file\ncd cli && yarn test-unit -- <path-to-spec>\n\n# Run unit tests matching a glob pattern\ncd cli && yarn test-unit -- \"<glob-pattern>\"\n\n# Type-check types/\ncd cli && yarn types\n\n# Build a CT adapter (example: react)\ncd cli/react && yarn build\n\n# Build mount-utils (tsc-based, not rollup)\ncd cli/mount-utils && yarn build\n```\n\n## Unit Tests\n\nThe `unit-tests` CI job runs only on `linux-x64` and `windows` — there is no arm64 executor — so **a spec coupled to the host machine passes CI and still fails for contributors**, most often on Apple Silicon. Keep specs host-independent.\n\n- **Pin the architecture at both layers.** `util.getRealArch()` consults `os.arch()` only for its early returns; otherwise it falls through to the `arch` package, which reports the real machine. A spec asserting on output that carries an arch — `Platform:` lines, download URLs, `?arch=` query params, CDN build URLs — needs a file-scoped `vi.mock('arch', () => ({ default: () => 'x64' }))` alongside `vi.mocked(os.arch).mockReturnValue('x64')`. Mock it per file rather than globally through `setupFiles`: some specs exercise real-machine detection deliberately, and a shared mock hides the dependency from the file that relies on it.\n- **Keep test helpers generic.** Normalizers that scrub output before snapshotting must match the shape of a host value, not the value itself — `&arch=[\\w-]+`, never `&arch=x64` — so the helper cannot re-couple a snapshot to the host.\n- **Never run `vitest -u` to clear a host-dependent failure.** Committed snapshots encode the canonical values; regenerating them on a different machine buries the coupling and breaks everyone else. Fix the mock instead.\n- **Treat other host facts the same way** — `os.platform()`, `os.release()`, `os.tmpdir()`, `os.homedir()`, cache directories, path separators. Assert against mocked values, never whatever the machine reports.\n\nVerify an arch or platform mock is load-bearing rather than decorative: flip its factory to the other value, run that spec, and confirm the expected tests fail. A mock wired to nothing is worse than no mock, because it reads as coverage.\n\n`util._cachedArch` is a module-level singleton. A file-scoped `vi.mock('arch')` is in place before the first call, so the cached value is already the mocked one; reset it (`util._cachedArch = undefined`) only in specs that vary the arch between tests.\n\n## Notes\n\n- The main CLI build uses Rollup (configured in `rollup.config.mjs`). Entry points are `lib/index.ts`, `lib/cli.ts`, `lib/cypress.ts`, `lib/exec/xvfb.ts`, `lib/exec/spawn.ts`, and `lib/bin/cypress.ts`. Output goes to `dist/` and is copied to `build/` via `sync-build-dist.ts`.\n- The `cli/react`, `cli/vue`, `cli/angular`, `cli/svelte`, and `cli/mount-utils` directories are build output, not sources — each adapter's `postbuild` writes them, and the adapter sources live in `npm/`. See [`npm/AGENTS.md`](../npm/AGENTS.md) for the mechanism.\n- Unit tests for the CLI itself live in `cli/test/` and run under Vitest (`test/**/*.spec.ts`).\n- TypeScript type definitions for the public Cypress API live in `cli/types/`. The `dtslint` tool is used to validate them, configured by `cli/types/tslint.json`. That file must stay plain JSON, so the reasons behind its settings are recorded here:\n  - `no-single-declare-module` is off because the Cypress npm module API is kept in its own file on purpose.\n  - `no-unnecessary-qualifier` is off because it flags qualifiers the types need.\n  - `linterOptions.exclude` lists the bundled third-party typings (lodash, chai, sinon and so on), which don't follow our rules. It also lists `net-stubbing.d.ts`, which is copied in from `@packages/network-interception` and renamed, so it was never written as a declaration file.\n- The `CYPRESS_INSTALL_BINARY` environment variable can be set to a path or URL to override the binary downloaded during `postinstall`.\n- The `cypress` package sets `\"private\": true` in its monorepo `package.json` — publishing is handled by CI scripts that prepare a separate `package.json`.\n","cli/CLAUDE.md":"# CLI\n\n@AGENTS.md\n",".circleci/CLAUDE.md":"# CircleCI Configuration\n\n@AGENTS.md\n","npm/AGENTS.md":"# npm Workspace\n\n## Purpose\n\nThe `npm/` directory contains the publicly published npm packages for the Cypress ecosystem, including component testing adapters for each supported UI framework, bundler integrations that power the component testing dev server, and plugins and dev tooling used by Cypress consumers and the Cypress team. These packages are versioned and released independently from the main `cypress` binary; they are released automatically via semantic-versioning commit prefixes (`feat`, `fix`, `chore`, etc.) when changes land on `develop`.\n\n## Package Map\n\n### Component Testing Adapters\n\n- **@cypress/react** — Mount React components (React 18+) in the Cypress test runner\n- **@cypress/vue** — Mount Vue 3 components in the Cypress test runner\n- **@cypress/angular** — Mount Angular components (Angular 21+) in the Cypress test runner\n- **@cypress/svelte** — Mount Svelte 5+ components in the Cypress test runner\n- **@cypress/mount-utils** — Shared utility types and helper functions consumed by all component testing adapters; not intended for direct use by end users\n\n### Bundler Integrations\n\n- **@cypress/webpack-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Webpack Dev Server\n- **@cypress/vite-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Vite (peer dependency `vite@^8`)\n- **@cypress/webpack-preprocessor** — Cypress file preprocessor for bundling test files via Webpack 5; requires peer deps (`@babel/core`, `babel-loader`, etc.) to be installed by the consumer\n- **@cypress/webpack-batteries-included-preprocessor** — Wrapper around `@cypress/webpack-preprocessor` that bundles Babel and TypeScript loaders so consumers do not need to configure them separately\n- **@cypress/vite-plugin-cypress-esm** — Vite plugin (alpha) that wraps ES modules in a `Proxy` to allow mutation/mocking of ESM namespaces in component tests\n\n### Plugins & Dev Tooling\n\n- **@cypress/grep** — Plugin for filtering Cypress tests by substring or tags at runtime, with options for spec pre-filtering and test burning\n- **@cypress/puppeteer** — Plugin (beta) that runs Puppeteer message handlers registered in `setupNodeEvents` when a spec calls `cy.puppeteer(name, ...args)`; each handler receives a Puppeteer `Browser` connected to the Cypress-launched Chromium browser\n- **@cypress/schematic** — Official Angular CLI schematic and builder for scaffolding Cypress configuration into Angular projects (`ng add @cypress/schematic`)\n- **@cypress/eslint-plugin-dev** — Private, unpublished. The eslintrc presets the monorepo packages still on ESLint 8 lint against; being retired in favour of `@packages/eslint-config`\n\n## Workspace Commands\n\nEach package manages its own build, and script names are not uniform — check the package's `package.json` before running anything. From within a package directory:\n\n```sh\nyarn build          # compile TypeScript / run rollup (varies by package)\nyarn check-ts       # type-check without emitting (not every package has it, e.g. grep, schematic)\nyarn lint           # run ESLint\nyarn test -- <path-to-spec>          # vitest packages: target a specific file\nyarn test -- \"<glob-pattern>\"        # vitest packages: target specs matching a glob\n```\n\nWhat `yarn test` runs depends on the package:\n\n- **vitest** — `grep`, `puppeteer`, `schematic`, `vite-dev-server`, `webpack-dev-server`, `webpack-batteries-included-preprocessor`, `eslint-plugin-dev`\n- **Cypress** — `react` and `vue` (`yarn cy:run -- --spec <path-to-spec>`), `vite-plugin-cypress-esm` (`yarn cypress:run`)\n- **Custom script** — `webpack-preprocessor` runs `tsx ./scripts/test-webpack-5.ts` (it also has `test-unit` and `test-e2e`)\n- **No `test` script** — `angular`, `svelte`, `mount-utils`\n\nPackages with their own Cypress e2e suite use `cypress:open` / `cypress:run` (`grep`, `puppeteer`, `vite-dev-server`, `webpack-dev-server`, `vite-plugin-cypress-esm`); only `react` and `vue` use `cy:open` / `cy:run`.\n\nFrom the monorepo root:\n\n```sh\nyarn workspace @cypress/<pkg> build              # build a single package\nyarn lerna run build --scope '@cypress/*'        # build all npm packages\n```\n\n## Notes\n\n- **Re-export into `cli/`** (canonical description; other files point here). `react`, `vue`, `angular`, `svelte`, and `mount-utils` each run `postbuild` → [`scripts/sync-exported-npm-with-cli.js`](../scripts/sync-exported-npm-with-cli.js). It resolves the file list with `npm-packlist` — the files npm *would publish*, per the package's `files` key, which is a wider set than `dist/` — wipes `cli/<name>/`, copies them in, and then rewrites the `exports` map in `cli/package.json`. That is what makes `import ... from 'cypress/react'` resolve. Build the package before testing it in the binary; nothing else refreshes the `cli/` copy.\n- **Adapter builds can run before the `cypress` typedefs exist.** Packages with `\"types\": [\"cypress\"]` resolve it to `cli/types`, whose third-party folders (`jquery`, `mocha`, `chai`, etc., listed in `cli/.gitignore`) are generated by the cli build. CI's `lerna run build` compiles `@cypress/react` before that, so names like `JQuery` are undefined there but resolve in a local checkout that has built the cli once. A `@ts-expect-error` on such a line fails in one setup or the other, and so does deleting the directive. Reproduce CI by moving those generated folders out of `cli/types` before running the package build.\n- `@cypress/webpack-dev-server` and `@cypress/vite-dev-server` are bundled with the Cypress binary and generally do not need to be installed separately by end users; the object-syntax `devServer` config in `cypress.config.ts` is the primary API.\n- `@cypress/webpack-batteries-included-preprocessor` requires `@cypress/webpack-preprocessor` as a peer dependency and must be installed alongside it.\n- `@cypress/eslint-plugin-dev` is private and no longer published — it is for internal Cypress development only, and the packages that consume it are migrating to `@packages/eslint-config`. Do not recommend it to end users; the user-facing ESLint plugin lives at `eslint-plugin-cypress` (a separate repository).\n- `npm/xpath/` holds only a README: `@cypress/xpath` is deprecated and no longer maintained, and there is no source or `package.json` here.\n- Releases are triggered automatically by semantic commit messages on `develop`; there is no manual publish step for individual packages.\n","npm/CLAUDE.md":"# npm\n\n@AGENTS.md\n","packages/AGENTS.md":"# Packages Workspace\n\n## Purpose\n\nThe `packages/` workspace contains all first-party Cypress packages that make up the Cypress monorepo. These packages are the implementation of the Cypress test runner, its tooling, and supporting infrastructure. Each package is a standalone npm package (scoped under `@packages/`) consumed by the Cypress binary build, by each other, and in some cases by the public.\n\n## Package Map\n\n### App & Frontend\n\n- **@packages/app** — The main Vue 3 front-end application for the Cypress browser-side UI (specs list, Test Replay, runner toolbar, Studio).\n- **@packages/launchpad** — Vue 3 Electron-rendered application shown when running `cypress open`; handles login, project selection, and configuration setup.\n- **@packages/frontend-shared** — Shared Vue 3 components, TailwindCSS config, composables, and i18n strings consumed by both `app` and `launchpad`.\n- **@packages/reporter** — The test result reporter UI (command log, test tree) rendered inside the runner iframe.\n- **@packages/runner** — Legacy webpack bundler for `driver` and `reporter`; being phased out in favour of `app`.\n\n### Test Runner & Driver\n\n- **@packages/driver** — Core JavaScript library loaded inside the browser; executes Cypress commands and manages the test runtime.\n- **@packages/extension** — Chrome/Firefox WebExtension that enables browser automation (v2 Manifest V2, v3 Manifest V3).\n\n### Server & Network\n\n- **@packages/server** — Node.js heart of Cypress: HTTP server, proxy orchestration, file watching, plugin execution, and IPC with the browser.\n- **@packages/proxy** — HTTP interception proxy layer; applies middleware to requests and responses to enable stubbing, rewriting, and header injection.\n- **@packages/net-stubbing** — Server-side implementation of `cy.intercept()`; route matching, request/response lifecycle, and driver event bridge.\n- **@packages/network** — Node.js networking utilities: HTTP/HTTPS proxy-aware agents, CA certificate management, and connection helpers.\n- **@packages/network-tools** — Isomorphic (browser + Node.js) low-level networking utilities: CORS helpers, URI parsing, domain utilities.\n- **@packages/https-proxy** — Intercepts TLS connections by acting as a dynamic CA; generates per-hostname certificates on the fly using `node-forge`.\n\n### Configuration & Data\n\n- **@packages/config** — Canonical Cypress configuration schema, option definitions, validation logic, and AST-based `cypress.config` file transforms.\n- **@packages/data-context** — Centralized GraphQL data layer (Nexus schema) for the Cypress app; manages project state, Cloud queries, file watching, and actions.\n- **@packages/scaffold-config** — Detects frameworks/bundlers in a user's project and scaffolds `cypress.config.js` and supporting files during onboarding.\n\n### Desktop & Electron\n\n- **@packages/electron** — Installs, packages, and manages the Electron binary that wraps Cypress; provides the `cypress-electron` CLI entrypoint.\n- **@packages/launcher** — Detects installed browsers on macOS, Linux, and Windows and launches them with the correct flags and profile paths.\n\n### Types, Errors & Utilities\n\n- **@packages/types** — Shared TypeScript type definitions used across the entire monorepo.\n- **@packages/errors** — Centralised error definitions, formatting utilities, and `errTemplate` tagged-template system for all Cypress error messages.\n- **@packages/socket** — Thin shared wrapper around `socket.io` client and server instances used for browser–server IPC.\n- **@packages/telemetry** — OpenTelemetry convenience wrapper for capturing performance spans and usage signals inside Cypress processes.\n- **@packages/icons** — Cypress icon assets (SVG, PNG, ICO) and build scripts that produce browser-consumable image files.\n- **@packages/stderr-filtering** — Utility for tagging and filtering noisy third-party stderr output into `debug` streams.\n- **@packages/agent-info** — Detects whether an AI coding agent invoked the current process, and which one, by fingerprinting environment variables.\n\n### Build & Snapshot Infrastructure\n\n- **@packages/v8-snapshot-require** — Loads V8 heap snapshots created by `@tooling/v8-snapshot` to accelerate Electron startup time.\n- **@packages/packherd-require** — Module loader for bundles produced by `@tooling/packherd`; also provides on-demand TypeScript transpilation with source-map support.\n- **@packages/web-config** — Shared webpack/Vite configuration helpers for browser bundles inside the monorepo.\n- **@packages/ts** — Standardises `ts-node` version and base `tsconfig` options for development-time TypeScript require hooks.\n- **@packages/eslint-config** — Monorepo-wide ESLint flat-config with rules for TypeScript, Vue, React, Cypress tests, and imports.\n- **@packages/resolve-dist** — Centralizes path resolution for compiled/static assets referenced from server-side code.\n- **@packages/root** — Bundles the monorepo root `package.json` as an installable package so any package can reference root metadata without absolute paths.\n- **@packages/runner** — (see App & Frontend above)\n\n## Workspace Commands\n\n```bash\n# Run tests targeting a specific file (vitest packages)\nyarn workspace @packages/<name> test -- <path-to-spec>\n\n# Run tests targeting a specific file glob (vitest packages)\nyarn workspace @packages/<name> test -- \"<glob-pattern>\"\n\n# Build a specific package\nyarn workspace @packages/<name> build\n\n# Run lint for a specific package\nyarn workspace @packages/<name> lint\n\n# Type-check a specific package\nyarn workspace @packages/<name> check-ts\n\n# Run all package builds (from repo root)\nyarn build\n```\n\n## Notes\n\n- Most packages publish both CJS (`cjs/`) and ESM (`esm/`) builds; the `main` field points to CJS and `module` to ESM.\n- Do not build `.js` files by hand. Whether a package needs a pre-build is decided by where its `main` points. A handful still point at tracked source and resolve TypeScript at require time — `proxy` and `data-context` through an `@packages/ts/register` shim, `server` through `tsx`, `net-stubbing` straight at `lib/server` — and those need no build. That is the legacy pattern and is being retired: most Node-side packages now point `main` at build output under `cjs/`, `esm/`, or `dist/`, and a package cannot run its tests until every first-party dependency resolved that way has been built. Check the dependency's own `main` rather than assuming either way.\n- A missing dependency build surfaces as `Failed to resolve entry for package \"@packages/x\"` from `vite:import-analysis`, which reads like a malformed `package.json` rather than a missing build. Each run only names the next one, so a fresh worktree can need several builds in turn — see [`network/AGENTS.md`](./network/AGENTS.md) for a worked example. A full root `yarn` runs a lerna build and covers this; `yarn clean` or an interrupted install is what leaves you short.\n- The browser bundles (`driver`, `runner`, `app`, `launchpad`, `frontend-shared`, `reporter`) always need building, by `yarn watch` from the repo root.\n- Many packages use `vitest` for unit tests; the front-end packages (`app`, `launchpad`, `frontend-shared`) use Cypress component tests and E2E tests (cypress-in-cypress pattern).\n- The `nohoist` workspace option prevents specific dependencies from being hoisted to the monorepo root. It is set in `driver` (which nohoists everything, `[\"*\"]`), `frontend-shared`, `proxy`, `server`, `socket`, and `types` — check the package's own `package.json` `workspaces.nohoist` rather than assuming.\n- Packages that depend on generated GraphQL types (from `data-context`) must run `yarn build:graphql` before type-checking will pass.\n- **When adding or removing a package under `packages/`**, regenerate the path map with `yarn gulp makePathMap` (from the repo root). This rewrites the auto-generated [`scripts/gulp/monorepoPaths.ts`](../scripts/gulp/monorepoPaths.ts), produced by [`scripts/gulp/utils/makePathMap.ts`](../scripts/gulp/utils/makePathMap.ts) from an enumeration of `packages/*` — do not hand-edit it. `yarn dev` regenerates it too, but run the task explicitly so the change is committed alongside the package addition.\n","packages/CLAUDE.md":"# packages - Claude Agent Guidelines & System Prompt\n\nPath: `packages/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/CLAUDE.md)","scripts/AGENTS.md":"# scripts - AI Agent Protocol & Instructions\n\nPath: `scripts/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/AGENTS.md)","scripts/CLAUDE.md":"# scripts - Claude Agent Guidelines & System Prompt\n\nPath: `scripts/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/CLAUDE.md)","system-tests/AGENTS.md":"# system-tests - AI Agent Protocol & Instructions\n\nPath: `system-tests/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/AGENTS.md)","system-tests/CLAUDE.md":"# system-tests - Claude Agent Guidelines & System Prompt\n\nPath: `system-tests/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/CLAUDE.md)","tooling/AGENTS.md":"# tooling - AI Agent Protocol & Instructions\n\nPath: `tooling/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/AGENTS.md)","tooling/CLAUDE.md":"# tooling - Claude Agent Guidelines & System Prompt\n\nPath: `tooling/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/CLAUDE.md)",".claude/rules/generated-files.md":"# Rules Skill\n\nPath: `.claude/rules/generated-files.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/generated-files.md)",".claude/rules/runtime-floor-browser.md":"# Rules Skill\n\nPath: `.claude/rules/runtime-floor-browser.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-browser.md)",".claude/rules/runtime-floor-user-node.md":"# Rules Skill\n\nPath: `.claude/rules/runtime-floor-user-node.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-user-node.md)",".claude/rules/snapshots.md":"# Rules Skill\n\nPath: `.claude/rules/snapshots.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/snapshots.md)",".claude/rules/test-runner.md":"# Rules Skill\n\nPath: `.claude/rules/test-runner.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/test-runner.md)","packages/agent-info/AGENTS.md":"# Agent-info Skill\n\nPath: `packages/agent-info/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/AGENTS.md)","packages/agent-info/CLAUDE.md":"# Agent-info Skill\n\nPath: `packages/agent-info/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/CLAUDE.md)","packages/agent-info/README.md":"# agent-info Documentation\n\nPath: `packages/agent-info/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/README.md)","packages/agent-info/package.json":"# Agent-info Skill\n\nPath: `packages/agent-info/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/package.json)","packages/agent-info/tsconfig.json":"# Agent-info Skill\n\nPath: `packages/agent-info/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/tsconfig.json)","packages/app/.eslintrc.json":"# App Skill\n\nPath: `packages/app/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/.eslintrc.json)","packages/app/AGENTS.md":"# App Skill\n\nPath: `packages/app/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/AGENTS.md)","packages/app/CLAUDE.md":"# App Skill\n\nPath: `packages/app/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/CLAUDE.md)","packages/app/README.md":"# app Documentation\n\nPath: `packages/app/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/README.md)","packages/app/package.json":"# App Skill\n\nPath: `packages/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/package.json)","packages/app/tsconfig.json":"# App Skill\n\nPath: `packages/app/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/tsconfig.json)","packages/config/AGENTS.md":"# Config Skill\n\nPath: `packages/config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/AGENTS.md)","packages/config/CLAUDE.md":"# Config Skill\n\nPath: `packages/config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/CLAUDE.md)","packages/config/README.md":"# config Documentation\n\nPath: `packages/config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/README.md)","packages/config/package.json":"# Config Skill\n\nPath: `packages/config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/package.json)","packages/config/tsconfig.cjs.json":"# Config Skill\n\nPath: `packages/config/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.cjs.json)","packages/config/tsconfig.esm.json":"# Config Skill\n\nPath: `packages/config/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.esm.json)","packages/config/tsconfig.json":"# Config Skill\n\nPath: `packages/config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.json)","packages/cypress-sessions/AGENTS.md":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/AGENTS.md)","packages/cypress-sessions/CLAUDE.md":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/CLAUDE.md)","packages/cypress-sessions/package.json":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/package.json)","packages/cypress-sessions/tsconfig.json":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/tsconfig.json)","packages/data-context/AGENTS.md":"# Data-context Skill\n\nPath: `packages/data-context/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/AGENTS.md)","packages/data-context/CLAUDE.md":"# Data-context Skill\n\nPath: `packages/data-context/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/CLAUDE.md)","packages/data-context/README.md":"# data-context Documentation\n\nPath: `packages/data-context/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/README.md)","packages/data-context/package.json":"# Data-context Skill\n\nPath: `packages/data-context/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/package.json)","packages/data-context/tsconfig.json":"# Data-context Skill\n\nPath: `packages/data-context/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.json)","packages/data-context/tsconfig.test.json":"# Data-context Skill\n\nPath: `packages/data-context/tsconfig.test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.test.json)","packages/driver/AGENTS.md":"# Driver Skill\n\nPath: `packages/driver/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/AGENTS.md)","packages/driver/CLAUDE.md":"# Driver Skill\n\nPath: `packages/driver/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/CLAUDE.md)","packages/driver/README.md":"# driver Documentation\n\nPath: `packages/driver/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/README.md)","packages/driver/cross-origin-testing.md":"# Driver Skill\n\nPath: `packages/driver/cross-origin-testing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cross-origin-testing.md)","packages/driver/package.json":"# Driver Skill\n\nPath: `packages/driver/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/package.json)","packages/driver/tsconfig.json":"# Driver Skill\n\nPath: `packages/driver/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/tsconfig.json)","packages/electron/AGENTS.md":"# Electron Skill\n\nPath: `packages/electron/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/AGENTS.md)","packages/electron/CLAUDE.md":"# Electron Skill\n\nPath: `packages/electron/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/CLAUDE.md)","packages/electron/README.md":"# electron Documentation\n\nPath: `packages/electron/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/README.md)","packages/electron/package.json":"# Electron Skill\n\nPath: `packages/electron/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/package.json)","packages/electron/tsconfig.base.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.base.json)","packages/electron/tsconfig.cjs.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.cjs.json)","packages/electron/tsconfig.esm.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.esm.json)","packages/electron/tsconfig.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.json)","packages/errors/AGENTS.md":"# Errors Skill\n\nPath: `packages/errors/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/AGENTS.md)","packages/errors/CLAUDE.md":"# Errors Skill\n\nPath: `packages/errors/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/CLAUDE.md)","packages/errors/README.md":"# errors Documentation\n\nPath: `packages/errors/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/README.md)","packages/errors/package.json":"# Errors Skill\n\nPath: `packages/errors/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/package.json)","packages/errors/tsconfig.cjs.json":"# Errors Skill\n\nPath: `packages/errors/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.cjs.json)","packages/errors/tsconfig.esm.json":"# Errors Skill\n\nPath: `packages/errors/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.esm.json)","packages/errors/tsconfig.json":"# Errors Skill\n\nPath: `packages/errors/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.json)","packages/eslint-config/AGENTS.md":"# Eslint-config Skill\n\nPath: `packages/eslint-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/AGENTS.md)","packages/eslint-config/CLAUDE.md":"# Eslint-config Skill\n\nPath: `packages/eslint-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/CLAUDE.md)","packages/eslint-config/README.md":"# eslint-config Documentation\n\nPath: `packages/eslint-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/README.md)","packages/eslint-config/package.json":"# Eslint-config Skill\n\nPath: `packages/eslint-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/package.json)","packages/eslint-config/tsconfig.json":"# Eslint-config Skill\n\nPath: `packages/eslint-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/tsconfig.json)","packages/example/AGENTS.md":"# Example Skill\n\nPath: `packages/example/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/AGENTS.md)","packages/example/CLAUDE.md":"# Example Skill\n\nPath: `packages/example/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/CLAUDE.md)","packages/example/README.md":"# example Documentation\n\nPath: `packages/example/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/README.md)","packages/example/package.json":"# Example Skill\n\nPath: `packages/example/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/package.json)","packages/example/tsconfig.json":"# Example Skill\n\nPath: `packages/example/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.json)","packages/example/tsconfig.prod.json":"# Example Skill\n\nPath: `packages/example/tsconfig.prod.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.prod.json)","packages/extension/AGENTS.md":"# Extension Skill\n\nPath: `packages/extension/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/AGENTS.md)","packages/extension/CLAUDE.md":"# Extension Skill\n\nPath: `packages/extension/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/CLAUDE.md)","packages/extension/README.md":"# extension Documentation\n\nPath: `packages/extension/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/README.md)","packages/extension/package.json":"# Extension Skill\n\nPath: `packages/extension/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/package.json)","packages/extension/tsconfig.app.v2.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.app.v2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v2.json)","packages/extension/tsconfig.app.v3.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.app.v3.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v3.json)","packages/extension/tsconfig.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.json)","packages/extension/tsconfig.lib.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.lib.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.lib.json)","packages/frontend-shared/.eslintrc.json":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/.eslintrc.json)","packages/frontend-shared/AGENTS.md":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/AGENTS.md)","packages/frontend-shared/CLAUDE.md":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/CLAUDE.md)","packages/frontend-shared/README.md":"# frontend-shared Documentation\n\nPath: `packages/frontend-shared/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/README.md)","packages/frontend-shared/package.json":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/package.json)","packages/frontend-shared/tsconfig.json":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/tsconfig.json)","packages/https-proxy/AGENTS.md":"# Https-proxy Skill\n\nPath: `packages/https-proxy/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/AGENTS.md)","packages/https-proxy/CLAUDE.md":"# Https-proxy Skill\n\nPath: `packages/https-proxy/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/CLAUDE.md)","packages/https-proxy/README.md":"# https-proxy Documentation\n\nPath: `packages/https-proxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/README.md)","packages/https-proxy/package.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/package.json)","packages/https-proxy/tsconfig.cjs.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.cjs.json)","packages/https-proxy/tsconfig.esm.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.esm.json)","packages/https-proxy/tsconfig.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.json)","packages/icons/AGENTS.md":"# Icons Skill\n\nPath: `packages/icons/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/AGENTS.md)","packages/icons/CLAUDE.md":"# Icons Skill\n\nPath: `packages/icons/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/CLAUDE.md)","packages/icons/package.json":"# Icons Skill\n\nPath: `packages/icons/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/package.json)","packages/icons/readme.md":"# icons Documentation\n\nPath: `packages/icons/readme.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/readme.md)","packages/icons/tsconfig.cjs.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.cjs.json)","packages/icons/tsconfig.esm.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.esm.json)","packages/icons/tsconfig.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.json)","packages/launcher/AGENTS.md":"# Launcher Skill\n\nPath: `packages/launcher/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/AGENTS.md)","packages/launcher/CLAUDE.md":"# Launcher Skill\n\nPath: `packages/launcher/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/CLAUDE.md)","packages/launcher/README.md":"# launcher Documentation\n\nPath: `packages/launcher/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/README.md)","packages/launcher/package.json":"# Launcher Skill\n\nPath: `packages/launcher/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/package.json)","packages/launcher/tsconfig.json":"# Launcher Skill\n\nPath: `packages/launcher/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/tsconfig.json)","packages/launchpad/.eslintrc.json":"# Launchpad Skill\n\nPath: `packages/launchpad/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/.eslintrc.json)","packages/launchpad/AGENTS.md":"# Launchpad Skill\n\nPath: `packages/launchpad/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/AGENTS.md)","packages/launchpad/CLAUDE.md":"# Launchpad Skill\n\nPath: `packages/launchpad/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/CLAUDE.md)","packages/launchpad/README.md":"# launchpad Documentation\n\nPath: `packages/launchpad/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/README.md)","packages/launchpad/package.json":"# Launchpad Skill\n\nPath: `packages/launchpad/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/package.json)","packages/launchpad/tsconfig.json":"# Launchpad Skill\n\nPath: `packages/launchpad/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/tsconfig.json)","packages/net-stubbing/AGENTS.md":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/AGENTS.md)","packages/net-stubbing/CLAUDE.md":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/CLAUDE.md)","packages/net-stubbing/README.md":"# net-stubbing Documentation\n\nPath: `packages/net-stubbing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/README.md)","packages/net-stubbing/package.json":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/package.json)","packages/net-stubbing/tsconfig.json":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/tsconfig.json)","packages/network-interception/README.md":"# network-interception Documentation\n\nPath: `packages/network-interception/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/README.md)","packages/network-interception/package.json":"# Network-interception Skill\n\nPath: `packages/network-interception/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/package.json)","packages/network-interception/tsconfig.cjs.json":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.cjs.json)","packages/network-interception/tsconfig.esm.json":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.esm.json)","packages/network-interception/tsconfig.json":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.json)","packages/network-tools/AGENTS.md":"# Network-tools Skill\n\nPath: `packages/network-tools/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/AGENTS.md)","packages/network-tools/CLAUDE.md":"# Network-tools Skill\n\nPath: `packages/network-tools/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/CLAUDE.md)","packages/network-tools/README.md":"# network-tools Documentation\n\nPath: `packages/network-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/README.md)","packages/network-tools/package.json":"# Network-tools Skill\n\nPath: `packages/network-tools/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/package.json)","packages/network-tools/tsconfig.check.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.check.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.check.json)","packages/network-tools/tsconfig.cjs.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.cjs.json)","packages/network-tools/tsconfig.esm.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.esm.json)","packages/network-tools/tsconfig.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.json)","packages/network/AGENTS.md":"# Network Skill\n\nPath: `packages/network/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/AGENTS.md)","packages/network/CLAUDE.md":"# Network Skill\n\nPath: `packages/network/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/CLAUDE.md)","packages/network/README.md":"# network Documentation\n\nPath: `packages/network/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/README.md)","packages/network/package.json":"# Network Skill\n\nPath: `packages/network/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/package.json)","packages/network/tsconfig.cjs.json":"# Network Skill\n\nPath: `packages/network/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.cjs.json)","packages/network/tsconfig.esm.json":"# Network Skill\n\nPath: `packages/network/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.esm.json)","packages/network/tsconfig.json":"# Network Skill\n\nPath: `packages/network/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.json)","packages/packherd-require/AGENTS.md":"# Packherd-require Skill\n\nPath: `packages/packherd-require/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/AGENTS.md)","packages/packherd-require/CLAUDE.md":"# Packherd-require Skill\n\nPath: `packages/packherd-require/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/CLAUDE.md)","packages/packherd-require/README.md":"# packherd-require Documentation\n\nPath: `packages/packherd-require/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/README.md)","packages/packherd-require/package.json":"# Packherd-require Skill\n\nPath: `packages/packherd-require/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/package.json)","packages/packherd-require/tsconfig.json":"# Packherd-require Skill\n\nPath: `packages/packherd-require/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/tsconfig.json)","packages/proxy/AGENTS.md":"# Proxy Skill\n\nPath: `packages/proxy/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/AGENTS.md)","packages/proxy/CLAUDE.md":"# Proxy Skill\n\nPath: `packages/proxy/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/CLAUDE.md)","packages/proxy/README.md":"# proxy Documentation\n\nPath: `packages/proxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/README.md)","packages/proxy/package.json":"# Proxy Skill\n\nPath: `packages/proxy/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/package.json)","packages/proxy/tsconfig.json":"# Proxy Skill\n\nPath: `packages/proxy/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/tsconfig.json)","packages/reporter/.eslintrc.json":"# Reporter Skill\n\nPath: `packages/reporter/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/.eslintrc.json)","packages/reporter/AGENTS.md":"# Reporter Skill\n\nPath: `packages/reporter/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/AGENTS.md)","packages/reporter/CLAUDE.md":"# Reporter Skill\n\nPath: `packages/reporter/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/CLAUDE.md)","packages/reporter/README.md":"# reporter Documentation\n\nPath: `packages/reporter/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/README.md)","packages/reporter/package.json":"# Reporter Skill\n\nPath: `packages/reporter/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/package.json)","packages/reporter/tsconfig.json":"# Reporter Skill\n\nPath: `packages/reporter/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/tsconfig.json)","packages/resolve-dist/AGENTS.md":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/AGENTS.md)","packages/resolve-dist/CLAUDE.md":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/CLAUDE.md)","packages/resolve-dist/README.md":"# resolve-dist Documentation\n\nPath: `packages/resolve-dist/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/README.md)","packages/resolve-dist/package.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/package.json)","packages/resolve-dist/tsconfig.cjs.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.cjs.json)","packages/resolve-dist/tsconfig.esm.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.esm.json)","packages/resolve-dist/tsconfig.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.json)","packages/root/AGENTS.md":"# Root Skill\n\nPath: `packages/root/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/AGENTS.md)","packages/root/CLAUDE.md":"# Root Skill\n\nPath: `packages/root/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/CLAUDE.md)","packages/root/README.md":"# root Documentation\n\nPath: `packages/root/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/README.md)","packages/root/package.json":"# Root Skill\n\nPath: `packages/root/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/package.json)","packages/root/tsconfig.json":"# Root Skill\n\nPath: `packages/root/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/tsconfig.json)","packages/runner/AGENTS.md":"# Runner Skill\n\nPath: `packages/runner/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/AGENTS.md)","packages/runner/CLAUDE.md":"# Runner Skill\n\nPath: `packages/runner/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/CLAUDE.md)","packages/runner/README.md":"# runner Documentation\n\nPath: `packages/runner/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/README.md)","packages/runner/package.json":"# Runner Skill\n\nPath: `packages/runner/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/package.json)","packages/runner/tsconfig.json":"# Runner Skill\n\nPath: `packages/runner/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/tsconfig.json)","packages/scaffold-config/AGENTS.md":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/AGENTS.md)","packages/scaffold-config/CLAUDE.md":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/CLAUDE.md)","packages/scaffold-config/README.md":"# scaffold-config Documentation\n\nPath: `packages/scaffold-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/README.md)","packages/scaffold-config/package.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/package.json)","packages/scaffold-config/tsconfig.browser.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.browser.json)","packages/scaffold-config/tsconfig.cjs.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.cjs.json)","packages/scaffold-config/tsconfig.esm.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.esm.json)","packages/scaffold-config/tsconfig.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.json)","packages/server/AGENTS.md":"# Server Skill\n\nPath: `packages/server/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/AGENTS.md)","packages/server/CLAUDE.md":"# Server Skill\n\nPath: `packages/server/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/CLAUDE.md)","packages/server/README.md":"# server Documentation\n\nPath: `packages/server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/README.md)","packages/server/package.json":"# Server Skill\n\nPath: `packages/server/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/package.json)","packages/server/tsconfig.json":"# Server Skill\n\nPath: `packages/server/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/tsconfig.json)","packages/socket/AGENTS.md":"# Socket Skill\n\nPath: `packages/socket/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/AGENTS.md)","packages/socket/CLAUDE.md":"# Socket Skill\n\nPath: `packages/socket/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/CLAUDE.md)","packages/socket/README.md":"# socket Documentation\n\nPath: `packages/socket/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/README.md)","packages/socket/package.json":"# Socket Skill\n\nPath: `packages/socket/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/package.json)","packages/socket/tsconfig.browser.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.browser.json)","packages/socket/tsconfig.cjs.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.cjs.json)","packages/socket/tsconfig.esm.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.esm.json)","packages/socket/tsconfig.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.json)","packages/stderr-filtering/AGENTS.md":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/AGENTS.md)","packages/stderr-filtering/CLAUDE.md":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/CLAUDE.md)","packages/stderr-filtering/README.md":"# stderr-filtering Documentation\n\nPath: `packages/stderr-filtering/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/README.md)","packages/stderr-filtering/package.json":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/package.json)","packages/stderr-filtering/tsconfig.json":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/tsconfig.json)","packages/telemetry/AGENTS.md":"# Telemetry Skill\n\nPath: `packages/telemetry/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/AGENTS.md)","packages/telemetry/CLAUDE.md":"# Telemetry Skill\n\nPath: `packages/telemetry/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/CLAUDE.md)","packages/telemetry/README.md":"# telemetry Documentation\n\nPath: `packages/telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/README.md)","packages/telemetry/package.json":"# Telemetry Skill\n\nPath: `packages/telemetry/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/package.json)","packages/telemetry/tsconfig.browser.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.browser.json)","packages/telemetry/tsconfig.cjs.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.cjs.json)","packages/telemetry/tsconfig.esm.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.esm.json)","packages/telemetry/tsconfig.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.json)","packages/ts/AGENTS.md":"# Ts Skill\n\nPath: `packages/ts/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/AGENTS.md)","packages/ts/CLAUDE.md":"# Ts Skill\n\nPath: `packages/ts/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/CLAUDE.md)","packages/ts/README.md":"# ts Documentation\n\nPath: `packages/ts/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/README.md)","packages/ts/package.json":"# Ts Skill\n\nPath: `packages/ts/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/package.json)","packages/ts/tsconfig.json":"# Ts Skill\n\nPath: `packages/ts/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tsconfig.json)","packages/ts/tslint.json":"# Ts Skill\n\nPath: `packages/ts/tslint.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tslint.json)","packages/types/AGENTS.md":"# Types Skill\n\nPath: `packages/types/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/AGENTS.md)","packages/types/CLAUDE.md":"# Types Skill\n\nPath: `packages/types/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/CLAUDE.md)","packages/types/package.json":"# Types Skill\n\nPath: `packages/types/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/package.json)","packages/types/tsconfig.check.json":"# Types Skill\n\nPath: `packages/types/tsconfig.check.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.check.json)","packages/types/tsconfig.cjs.json":"# Types Skill\n\nPath: `packages/types/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.cjs.json)","packages/types/tsconfig.esm.json":"# Types Skill\n\nPath: `packages/types/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.esm.json)","packages/types/tsconfig.json":"# Types Skill\n\nPath: `packages/types/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.json)","packages/v8-snapshot-require/AGENTS.md":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/AGENTS.md)","packages/v8-snapshot-require/CLAUDE.md":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/CLAUDE.md)","packages/v8-snapshot-require/README.md":"# v8-snapshot-require Documentation\n\nPath: `packages/v8-snapshot-require/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/README.md)","packages/v8-snapshot-require/package.json":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/package.json)","packages/v8-snapshot-require/tsconfig.json":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/tsconfig.json)","packages/web-config/AGENTS.md":"# Web-config Skill\n\nPath: `packages/web-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/AGENTS.md)","packages/web-config/CLAUDE.md":"# Web-config Skill\n\nPath: `packages/web-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/CLAUDE.md)","packages/web-config/README.md":"# web-config Documentation\n\nPath: `packages/web-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/README.md)","packages/web-config/package.json":"# Web-config Skill\n\nPath: `packages/web-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/package.json)","packages/web-config/tsconfig.json":"# Web-config Skill\n\nPath: `packages/web-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/tsconfig.json)","packages/data-context/graphql/README.md":"# graphql Documentation\n\nPath: `packages/data-context/graphql/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/graphql/README.md)","packages/driver/cypress/.eslintrc.json":"# Cypress Skill\n\nPath: `packages/driver/cypress/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/.eslintrc.json)","packages/driver/cypress/tsconfig.json":"# Cypress Skill\n\nPath: `packages/driver/cypress/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/tsconfig.json)","packages/electron/app/package.json":"# App Skill\n\nPath: `packages/electron/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/app/package.json)","packages/extension/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/extension/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/test/.eslintrc.json)","packages/extension/theme/manifest.json":"# Theme Skill\n\nPath: `packages/extension/theme/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/theme/manifest.json)","packages/https-proxy/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/https-proxy/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/test/.eslintrc.json)","packages/launcher/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/launcher/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/test/.eslintrc.json)","packages/net-stubbing/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/net-stubbing/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/test/.eslintrc.json)","packages/network/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/network/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/test/.eslintrc.json)","packages/reporter/cypress/.eslintrc.json":"# Cypress Skill\n\nPath: `packages/reporter/cypress/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/.eslintrc.json)","packages/runner/injection/.eslintrc.json":"# Injection Skill\n\nPath: `packages/runner/injection/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/injection/.eslintrc.json)","packages/server/config/app.json":"# Config Skill\n\nPath: `packages/server/config/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/config/app.json)","packages/server/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/server/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/.eslintrc.json)","packages/socket/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/socket/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/test/.eslintrc.json)","packages/app/cypress/fixtures/FileChooser.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/FileChooser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileChooser.json)","packages/app/cypress/fixtures/FileList.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/FileList.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileList.json)","packages/app/cypress/fixtures/GeneratorSuccess.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/GeneratorSuccess.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/GeneratorSuccess.json)","packages/app/cypress/fixtures/found-specs.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/found-specs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/found-specs.json)","packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json)","packages/app/src/debug/gql-DebugRunDetailedView.json":"# Debug Skill\n\nPath: `packages/app/src/debug/gql-DebugRunDetailedView.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/debug/gql-DebugRunDetailedView.json)","packages/app/src/tap/AGENTS.md":"# Tap Skill\n\nPath: `packages/app/src/tap/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/AGENTS.md)","packages/app/src/tap/CLAUDE.md":"# Tap Skill\n\nPath: `packages/app/src/tap/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/CLAUDE.md)","packages/driver/cypress/fixtures/app.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/app.json)","packages/driver/cypress/fixtures/boolean.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/boolean.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/boolean.json)","packages/driver/cypress/fixtures/example.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/example.json)","packages/driver/cypress/fixtures/fileSpec.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/fileSpec.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/fileSpec.json)","packages/driver/cypress/fixtures/foo.bar.baz.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/foo.bar.baz.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/foo.bar.baz.json)","packages/driver/cypress/fixtures/invalid.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/invalid.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/invalid.json)","packages/driver/cypress/fixtures/null.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/null.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/null.json)","packages/driver/cypress/fixtures/number.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/number.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/number.json)","packages/driver/cypress/fixtures/valid.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/valid.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/valid.json)","packages/driver/cypress/fixtures/yaml.yaml":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/yaml.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/yaml.yaml)","packages/driver/src/cypress/errorScenarios.md":"# Cypress Skill\n\nPath: `packages/driver/src/cypress/errorScenarios.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/cypress/errorScenarios.md)","packages/electron/.cursor/rules/electron-upgrade.mdc":"# Cursor Rule: electron-upgrade\n\nPath: `packages/electron/.cursor/rules/electron-upgrade.mdc`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/.cursor/rules/electron-upgrade.mdc)","packages/extension/app/v2/manifest.json":"# V2 Skill\n\nPath: `packages/extension/app/v2/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v2/manifest.json)","packages/extension/app/v3/manifest.json":"# V3 Skill\n\nPath: `packages/extension/app/v3/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v3/manifest.json)","packages/frontend-shared/cypress/fixtures/TestCurrentProject.json":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/TestCurrentProject.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/TestCurrentProject.json)","packages/frontend-shared/cypress/fixtures/config.json":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/config.json)","packages/frontend-shared/cypress/fixtures/example.json":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/example.json)","packages/frontend-shared/src/locales/en-US.json":"# Locales Skill\n\nPath: `packages/frontend-shared/src/locales/en-US.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/locales/en-US.json)","packages/net-stubbing/lib/adapters/README.md":"# adapters Documentation\n\nPath: `packages/net-stubbing/lib/adapters/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/lib/adapters/README.md)","packages/reporter/cypress/fixtures/command_error.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/command_error.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/command_error.json)","packages/reporter/cypress/fixtures/runnables.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables.json)","packages/reporter/cypress/fixtures/runnables_agents.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_agents.json)","packages/reporter/cypress/fixtures/runnables_aliases.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_aliases.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_aliases.json)","packages/reporter/cypress/fixtures/runnables_commands.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_commands.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_commands.json)","packages/reporter/cypress/fixtures/runnables_error.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_error.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_error.json)","packages/reporter/cypress/fixtures/runnables_hooks.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_hooks.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_hooks.json)","packages/reporter/cypress/fixtures/runnables_memory.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_memory.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_memory.json)","packages/reporter/cypress/fixtures/runnables_routes.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_routes.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_routes.json)","packages/server/lib/adapters/README.md":"# adapters Documentation\n\nPath: `packages/server/lib/adapters/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/adapters/README.md)","packages/server/lib/browsers/firefox_automation.md":"# Browsers Skill\n\nPath: `packages/server/lib/browsers/firefox_automation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/browsers/firefox_automation.md)","packages/server/test/scripts/.eslintrc.json":"# Scripts Skill\n\nPath: `packages/server/test/scripts/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/scripts/.eslintrc.json)","packages/app/cypress/e2e/studio/README.md":"# studio Documentation\n\nPath: `packages/app/cypress/e2e/studio/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/studio/README.md)","packages/app/cypress/fixtures/debug-Failing/gql-Debug.json":"# Debug-Failing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Failing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Failing/gql-Debug.json)","packages/app/cypress/fixtures/debug-Passing/gql-Debug.json":"# Debug-Passing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Passing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Passing/gql-Debug.json)","packages/driver/src/util/serialization/README.md":"# serialization Documentation\n\nPath: `packages/driver/src/util/serialization/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/util/serialization/README.md)","packages/frontend-shared/src/shiki/languages/css.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/css.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/css.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/html.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/html.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/html.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/json.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/json.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/json.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json)","packages/frontend-shared/src/shiki/themes/ReadMe.md":"# themes Documentation\n\nPath: `packages/frontend-shared/src/shiki/themes/ReadMe.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/ReadMe.md)","packages/frontend-shared/src/shiki/themes/cypress.theme.template.json":"# Themes Skill\n\nPath: `packages/frontend-shared/src/shiki/themes/cypress.theme.template.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/cypress.theme.template.json)","packages/packherd-require/test/fixtures/circular-deps/package.json":"# Circular-deps Skill\n\nPath: `packages/packherd-require/test/fixtures/circular-deps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/circular-deps/package.json)","packages/packherd-require/test/fixtures/normal-deps/package.json":"# Normal-deps Skill\n\nPath: `packages/packherd-require/test/fixtures/normal-deps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/normal-deps/package.json)","packages/proxy/lib/http/util/rewrite-constants.json":"# Util Skill\n\nPath: `packages/proxy/lib/http/util/rewrite-constants.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/lib/http/util/rewrite-constants.json)","system-tests/projects/bun-workspace/packages/app/package.json":"# App Skill\n\nPath: `system-tests/projects/bun-workspace/packages/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/app/package.json)","system-tests/projects/bun-workspace/packages/shared/package.json":"# Shared Skill\n\nPath: `system-tests/projects/bun-workspace/packages/shared/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/shared/package.json)","system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json":"# Bar Skill\n\nPath: `system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json)","system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json":"# Foo Skill\n\nPath: `system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json)","npm/vue/cypress/component/basic/plugins/README.md":"# plugins Documentation\n\nPath: `npm/vue/cypress/component/basic/plugins/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/npm/vue/cypress/component/basic/plugins/README.md)","packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json)","packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json)","packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json)","packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json)","packages/app/src/runner/screenshot/reference-screenshots/README.md":"# reference-screenshots Documentation\n\nPath: `packages/app/src/runner/screenshot/reference-screenshots/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/runner/screenshot/reference-screenshots/README.md)","packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json":"# __fixtures__ Skill\n\nPath: `packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json)","packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json":"# __fixtures__ Skill\n\nPath: `packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json)","packages/server/test/support/fixtures/ajax/app.json":"# Ajax Skill\n\nPath: `packages/server/test/support/fixtures/ajax/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/ajax/app.json)","packages/server/test/support/fixtures/server/really_big_json.json":"# Server Skill\n\nPath: `packages/server/test/support/fixtures/server/really_big_json.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/server/really_big_json.json)","packages/data-context/src/codegen/templates/test/nested/Hello.md":"# Nested Skill\n\nPath: `packages/data-context/src/codegen/templates/test/nested/Hello.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/src/codegen/templates/test/nested/Hello.md)","packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md":"# Nested Skill\n\nPath: `packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md)","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json":"# All-tracked-dependencies Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json":"# Partial-dependencies-matching Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json":"# Partial-dependencies-not-matching Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json)","packages/server/test/support/fixtures/cloud/environment/test-project/package.json":"# Test-project Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/test-project/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/test-project/package.json)","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json":"# Bar Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json)","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json":"# Foo Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json":"# Foo Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json":"# Bar Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json)"},"files":{"AGENTS.md":"# Cypress Monorepo — AGENTS.md\n\n## Overview\n\nCypress is an open-source end-to-end and component testing framework for the modern web. This monorepo ships the Cypress desktop application and CLI (`cypress`), the JavaScript driver that runs tests in the browser, the Electron-based test runner, a suite of published npm packages (component testing adapters, webpack/vite dev-server integrations, plugins), and the internal tooling used to build and release all of it. Cypress is used by millions of developers to test web applications across Chrome, Firefox, Edge, WebKit, and Electron.\n\n## Workspaces\n\n- **`cli/`** — The main `cypress` npm package (CLI entry point) and co-located component testing framework adapters (`@cypress/react`, `@cypress/vue`, `@cypress/angular`, `@cypress/svelte`, `@cypress/mount-utils`)\n- **`packages/`** — Core internal packages: the test driver, Electron app, HTTP server, proxy, launcher, frontend Vue app, launchpad, reporter, config, data-context, telemetry, types, errors, and more\n- **`npm/`** — Publicly published npm packages: bundler integrations, component testing adapters, plugins, and dev tooling\n- **`tooling/`** — Internal build tooling: V8 snapshot creation, `packherd` dependency bundler, and `electron-mksnapshot`\n- **`system-tests/`** — Full end-to-end system test suite: `test/` runs against the dev app, `test-binary/` against a built Cypress binary\n- **`scripts/`** — Internal build, release, and CI automation scripts\n\n## Task runbooks\n\nStep-by-step procedures live in [`guides/`](./guides/) — start there for any multi-step workflow ([release process](./guides/release-process.md), [writing the changelog](./guides/writing-the-cypress-changelog.md), [V8 snapshots](./guides/v8-snapshots.md), and others indexed in [`guides/README.md`](./guides/README.md)). They are the canonical source for humans and agents alike.\n\n`.claude/skills/*/SKILL.md` adds a thin layer on top for the two workflows that need agent-specific execution guidance — which permissions a phase needs, long-running commands, and host quirks that would be noise in a contributor guide. Claude Code loads them on demand; **other agents should read the file directly**, since nothing loads them automatically:\n\n- [`building-cypress-binary`](./.claude/skills/building-cypress-binary/SKILL.md) — `binary-build` / `binary-package` / `binary-zip`, non-interactive flags, `ELECTRON_RUN_AS_NODE`, macOS signing.\n- [`debugging-cypress-artifacts`](./.claude/skills/debugging-cypress-artifacts/SKILL.md) — bugs that only reproduce in packaged output, the commit/build/clean/reset loop, `CYPRESS_RUN_BINARY`.\n\n`.claude/rules/*.md` is a second thin layer, for facts that are only correct in one part of the tree — which test runner a package uses, which runtime floor a directory is bound by, how a given kind of snapshot is regenerated. Each file carries a `paths:` glob, and Claude Code loads it when it opens a matching file. They are pointers, not sources of truth: every one links back to the guide or `AGENTS.md` section that owns the topic, so **other agents can skip them** and lose nothing.\n\nAdd new guidance to a guide by default. A skill is only warranted when the content is about *running* the task rather than doing it correctly — if a contributor doing the task by hand would need to know it, it belongs in the guide. A rule is only warranted when the guidance is wrong outside a specific path. See [Choosing where guidance goes](./CONTRIBUTING.md#choosing-where-guidance-goes).\n\n## Prerequisites\n\n- **Node**: Use the node version specified in the `.node-version` file (check with `node -v`; run `nvm use` to manage versions)\n- **Package manager**: Yarn 1 (`yarn@1.22.22`) — do not use npm or pnpm\n- **Lerna**: Orchestrated via root `package.json` scripts; installed as a dev dependency\n- **Electron** (for binary builds): handled automatically by `@packages/electron` during build\n\n## Common Commands\n\n### Setup & Development\n\n```bash\n# Install all dependencies (runs post-install hooks automatically)\nyarn\n\n# Start Cypress in dev mode (watch, rebuilds on change)\nyarn dev\n\n# Open the Cypress GUI in dev + global mode\nyarn start\n\n```\n\n### Testing\n\n```bash\n# Run a single package's tests (go through the workspace, not the root test script —\n# the root script hardcodes its own --scope flags and lerna unions them, so\n# `yarn test --scope <pkg>` runs the whole default suite plus that package)\nyarn workspace @packages/server test\n\n# Target a specific vitest spec file (packages that use vitest)\nyarn workspace @packages/config test -- <path-to-spec>\n\n# Target a specific vitest spec by glob pattern\nyarn workspace @packages/net-stubbing test -- \"<glob-pattern>\"\n\n# Target a specific mocha spec file (packages that use mocha)\nyarn workspace @packages/server test-unit -- <path-to-spec>\n\n# Filter mocha tests by name pattern\nyarn workspace @packages/server test-unit -- --grep \"<pattern>\"\n\n# @packages/data-context is the one package on jest, not vitest or mocha\nyarn workspace @packages/data-context test-unit -- <path-to-spec>\n\n# Run system test specs whose file name contains a fragment (not a path);\n# see system-tests/AGENTS.md\nyarn test-system go_spec --browser electron\n\n# Run Cypress headlessly against a specific spec (dev mode)\nyarn cypress:run -- --spec \"path/to/spec.cy.ts\"\n\n# Run Cypress component tests against a specific spec (dev mode)\nyarn cypress:run:ct -- --spec \"path/to/spec.cy.ts\"\n```\n\n### Type Checking\n\n```bash\n# Type-check all TypeScript across the monorepo\nyarn type-check\n\n# Lerna-only type check pass\nyarn check-ts\n```\n\n### Linting & Formatting\n\n```bash\n# Lint all packages (no bail, concurrency 2)\nyarn lint\n\n# Lint and auto-fix specific scopes\nyarn lint:fix\n```\n\n> **Note**: This project does **not** use Prettier. All formatting is enforced via ESLint.\n\nThe repo is mid-migration between two ESLint configs, so ignore rules live in two places: `ignorePatterns` in the root `.eslintrc.js` for the packages still on eslintrc, and the `ignores` block in `packages/eslint-config/src/baseConfig.ts` for the packages on flat config. Build output (`cjs/`, `esm/`, `dist/`) is already ignored in both; do not add a per-package `.eslintignore` for it, since patterns in those files that contain a `/` silently match nothing. [The ESLint migration guide](./guides/eslint-migration.md#6-ignore-build-output-centrally) explains the mechanism.\n\n### Build\n\n```bash\n# Full monorepo build\nyarn build\n\n# Build V8 snapshot (dev)\nyarn build-v8-snapshot-dev\n\n# Build V8 snapshot (prod)\nyarn build-v8-snapshot-prod\n\n# Clean all build artifacts\nyarn clean\n\n# Clean and reinstall (nuclear)\nyarn clean-deps && yarn\n```\n\n## Architecture\n\nOrientation, not a registry — the directories under `packages/`, `npm/`, and `tooling/` are the authoritative list, and each carries its own `AGENTS.md` with the detail. Read a package's own file before working in it rather than relying on the one-liner here.\n\n### CLI & Distribution\n\n- **`cypress` (`cli/`)** — The `cypress` npm package users install. Entry point for `cypress open`, `cypress run`, `cypress install`, etc. The published version is set by semantic-release, not by `cli/package.json` (which stays `0.0.0-development`).\n\n### Test Runner & Driver\n\n- **`@packages/driver`** — The JavaScript test driver that executes user test code inside the browser. Implements Cypress commands, assertions, retries, and all `cy.*` APIs.\n- **`@packages/runner`** — The webpack-bundled runner UI that hosts the AUT (application under test) iframe and driver communication layer.\n- **`@packages/app`** — The Vue 3 frontend for the Cypress GUI / Launchpad. Main visual interface for the desktop app.\n- **`@packages/launchpad`** — Project creation, onboarding, and test file scaffold UI.\n- **`@packages/frontend-shared`** — Shared Vue components and design system tokens used by `app` and `launchpad`.\n- **`@packages/reporter`** — The test results reporter UI component (pass/fail tree, log panel).\n\n### Server & Network\n\n- **`@packages/server`** — HTTP server responsible for serving test files, handling browser launching, socket communication, and orchestrating the test run.\n- **`@packages/proxy`** — HTTP/S proxy that intercepts all browser traffic during a test run.\n- **`@packages/net-stubbing`** — The `cy.intercept` surface: driver-side command, types, and the server-side glue.\n- **`@packages/network-interception`** — Transport-agnostic core behind `cy.intercept`: route matching, subscription planning, handler merging, and config policy. Holds the rules, none of the I/O — every transport is injected behind an interface.\n- **`@packages/network`** — Low-level network protocol utilities.\n- **`@packages/network-tools`** — Higher-level networking helpers used across packages.\n- **`@packages/https-proxy`** — HTTPS proxy implementation for TLS interception.\n\n### Configuration & Data\n\n- **`@packages/config`** — Configuration types, defaults, validation, and the public `defineConfig` API.\n- **`@packages/data-context`** — Centralized GraphQL data access layer for the Cypress app (projects, specs, runs, settings).\n- **`@packages/scaffold-config`** — Logic for scaffolding new testing setups via Launchpad (framework detection, config file generation).\n\n### Desktop & Electron\n\n- **`@packages/electron`** — Electron runtime wrapper, binary building utilities, and auto-update integration.\n- **`@packages/launcher`** — Browser detection and launch logic for Chrome, Firefox, Edge, WebKit, and Electron.\n- **`@packages/extension`** — WebExtension injected into browsers to enable cross-origin features and automation hooks.\n\n### Types, Errors & Utilities\n\n- **`@packages/types`** — Shared TypeScript type definitions used across all packages.\n- **`@packages/errors`** — Cypress error definitions, error templates, and error utilities.\n- **`@packages/socket`** — WebSocket communication library used for driver ↔ server messaging (browser and Node sides).\n- **`@packages/telemetry`** — OpenTelemetry instrumentation wrapper used throughout the monorepo.\n- **`@packages/icons`** — Icon registry and SVG assets.\n- **`@packages/stderr-filtering`** — Stderr output filtering utilities.\n- **`@packages/agent-info`** — Fingerprints the environment block to tell whether Cypress was invoked by an AI coding agent, and which one. Intentionally pure and dependency-free.\n- **`@packages/cypress-sessions`** — The cross-process contract for Cypress sessions: shared schema, on-disk layout, and the liveness-probe route that lets the CLI find a running `cypress open` session and attach over CDP.\n- **`@packages/example`** — The bundled kitchensink example project. Its `cypress/` and `app/` contents are generated from upstream `cypress-example-kitchensink` — change it there, not here.\n- **`@packages/root`** — Root package metadata consumed by the binary build.\n\n### Build & Snapshot Infrastructure\n\n- **`@packages/v8-snapshot-require`** — Module loading utilities for V8 snapshots in Electron.\n- **`@packages/packherd-require`** — Module loader for dependencies bundled by `@tooling/packherd`.\n- **`@packages/web-config`** — Webpack/PostCSS configuration for the Vue frontend bundles.\n- **`@packages/ts`** — Shared TypeScript configuration and `ts-node` register helper.\n- **`@packages/eslint-config`** — Shared ESLint configuration preset used across packages.\n- **`@packages/resolve-dist`** — Resolves paths to compiled distribution artifacts.\n- **`@tooling/v8-snapshot`** — V8 snapshot creation tooling for Electron startup optimization.\n- **`@tooling/packherd`** — Bundles all reachable dependencies from an entry point into a single artifact.\n- **`@tooling/electron-mksnapshot`** — Configurable `mksnapshot` binary wrapper for the target Electron version.\n\n### Component Testing Adapters (published via `npm/`)\n\n- **`@cypress/react`** — Component testing adapter for React.\n- **`@cypress/vue`** — Component testing adapter for Vue.js.\n- **`@cypress/angular`** — Component testing adapter for Angular.\n- **`@cypress/svelte`** — Component testing adapter for Svelte.\n- **`@cypress/mount-utils`** — Shared utilities used by all component testing adapters.\n\n### Bundler Integrations (published via `npm/`)\n\n- **`@cypress/webpack-dev-server`** — Webpack Dev Server launcher for component testing.\n- **`@cypress/vite-dev-server`** — Vite Dev Server launcher for component testing.\n- **`@cypress/webpack-preprocessor`** — Webpack preprocessor for bundling test spec files.\n- **`@cypress/webpack-batteries-included-preprocessor`** — Webpack preprocessor with batteries included (TypeScript, etc.).\n- **`@cypress/vite-plugin-cypress-esm`** — Vite plugin for mutable ESM modules in browser tests.\n\n### Plugins & Dev Tooling (published via `npm/`)\n\n- **`@cypress/grep`** — Plugin to filter test runs by substring/tag.\n- **`@cypress/puppeteer`** — Plugin to enhance Cypress tests with Puppeteer.\n- **`@cypress/schematic`** — Official Angular CLI schematic for adding Cypress.\n- **`@cypress/eslint-plugin-dev`** — ESLint rules shared across Cypress development packages.\n\n## Code Conventions\n\n- **TypeScript for all new code** — New source, specs, and test fixtures must be TypeScript, not JavaScript. This includes system-test project fixtures: use `cypress.config.ts` and `.cy.ts` specs (lightweight fixtures without their own `node_modules` should `export default { ... }` a plain object rather than importing `defineConfig` from `cypress`).\n- **No Prettier** — Formatting is enforced entirely through ESLint. The `.prettierignore` excludes all files.\n- **Single quotes** — `'single'` quote style required for all JS/TS.\n- **No semicolons** — Enforced via ESLint (`semi: 'never'`).\n- **2-space indentation** — Standard across all JS/TS files.\n- **Trailing commas** — Required in multiline contexts (`comma-dangle: 'always-multiline'`).\n- **No `var`** — `var` declarations are an ESLint error; use `const` or `let`.\n- **Template literals** — `prefer-template: 'error'` — no string concatenation.\n- **Object shorthand** — `object-shorthand: 'error'`.\n- **No `console`** — `no-console: 'error'`; use the logger utilities instead.\n- **TypeScript**: `strict: true` base, but `noImplicitAny: false` (implicit `any` allowed for pragmatic reasons).\n- **Type-only imports**: `importsNotUsedAsValues: \"error\"` — use `import type` for type-only imports.\n- **Type guards over `as`** — Narrow with a type guard, an `asserts` function or an `in` check rather than an `as` assertion, and explain any assertion that remains with a \"Safe because\" comment. See [Type Assertions](./guides/typescript.md#type-assertions).\n- **Unused vars**: Unused variables and imports are errors. Unused function parameters and caught errors are allowed, since callbacks often have to accept arguments they ignore. In packages on the flat config, prefix a variable that exists only to be type-checked with `_`.\n- **No `.only` in tests** — `mocha/no-exclusive-tests: 'error'` (ESLint). Caught by `yarn lint` and by pre-commit ESLint (`lint-staged`). For intentional `.only` in fixtures or type samples, use `eslint-disable-next-line mocha/no-exclusive-tests` (with a short comment).\n- **`.skip` requires a comment** — Must include `NOTE:`, `TODO:`, or `FIXME:` comment explaining why.\n- **Blank line before `return`** — Enforced via `padding-line-between-statements`.\n- **Sync FS calls** — Flagged with a warning (except `existsSync`); prefer async variants.\n\n### Code Comments\n\n- **Prefer none** — Always prefer no code comment if the code is self-explanatory.\n- **Explain the why** — When a comment is necessary, use it to explain the *why* and anything relevant that is not directly expressed by the code itself.\n- **Don't repeat yourself** — Do not restate the same comment multiple times in a file as the code flows through each step.\n- **Present state only** — Keep comments relevant to the current state of the code. Do not describe what changed or how the code used to be different.\n- **Name the reason, not the predecessor** — \"Matches what the old plugin did\" is not a *why*, and it rots once that plugin is deleted. State the reason the old code had, and put parity with replaced tooling in the commit message or guide.\n\nBad examples:\n\n```js\n// never wipe the entire jar - the old hack called clearCookies() with no filter\n// we no longer need to clear the state here, CDP added automatically clearing\n// Firefox previously relied on os-level focus, now we use WebDrive BiDi to focus\n```\n\nGood examples:\n\n```js\n// Close any extra pages so they don't leak into other tests\n// Firefox doesn't support this in native BiDi, so we pull remote.location from current frame\n// `cookie`'s serializer rejects an IPv6 literal Domain (e.g. `[::1]`), crashing\n// the proxy. Browsers scope cookies for IP hosts to that host anyway, so omit\n// Domain and let the cookie default to host-only.\n```\n\n## Runtime targets\n\nCode in this monorepo runs in several runtimes, each with its own JavaScript / runtime-API floor. Before using a modern JS or Node/DOM API, identify which runtime a file executes in and confirm the API is supported there — do **not** assume the development Node version. Where each floor is defined:\n\n- **Dev tooling, gulp, build/dev scripts** — the Node version in [`.node-version`](./.node-version).\n- **The bundled app (main/Electron process)** — the Node embedded in the `electron` version pinned in the root [`package.json`](./package.json) (look up that Electron release's Node/V8).\n- **The config/plugins child process** (`@packages/server` `lib/plugins/child/require_async_child.ts`, forked by `@packages/data-context` `ProjectConfigIpc`) and the **`cypress` CLI** (`cli/`) — the *user's* Node, whose supported range is `engines.node` in [`cli/package.json`](./cli/package.json). This floor is lower than the dev/bundled Node, so it is the binding constraint for that code.\n- **Browser-shipped bundles** (`@packages/app`, `@packages/frontend-shared`, `@packages/driver`) — the last 3 major versions of the supported browsers. Since Safari releases majors roughly annually, the last 3 major versions reach back years, making this the most conservative floor. `@packages/driver` runs in the user's AUT browser. For WebKit, Cypress runs the WebKit bundled with the installed `playwright-webkit` version — not the user's system Safari — so the WebKit floor tracks that dependency.\n\nVerify an API against the relevant floor (node.green for Node, caniuse/MDN for browsers) before relying on it.\n\n## Pull Requests\n\n[`CONTRIBUTING.md`](./CONTRIBUTING.md) is the source of truth for PR conventions, including the semantic-release title prefix that determines the next version. The other essentials:\n\n### Changelog & Template\n\n- The semantic title prefix decides whether an entry in [`cli/CHANGELOG.md`](./cli/CHANGELOG.md) is required, which section it belongs in, and how it must be phrased. The [Writing the Cypress Changelog Guide](./guides/writing-the-cypress-changelog.md) is the source of truth for all of it — read it rather than guessing, and note that a `fix` prefix always requires an entry.\n- Verify a changelog entry with `GH_TOKEN=\"$(gh auth token)\" node ./scripts/semantic-commits/validate-binary-changelog.js`, the same check CI's `verify-release-readiness` job runs. It fails without that token, and needs a root `yarn` install.\n- Fill out the [Pull Request Template](./.github/PULL_REQUEST_TEMPLATE.md) completely. Use `N/A` for irrelevant sections rather than deleting them — PRs will not be reviewed if the template is not filled in.\n\n## CI/CD\n\n- **Primary CI**: CircleCI. Config lives in `.circleci/src/` (modular) and is compiled to `.circleci/packed/pipeline.yml`. See [`.circleci/AGENTS.md`](.circleci/AGENTS.md) for when to add a branch to the full-CI allowlist (binary tests, Windows jobs, v8 snapshot validation).\n- **Supplementary**: GitHub Actions for security scanning (Snyk), SBOM generation, browser version auto-updates, and PR validation.\n- **Base branch**: `develop` — all PRs target `develop`; release branches follow `release/X.Y.Z`.\n- **Multi-platform matrix**: Linux x64, Linux ARM64, macOS x64, macOS ARM64, Windows — all run in parallel. Coverage is per-job, not uniform: `unit-tests` runs only on linux-x64 and windows, so a unit test coupled to the host architecture passes CI and still fails locally on arm64. See [`cli/AGENTS.md`](./cli/AGENTS.md) for keeping specs host-independent.\n- **Release gate**: All tests must pass through the `ready-to-release` aggregation job before `npm-release` runs.\n- **External PRs**: Require manual approval via `approve-contributor-pr` gate before CI runs.\n- **Binary builds**: Triggered separately after npm release; cross-platform binaries are assembled and distributed via CDN.\n\n## Cloud agent environments\n\nRunning the repo in a hosted container (Cursor Cloud, Claude Code on the web, and similar). Most of this applies to any of them; bullets that name a host apply only there, so confirm the rest against the container you are in rather than assuming.\n\n### Environment\n\n- Yarn 1.22.22 is pre-installed. Whatever the host runs to prepare the container invokes `yarn`, which runs the postinstall. What it covers depends on `CI` ([`scripts/run-postInstall.js`](./scripts/run-postInstall.js)): with `CI` set, as on Claude Code on the web, it skips `yarn-deduplicate`, `yarn build` and the V8 snapshot, so nothing is built. Check `echo $CI`, and run `yarn build` before anything that loads built packages, such as system tests. After adding or changing a dependency, run `yarn check-lockfile`. If it lists duplicates, run `yarn-deduplicate --strategy=highest` and commit the result, or CI's \"Check yarn.lock is deduplicated\" job fails.\n- The root `package.json` sets `engines.node` to the version in [`.node-version`](./.node-version), so yarn refuses to run any script on an older Node: `The engine \"node\" is incompatible with this module`. Containers that pre-install a lower version need the required one installed before anything else works — see [Matching the required Node version](#matching-the-required-node-version).\n- Browsers and a display differ by host. Cursor Cloud runs Xvfb on `DISPLAY=:1` and ships Chrome at `/usr/bin/google-chrome-stable`. Claude Code on the web has Xvfb installed but leaves `DISPLAY` unset, and has no Chrome — only the Chromium that Playwright bundles under `$PLAYWRIGHT_BROWSERS_PATH`. There, `cypress run` starts its own Xvfb when `DISPLAY` is unset, so the Cypress-based suites do run; pass `--browser \"$PLAYWRIGHT_BROWSERS_PATH/chromium\"` instead of `--browser chrome`, and wrap anything else that needs a display (such as `yarn dev`) in `xvfb-run -a`. On any host, prefix Electron commands with `env -u ELECTRON_RUN_AS_NODE`: some agent hosts set it, and it makes Electron start as plain Node.\n\n### Running Cypress in dev mode\n\n- `yarn dev` starts the Cypress Electron GUI in global/dev mode (Launchpad). It builds Vite bundles for `@packages/app` and `@packages/launchpad`, then launches Electron. The GraphQL server runs at `http://localhost:4444/__launchpad/graphql`.\n- `yarn cypress:run -- --project <path> --browser chrome --headless` runs Cypress headlessly in dev mode. The config file at the target project must NOT `require('cypress')` since it resolves from the project root.\n\n### Running tests\n\n- Prefer scoped tests: `yarn workspace @packages/<name> test`. Do not use `yarn test --scope <name>` — lerna unions scopes with the ones the root `test` script already sets, so it broadens the run instead of narrowing it. `yarn lint --scope` and `yarn check-ts --scope` do narrow correctly.\n- Some test suites (e.g., `@packages/network`) require privileged ports (443) and will fail with EACCES in unprivileged containers — this is expected.\n- `@packages/config` has 2 tests that assert `cypressBinaryRoot` contains `'cypress'`; these fail when the workspace directory name differs (e.g., `/workspace`). This is a known path-dependent issue, not a code bug.\n\n### Running system tests\n\nSpecs in `system-tests/test` run in cloud containers. Specs in `system-tests/test-binary` need Docker and a built binary, so they do not.\n\n1. **Build once:** `env -u ELECTRON_RUN_AS_NODE yarn build`. System tests need all three things it produces: the compiled workspace packages, the dev Electron app in `packages/electron/dist/Cypress`, and the `cli/dist` bundle that fixture projects resolve `cypress` from. Without them the run fails with `Cannot find module '…/lib-dist/index.js'`, `spawn …/dist/Cypress/Cypress ENOENT`, or `Cannot find module '…/cypress/dist/index.js'`.\n2. **Run by file name fragment:** `env -u ELECTRON_RUN_AS_NODE yarn test-system go_spec --browser electron`. The script wraps its argument in `{test,test-binary}/**/*<arg>*`, so a path such as `test/go_spec.js`, or `--spec <path>`, matches nothing. The runner starts its own Xvfb, so `DISPLAY` can stay unset.\n3. **Pick a browser that exists:** Claude Code on the web has no Chrome or Firefox install, so pass `--browser electron`. It runs the Electron variant and reports the other browsers as pending.\n4. **Restore snapshots afterwards:** a local run prunes snapshot keys for tests it skipped. See [`system-tests/AGENTS.md`](./system-tests/AGENTS.md).\n\nIf `yarn build` fails in `@cypress/vue` with `Cannot find module '@cypress/mount-utils'` while `npm/mount-utils/dist` exists, the rollup-plugin-typescript2 cache is stale: delete `npm/vue/node_modules/.cache/rollup-plugin-typescript2` and rerun.\n\n### Linting\n\n- `yarn lint --scope @packages/<name>` for focused lint. Full monorepo lint: `yarn lint`.\n\n### Matching the required Node version\n\nInstall the required version from the repo root, where `nvm` picks it up from [`.nvmrc`](./.nvmrc):\n\n```bash\nexport NVM_DIR=/opt/nvm          # wherever nvm is installed\n. \"$NVM_DIR/nvm.sh\" || true      # see below: sourcing can exit non-zero\nnvm install                      # reads .nvmrc\n```\n\nTwo things bite here:\n\n- **Source `nvm.sh` on its own line.** It exits non-zero when no default version is aliased yet, so `. \"$NVM_DIR/nvm.sh\" && nvm install` silently skips the install and looks like a failed download.\n- **`nvm use` does not survive a new shell.** Containers that put their own Node first on `PATH` keep resolving to it in every new shell, so the version reverts between commands. Prepend the installed version's bin directory to `PATH` in whatever the environment persists across commands (a shell profile, or the session env file that agent harnesses expose):\n\n```bash\necho \"export PATH=\\\"$(nvm which current | xargs dirname):\\$PATH\\\"\" >> ~/.bashrc\n```\n\nVerify with `node -v` in a *fresh* shell rather than the one that ran `nvm use`.\n\nPrefer this over `yarn --ignore-engines`: the flag only silences the check for the install itself. `yarn <script>` still refuses to run afterwards (`Commands cannot run with an incompatible environment`), and the postinstall rebuilds native modules such as `better-sqlite3` against the wrong Node.\n\n### Key caveats\n\n- The postinstall takes ~4-5 minutes (build + V8 snapshot generation). If `yarn` is interrupted, re-run it.\n- `yarn --frozen-lockfile` should be preferred when the lockfile hasn't changed; it falls back to `yarn` (which runs postinstall) if it fails.\n- Do not run `yarn` from within sub-packages. Always run from the repo root.\n","CLAUDE.md":"# CLAUDE.md\n\n## Workflow Orchestration\n\n### 1. Plan Mode Default\n\n- Enter plan mode for ANY non-trivial task (3+ steps or architectural decisions)\n- If something goes sideways, STOP and re-plan immediately - don't keep pushing\n- Use plan mode for verification steps, not just building\n- Write detailed specs upfront to reduce ambiguity\n\n### 2. Subagent Strategy\n\n- Use subagents liberally to keep main context window clean\n- Offload research, exploration, and parallel analysis to subagents\n- For complex problems, throw more compute at it via subagents\n- One task per subagent for focused execution\n\n### 3. Self-Improvement Loop\n\n- After ANY correction from the user: update the closest relevant `CLAUDE.md` file\n- Write rules for yourself that prevent the same mistake\n\n### 4. Verification Before Done\n\n- Never mark a task complete without proving it works\n- Diff behavior between main and your changes when relevant\n- Ask yourself: \"Would a staff engineer approve this?\"\n- Run relevant tests only, check logs, demonstrate correctness\n\n### 5. Demand Elegance (Balanced)\n\n- For non-trivial changes: pause and ask \"is there a more elegant way?\"\n- If a fix feels hacky: \"Knowing everything I know now, implement the elegant solution\"\n- Skip this for simple, obvious fixes - don't over-engineer\n- Challenge your own work before presenting it\n\n## Core Principles\n\n- **Minimal Impact**: Changes should only touch what's necessary. Avoid introducing bugs.\n\n## Working Constraints\n\n- Worktrees must use a full `yarn` install in the worktree. Do not symlink `node_modules` or packages back to another checkout.\n- Packaged-binary integration tests (`system-tests/test-binary`) need Docker and a built binary, so they do not run in the sandbox. When they are needed, provide the exact commands and ask the user to run them.\n- System tests under `system-tests/test` do run in cloud containers once the monorepo is built. Run them yourself rather than handing them off; see [Running system tests](./AGENTS.md#running-system-tests).\n- Keep follow-up work from the same task, such as review fixes and related instruction updates, on that task's branch. Create a separate branch only when the user asks for one.\n- Before committing or pushing, `yarn check-ts`, `yarn lint`, `yarn health-check` (knip), and relevant unit tests must pass locally. CI currently does not block expensive e2e jobs when these fail.\n\n@AGENTS.md\n",".claude/skills/building-cypress-binary/SKILL.md":"---\nname: building-cypress-binary\ndescription: >-\n  Builds and packages the Cypress Electron binary locally (yarn binary-build,\n  binary-package, binary-zip, Docker/Linux parity), including non-interactive\n  --version/--platform flags and unsetting ELECTRON_RUN_AS_NODE for agent hosts.\n  Covers macOS signing, optional env speedups, dist smoke-test pitfalls, and why\n  the tree is dirty after a build. Use when the user asks to build the Cypress\n  binary, binary-package, electron MODULE_NOT_FOUND during binary-build, or\n  local binary zip. For artifact debugging, use debugging-cypress-artifacts.\n---\n\n# Building the Cypress binary\n\nCanonical reference: [guides/building-release-artifacts.md](../../../guides/building-release-artifacts.md) (npm `.tgz` vs binary `.zip`, CI context).\n\nArtifact debugging (packaged CLI, `CYPRESS_RUN_BINARY`, git debug loop): [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## Agent execution\n\nRun from repo root with **Yarn 1** and Node per **`.node-version`**. Request **`network`** for `yarn` / `yarn lerna …`; request **`all`** for `yarn binary-build` and `yarn binary-package` (long runs, temp dir under OS tmp, high memory). Sandbox vs full permissions does **not** fix a failed dist smoke test if **`ELECTRON_RUN_AS_NODE=1`** is set — unset that var instead (below). Do not ask the user to approve each command separately during one build session.\n\n**Prerequisites:** If `node_modules/.bin/lerna` or `rollup` is missing, run **`yarn`** first (postinstall runs the monorepo build; may take several minutes).\n\n**Agent hosts:** Prefix binary commands with **`env -u ELECTRON_RUN_AS_NODE`** (or export `env -u ELECTRON_RUN_AS_NODE` for the shell session). Cursor/Electron environments often set this to `1`, which is unrelated to sandboxing.\n\n## Commands (from repo root)\n\nUse **Yarn 1** and the Node version in `.node-version`.\n\n1. **`yarn binary-build`** — build the Electron app and staging tree (runs broad `lerna` `build` / `build-prod` as part of the pipeline).\n2. **`yarn binary-package`** — package the built binary (electron-builder).\n3. **`yarn binary-zip`** — zip the packaged output.\n\nLinux parity with CI: run `yarn binary-build` and `yarn binary-package` **inside** `yarn docker` if you want the same environment as CI.\n\n### Non-interactive (CI, agents, no TTY)\n\n`scripts/binary/index.js` prompts for missing options via Inquirer. If **`version`** and **`platform`** are already present in argv (parsed with `minimist`), those prompts are skipped.\n\n| Step | Required argv |\n|------|----------------|\n| `binary-build` | `--version <semver>` and `--platform <os>` |\n| `binary-package` | same as build |\n| `binary-zip` | `--platform <os>` only |\n\n**`--platform`:** `darwin` \\| `linux` \\| `win32` (defaults to `os.platform()` when interactive).\n\n**`--version`:** must match what the built app reports from **`node index.js --version`** in the staged `dist/` (via `@packages/root`). On `develop` this is often **not** root `package.json`’s `0.0.0-development` — e.g. a release-style **`15.x.x`** baked into packages. Before a long build, discover it with:\n\n```bash\nenv -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version\n```\n\nOr read stdout from a prior partial build’s `dist/`. A mismatch fails with `different version reported`.\n\n**macOS local example** (skip notarization; Apple Silicon ad-hoc run after pack):\n\n```bash\nexport SKIP_NOTARIZATION=1\nexport RESET_ADHOC_SIGNATURE=1   # arm64 only; harmless to omit on Intel\nexport V8_SNAPSHOT_DISABLE_MINIFY=1   # optional: faster packaging\nBINARY_VERSION=\"$(env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version)\"\nenv -u ELECTRON_RUN_AS_NODE yarn binary-build --version \"$BINARY_VERSION\" --platform darwin\nenv -u ELECTRON_RUN_AS_NODE yarn binary-package --version \"$BINARY_VERSION\" --platform darwin\nyarn binary-zip --platform darwin\n```\n\nYarn 1 forwards extra args to the script; an explicit `--` before flags also works if you prefer it.\n\n## macOS\n\n- Code signing: follow Apple’s code signing setup (see guide link above); [code-signing.md](../../../guides/code-signing.md) for CI-oriented detail.\n- Local builds often skip notarization: set **`SKIP_NOTARIZATION=1`** (notarization needs an Apple Developer Program account).\n\n## Optional environment\n\n| Variable | Effect |\n|----------|--------|\n| `V8_SNAPSHOT_DISABLE_MINIFY=1` | Faster packaging (less minification work). |\n| `RESET_ADHOC_SIGNATURE=1` | **Apple Silicon (M1+)** — often required to run the packaged binary locally after an ad-hoc sign. |\n| `SKIP_NOTARIZATION=1` | Skip macOS notarization for local builds. |\n\n**Unset for binary-build (do not export):** `ELECTRON_RUN_AS_NODE` — see next section.\n\n## Why the repo looks “dirty” afterward\n\nA full binary build drives **`yarn lerna run build`** and **`build-prod`** across packages, writes many **`dist/`** artifacts, uses a **root `build/`** symlink into a temp dir (`scripts/binary/build.ts` → `TMP_BUILD_DIR`), and can leave output **interleaved with source** (**.js` beside `.ts`**, some **`.ts` mutations**). Expect **`git status` to be unusable** until reset.\n\n**Full reset:** `git clean -xfd && yarn` — destroys untracked/ignored files; do not rely on stash here.\n\n**Keeping WIP through a build:** use the commit → build → clean → **`git reset HEAD~1`** loop or a **git worktree** — see [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## `binary-build` dist smoke test and `ELECTRON_RUN_AS_NODE`\n\nAfter Lerna `build` / `build-prod`, `scripts/binary/build.ts` runs **`node index.js --version`** in the staged **`dist/`** tree (`TMP_BUILD_DIR`, e.g. `/tmp/cypress-build/darwin/dist`). `testDistVersion` compares stdout to the **`--version`** argv.\n\n### `Cannot find module 'electron'` (false failure)\n\n**Cause:** Parent shell has **`ELECTRON_RUN_AS_NODE=1`** (common in Cursor/Electron agent hosts). `packages/server/lib/util/electron-app.js` `isRunning()` then returns true, `start-cypress.js` calls **`require('electron')`**, and Node fails — the production **`dist/`** tree does **not** include the `electron` npm package (only the packaged Electron app later).\n\n**Not:** missing `copyAllToDist` / sandbox hiding `node_modules`. Repro: with `ELECTRON_RUN_AS_NODE=1` the staged dist fails; with **`env -u ELECTRON_RUN_AS_NODE`** the same `node …/dist/index.js --version` succeeds.\n\n**Mitigations:**\n\n1. Agents: **`env -u ELECTRON_RUN_AS_NODE yarn binary-build …`** (and package steps).\n2. Repo: `testDistVersion` in `scripts/binary/build.ts` omits **`ELECTRON_RUN_AS_NODE`** from the child `execa` env so builds are stable even when the parent sets it.\n\n### `different version reported`\n\n**Cause:** `--version` argv does not match **`node index.js --version`** from the built dist (version baked via `@packages/root` during the build, which may differ from root `package.json` on `develop`).\n\n**Fix:** Use the discovery command in **Non-interactive** above, or stdout from a partial `dist/` after a failed build.\n",".circleci/AGENTS.md":"# CircleCI Configuration\n\nAgent guidance for `.circleci/` — source configs under `src/` are packed into `packed/` at CI runtime. See [README.md](./README.md) for local CLI setup and the pre-commit `yarn pack-ci --validate` workflow.\n\n## Full CI branch allowlist\n\nMost PR branches run the **pull-request workflow** with path-based job filtering (`generate-pipeline-parameters.sh`). A small set of branch names instead run the **main workflows** (`linux-x64`, `linux-arm64`, `darwin-x64`, `darwin-arm64`, `windows`).\n\n### When to add a branch name\n\nAdd a branch when the change affects behavior that is only validated by main-branch CI — in particular:\n\n- **Windows jobs** — the `windows` workflow (`windows-v8-integration-tests`, `windows-create-build-artifacts`, etc.)\n- **V8 snapshot / packaging tooling** — `v8-integration-tests` on Linux, macOS, and Windows; snapshot cache updates in `tooling/v8-snapshot/cache/`\n- **Full binary tests** — kitchensink, staging, and npm-module verification jobs (see optional gates below). These no longer run on pull requests at all, so an allowlisted branch is the only way to exercise them before merge.\n\nIf only unit/integration tests scoped to changed packages are sufficient, do **not** add the branch — use a normal PR branch instead.\n\n### Where to add the branch name\n\n**Required:** append a **new** `- equal:` entry to the `or:` block in `&full-workflow-filters` in `.circleci/src/pipeline/workflows/@main.yml` (the `when:` at the top of `linux-x64`, reused by `windows` and other platform workflows). Do **not** rename or remove existing entries (`develop`, `update-v8-snapshot-cache-on-develop`, the `release/*` / `electron/*` patterns, or `force-persist-artifacts`):\n\n```yaml\n    or:\n      - equal: [ develop, << pipeline.git.branch >> ]\n      # ... leave existing entries unchanged ...\n      - equal: [ 'your-branch-name', << pipeline.git.branch >> ]  # add this line\n```\n\nPush your work to the branch name you add — do not repurpose an existing allowlisted branch (for example, do not change `update-v8-snapshot-cache-on-develop` to a different name).\n\nThis gate turns on the main/multi-platform workflow graph, including `windows-v8-integration-tests` and `v8-integration-tests` on Linux/macOS. The existing `update-v8-snapshot-cache-on-develop` entry is reserved for automated v8 snapshot cache PRs.\n\nThis gate does not turn on `windows`, `linux-arm64`, `darwin-x64`, or `darwin-arm64` for plain `develop` or `release/*` pushes. On those two, all four run from a scheduled pipeline instead — see \"Scheduled platform CI\" below. Any other branch you add here turns all five on per-push.\n\n**Optional — only if you need more than main workflows + path-filtered jobs:**\n\n| Location | When you also need it |\n|----------|------------------------|\n| `pull-request.yml` exclusion list | Avoid the PR workflow running in parallel with the main workflows on the same branch |\n| `notify-binary-failure`'s `filters:` in `@main.yml` | Testing binary failure alerting on a branch — it is pinned to `develop`, so it never fires elsewhere |\n| `generate-pipeline-parameters.sh` branch override | Force every path-filtered job to run even when changed files would not normally select them (or trigger manually with `run-all-jobs=true`) |\n| `&mainBuildFilters` in `@main.yml` | Binary/kitchensink/staging jobs in `linux-x64` that have an extra branch filter beyond the workflow `when:` |\n\nFor typical v8 snapshot cache work, changes under `tooling/*` already enable `run-v8-tests` via path filtering, so **`&full-workflow-filters` alone is usually enough**.\n\nAfter editing `.circleci/src/`, run `yarn pack-ci --validate` before committing.\n\n### Per-workflow gates\n\nThe `run-*` guards live in the shared job definitions in `@pipeline.yml` (via `halt-if-skipped`), not in the workflow files, so they apply to every workflow below — not just the PR one.\n\n- **`linux-x64`**: `build`, lint, and type checks always run, as do the binary/packaging chain and release gating (`create-and-trigger-packaging-artifacts`, `get-published-artifacts`, `test-binary-*`, `verify-release-readiness`, `ready-to-release`, `npm-release`). Per-package integration/unit jobs, system tests, and `v8-integration-tests` are guarded, so a webhook push to `develop` runs only the ones its changed paths select.\n- **`windows` / `linux-arm64` / `darwin-*`**: none of these three run on a plain `develop` or `release/*` push — see \"Scheduled platform CI\" below for when they do. Inside them, `v8-integration-tests`, `driver-integration-memory-tests`, and (Windows) selected integration/unit jobs are still guarded by `run-*` parameters, but a scheduled run gets all-true from `generate-pipeline-parameters.sh`'s trigger-source check, so nothing inside these workflows is actually path-filtered once one runs.\n\n`linux-x64` runs on any `&full-workflow-filters` branch directly. The other four need more than that. On `develop` and `release/*` they run only from a scheduled pipeline. On `electron/*`, `update-v8-snapshot-cache-on-develop`, or an allowlisted branch, `&full-workflow-filters` alone is enough.\n\n`npm-release` still runs only on `develop`, not on allowlisted feature branches.\n\n### Scheduled platform CI (develop and release/*)\n\nNone of the four runs on every `develop` or `release/*` push. Windows moved for credit cost. The two `darwin-*` workflows moved to free leased self-hosted macOS hardware. `linux-arm64` costs almost nothing and moved for consistency, so all platform coverage lands in one sweep. Per-merge platform signal was not actionable anyway — `develop` passed 47 of 213 runs. A release branch is long-lived enough for a scheduled sweep to cover it the same way.\n\n**What exists today**: a CircleCI Scheduled Pipeline named \"Platform Develop Branch Schedule\" (id `40ddfea0-34c3-47ab-8557-6bdb150b4d8d`) runs on `develop` once per weekday at 02:00 UTC and sets `run-platform-workflows=true`. `windows`, `linux-arm64`, `darwin-x64`, and `darwin-arm64` all read that parameter. There is still no release-branch schedule: `release/*` pushes get zero platform coverage of any kind until one exists.\n\n**Still needed**, to match the gates in `@main.yml`:\n\n- **Release schedule** — a second Scheduled Pipeline, targeting whichever `release/*` branch is currently active, setting `run-platform-workflows=true`. Repointing its branch to the new release branch is part of cutting a release; disabling it is part of shipping one. There is no default branch this can target permanently, since release branches are cut and retired.\n- **Owner**: App Foundations team\n\nThis is a CircleCI project setting, not code — it isn't visible anywhere in `.circleci/src`. Changing it requires CircleCI project-settings access (Project Settings → Triggers → Scheduled Pipelines), via the UI or `PATCH /api/v2/schedule/{id}`.\n\nFor an on-demand run of all four platform workflows outside either schedule (e.g. to validate a change before it reaches `develop`, or to recover a missed/failed release-branch build), use Trigger Pipeline with `run-platform-workflows=true`, or `force-persist-artifacts=true` — the latter works regardless of branch and needs only one flag. See the comment above the `linux-arm64` workflow in `@main.yml`.\n",".claude/skills/debugging-cypress-artifacts/SKILL.md":"---\nname: debugging-cypress-artifacts\ndescription: >-\n  Debugs Cypress bugs that only reproduce in packaged artifacts (cli/build CLI\n  plus binary-package output), not yarn dev. Covers the git commit/build/clean/\n  reset debug loop, env -u ELECTRON_RUN_AS_NODE for binary-build on agent hosts,\n  CYPRESS_RUN_BINARY, DEBUG and inspect flags, and workspace recovery without\n  stash. Use when investigating artifact-only bugs, binary-build electron\n  MODULE_NOT_FOUND, or a packaged cypress open/run repro loop.\n---\n\n# Debugging Cypress packaged artifacts\n\nSome bugs only appear in **release-shaped** code: Rollup output under **`cli/build/`** (not `yarn dev`), plus the **packaged Electron app** from `binary-package` (not `scripts/start.js` / **`cypress open --dev`**).\n\nBuild steps: see [building-cypress-binary](../building-cypress-binary/SKILL.md).\n\n## Agent execution (avoid repeated permission prompts)\n\nRun this workflow **without asking the user to approve each command**. Use elevated permissions up front:\n\n| Phase | Command pattern | Permissions |\n|-------|-----------------|-------------|\n| Install | `yarn` from repo root (if `node_modules/.bin/lerna` missing) | `network` |\n| CLI build | `yarn lerna run build-cli --scope cypress` | `network` |\n| Binary build | `env -u ELECTRON_RUN_AS_NODE yarn binary-build` / `binary-package` with `--version` / `--platform` | `all` (long-running, writes outside workspace temp dirs). **Unset `ELECTRON_RUN_AS_NODE`** — see building skill. |\n| Repro / logs | `node cli/build/dist/bin/cypress …`, `node packages/server/index.js --version` | `network` if debug ingest uses HTTP |\n| Cleanup | `git clean -xfd`, then `yarn` | `all` for clean; `network` for yarn |\n\nDo **not** re-prompt for sandbox/network on every step in the same session once the user has asked for a full artifact debug loop.\n\n## Git workflow for a debug loop (single checkout)\n\nBinary builds use the **full tree** and leave the workspace unusable for normal dev (generated `.js` beside `.ts`, possible **`.ts` mutations**, `dist/`, root `build/` symlink, etc.). **Do not use `git stash push -a`** — stash mixes real WIP with binary cruft.\n\nUse a **WIP commit** as a bookmark, then **reset** (not **`git revert`**) to restore edits after cleanup:\n\n1. **`git checkout -b debug/<topic>`** (or stay on an existing debug branch).\n2. **Analysis edits** (logging, temporary probes, etc.). Commit only what you mean — prefer **`git add <paths>`** over blind **`git commit -a`**, so build noise on tracked files is not swept into the WIP commit.\n3. **`git commit -m \"wip: debug …\"`** if there are changes worth preserving (see **Husky** below if commit fails).\n4. **Build** packaged CLI and binary (see building skill): `yarn lerna run build-cli --scope cypress`, then **`env -u ELECTRON_RUN_AS_NODE yarn binary-build`** / **`binary-package`** with matching **`--version`** (discover via `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version`) and **`--platform`**.\n5. **Repro** with packaged entrypoints (below).\n6. **Restore workspace:**\n   ```bash\n   git clean -xfd && yarn\n   ```\n   Then either:\n   - **`git reset HEAD~1`** (mixed, default) if step 3 succeeded — WIP commit becomes unstaged changes again; **not `git revert`**.\n   - **`git restore --staged --worktree <paths>`** if there was **no WIP commit** (instrumentation-only files listed in step 2). Remove any temporary helper files (e.g. `packages/server/lib/util/debug-agent-log.js`) with `rm`.\n\n7. Repeat from step 2.\n\n**Rules:** Do not **`git reset HEAD~1`** after pushing that WIP commit unless you intend to rewrite remote history. Untracked files not in the WIP commit are **gone** after `git clean -xfd`. `.claude/*` and `.cursor/*` are gitignored except for a short allowlist (`.claude/skills`, `.claude/settings.json`, `.cursor/BUGBOT.md`, `.cursor/environment.json`, `.cursor/Dockerfile`) — those are tracked and survive `git clean -xfd`; anything else you keep under those directories will not.\n\n**Husky:** If **`git commit`** fails with missing **`.husky/_/husky.sh`**, do not loop on commit. Proceed with staged instrumentation, then restore via **`git restore`** in step 6 (or fix Husky / run `yarn` so hooks install, then commit).\n\n**Alternative:** a **separate git worktree** for binary-only work avoids the commit/reset dance; see the building skill’s reset section.\n\n## Packaged CLI entrypoint\n\nAfter **`yarn lerna run build-cli --scope cypress`**:\n\n```bash\nnode <repo>/cli/build/dist/bin/cypress <command>\n```\n\nRollup emits the instrumented entry at **`cli/build/dist/bin/cypress`**. **`cli/build/bin/cypress`** is a **thin copy** of `cli/bin/cypress` (loads `../dist/cli` via a different path) and is **not** the same as the Rollup bundle — do not use it for artifact or agent-log repro.\n\nPrefer an absolute path when cwd might confuse postinstall-relative logic.\n\n## Point the CLI at your packaged binary\n\n```bash\nexport CYPRESS_RUN_BINARY=/path/to/platform/executable\n```\n\nSet the **real executable** (validated in `cli/lib/tasks/state.ts` via `realpath`), not the `.app` folder alone:\n\n| OS | Example shape |\n|----|----------------|\n| macOS | `…/Cypress.app/Contents/MacOS/Cypress` |\n| Linux | `…/Cypress` (unpacked binary) |\n| win32 | `…/Cypress.exe` |\n\nAlign **CLI package version** with the **binary `--version`** used at build time when possible.\n\n## Log and trace flags\n\n- **`DEBUG=cypress:cli*`** — CLI install, verify, spawn.\n- **`DEBUG=cypress:electron*`** — Electron install/open; CLI spawn also uses `cypress:electron`.\n- **`ELECTRON_ENABLE_LOGGING=1`** — unfiltered Electron stderr (`packages/electron/src/open.ts`).\n- Prefer scoped `DEBUG` patterns over **`DEBUG=cypress:*`**.\n\n## Attach debuggers\n\n- **CLI (Node):** `node --inspect-brk <repo>/cli/build/dist/bin/cypress <command>`\n- **Electron main (packaged):** `node <repo>/cli/build/dist/bin/cypress open --inspect-brk` (or `--inspect`); forwarded in `cli/lib/exec/open.ts` / `run.ts`. Use with **`CYPRESS_RUN_BINARY`** so the debuggee is your local package output.\n\n## Debug-session instrumentation (agents)\n\nWhen using Cursor debug-mode HTTP ingest (`127.0.0.1:7709`, session log under **`.cursor/debug-<session>.log`**):\n\n- **Entry layers** to tag: CLI bin → CLI `init` → CLI `spawn` (only when the binary is spawned, not for `version`) → `packages/server/index.js` (`startCypress`) → `packages/server/start-cypress.js`.\n- **Short-lived CLI:** fire-and-forget `fetch` alone often loses events because the process exits first. Also **`appendFileSync`** the same NDJSON line to the session log path (or a small `debug-agent-log.js` helper on the server side) in addition to `fetch`.\n- **Verify server layers** without a full green binary: `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version` from `packages/server` (exercises index + start-cypress; **unset `ELECTRON_RUN_AS_NODE`** if the agent host sets it).\n- **Verify CLI layers:** `node cli/build/dist/bin/cypress version` (does not hit spawn). CLI bin is unaffected by `ELECTRON_RUN_AS_NODE` for the version subcommand, but binary-build still needs the var unset.\n\n## What to skip\n\n- **`--dev`** on `open` / `run`\n- Assuming **`yarn dev`** matches packaged behavior (`cli/lib/tasks/verify.ts` uses `scripts/start.js` when `dev` is true)\n\n## Common workspace gotcha after `yarn`\n\nIf **`yarn`** / Vite fails on **`urqlSchema`** or **`urqlCacheKeys`** imports from `@packages/data-context`, stale **`packages/data-context/src/**/*.js`** files may be shadowing **`.ts`**. Regenerate (`yarn workspace @packages/data-context build`) and remove **`.js` siblings that have a matching `.ts`** under `packages/data-context/src/` before retrying `yarn`.\n",".cursor/skills/server-mocha-to-vitest/SKILL.md":"---\nname: server-mocha-to-vitest\ndescription: >-\n  Converts one @packages/server unit spec from mocha (test/unit/**/*_spec.ts) to\n  vitest (*.spec.ts) without changing what the test proves. Use when migrating a\n  server unit spec, when a converted spec passes but its mocks may not be\n  intercepting, or when the user mentions spec_helper, mockery, proxyquire,\n  sinon, snap-shot-it, or the mocha/vitest split in packages/server.\n---\n\n# Migrate a `@packages/server` unit spec from mocha to vitest\n\nScope: `packages/server/test/unit` only. Integration and performance suites stay on mocha.\n\nThis skill lists the things that go wrong *silently*: a converted spec that is green while\nits mocks never engaged, or that asserts less than the mocha original did. Plain API\nmapping (`sinon.stub` to `vi.fn`, `context` to `describe`)\nis not covered; you already know it. Parent issue: cypress-io/cypress#34846.\n\n## The contract\n\n- `*_spec.ts` runs on mocha via `test/scripts/run.js`. `*.spec.ts` runs on vitest via\n  `packages/server/vitest.config.ts`. `yarn test-unit` runs both.\n- Convert by `git mv foo_spec.ts foo.spec.ts` and rewriting the file. The mocha file must be\n  gone when you finish. Never leave a file half-converted: every `it` in the original is\n  ported, or the file is not touched at all.\n- The new file imports from `vitest` explicitly and uses nothing else for test plumbing:\n  no `spec_helper`, `mockery`, `proxyquire`, `sinon`, `chai` or its plugins, `snap-shot-it`,\n  `mocked-env`. Keep `nock`, `supertest`, `express`, `lodash`, `bluebird` where the original\n  used them for real work.\n- Never weaken a test: no `.skip`, no dropped or loosened assertion, no `vitest -u` to make a\n  snapshot agree. If a test cannot be made green, leave it failing and say why in the PR.\n- Do not touch `.circleci/`, `vitest.config.ts`, or `cloud/environment_spec.ts`. The last one\n  is named in four CI workflows and migrates in its own human PR.\n- Specs never connect to a non-loopback address. Tests must pass on a sandboxed host.\n\n## `spec_helper.js` is not ported. Inline what the file needs.\n\n`test/spec_helper.js` installs root hooks for the whole mocha process. A mocha spec depends\non them even when it never imports `spec_helper`, because some other spec in the same run\ndid. Under vitest each file is on its own, so read `spec_helper.js` and inline only the\nhooks this file actually relies on:\n\n| Original behavior | Inline as |\n|---|---|\n| `setCtx(makeDataContext({}))` before, `getCtx()._reset()` + `clearCtx()` after | only if the SUT calls `getCtx()`; see the GraphQL note below before using `makeDataContext` |\n| `nock.disableNetConnect()` + `nock.enableNetConnect(/localhost/)` before, `nock.cleanAll()` + `nock.enableNetConnect()` after | any spec that uses `nock`, even when the original had no hooks (`cloud/api/create_instance.spec.ts`) |\n| `cache.remove()` before each | specs touching `lib/cache` |\n| `GracefulExit.resetForTesting()` | specs that start servers; it is a silent no-op unless `globalThis.IS_TEST = true` is set first (`server-base.spec.ts`) |\n| `process.env` cloned and restored after each | specs that set env; `vi.stubEnv` + `vi.unstubAllEnvs()` also works |\n| `mockElectron(mockery)` | `vi.mock('electron', ...)` only if the SUT's import graph reaches `electron`; most do not |\n| `sinon.restore()` after each | `vi.restoreAllMocks()`, with the caveat below |\n\nA spec with no hooks is fine. `automation/commands/key_press.spec.ts` needs none.\n\n## Mocks that load the real module without telling you\n\n**Prove each mock intercepts.** Add a temporary `throw` or call count\nto the factory, run the spec, then remove it. A green run alone proves nothing.\n\n**`vi.mock` specifiers must be the string the importer wrote**, resolved from your spec's\nlocation for relative paths. `vi.mock('../../../../lib/cloud/network/fetch')` from the spec\nmatches the SUT's `import ... from '../network/fetch'` because both resolve to the same file.\nA path that resolves elsewhere is ignored and the real module loads.\n\n**A bare `require()` inside the SUT is never intercepted by `vi.mock`**, with or without\n`server.deps.inline`. vite-node hands transformed modules a plain node `require`, and\nvitest's mocker only hooks ESM imports. Seed the CJS cache instead, which is what mockery did:\n\n```ts\nconst requireCjs = createRequire(import.meta.url)\nconst morganPath = requireCjs.resolve('morgan')\n\nrequireCjs.cache[morganPath] = { exports: morganMockFactory } as NodeModule\n// afterAll / afterEach: delete requireCjs.cache[morganPath]\n```\n\nThe `exports` value is exactly what the SUT's `require()` returns, so a callable\n`module.exports = function` package (`morgan`, the `@cypress/*` preprocessors) is mocked with\nthe function itself. Examples: `plugins/child/run_plugins.spec.ts`, `server-base.spec.ts`.\n\n**Partial mocks of node builtins must override `default` too.** A SUT that does\n`import fs from 'fs'` reads `fs.createReadStream` off the default export. Spread the actual\nmodule into both the named exports and a rebuilt `default`, or the real function runs:\n\n```ts\nvi.mock('fs', async (importOriginal) => {\n  const actual = await importOriginal<typeof import('fs')>()\n\n  return { ...actual, createReadStream: stub, default: { ...actual, createReadStream: stub } }\n})\n```\n\nExample: `cloud/api/put_protocol_artifact.spec.ts`.\n\n**A two-hop `proxyquire` chain usually collapses to one `vi.mock` of the leaf.** The second\nhop existed because proxyquire cannot reach a transitive dependency. `vi.mock` applies to the\nwhole module graph, so mock `chrome-remote-interface` once with `vi.hoisted` state and import\nthe SUT statically. Only reach for `vi.resetModules()` plus a dynamic import when the SUT\nholds module-level mutable state that mocha reset by re-requiring. Example:\n`browsers/cri-client.spec.ts`.\n\n**`vi.spyOn` on an ESM namespace import does work** for `lib/*.ts` modules, because vite's\nSSR transform rewrites named imports to live property reads. `vi.spyOn(ensureUrl, 'isListening')`\npatches what `server-base.ts` sees. It keeps the real implementation unless you add\n`.mockImplementation`, which `sinon.stub` did not.\n\n## Assertions that flip meaning\n\n**chai `deep.equal` is `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose value is\n`undefined`, so an expected `{ envUrl: undefined }` also matches an object with no `envUrl` key,\nwhich chai rejects (`cloud/environment.spec.ts`).\n\n**sinon `calledWith` is a prefix match. vitest `toHaveBeenCalledWith` is exact-arity.**\n`client.send('Network.enable', opts, sessionId)` satisfies `calledWith('Network.enable')` but\nfails `toHaveBeenCalledWith('Network.enable')`. Worse, `not.toHaveBeenCalledWith('Fetch.disable')`\npasses vacuously against a 3-argument call. Either assert the full argument list or filter\n`mock.calls` by leading arguments. Examples: `expectCalledWith` in `browsers/cri-client.spec.ts`,\n`callsFor` in `server-base.spec.ts`.\n\n**chai `deep.equal` / `eql` maps to `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose\nvalue is `undefined`, which chai does not. `toStrictEqual` is stricter than chai mainly about\nprototypes: Node's header objects have a null prototype, so spread them into a plain object\nbefore asserting (`request.spec.ts`).\n\n**`sinon.stub().withArgs(x)` returns the filtered stub.** When the original assigned that return\nvalue, the \"filter\" never gated anything and the stub answered every call. Porting it as an\nargument-conditional mock returns `undefined` for the real calls. Read what the mocha stub\nactually did before translating it.\n\n**`vi.restoreAllMocks()` wipes `vi.fn().mockReturnValue(...)`.** `sinon.restore()` left\n`.returns()` behavior on plain stubs alone. Shared fixtures need `vi.fn(() => value)` so the\nimplementation survives restore.\n\n**Bluebird.** Server code still chains `.return()`, `.spread()`, `.tap()` on values it awaits.\nWhere the SUT chains Bluebird methods on a mocked return, `mockResolvedValue` hands back a\nnative promise and the SUT throws a confusing `not a function`. Return `Bluebird.resolve(...)`\nfrom that mock. Check the current SUT first; many call sites are plain `await` now and native\npromises are fine (`ensureUrl.isListening` in `server-base.ts` is one).\n\n**The transpiler is visible in stringified functions.** A test that asserts on\n`fn.toString()` of a handler defined in the spec reads esbuild's output under vitest, not\nts-node's. Keep the assertion exact and update the literal; do not normalize it away.\n\n**Decomposed Unicode literals get normalized by editors.** `'é'` as `e` + U+0301 becomes\nU+00E9 on save. Byte-compare string literals against `git show HEAD:<mocha file>` when a spec\ncontains combining characters (`automation/commands/key_press.spec.ts`).\n\n## GraphQL, nock, timers\n\n**Importing `lib/server-base`, `lib/routes`, or `lib/makeDataContext` builds the GraphQL\nschema a second time** in the worker and `graphql` rejects the duplicate realm. Mock\n`@packages/data-context/graphql/makeGraphQLServer` with `graphqlWS` and `graphQLHTTP` stubs.\nMocking that alone is not enough if you also call `makeDataContext`; use a minimal\n`DataContext` object carrying only the members the SUT touches (`routes.spec.ts`).\n\n**nock `delayConnection` with one large `advanceTimersByTimeAsync`** fires the delayed\nconnection before the request timeout and consumes the wrong interceptor. Use\n`vi.runAllTimersAsync()` in rounds or step the clock in small increments. Also note that\nchaining `delayConnection(5000)` then `delayConnection(0)` on the same interceptor mutates one\nobject, so both replies get delay 0; port that verbatim rather than \"fixing\" it.\n\n**Fake timers:** `vi.useFakeTimers()` / `vi.useRealTimers()` in hooks. `clock.tickAsync(n)`\nbecomes `await vi.advanceTimersByTimeAsync(n)`. A non-async helper that the original `await`ed\nmust stay non-async, or you add a microtask and change what mid-flight assertions observe.\n\n## Source edits for testability\n\nAllowed only when obvious on sight: an optional parameter with a default that preserves\nbehavior, exporting a function that already exists, extracting an inline expression into a\nnamed pure function in the same file. Not allowed: changing control flow, changing a signature\ncallers depend on, touching more than one `lib/` file per batch, or anything you cannot justify\nin one sentence. Every source edit gets its own heading in the PR body. When in doubt, skip the\nspec; it stays in the pool.\n\n## Verify\n\n```bash\nyarn workspace @packages/server test-unit-vitest -- test/unit/<dir>/foo.spec.ts\nyarn workspace @packages/server test-unit          # both runners, from a real terminal\nyarn lint --scope @packages/server\nyarn workspace @packages/server check-ts\n```\n\nRun the converted spec at least twice. Run `test-unit` from a terminal, not with stdout piped\nto a file: `util/tty_spec` needs `process.stdout.getWindowSize`, which only exists on a TTY,\nand fails on develop too when piped. Count `it(` in the mocha original and in the vitest file;\nthey must match (loops that generate tests expand at runtime, so compare the static count).\n\n## Style\n\nSingle quotes, no semicolons, 2-space indent, trailing commas, blank line before `return`,\n`import type` for type-only imports, no `console`. Prefer no comment; when one is needed, say\nwhy in one or two lines and describe the present code, never how it used to work.\n","cli/AGENTS.md":"# CLI Workspace\n\n## Purpose\n\nThe `cli/` workspace contains the `cypress` npm package — the user-facing CLI and programmatic API — plus the first-party component-testing mount adapters that ship bundled inside it. This is the top-level package users install (`npm install cypress`). The mount adapters (`@cypress/react`, `@cypress/vue`, etc.) live here as sibling directories and are published independently on npm, but their built artifacts are also copied into `cli/` so that users can import them as `cypress/react`, `cypress/vue`, etc.\n\n## Package Map\n\n### Main CLI\n\n**cypress** — The `cypress` npm package. Provides the `cypress` binary, programmatic Node.js API, TypeScript type definitions, and re-exports the built CT adapter artifacts.\n\n### Component-Testing Adapters\n\n**@cypress/angular** — Mount adapter for Angular 21+ components.\n\n**@cypress/mount-utils** — Internal shared utilities and types that all CT mount adapters depend on. Not intended for direct use by end users.\n\n**@cypress/react** — Mount adapter for React 18+ components.\n\n**@cypress/svelte** — Mount adapter for Svelte 5+ components.\n\n**@cypress/vue** — Mount adapter for Vue 3 components.\n\n## Workspace Commands\n\n```bash\n# Build the main cypress CLI package\ncd cli && yarn build-cli\n\n# Build only (no pre/post steps)\ncd cli && yarn build\n\n# Run a specific unit test file\ncd cli && yarn test-unit -- <path-to-spec>\n\n# Run unit tests matching a glob pattern\ncd cli && yarn test-unit -- \"<glob-pattern>\"\n\n# Type-check types/\ncd cli && yarn types\n\n# Build a CT adapter (example: react)\ncd cli/react && yarn build\n\n# Build mount-utils (tsc-based, not rollup)\ncd cli/mount-utils && yarn build\n```\n\n## Unit Tests\n\nThe `unit-tests` CI job runs only on `linux-x64` and `windows` — there is no arm64 executor — so **a spec coupled to the host machine passes CI and still fails for contributors**, most often on Apple Silicon. Keep specs host-independent.\n\n- **Pin the architecture at both layers.** `util.getRealArch()` consults `os.arch()` only for its early returns; otherwise it falls through to the `arch` package, which reports the real machine. A spec asserting on output that carries an arch — `Platform:` lines, download URLs, `?arch=` query params, CDN build URLs — needs a file-scoped `vi.mock('arch', () => ({ default: () => 'x64' }))` alongside `vi.mocked(os.arch).mockReturnValue('x64')`. Mock it per file rather than globally through `setupFiles`: some specs exercise real-machine detection deliberately, and a shared mock hides the dependency from the file that relies on it.\n- **Keep test helpers generic.** Normalizers that scrub output before snapshotting must match the shape of a host value, not the value itself — `&arch=[\\w-]+`, never `&arch=x64` — so the helper cannot re-couple a snapshot to the host.\n- **Never run `vitest -u` to clear a host-dependent failure.** Committed snapshots encode the canonical values; regenerating them on a different machine buries the coupling and breaks everyone else. Fix the mock instead.\n- **Treat other host facts the same way** — `os.platform()`, `os.release()`, `os.tmpdir()`, `os.homedir()`, cache directories, path separators. Assert against mocked values, never whatever the machine reports.\n\nVerify an arch or platform mock is load-bearing rather than decorative: flip its factory to the other value, run that spec, and confirm the expected tests fail. A mock wired to nothing is worse than no mock, because it reads as coverage.\n\n`util._cachedArch` is a module-level singleton. A file-scoped `vi.mock('arch')` is in place before the first call, so the cached value is already the mocked one; reset it (`util._cachedArch = undefined`) only in specs that vary the arch between tests.\n\n## Notes\n\n- The main CLI build uses Rollup (configured in `rollup.config.mjs`). Entry points are `lib/index.ts`, `lib/cli.ts`, `lib/cypress.ts`, `lib/exec/xvfb.ts`, `lib/exec/spawn.ts`, and `lib/bin/cypress.ts`. Output goes to `dist/` and is copied to `build/` via `sync-build-dist.ts`.\n- The `cli/react`, `cli/vue`, `cli/angular`, `cli/svelte`, and `cli/mount-utils` directories are build output, not sources — each adapter's `postbuild` writes them, and the adapter sources live in `npm/`. See [`npm/AGENTS.md`](../npm/AGENTS.md) for the mechanism.\n- Unit tests for the CLI itself live in `cli/test/` and run under Vitest (`test/**/*.spec.ts`).\n- TypeScript type definitions for the public Cypress API live in `cli/types/`. The `dtslint` tool is used to validate them, configured by `cli/types/tslint.json`. That file must stay plain JSON, so the reasons behind its settings are recorded here:\n  - `no-single-declare-module` is off because the Cypress npm module API is kept in its own file on purpose.\n  - `no-unnecessary-qualifier` is off because it flags qualifiers the types need.\n  - `linterOptions.exclude` lists the bundled third-party typings (lodash, chai, sinon and so on), which don't follow our rules. It also lists `net-stubbing.d.ts`, which is copied in from `@packages/network-interception` and renamed, so it was never written as a declaration file.\n- The `CYPRESS_INSTALL_BINARY` environment variable can be set to a path or URL to override the binary downloaded during `postinstall`.\n- The `cypress` package sets `\"private\": true` in its monorepo `package.json` — publishing is handled by CI scripts that prepare a separate `package.json`.\n","cli/CLAUDE.md":"# CLI\n\n@AGENTS.md\n",".circleci/CLAUDE.md":"# CircleCI Configuration\n\n@AGENTS.md\n","npm/AGENTS.md":"# npm Workspace\n\n## Purpose\n\nThe `npm/` directory contains the publicly published npm packages for the Cypress ecosystem, including component testing adapters for each supported UI framework, bundler integrations that power the component testing dev server, and plugins and dev tooling used by Cypress consumers and the Cypress team. These packages are versioned and released independently from the main `cypress` binary; they are released automatically via semantic-versioning commit prefixes (`feat`, `fix`, `chore`, etc.) when changes land on `develop`.\n\n## Package Map\n\n### Component Testing Adapters\n\n- **@cypress/react** — Mount React components (React 18+) in the Cypress test runner\n- **@cypress/vue** — Mount Vue 3 components in the Cypress test runner\n- **@cypress/angular** — Mount Angular components (Angular 21+) in the Cypress test runner\n- **@cypress/svelte** — Mount Svelte 5+ components in the Cypress test runner\n- **@cypress/mount-utils** — Shared utility types and helper functions consumed by all component testing adapters; not intended for direct use by end users\n\n### Bundler Integrations\n\n- **@cypress/webpack-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Webpack Dev Server\n- **@cypress/vite-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Vite (peer dependency `vite@^8`)\n- **@cypress/webpack-preprocessor** — Cypress file preprocessor for bundling test files via Webpack 5; requires peer deps (`@babel/core`, `babel-loader`, etc.) to be installed by the consumer\n- **@cypress/webpack-batteries-included-preprocessor** — Wrapper around `@cypress/webpack-preprocessor` that bundles Babel and TypeScript loaders so consumers do not need to configure them separately\n- **@cypress/vite-plugin-cypress-esm** — Vite plugin (alpha) that wraps ES modules in a `Proxy` to allow mutation/mocking of ESM namespaces in component tests\n\n### Plugins & Dev Tooling\n\n- **@cypress/grep** — Plugin for filtering Cypress tests by substring or tags at runtime, with options for spec pre-filtering and test burning\n- **@cypress/puppeteer** — Plugin (beta) that runs Puppeteer message handlers registered in `setupNodeEvents` when a spec calls `cy.puppeteer(name, ...args)`; each handler receives a Puppeteer `Browser` connected to the Cypress-launched Chromium browser\n- **@cypress/schematic** — Official Angular CLI schematic and builder for scaffolding Cypress configuration into Angular projects (`ng add @cypress/schematic`)\n- **@cypress/eslint-plugin-dev** — Private, unpublished. The eslintrc presets the monorepo packages still on ESLint 8 lint against; being retired in favour of `@packages/eslint-config`\n\n## Workspace Commands\n\nEach package manages its own build, and script names are not uniform — check the package's `package.json` before running anything. From within a package directory:\n\n```sh\nyarn build          # compile TypeScript / run rollup (varies by package)\nyarn check-ts       # type-check without emitting (not every package has it, e.g. grep, schematic)\nyarn lint           # run ESLint\nyarn test -- <path-to-spec>          # vitest packages: target a specific file\nyarn test -- \"<glob-pattern>\"        # vitest packages: target specs matching a glob\n```\n\nWhat `yarn test` runs depends on the package:\n\n- **vitest** — `grep`, `puppeteer`, `schematic`, `vite-dev-server`, `webpack-dev-server`, `webpack-batteries-included-preprocessor`, `eslint-plugin-dev`\n- **Cypress** — `react` and `vue` (`yarn cy:run -- --spec <path-to-spec>`), `vite-plugin-cypress-esm` (`yarn cypress:run`)\n- **Custom script** — `webpack-preprocessor` runs `tsx ./scripts/test-webpack-5.ts` (it also has `test-unit` and `test-e2e`)\n- **No `test` script** — `angular`, `svelte`, `mount-utils`\n\nPackages with their own Cypress e2e suite use `cypress:open` / `cypress:run` (`grep`, `puppeteer`, `vite-dev-server`, `webpack-dev-server`, `vite-plugin-cypress-esm`); only `react` and `vue` use `cy:open` / `cy:run`.\n\nFrom the monorepo root:\n\n```sh\nyarn workspace @cypress/<pkg> build              # build a single package\nyarn lerna run build --scope '@cypress/*'        # build all npm packages\n```\n\n## Notes\n\n- **Re-export into `cli/`** (canonical description; other files point here). `react`, `vue`, `angular`, `svelte`, and `mount-utils` each run `postbuild` → [`scripts/sync-exported-npm-with-cli.js`](../scripts/sync-exported-npm-with-cli.js). It resolves the file list with `npm-packlist` — the files npm *would publish*, per the package's `files` key, which is a wider set than `dist/` — wipes `cli/<name>/`, copies them in, and then rewrites the `exports` map in `cli/package.json`. That is what makes `import ... from 'cypress/react'` resolve. Build the package before testing it in the binary; nothing else refreshes the `cli/` copy.\n- **Adapter builds can run before the `cypress` typedefs exist.** Packages with `\"types\": [\"cypress\"]` resolve it to `cli/types`, whose third-party folders (`jquery`, `mocha`, `chai`, etc., listed in `cli/.gitignore`) are generated by the cli build. CI's `lerna run build` compiles `@cypress/react` before that, so names like `JQuery` are undefined there but resolve in a local checkout that has built the cli once. A `@ts-expect-error` on such a line fails in one setup or the other, and so does deleting the directive. Reproduce CI by moving those generated folders out of `cli/types` before running the package build.\n- `@cypress/webpack-dev-server` and `@cypress/vite-dev-server` are bundled with the Cypress binary and generally do not need to be installed separately by end users; the object-syntax `devServer` config in `cypress.config.ts` is the primary API.\n- `@cypress/webpack-batteries-included-preprocessor` requires `@cypress/webpack-preprocessor` as a peer dependency and must be installed alongside it.\n- `@cypress/eslint-plugin-dev` is private and no longer published — it is for internal Cypress development only, and the packages that consume it are migrating to `@packages/eslint-config`. Do not recommend it to end users; the user-facing ESLint plugin lives at `eslint-plugin-cypress` (a separate repository).\n- `npm/xpath/` holds only a README: `@cypress/xpath` is deprecated and no longer maintained, and there is no source or `package.json` here.\n- Releases are triggered automatically by semantic commit messages on `develop`; there is no manual publish step for individual packages.\n","npm/CLAUDE.md":"# npm\n\n@AGENTS.md\n","packages/AGENTS.md":"# Packages Workspace\n\n## Purpose\n\nThe `packages/` workspace contains all first-party Cypress packages that make up the Cypress monorepo. These packages are the implementation of the Cypress test runner, its tooling, and supporting infrastructure. Each package is a standalone npm package (scoped under `@packages/`) consumed by the Cypress binary build, by each other, and in some cases by the public.\n\n## Package Map\n\n### App & Frontend\n\n- **@packages/app** — The main Vue 3 front-end application for the Cypress browser-side UI (specs list, Test Replay, runner toolbar, Studio).\n- **@packages/launchpad** — Vue 3 Electron-rendered application shown when running `cypress open`; handles login, project selection, and configuration setup.\n- **@packages/frontend-shared** — Shared Vue 3 components, TailwindCSS config, composables, and i18n strings consumed by both `app` and `launchpad`.\n- **@packages/reporter** — The test result reporter UI (command log, test tree) rendered inside the runner iframe.\n- **@packages/runner** — Legacy webpack bundler for `driver` and `reporter`; being phased out in favour of `app`.\n\n### Test Runner & Driver\n\n- **@packages/driver** — Core JavaScript library loaded inside the browser; executes Cypress commands and manages the test runtime.\n- **@packages/extension** — Chrome/Firefox WebExtension that enables browser automation (v2 Manifest V2, v3 Manifest V3).\n\n### Server & Network\n\n- **@packages/server** — Node.js heart of Cypress: HTTP server, proxy orchestration, file watching, plugin execution, and IPC with the browser.\n- **@packages/proxy** — HTTP interception proxy layer; applies middleware to requests and responses to enable stubbing, rewriting, and header injection.\n- **@packages/net-stubbing** — Server-side implementation of `cy.intercept()`; route matching, request/response lifecycle, and driver event bridge.\n- **@packages/network** — Node.js networking utilities: HTTP/HTTPS proxy-aware agents, CA certificate management, and connection helpers.\n- **@packages/network-tools** — Isomorphic (browser + Node.js) low-level networking utilities: CORS helpers, URI parsing, domain utilities.\n- **@packages/https-proxy** — Intercepts TLS connections by acting as a dynamic CA; generates per-hostname certificates on the fly using `node-forge`.\n\n### Configuration & Data\n\n- **@packages/config** — Canonical Cypress configuration schema, option definitions, validation logic, and AST-based `cypress.config` file transforms.\n- **@packages/data-context** — Centralized GraphQL data layer (Nexus schema) for the Cypress app; manages project state, Cloud queries, file watching, and actions.\n- **@packages/scaffold-config** — Detects frameworks/bundlers in a user's project and scaffolds `cypress.config.js` and supporting files during onboarding.\n\n### Desktop & Electron\n\n- **@packages/electron** — Installs, packages, and manages the Electron binary that wraps Cypress; provides the `cypress-electron` CLI entrypoint.\n- **@packages/launcher** — Detects installed browsers on macOS, Linux, and Windows and launches them with the correct flags and profile paths.\n\n### Types, Errors & Utilities\n\n- **@packages/types** — Shared TypeScript type definitions used across the entire monorepo.\n- **@packages/errors** — Centralised error definitions, formatting utilities, and `errTemplate` tagged-template system for all Cypress error messages.\n- **@packages/socket** — Thin shared wrapper around `socket.io` client and server instances used for browser–server IPC.\n- **@packages/telemetry** — OpenTelemetry convenience wrapper for capturing performance spans and usage signals inside Cypress processes.\n- **@packages/icons** — Cypress icon assets (SVG, PNG, ICO) and build scripts that produce browser-consumable image files.\n- **@packages/stderr-filtering** — Utility for tagging and filtering noisy third-party stderr output into `debug` streams.\n- **@packages/agent-info** — Detects whether an AI coding agent invoked the current process, and which one, by fingerprinting environment variables.\n\n### Build & Snapshot Infrastructure\n\n- **@packages/v8-snapshot-require** — Loads V8 heap snapshots created by `@tooling/v8-snapshot` to accelerate Electron startup time.\n- **@packages/packherd-require** — Module loader for bundles produced by `@tooling/packherd`; also provides on-demand TypeScript transpilation with source-map support.\n- **@packages/web-config** — Shared webpack/Vite configuration helpers for browser bundles inside the monorepo.\n- **@packages/ts** — Standardises `ts-node` version and base `tsconfig` options for development-time TypeScript require hooks.\n- **@packages/eslint-config** — Monorepo-wide ESLint flat-config with rules for TypeScript, Vue, React, Cypress tests, and imports.\n- **@packages/resolve-dist** — Centralizes path resolution for compiled/static assets referenced from server-side code.\n- **@packages/root** — Bundles the monorepo root `package.json` as an installable package so any package can reference root metadata without absolute paths.\n- **@packages/runner** — (see App & Frontend above)\n\n## Workspace Commands\n\n```bash\n# Run tests targeting a specific file (vitest packages)\nyarn workspace @packages/<name> test -- <path-to-spec>\n\n# Run tests targeting a specific file glob (vitest packages)\nyarn workspace @packages/<name> test -- \"<glob-pattern>\"\n\n# Build a specific package\nyarn workspace @packages/<name> build\n\n# Run lint for a specific package\nyarn workspace @packages/<name> lint\n\n# Type-check a specific package\nyarn workspace @packages/<name> check-ts\n\n# Run all package builds (from repo root)\nyarn build\n```\n\n## Notes\n\n- Most packages publish both CJS (`cjs/`) and ESM (`esm/`) builds; the `main` field points to CJS and `module` to ESM.\n- Do not build `.js` files by hand. Whether a package needs a pre-build is decided by where its `main` points. A handful still point at tracked source and resolve TypeScript at require time — `proxy` and `data-context` through an `@packages/ts/register` shim, `server` through `tsx`, `net-stubbing` straight at `lib/server` — and those need no build. That is the legacy pattern and is being retired: most Node-side packages now point `main` at build output under `cjs/`, `esm/`, or `dist/`, and a package cannot run its tests until every first-party dependency resolved that way has been built. Check the dependency's own `main` rather than assuming either way.\n- A missing dependency build surfaces as `Failed to resolve entry for package \"@packages/x\"` from `vite:import-analysis`, which reads like a malformed `package.json` rather than a missing build. Each run only names the next one, so a fresh worktree can need several builds in turn — see [`network/AGENTS.md`](./network/AGENTS.md) for a worked example. A full root `yarn` runs a lerna build and covers this; `yarn clean` or an interrupted install is what leaves you short.\n- The browser bundles (`driver`, `runner`, `app`, `launchpad`, `frontend-shared`, `reporter`) always need building, by `yarn watch` from the repo root.\n- Many packages use `vitest` for unit tests; the front-end packages (`app`, `launchpad`, `frontend-shared`) use Cypress component tests and E2E tests (cypress-in-cypress pattern).\n- The `nohoist` workspace option prevents specific dependencies from being hoisted to the monorepo root. It is set in `driver` (which nohoists everything, `[\"*\"]`), `frontend-shared`, `proxy`, `server`, `socket`, and `types` — check the package's own `package.json` `workspaces.nohoist` rather than assuming.\n- Packages that depend on generated GraphQL types (from `data-context`) must run `yarn build:graphql` before type-checking will pass.\n- **When adding or removing a package under `packages/`**, regenerate the path map with `yarn gulp makePathMap` (from the repo root). This rewrites the auto-generated [`scripts/gulp/monorepoPaths.ts`](../scripts/gulp/monorepoPaths.ts), produced by [`scripts/gulp/utils/makePathMap.ts`](../scripts/gulp/utils/makePathMap.ts) from an enumeration of `packages/*` — do not hand-edit it. `yarn dev` regenerates it too, but run the task explicitly so the change is committed alongside the package addition.\n","packages/CLAUDE.md":"# packages - Claude Agent Guidelines & System Prompt\n\nPath: `packages/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/CLAUDE.md)","scripts/AGENTS.md":"# scripts - AI Agent Protocol & Instructions\n\nPath: `scripts/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/AGENTS.md)","scripts/CLAUDE.md":"# scripts - Claude Agent Guidelines & System Prompt\n\nPath: `scripts/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/CLAUDE.md)","system-tests/AGENTS.md":"# system-tests - AI Agent Protocol & Instructions\n\nPath: `system-tests/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/AGENTS.md)","system-tests/CLAUDE.md":"# system-tests - Claude Agent Guidelines & System Prompt\n\nPath: `system-tests/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/CLAUDE.md)","tooling/AGENTS.md":"# tooling - AI Agent Protocol & Instructions\n\nPath: `tooling/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/AGENTS.md)","tooling/CLAUDE.md":"# tooling - Claude Agent Guidelines & System Prompt\n\nPath: `tooling/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/CLAUDE.md)",".claude/rules/generated-files.md":"# Rules Skill\n\nPath: `.claude/rules/generated-files.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/generated-files.md)",".claude/rules/runtime-floor-browser.md":"# Rules Skill\n\nPath: `.claude/rules/runtime-floor-browser.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-browser.md)",".claude/rules/runtime-floor-user-node.md":"# Rules Skill\n\nPath: `.claude/rules/runtime-floor-user-node.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-user-node.md)",".claude/rules/snapshots.md":"# Rules Skill\n\nPath: `.claude/rules/snapshots.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/snapshots.md)",".claude/rules/test-runner.md":"# Rules Skill\n\nPath: `.claude/rules/test-runner.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/test-runner.md)","packages/agent-info/AGENTS.md":"# Agent-info Skill\n\nPath: `packages/agent-info/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/AGENTS.md)","packages/agent-info/CLAUDE.md":"# Agent-info Skill\n\nPath: `packages/agent-info/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/CLAUDE.md)","packages/agent-info/README.md":"# agent-info Documentation\n\nPath: `packages/agent-info/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/README.md)","packages/agent-info/package.json":"# Agent-info Skill\n\nPath: `packages/agent-info/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/package.json)","packages/agent-info/tsconfig.json":"# Agent-info Skill\n\nPath: `packages/agent-info/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/tsconfig.json)","packages/app/.eslintrc.json":"# App Skill\n\nPath: `packages/app/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/.eslintrc.json)","packages/app/AGENTS.md":"# App Skill\n\nPath: `packages/app/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/AGENTS.md)","packages/app/CLAUDE.md":"# App Skill\n\nPath: `packages/app/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/CLAUDE.md)","packages/app/README.md":"# app Documentation\n\nPath: `packages/app/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/README.md)","packages/app/package.json":"# App Skill\n\nPath: `packages/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/package.json)","packages/app/tsconfig.json":"# App Skill\n\nPath: `packages/app/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/tsconfig.json)","packages/config/AGENTS.md":"# Config Skill\n\nPath: `packages/config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/AGENTS.md)","packages/config/CLAUDE.md":"# Config Skill\n\nPath: `packages/config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/CLAUDE.md)","packages/config/README.md":"# config Documentation\n\nPath: `packages/config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/README.md)","packages/config/package.json":"# Config Skill\n\nPath: `packages/config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/package.json)","packages/config/tsconfig.cjs.json":"# Config Skill\n\nPath: `packages/config/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.cjs.json)","packages/config/tsconfig.esm.json":"# Config Skill\n\nPath: `packages/config/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.esm.json)","packages/config/tsconfig.json":"# Config Skill\n\nPath: `packages/config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.json)","packages/cypress-sessions/AGENTS.md":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/AGENTS.md)","packages/cypress-sessions/CLAUDE.md":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/CLAUDE.md)","packages/cypress-sessions/package.json":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/package.json)","packages/cypress-sessions/tsconfig.json":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/tsconfig.json)","packages/data-context/AGENTS.md":"# Data-context Skill\n\nPath: `packages/data-context/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/AGENTS.md)","packages/data-context/CLAUDE.md":"# Data-context Skill\n\nPath: `packages/data-context/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/CLAUDE.md)","packages/data-context/README.md":"# data-context Documentation\n\nPath: `packages/data-context/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/README.md)","packages/data-context/package.json":"# Data-context Skill\n\nPath: `packages/data-context/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/package.json)","packages/data-context/tsconfig.json":"# Data-context Skill\n\nPath: `packages/data-context/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.json)","packages/data-context/tsconfig.test.json":"# Data-context Skill\n\nPath: `packages/data-context/tsconfig.test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.test.json)","packages/driver/AGENTS.md":"# Driver Skill\n\nPath: `packages/driver/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/AGENTS.md)","packages/driver/CLAUDE.md":"# Driver Skill\n\nPath: `packages/driver/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/CLAUDE.md)","packages/driver/README.md":"# driver Documentation\n\nPath: `packages/driver/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/README.md)","packages/driver/cross-origin-testing.md":"# Driver Skill\n\nPath: `packages/driver/cross-origin-testing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cross-origin-testing.md)","packages/driver/package.json":"# Driver Skill\n\nPath: `packages/driver/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/package.json)","packages/driver/tsconfig.json":"# Driver Skill\n\nPath: `packages/driver/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/tsconfig.json)","packages/electron/AGENTS.md":"# Electron Skill\n\nPath: `packages/electron/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/AGENTS.md)","packages/electron/CLAUDE.md":"# Electron Skill\n\nPath: `packages/electron/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/CLAUDE.md)","packages/electron/README.md":"# electron Documentation\n\nPath: `packages/electron/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/README.md)","packages/electron/package.json":"# Electron Skill\n\nPath: `packages/electron/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/package.json)","packages/electron/tsconfig.base.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.base.json)","packages/electron/tsconfig.cjs.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.cjs.json)","packages/electron/tsconfig.esm.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.esm.json)","packages/electron/tsconfig.json":"# Electron Skill\n\nPath: `packages/electron/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.json)","packages/errors/AGENTS.md":"# Errors Skill\n\nPath: `packages/errors/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/AGENTS.md)","packages/errors/CLAUDE.md":"# Errors Skill\n\nPath: `packages/errors/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/CLAUDE.md)","packages/errors/README.md":"# errors Documentation\n\nPath: `packages/errors/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/README.md)","packages/errors/package.json":"# Errors Skill\n\nPath: `packages/errors/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/package.json)","packages/errors/tsconfig.cjs.json":"# Errors Skill\n\nPath: `packages/errors/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.cjs.json)","packages/errors/tsconfig.esm.json":"# Errors Skill\n\nPath: `packages/errors/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.esm.json)","packages/errors/tsconfig.json":"# Errors Skill\n\nPath: `packages/errors/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.json)","packages/eslint-config/AGENTS.md":"# Eslint-config Skill\n\nPath: `packages/eslint-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/AGENTS.md)","packages/eslint-config/CLAUDE.md":"# Eslint-config Skill\n\nPath: `packages/eslint-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/CLAUDE.md)","packages/eslint-config/README.md":"# eslint-config Documentation\n\nPath: `packages/eslint-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/README.md)","packages/eslint-config/package.json":"# Eslint-config Skill\n\nPath: `packages/eslint-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/package.json)","packages/eslint-config/tsconfig.json":"# Eslint-config Skill\n\nPath: `packages/eslint-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/tsconfig.json)","packages/example/AGENTS.md":"# Example Skill\n\nPath: `packages/example/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/AGENTS.md)","packages/example/CLAUDE.md":"# Example Skill\n\nPath: `packages/example/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/CLAUDE.md)","packages/example/README.md":"# example Documentation\n\nPath: `packages/example/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/README.md)","packages/example/package.json":"# Example Skill\n\nPath: `packages/example/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/package.json)","packages/example/tsconfig.json":"# Example Skill\n\nPath: `packages/example/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.json)","packages/example/tsconfig.prod.json":"# Example Skill\n\nPath: `packages/example/tsconfig.prod.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.prod.json)","packages/extension/AGENTS.md":"# Extension Skill\n\nPath: `packages/extension/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/AGENTS.md)","packages/extension/CLAUDE.md":"# Extension Skill\n\nPath: `packages/extension/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/CLAUDE.md)","packages/extension/README.md":"# extension Documentation\n\nPath: `packages/extension/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/README.md)","packages/extension/package.json":"# Extension Skill\n\nPath: `packages/extension/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/package.json)","packages/extension/tsconfig.app.v2.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.app.v2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v2.json)","packages/extension/tsconfig.app.v3.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.app.v3.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v3.json)","packages/extension/tsconfig.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.json)","packages/extension/tsconfig.lib.json":"# Extension Skill\n\nPath: `packages/extension/tsconfig.lib.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.lib.json)","packages/frontend-shared/.eslintrc.json":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/.eslintrc.json)","packages/frontend-shared/AGENTS.md":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/AGENTS.md)","packages/frontend-shared/CLAUDE.md":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/CLAUDE.md)","packages/frontend-shared/README.md":"# frontend-shared Documentation\n\nPath: `packages/frontend-shared/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/README.md)","packages/frontend-shared/package.json":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/package.json)","packages/frontend-shared/tsconfig.json":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/tsconfig.json)","packages/https-proxy/AGENTS.md":"# Https-proxy Skill\n\nPath: `packages/https-proxy/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/AGENTS.md)","packages/https-proxy/CLAUDE.md":"# Https-proxy Skill\n\nPath: `packages/https-proxy/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/CLAUDE.md)","packages/https-proxy/README.md":"# https-proxy Documentation\n\nPath: `packages/https-proxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/README.md)","packages/https-proxy/package.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/package.json)","packages/https-proxy/tsconfig.cjs.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.cjs.json)","packages/https-proxy/tsconfig.esm.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.esm.json)","packages/https-proxy/tsconfig.json":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.json)","packages/icons/AGENTS.md":"# Icons Skill\n\nPath: `packages/icons/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/AGENTS.md)","packages/icons/CLAUDE.md":"# Icons Skill\n\nPath: `packages/icons/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/CLAUDE.md)","packages/icons/package.json":"# Icons Skill\n\nPath: `packages/icons/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/package.json)","packages/icons/readme.md":"# icons Documentation\n\nPath: `packages/icons/readme.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/readme.md)","packages/icons/tsconfig.cjs.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.cjs.json)","packages/icons/tsconfig.esm.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.esm.json)","packages/icons/tsconfig.json":"# Icons Skill\n\nPath: `packages/icons/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.json)","packages/launcher/AGENTS.md":"# Launcher Skill\n\nPath: `packages/launcher/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/AGENTS.md)","packages/launcher/CLAUDE.md":"# Launcher Skill\n\nPath: `packages/launcher/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/CLAUDE.md)","packages/launcher/README.md":"# launcher Documentation\n\nPath: `packages/launcher/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/README.md)","packages/launcher/package.json":"# Launcher Skill\n\nPath: `packages/launcher/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/package.json)","packages/launcher/tsconfig.json":"# Launcher Skill\n\nPath: `packages/launcher/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/tsconfig.json)","packages/launchpad/.eslintrc.json":"# Launchpad Skill\n\nPath: `packages/launchpad/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/.eslintrc.json)","packages/launchpad/AGENTS.md":"# Launchpad Skill\n\nPath: `packages/launchpad/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/AGENTS.md)","packages/launchpad/CLAUDE.md":"# Launchpad Skill\n\nPath: `packages/launchpad/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/CLAUDE.md)","packages/launchpad/README.md":"# launchpad Documentation\n\nPath: `packages/launchpad/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/README.md)","packages/launchpad/package.json":"# Launchpad Skill\n\nPath: `packages/launchpad/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/package.json)","packages/launchpad/tsconfig.json":"# Launchpad Skill\n\nPath: `packages/launchpad/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/tsconfig.json)","packages/net-stubbing/AGENTS.md":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/AGENTS.md)","packages/net-stubbing/CLAUDE.md":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/CLAUDE.md)","packages/net-stubbing/README.md":"# net-stubbing Documentation\n\nPath: `packages/net-stubbing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/README.md)","packages/net-stubbing/package.json":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/package.json)","packages/net-stubbing/tsconfig.json":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/tsconfig.json)","packages/network-interception/README.md":"# network-interception Documentation\n\nPath: `packages/network-interception/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/README.md)","packages/network-interception/package.json":"# Network-interception Skill\n\nPath: `packages/network-interception/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/package.json)","packages/network-interception/tsconfig.cjs.json":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.cjs.json)","packages/network-interception/tsconfig.esm.json":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.esm.json)","packages/network-interception/tsconfig.json":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.json)","packages/network-tools/AGENTS.md":"# Network-tools Skill\n\nPath: `packages/network-tools/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/AGENTS.md)","packages/network-tools/CLAUDE.md":"# Network-tools Skill\n\nPath: `packages/network-tools/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/CLAUDE.md)","packages/network-tools/README.md":"# network-tools Documentation\n\nPath: `packages/network-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/README.md)","packages/network-tools/package.json":"# Network-tools Skill\n\nPath: `packages/network-tools/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/package.json)","packages/network-tools/tsconfig.check.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.check.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.check.json)","packages/network-tools/tsconfig.cjs.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.cjs.json)","packages/network-tools/tsconfig.esm.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.esm.json)","packages/network-tools/tsconfig.json":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.json)","packages/network/AGENTS.md":"# Network Skill\n\nPath: `packages/network/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/AGENTS.md)","packages/network/CLAUDE.md":"# Network Skill\n\nPath: `packages/network/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/CLAUDE.md)","packages/network/README.md":"# network Documentation\n\nPath: `packages/network/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/README.md)","packages/network/package.json":"# Network Skill\n\nPath: `packages/network/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/package.json)","packages/network/tsconfig.cjs.json":"# Network Skill\n\nPath: `packages/network/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.cjs.json)","packages/network/tsconfig.esm.json":"# Network Skill\n\nPath: `packages/network/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.esm.json)","packages/network/tsconfig.json":"# Network Skill\n\nPath: `packages/network/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.json)","packages/packherd-require/AGENTS.md":"# Packherd-require Skill\n\nPath: `packages/packherd-require/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/AGENTS.md)","packages/packherd-require/CLAUDE.md":"# Packherd-require Skill\n\nPath: `packages/packherd-require/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/CLAUDE.md)","packages/packherd-require/README.md":"# packherd-require Documentation\n\nPath: `packages/packherd-require/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/README.md)","packages/packherd-require/package.json":"# Packherd-require Skill\n\nPath: `packages/packherd-require/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/package.json)","packages/packherd-require/tsconfig.json":"# Packherd-require Skill\n\nPath: `packages/packherd-require/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/tsconfig.json)","packages/proxy/AGENTS.md":"# Proxy Skill\n\nPath: `packages/proxy/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/AGENTS.md)","packages/proxy/CLAUDE.md":"# Proxy Skill\n\nPath: `packages/proxy/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/CLAUDE.md)","packages/proxy/README.md":"# proxy Documentation\n\nPath: `packages/proxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/README.md)","packages/proxy/package.json":"# Proxy Skill\n\nPath: `packages/proxy/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/package.json)","packages/proxy/tsconfig.json":"# Proxy Skill\n\nPath: `packages/proxy/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/tsconfig.json)","packages/reporter/.eslintrc.json":"# Reporter Skill\n\nPath: `packages/reporter/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/.eslintrc.json)","packages/reporter/AGENTS.md":"# Reporter Skill\n\nPath: `packages/reporter/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/AGENTS.md)","packages/reporter/CLAUDE.md":"# Reporter Skill\n\nPath: `packages/reporter/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/CLAUDE.md)","packages/reporter/README.md":"# reporter Documentation\n\nPath: `packages/reporter/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/README.md)","packages/reporter/package.json":"# Reporter Skill\n\nPath: `packages/reporter/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/package.json)","packages/reporter/tsconfig.json":"# Reporter Skill\n\nPath: `packages/reporter/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/tsconfig.json)","packages/resolve-dist/AGENTS.md":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/AGENTS.md)","packages/resolve-dist/CLAUDE.md":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/CLAUDE.md)","packages/resolve-dist/README.md":"# resolve-dist Documentation\n\nPath: `packages/resolve-dist/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/README.md)","packages/resolve-dist/package.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/package.json)","packages/resolve-dist/tsconfig.cjs.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.cjs.json)","packages/resolve-dist/tsconfig.esm.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.esm.json)","packages/resolve-dist/tsconfig.json":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.json)","packages/root/AGENTS.md":"# Root Skill\n\nPath: `packages/root/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/AGENTS.md)","packages/root/CLAUDE.md":"# Root Skill\n\nPath: `packages/root/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/CLAUDE.md)","packages/root/README.md":"# root Documentation\n\nPath: `packages/root/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/README.md)","packages/root/package.json":"# Root Skill\n\nPath: `packages/root/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/package.json)","packages/root/tsconfig.json":"# Root Skill\n\nPath: `packages/root/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/tsconfig.json)","packages/runner/AGENTS.md":"# Runner Skill\n\nPath: `packages/runner/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/AGENTS.md)","packages/runner/CLAUDE.md":"# Runner Skill\n\nPath: `packages/runner/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/CLAUDE.md)","packages/runner/README.md":"# runner Documentation\n\nPath: `packages/runner/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/README.md)","packages/runner/package.json":"# Runner Skill\n\nPath: `packages/runner/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/package.json)","packages/runner/tsconfig.json":"# Runner Skill\n\nPath: `packages/runner/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/tsconfig.json)","packages/scaffold-config/AGENTS.md":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/AGENTS.md)","packages/scaffold-config/CLAUDE.md":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/CLAUDE.md)","packages/scaffold-config/README.md":"# scaffold-config Documentation\n\nPath: `packages/scaffold-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/README.md)","packages/scaffold-config/package.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/package.json)","packages/scaffold-config/tsconfig.browser.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.browser.json)","packages/scaffold-config/tsconfig.cjs.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.cjs.json)","packages/scaffold-config/tsconfig.esm.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.esm.json)","packages/scaffold-config/tsconfig.json":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.json)","packages/server/AGENTS.md":"# Server Skill\n\nPath: `packages/server/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/AGENTS.md)","packages/server/CLAUDE.md":"# Server Skill\n\nPath: `packages/server/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/CLAUDE.md)","packages/server/README.md":"# server Documentation\n\nPath: `packages/server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/README.md)","packages/server/package.json":"# Server Skill\n\nPath: `packages/server/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/package.json)","packages/server/tsconfig.json":"# Server Skill\n\nPath: `packages/server/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/tsconfig.json)","packages/socket/AGENTS.md":"# Socket Skill\n\nPath: `packages/socket/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/AGENTS.md)","packages/socket/CLAUDE.md":"# Socket Skill\n\nPath: `packages/socket/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/CLAUDE.md)","packages/socket/README.md":"# socket Documentation\n\nPath: `packages/socket/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/README.md)","packages/socket/package.json":"# Socket Skill\n\nPath: `packages/socket/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/package.json)","packages/socket/tsconfig.browser.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.browser.json)","packages/socket/tsconfig.cjs.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.cjs.json)","packages/socket/tsconfig.esm.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.esm.json)","packages/socket/tsconfig.json":"# Socket Skill\n\nPath: `packages/socket/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.json)","packages/stderr-filtering/AGENTS.md":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/AGENTS.md)","packages/stderr-filtering/CLAUDE.md":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/CLAUDE.md)","packages/stderr-filtering/README.md":"# stderr-filtering Documentation\n\nPath: `packages/stderr-filtering/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/README.md)","packages/stderr-filtering/package.json":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/package.json)","packages/stderr-filtering/tsconfig.json":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/tsconfig.json)","packages/telemetry/AGENTS.md":"# Telemetry Skill\n\nPath: `packages/telemetry/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/AGENTS.md)","packages/telemetry/CLAUDE.md":"# Telemetry Skill\n\nPath: `packages/telemetry/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/CLAUDE.md)","packages/telemetry/README.md":"# telemetry Documentation\n\nPath: `packages/telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/README.md)","packages/telemetry/package.json":"# Telemetry Skill\n\nPath: `packages/telemetry/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/package.json)","packages/telemetry/tsconfig.browser.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.browser.json)","packages/telemetry/tsconfig.cjs.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.cjs.json)","packages/telemetry/tsconfig.esm.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.esm.json)","packages/telemetry/tsconfig.json":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.json)","packages/ts/AGENTS.md":"# Ts Skill\n\nPath: `packages/ts/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/AGENTS.md)","packages/ts/CLAUDE.md":"# Ts Skill\n\nPath: `packages/ts/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/CLAUDE.md)","packages/ts/README.md":"# ts Documentation\n\nPath: `packages/ts/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/README.md)","packages/ts/package.json":"# Ts Skill\n\nPath: `packages/ts/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/package.json)","packages/ts/tsconfig.json":"# Ts Skill\n\nPath: `packages/ts/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tsconfig.json)","packages/ts/tslint.json":"# Ts Skill\n\nPath: `packages/ts/tslint.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tslint.json)","packages/types/AGENTS.md":"# Types Skill\n\nPath: `packages/types/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/AGENTS.md)","packages/types/CLAUDE.md":"# Types Skill\n\nPath: `packages/types/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/CLAUDE.md)","packages/types/package.json":"# Types Skill\n\nPath: `packages/types/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/package.json)","packages/types/tsconfig.check.json":"# Types Skill\n\nPath: `packages/types/tsconfig.check.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.check.json)","packages/types/tsconfig.cjs.json":"# Types Skill\n\nPath: `packages/types/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.cjs.json)","packages/types/tsconfig.esm.json":"# Types Skill\n\nPath: `packages/types/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.esm.json)","packages/types/tsconfig.json":"# Types Skill\n\nPath: `packages/types/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.json)","packages/v8-snapshot-require/AGENTS.md":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/AGENTS.md)","packages/v8-snapshot-require/CLAUDE.md":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/CLAUDE.md)","packages/v8-snapshot-require/README.md":"# v8-snapshot-require Documentation\n\nPath: `packages/v8-snapshot-require/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/README.md)","packages/v8-snapshot-require/package.json":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/package.json)","packages/v8-snapshot-require/tsconfig.json":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/tsconfig.json)","packages/web-config/AGENTS.md":"# Web-config Skill\n\nPath: `packages/web-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/AGENTS.md)","packages/web-config/CLAUDE.md":"# Web-config Skill\n\nPath: `packages/web-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/CLAUDE.md)","packages/web-config/README.md":"# web-config Documentation\n\nPath: `packages/web-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/README.md)","packages/web-config/package.json":"# Web-config Skill\n\nPath: `packages/web-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/package.json)","packages/web-config/tsconfig.json":"# Web-config Skill\n\nPath: `packages/web-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/tsconfig.json)","packages/data-context/graphql/README.md":"# graphql Documentation\n\nPath: `packages/data-context/graphql/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/graphql/README.md)","packages/driver/cypress/.eslintrc.json":"# Cypress Skill\n\nPath: `packages/driver/cypress/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/.eslintrc.json)","packages/driver/cypress/tsconfig.json":"# Cypress Skill\n\nPath: `packages/driver/cypress/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/tsconfig.json)","packages/electron/app/package.json":"# App Skill\n\nPath: `packages/electron/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/app/package.json)","packages/extension/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/extension/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/test/.eslintrc.json)","packages/extension/theme/manifest.json":"# Theme Skill\n\nPath: `packages/extension/theme/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/theme/manifest.json)","packages/https-proxy/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/https-proxy/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/test/.eslintrc.json)","packages/launcher/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/launcher/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/test/.eslintrc.json)","packages/net-stubbing/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/net-stubbing/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/test/.eslintrc.json)","packages/network/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/network/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/test/.eslintrc.json)","packages/reporter/cypress/.eslintrc.json":"# Cypress Skill\n\nPath: `packages/reporter/cypress/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/.eslintrc.json)","packages/runner/injection/.eslintrc.json":"# Injection Skill\n\nPath: `packages/runner/injection/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/injection/.eslintrc.json)","packages/server/config/app.json":"# Config Skill\n\nPath: `packages/server/config/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/config/app.json)","packages/server/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/server/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/.eslintrc.json)","packages/socket/test/.eslintrc.json":"# Test Skill\n\nPath: `packages/socket/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/test/.eslintrc.json)","packages/app/cypress/fixtures/FileChooser.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/FileChooser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileChooser.json)","packages/app/cypress/fixtures/FileList.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/FileList.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileList.json)","packages/app/cypress/fixtures/GeneratorSuccess.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/GeneratorSuccess.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/GeneratorSuccess.json)","packages/app/cypress/fixtures/found-specs.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/found-specs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/found-specs.json)","packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json)","packages/app/src/debug/gql-DebugRunDetailedView.json":"# Debug Skill\n\nPath: `packages/app/src/debug/gql-DebugRunDetailedView.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/debug/gql-DebugRunDetailedView.json)","packages/app/src/tap/AGENTS.md":"# Tap Skill\n\nPath: `packages/app/src/tap/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/AGENTS.md)","packages/app/src/tap/CLAUDE.md":"# Tap Skill\n\nPath: `packages/app/src/tap/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/CLAUDE.md)","packages/driver/cypress/fixtures/app.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/app.json)","packages/driver/cypress/fixtures/boolean.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/boolean.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/boolean.json)","packages/driver/cypress/fixtures/example.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/example.json)","packages/driver/cypress/fixtures/fileSpec.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/fileSpec.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/fileSpec.json)","packages/driver/cypress/fixtures/foo.bar.baz.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/foo.bar.baz.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/foo.bar.baz.json)","packages/driver/cypress/fixtures/invalid.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/invalid.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/invalid.json)","packages/driver/cypress/fixtures/null.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/null.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/null.json)","packages/driver/cypress/fixtures/number.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/number.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/number.json)","packages/driver/cypress/fixtures/valid.json":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/valid.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/valid.json)","packages/driver/cypress/fixtures/yaml.yaml":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/yaml.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/yaml.yaml)","packages/driver/src/cypress/errorScenarios.md":"# Cypress Skill\n\nPath: `packages/driver/src/cypress/errorScenarios.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/cypress/errorScenarios.md)","packages/electron/.cursor/rules/electron-upgrade.mdc":"# Cursor Rule: electron-upgrade\n\nPath: `packages/electron/.cursor/rules/electron-upgrade.mdc`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/.cursor/rules/electron-upgrade.mdc)","packages/extension/app/v2/manifest.json":"# V2 Skill\n\nPath: `packages/extension/app/v2/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v2/manifest.json)","packages/extension/app/v3/manifest.json":"# V3 Skill\n\nPath: `packages/extension/app/v3/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v3/manifest.json)","packages/frontend-shared/cypress/fixtures/TestCurrentProject.json":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/TestCurrentProject.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/TestCurrentProject.json)","packages/frontend-shared/cypress/fixtures/config.json":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/config.json)","packages/frontend-shared/cypress/fixtures/example.json":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/example.json)","packages/frontend-shared/src/locales/en-US.json":"# Locales Skill\n\nPath: `packages/frontend-shared/src/locales/en-US.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/locales/en-US.json)","packages/net-stubbing/lib/adapters/README.md":"# adapters Documentation\n\nPath: `packages/net-stubbing/lib/adapters/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/lib/adapters/README.md)","packages/reporter/cypress/fixtures/command_error.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/command_error.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/command_error.json)","packages/reporter/cypress/fixtures/runnables.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables.json)","packages/reporter/cypress/fixtures/runnables_agents.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_agents.json)","packages/reporter/cypress/fixtures/runnables_aliases.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_aliases.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_aliases.json)","packages/reporter/cypress/fixtures/runnables_commands.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_commands.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_commands.json)","packages/reporter/cypress/fixtures/runnables_error.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_error.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_error.json)","packages/reporter/cypress/fixtures/runnables_hooks.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_hooks.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_hooks.json)","packages/reporter/cypress/fixtures/runnables_memory.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_memory.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_memory.json)","packages/reporter/cypress/fixtures/runnables_routes.json":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_routes.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_routes.json)","packages/server/lib/adapters/README.md":"# adapters Documentation\n\nPath: `packages/server/lib/adapters/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/adapters/README.md)","packages/server/lib/browsers/firefox_automation.md":"# Browsers Skill\n\nPath: `packages/server/lib/browsers/firefox_automation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/browsers/firefox_automation.md)","packages/server/test/scripts/.eslintrc.json":"# Scripts Skill\n\nPath: `packages/server/test/scripts/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/scripts/.eslintrc.json)","packages/app/cypress/e2e/studio/README.md":"# studio Documentation\n\nPath: `packages/app/cypress/e2e/studio/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/studio/README.md)","packages/app/cypress/fixtures/debug-Failing/gql-Debug.json":"# Debug-Failing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Failing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Failing/gql-Debug.json)","packages/app/cypress/fixtures/debug-Passing/gql-Debug.json":"# Debug-Passing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Passing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Passing/gql-Debug.json)","packages/driver/src/util/serialization/README.md":"# serialization Documentation\n\nPath: `packages/driver/src/util/serialization/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/util/serialization/README.md)","packages/frontend-shared/src/shiki/languages/css.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/css.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/css.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/html.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/html.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/html.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/json.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/json.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/json.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json)","packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json)","packages/frontend-shared/src/shiki/themes/ReadMe.md":"# themes Documentation\n\nPath: `packages/frontend-shared/src/shiki/themes/ReadMe.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/ReadMe.md)","packages/frontend-shared/src/shiki/themes/cypress.theme.template.json":"# Themes Skill\n\nPath: `packages/frontend-shared/src/shiki/themes/cypress.theme.template.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/cypress.theme.template.json)","packages/packherd-require/test/fixtures/circular-deps/package.json":"# Circular-deps Skill\n\nPath: `packages/packherd-require/test/fixtures/circular-deps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/circular-deps/package.json)","packages/packherd-require/test/fixtures/normal-deps/package.json":"# Normal-deps Skill\n\nPath: `packages/packherd-require/test/fixtures/normal-deps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/normal-deps/package.json)","packages/proxy/lib/http/util/rewrite-constants.json":"# Util Skill\n\nPath: `packages/proxy/lib/http/util/rewrite-constants.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/lib/http/util/rewrite-constants.json)","system-tests/projects/bun-workspace/packages/app/package.json":"# App Skill\n\nPath: `system-tests/projects/bun-workspace/packages/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/app/package.json)","system-tests/projects/bun-workspace/packages/shared/package.json":"# Shared Skill\n\nPath: `system-tests/projects/bun-workspace/packages/shared/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/shared/package.json)","system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json":"# Bar Skill\n\nPath: `system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json)","system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json":"# Foo Skill\n\nPath: `system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json)","npm/vue/cypress/component/basic/plugins/README.md":"# plugins Documentation\n\nPath: `npm/vue/cypress/component/basic/plugins/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/npm/vue/cypress/component/basic/plugins/README.md)","packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json)","packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json)","packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json)","packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json)","packages/app/src/runner/screenshot/reference-screenshots/README.md":"# reference-screenshots Documentation\n\nPath: `packages/app/src/runner/screenshot/reference-screenshots/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/runner/screenshot/reference-screenshots/README.md)","packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json":"# __fixtures__ Skill\n\nPath: `packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json)","packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json":"# __fixtures__ Skill\n\nPath: `packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json)","packages/server/test/support/fixtures/ajax/app.json":"# Ajax Skill\n\nPath: `packages/server/test/support/fixtures/ajax/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/ajax/app.json)","packages/server/test/support/fixtures/server/really_big_json.json":"# Server Skill\n\nPath: `packages/server/test/support/fixtures/server/really_big_json.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/server/really_big_json.json)","packages/data-context/src/codegen/templates/test/nested/Hello.md":"# Nested Skill\n\nPath: `packages/data-context/src/codegen/templates/test/nested/Hello.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/src/codegen/templates/test/nested/Hello.md)","packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md":"# Nested Skill\n\nPath: `packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md)","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json":"# All-tracked-dependencies Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json":"# Partial-dependencies-matching Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json":"# Partial-dependencies-not-matching Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json)","packages/server/test/support/fixtures/cloud/environment/test-project/package.json":"# Test-project Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/test-project/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/test-project/package.json)","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json":"# Bar Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json)","packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json":"# Foo Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json":"# Foo Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json)","packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json":"# Bar Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json)"},"items":[{"name":"AGENTS.md","path":".circleci/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.circleci/AGENTS.md","title":".circleci - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# CircleCI Configuration\n\nAgent guidance for `.circleci/` — source configs under `src/` are packed into `packed/` at CI runtime. See [README.md](./README.md) for local CLI setup and the pre-commit `yarn pack-ci --validate` workflow.\n\n## Full CI branch allowlist\n\nMost PR branches run the **pull-request workflow** with path-based job filtering (`generate-pipeline-parameters.sh`). A small set of branch names instead run the **main workflows** (`linux-x64`, `linux-arm64`, `darwin-x64`, `darwin-arm64`, `windows`).\n\n### When to add a branch name\n\nAdd a branch when the change affects behavior that is only validated by main-branch CI — in particular:\n\n- **Windows jobs** — the `windows` workflow (`windows-v8-integration-tests`, `windows-create-build-artifacts`, etc.)\n- **V8 snapshot / packaging tooling** — `v8-integration-tests` on Linux, macOS, and Windows; snapshot cache updates in `tooling/v8-snapshot/cache/`\n- **Full binary tests** — kitchensink, staging, and npm-module verification jobs (see optional gates below). These no longer run on pull requests at all, so an allowlisted branch is the only way to exercise them before merge.\n\nIf only unit/integration tests scoped to changed packages are sufficient, do **not** add the branch — use a normal PR branch instead.\n\n### Where to add the branch name\n\n**Required:** append a **new** `- equal:` entry to the `or:` block in `&full-workflow-filters` in `.circleci/src/pipeline/workflows/@main.yml` (the `when:` at the top of `linux-x64`, reused by `windows` and other platform workflows). Do **not** rename or remove existing entries (`develop`, `update-v8-snapshot-cache-on-develop`, the `release/*` / `electron/*` patterns, or `force-persist-artifacts`):\n\n```yaml\n    or:\n      - equal: [ develop, << pipeline.git.branch >> ]\n      # ... leave existing entries unchanged ...\n      - equal: [ 'your-branch-name', << pipeline.git.branch >> ]  # add this line\n```\n\nPush your work to the branch name you add — do not repurpose an existing allowlisted branch (for example, do not change `update-v8-snapshot-cache-on-develop` to a different name).\n\nThis gate turns on the main/multi-platform workflow graph, including `windows-v8-integration-tests` and `v8-integration-tests` on Linux/macOS. The existing `update-v8-snapshot-cache-on-develop` entry is reserved for automated v8 snapshot cache PRs.\n\nThis gate does not turn on `windows`, `linux-arm64`, `darwin-x64`, or `darwin-arm64` for plain `develop` or `release/*` pushes. On those two, all four run from a scheduled pipeline instead — see \"Scheduled platform CI\" below. Any other branch you add here turns all five on per-push.\n\n**Optional — only if you need more than main workflows + path-filtered jobs:**\n\n| Location | When you also need it |\n|----------|------------------------|\n| `pull-request.yml` exclusion list | Avoid the PR workflow running in parallel with the main workflows on the same branch |\n| `notify-binary-failure`'s `filters:` in `@main.yml` | Testing binary failure alerting on a branch — it is pinned to `develop`, so it never fires elsewhere |\n| `generate-pipeline-parameters.sh` branch override | Force every path-filtered job to run even when changed files would not normally select them (or trigger manually with `run-all-jobs=true`) |\n| `&mainBuildFilters` in `@main.yml` | Binary/kitchensink/staging jobs in `linux-x64` that have an extra branch filter beyond the workflow `when:` |\n\nFor typical v8 snapshot cache work, changes under `tooling/*` already enable `run-v8-tests` via path filtering, so **`&full-workflow-filters` alone is usually enough**.\n\nAfter editing `.circleci/src/`, run `yarn pack-ci --validate` before committing.\n\n### Per-workflow gates\n\nThe `run-*` guards live in the shared job definitions in `@pipeline.yml` (via `halt-if-skipped`), not in the workflow files, so they apply to every workflow below — not just the PR one.\n\n- **`linux-x64`**: `build`, lint, and type checks always run, as do the binary/packaging chain and release gating (`create-and-trigger-packaging-artifacts`, `get-published-artifacts`, `test-binary-*`, `verify-release-readiness`, `ready-to-release`, `npm-release`). Per-package integration/unit jobs, system tests, and `v8-integration-tests` are guarded, so a webhook push to `develop` runs only the ones its changed paths select.\n- **`windows` / `linux-arm64` / `darwin-*`**: none of these three run on a plain `develop` or `release/*` push — see \"Scheduled platform CI\" below for when they do. Inside them, `v8-integration-tests`, `driver-integration-memory-tests`, and (Windows) selected integration/unit jobs are still guarded by `run-*` parameters, but a scheduled run gets all-true from `generate-pipeline-parameters.sh`'s trigger-source check, so nothing inside these workflows is actually path-filtered once one runs.\n\n`linux-x64` runs on any `&full-workflow-filters` branch directly. The other four need more than that. On `develop` and `release/*` they run only from a scheduled pipeline. On `electron/*`, `update-v8-snapshot-cache-on-develop`, or an allowlisted branch, `&full-workflow-filters` alone is enough.\n\n`npm-release` still runs only on `develop`, not on allowlisted feature branches.\n\n### Scheduled platform CI (develop and release/*)\n\nNone of the four runs on every `develop` or `release/*` push. Windows moved for credit cost. The two `darwin-*` workflows moved to free leased self-hosted macOS hardware. `linux-arm64` costs almost nothing and moved for consistency, so all platform coverage lands in one sweep. Per-merge platform signal was not actionable anyway — `develop` passed 47 of 213 runs. A release branch is long-lived enough for a scheduled sweep to cover it the same way.\n\n**What exists today**: a CircleCI Scheduled Pipeline named \"Platform Develop Branch Schedule\" (id `40ddfea0-34c3-47ab-8557-6bdb150b4d8d`) runs on `develop` once per weekday at 02:00 UTC and sets `run-platform-workflows=true`. `windows`, `linux-arm64`, `darwin-x64`, and `darwin-arm64` all read that parameter. There is still no release-branch schedule: `release/*` pushes get zero platform coverage of any kind until one exists.\n\n**Still needed**, to match the gates in `@main.yml`:\n\n- **Release schedule** — a second Scheduled Pipeline, targeting whichever `release/*` branch is currently active, setting `run-platform-workflows=true`. Repointing its branch to the new release branch is part of cutting a release; disabling it is part of shipping one. There is no default branch this can target permanently, since release branches are cut and retired.\n- **Owner**: App Foundations team\n\nThis is a CircleCI project setting, not code — it isn't visible anywhere in `.circleci/src`. Changing it requires CircleCI project-settings access (Project Settings → Triggers → Scheduled Pipelines), via the UI or `PATCH /api/v2/schedule/{id}`.\n\nFor an on-demand run of all four platform workflows outside either schedule (e.g. to validate a change before it reaches `develop`, or to recover a missed/failed release-branch build), use Trigger Pipeline with `run-platform-workflows=true`, or `force-persist-artifacts=true` — the latter works regardless of branch and needs only one flag. See the comment above the `linux-arm64` workflow in `@main.yml`.\n","isInternal":false,"tokens":1719,"sizeBytes":7269},{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# Cypress Monorepo — AGENTS.md\n\n## Overview\n\nCypress is an open-source end-to-end and component testing framework for the modern web. This monorepo ships the Cypress desktop application and CLI (`cypress`), the JavaScript driver that runs tests in the browser, the Electron-based test runner, a suite of published npm packages (component testing adapters, webpack/vite dev-server integrations, plugins), and the internal tooling used to build and release all of it. Cypress is used by millions of developers to test web applications across Chrome, Firefox, Edge, WebKit, and Electron.\n\n## Workspaces\n\n- **`cli/`** — The main `cypress` npm package (CLI entry point) and co-located component testing framework adapters (`@cypress/react`, `@cypress/vue`, `@cypress/angular`, `@cypress/svelte`, `@cypress/mount-utils`)\n- **`packages/`** — Core internal packages: the test driver, Electron app, HTTP server, proxy, launcher, frontend Vue app, launchpad, reporter, config, data-context, telemetry, types, errors, and more\n- **`npm/`** — Publicly published npm packages: bundler integrations, component testing adapters, plugins, and dev tooling\n- **`tooling/`** — Internal build tooling: V8 snapshot creation, `packherd` dependency bundler, and `electron-mksnapshot`\n- **`system-tests/`** — Full end-to-end system test suite: `test/` runs against the dev app, `test-binary/` against a built Cypress binary\n- **`scripts/`** — Internal build, release, and CI automation scripts\n\n## Task runbooks\n\nStep-by-step procedures live in [`guides/`](./guides/) — start there for any multi-step workflow ([release process](./guides/release-process.md), [writing the changelog](./guides/writing-the-cypress-changelog.md), [V8 snapshots](./guides/v8-snapshots.md), and others indexed in [`guides/README.md`](./guides/README.md)). They are the canonical source for humans and agents alike.\n\n`.claude/skills/*/SKILL.md` adds a thin layer on top for the two workflows that need agent-specific execution guidance — which permissions a phase needs, long-running commands, and host quirks that would be noise in a contributor guide. Claude Code loads them on demand; **other agents should read the file directly**, since nothing loads them automatically:\n\n- [`building-cypress-binary`](./.claude/skills/building-cypress-binary/SKILL.md) — `binary-build` / `binary-package` / `binary-zip`, non-interactive flags, `ELECTRON_RUN_AS_NODE`, macOS signing.\n- [`debugging-cypress-artifacts`](./.claude/skills/debugging-cypress-artifacts/SKILL.md) — bugs that only reproduce in packaged output, the commit/build/clean/reset loop, `CYPRESS_RUN_BINARY`.\n\n`.claude/rules/*.md` is a second thin layer, for facts that are only correct in one part of the tree — which test runner a package uses, which runtime floor a directory is bound by, how a given kind of snapshot is regenerated. Each file carries a `paths:` glob, and Claude Code loads it when it opens a matching file. They are pointers, not sources of truth: every one links back to the guide or `AGENTS.md` section that owns the topic, so **other agents can skip them** and lose nothing.\n\nAdd new guidance to a guide by default. A skill is only warranted when the content is about *running* the task rather than doing it correctly — if a contributor doing the task by hand would need to know it, it belongs in the guide. A rule is only warranted when the guidance is wrong outside a specific path. See [Choosing where guidance goes](./CONTRIBUTING.md#choosing-where-guidance-goes).\n\n## Prerequisites\n\n- **Node**: Use the node version specified in the `.node-version` file (check with `node -v`; run `nvm use` to manage versions)\n- **Package manager**: Yarn 1 (`yarn@1.22.22`) — do not use npm or pnpm\n- **Lerna**: Orchestrated via root `package.json` scripts; installed as a dev dependency\n- **Electron** (for binary builds): handled automatically by `@packages/electron` during build\n\n## Common Commands\n\n### Setup & Development\n\n```bash\n# Install all dependencies (runs post-install hooks automatically)\nyarn\n\n# Start Cypress in dev mode (watch, rebuilds on change)\nyarn dev\n\n# Open the Cypress GUI in dev + global mode\nyarn start\n\n```\n\n### Testing\n\n```bash\n# Run a single package's tests (go through the workspace, not the root test script —\n# the root script hardcodes its own --scope flags and lerna unions them, so\n# `yarn test --scope <pkg>` runs the whole default suite plus that package)\nyarn workspace @packages/server test\n\n# Target a specific vitest spec file (packages that use vitest)\nyarn workspace @packages/config test -- <path-to-spec>\n\n# Target a specific vitest spec by glob pattern\nyarn workspace @packages/net-stubbing test -- \"<glob-pattern>\"\n\n# Target a specific mocha spec file (packages that use mocha)\nyarn workspace @packages/server test-unit -- <path-to-spec>\n\n# Filter mocha tests by name pattern\nyarn workspace @packages/server test-unit -- --grep \"<pattern>\"\n\n# @packages/data-context is the one package on jest, not vitest or mocha\nyarn workspace @packages/data-context test-unit -- <path-to-spec>\n\n# Run system test specs whose file name contains a fragment (not a path);\n# see system-tests/AGENTS.md\nyarn test-system go_spec --browser electron\n\n# Run Cypress headlessly against a specific spec (dev mode)\nyarn cypress:run -- --spec \"path/to/spec.cy.ts\"\n\n# Run Cypress component tests against a specific spec (dev mode)\nyarn cypress:run:ct -- --spec \"path/to/spec.cy.ts\"\n```\n\n### Type Checking\n\n```bash\n# Type-check all TypeScript across the monorepo\nyarn type-check\n\n# Lerna-only type check pass\nyarn check-ts\n```\n\n### Linting & Formatting\n\n```bash\n# Lint all packages (no bail, concurrency 2)\nyarn lint\n\n# Lint and auto-fix specific scopes\nyarn lint:fix\n```\n\n> **Note**: This project does **not** use Prettier. All formatting is enforced via ESLint.\n\nThe repo is mid-migration between two ESLint configs, so ignore rules live in two places: `ignorePatterns` in the root `.eslintrc.js` for the packages still on eslintrc, and the `ignores` block in `packages/eslint-config/src/baseConfig.ts` for the packages on flat config. Build output (`cjs/`, `esm/`, `dist/`) is already ignored in both; do not add a per-package `.eslintignore` for it, since patterns in those files that contain a `/` silently match nothing. [The ESLint migration guide](./guides/eslint-migration.md#6-ignore-build-output-centrally) explains the mechanism.\n\n### Build\n\n```bash\n# Full monorepo build\nyarn build\n\n# Build V8 snapshot (dev)\nyarn build-v8-snapshot-dev\n\n# Build V8 snapshot (prod)\nyarn build-v8-snapshot-prod\n\n# Clean all build artifacts\nyarn clean\n\n# Clean and reinstall (nuclear)\nyarn clean-deps && yarn\n```\n\n## Architecture\n\nOrientation, not a registry — the directories under `packages/`, `npm/`, and `tooling/` are the authoritative list, and each carries its own `AGENTS.md` with the detail. Read a package's own file before working in it rather than relying on the one-liner here.\n\n### CLI & Distribution\n\n- **`cypress` (`cli/`)** — The `cypress` npm package users install. Entry point for `cypress open`, `cypress run`, `cypress install`, etc. The published version is set by semantic-release, not by `cli/package.json` (which stays `0.0.0-development`).\n\n### Test Runner & Driver\n\n- **`@packages/driver`** — The JavaScript test driver that executes user test code inside the browser. Implements Cypress commands, assertions, retries, and all `cy.*` APIs.\n- **`@packages/runner`** — The webpack-bundled runner UI that hosts the AUT (application under test) iframe and driver communication layer.\n- **`@packages/app`** — The Vue 3 frontend for the Cypress GUI / Launchpad. Main visual interface for the desktop app.\n- **`@packages/launchpad`** — Project creation, onboarding, and test file scaffold UI.\n- **`@packages/frontend-shared`** — Shared Vue components and design system tokens used by `app` and `launchpad`.\n- **`@packages/reporter`** — The test results reporter UI component (pass/fail tree, log panel).\n\n### Server & Network\n\n- **`@packages/server`** — HTTP server responsible for serving test files, handling browser launching, socket communication, and orchestrating the test run.\n- **`@packages/proxy`** — HTTP/S proxy that intercepts all browser traffic during a test run.\n- **`@packages/net-stubbing`** — The `cy.intercept` surface: driver-side command, types, and the server-side glue.\n- **`@packages/network-interception`** — Transport-agnostic core behind `cy.intercept`: route matching, subscription planning, handler merging, and config policy. Holds the rules, none of the I/O — every transport is injected behind an interface.\n- **`@packages/network`** — Low-level network protocol utilities.\n- **`@packages/network-tools`** — Higher-level networking helpers used across packages.\n- **`@packages/https-proxy`** — HTTPS proxy implementation for TLS interception.\n\n### Configuration & Data\n\n- **`@packages/config`** — Configuration types, defaults, validation, and the public `defineConfig` API.\n- **`@packages/data-context`** — Centralized GraphQL data access layer for the Cypress app (projects, specs, runs, settings).\n- **`@packages/scaffold-config`** — Logic for scaffolding new testing setups via Launchpad (framework detection, config file generation).\n\n### Desktop & Electron\n\n- **`@packages/electron`** — Electron runtime wrapper, binary building utilities, and auto-update integration.\n- **`@packages/launcher`** — Browser detection and launch logic for Chrome, Firefox, Edge, WebKit, and Electron.\n- **`@packages/extension`** — WebExtension injected into browsers to enable cross-origin features and automation hooks.\n\n### Types, Errors & Utilities\n\n- **`@packages/types`** — Shared TypeScript type definitions used across all packages.\n- **`@packages/errors`** — Cypress error definitions, error templates, and error utilities.\n- **`@packages/socket`** — WebSocket communication library used for driver ↔ server messaging (browser and Node sides).\n- **`@packages/telemetry`** — OpenTelemetry instrumentation wrapper used throughout the monorepo.\n- **`@packages/icons`** — Icon registry and SVG assets.\n- **`@packages/stderr-filtering`** — Stderr output filtering utilities.\n- **`@packages/agent-info`** — Fingerprints the environment block to tell whether Cypress was invoked by an AI coding agent, and which one. Intentionally pure and dependency-free.\n- **`@packages/cypress-sessions`** — The cross-process contract for Cypress sessions: shared schema, on-disk layout, and the liveness-probe route that lets the CLI find a running `cypress open` session and attach over CDP.\n- **`@packages/example`** — The bundled kitchensink example project. Its `cypress/` and `app/` contents are generated from upstream `cypress-example-kitchensink` — change it there, not here.\n- **`@packages/root`** — Root package metadata consumed by the binary build.\n\n### Build & Snapshot Infrastructure\n\n- **`@packages/v8-snapshot-require`** — Module loading utilities for V8 snapshots in Electron.\n- **`@packages/packherd-require`** — Module loader for dependencies bundled by `@tooling/packherd`.\n- **`@packages/web-config`** — Webpack/PostCSS configuration for the Vue frontend bundles.\n- **`@packages/ts`** — Shared TypeScript configuration and `ts-node` register helper.\n- **`@packages/eslint-config`** — Shared ESLint configuration preset used across packages.\n- **`@packages/resolve-dist`** — Resolves paths to compiled distribution artifacts.\n- **`@tooling/v8-snapshot`** — V8 snapshot creation tooling for Electron startup optimization.\n- **`@tooling/packherd`** — Bundles all reachable dependencies from an entry point into a single artifact.\n- **`@tooling/electron-mksnapshot`** — Configurable `mksnapshot` binary wrapper for the target Electron version.\n\n### Component Testing Adapters (published via `npm/`)\n\n- **`@cypress/react`** — Component testing adapter for React.\n- **`@cypress/vue`** — Component testing adapter for Vue.js.\n- **`@cypress/angular`** — Component testing adapter for Angular.\n- **`@cypress/svelte`** — Component testing adapter for Svelte.\n- **`@cypress/mount-utils`** — Shared utilities used by all component testing adapters.\n\n### Bundler Integrations (published via `npm/`)\n\n- **`@cypress/webpack-dev-server`** — Webpack Dev Server launcher for component testing.\n- **`@cypress/vite-dev-server`** — Vite Dev Server launcher for component testing.\n- **`@cypress/webpack-preprocessor`** — Webpack preprocessor for bundling test spec files.\n- **`@cypress/webpack-batteries-included-preprocessor`** — Webpack preprocessor with batteries included (TypeScript, etc.).\n- **`@cypress/vite-plugin-cypress-esm`** — Vite plugin for mutable ESM modules in browser tests.\n\n### Plugins & Dev Tooling (published via `npm/`)\n\n- **`@cypress/grep`** — Plugin to filter test runs by substring/tag.\n- **`@cypress/puppeteer`** — Plugin to enhance Cypress tests with Puppeteer.\n- **`@cypress/schematic`** — Official Angular CLI schematic for adding Cypress.\n- **`@cypress/eslint-plugin-dev`** — ESLint rules shared across Cypress development packages.\n\n## Code Conventions\n\n- **TypeScript for all new code** — New source, specs, and test fixtures must be TypeScript, not JavaScript. This includes system-test project fixtures: use `cypress.config.ts` and `.cy.ts` specs (lightweight fixtures without their own `node_modules` should `export default { ... }` a plain object rather than importing `defineConfig` from `cypress`).\n- **No Prettier** — Formatting is enforced entirely through ESLint. The `.prettierignore` excludes all files.\n- **Single quotes** — `'single'` quote style required for all JS/TS.\n- **No semicolons** — Enforced via ESLint (`semi: 'never'`).\n- **2-space indentation** — Standard across all JS/TS files.\n- **Trailing commas** — Required in multiline contexts (`comma-dangle: 'always-multiline'`).\n- **No `var`** — `var` declarations are an ESLint error; use `const` or `let`.\n- **Template literals** — `prefer-template: 'error'` — no string concatenation.\n- **Object shorthand** — `object-shorthand: 'error'`.\n- **No `console`** — `no-console: 'error'`; use the logger utilities instead.\n- **TypeScript**: `strict: true` base, but `noImplicitAny: false` (implicit `any` allowed for pragmatic reasons).\n- **Type-only imports**: `importsNotUsedAsValues: \"error\"` — use `import type` for type-only imports.\n- **Type guards over `as`** — Narrow with a type guard, an `asserts` function or an `in` check rather than an `as` assertion, and explain any assertion that remains with a \"Safe because\" comment. See [Type Assertions](./guides/typescript.md#type-assertions).\n- **Unused vars**: Unused variables and imports are errors. Unused function parameters and caught errors are allowed, since callbacks often have to accept arguments they ignore. In packages on the flat config, prefix a variable that exists only to be type-checked with `_`.\n- **No `.only` in tests** — `mocha/no-exclusive-tests: 'error'` (ESLint). Caught by `yarn lint` and by pre-commit ESLint (`lint-staged`). For intentional `.only` in fixtures or type samples, use `eslint-disable-next-line mocha/no-exclusive-tests` (with a short comment).\n- **`.skip` requires a comment** — Must include `NOTE:`, `TODO:`, or `FIXME:` comment explaining why.\n- **Blank line before `return`** — Enforced via `padding-line-between-statements`.\n- **Sync FS calls** — Flagged with a warning (except `existsSync`); prefer async variants.\n\n### Code Comments\n\n- **Prefer none** — Always prefer no code comment if the code is self-explanatory.\n- **Explain the why** — When a comment is necessary, use it to explain the *why* and anything relevant that is not directly expressed by the code itself.\n- **Don't repeat yourself** — Do not restate the same comment multiple times in a file as the code flows through each step.\n- **Present state only** — Keep comments relevant to the current state of the code. Do not describe what changed or how the code used to be different.\n- **Name the reason, not the predecessor** — \"Matches what the old plugin did\" is not a *why*, and it rots once that plugin is deleted. State the reason the old code had, and put parity with replaced tooling in the commit message or guide.\n\nBad examples:\n\n```js\n// never wipe the entire jar - the old hack called clearCookies() with no filter\n// we no longer need to clear the state here, CDP added automatically clearing\n// Firefox previously relied on os-level focus, now we use WebDrive BiDi to focus\n```\n\nGood examples:\n\n```js\n// Close any extra pages so they don't leak into other tests\n// Firefox doesn't support this in native BiDi, so we pull remote.location from current frame\n// `cookie`'s serializer rejects an IPv6 literal Domain (e.g. `[::1]`), crashing\n// the proxy. Browsers scope cookies for IP hosts to that host anyway, so omit\n// Domain and let the cookie default to host-only.\n```\n\n## Runtime targets\n\nCode in this monorepo runs in several runtimes, each with its own JavaScript / runtime-API floor. Before using a modern JS or Node/DOM API, identify which runtime a file executes in and confirm the API is supported there — do **not** assume the development Node version. Where each floor is defined:\n\n- **Dev tooling, gulp, build/dev scripts** — the Node version in [`.node-version`](./.node-version).\n- **The bundled app (main/Electron process)** — the Node embedded in the `electron` version pinned in the root [`package.json`](./package.json) (look up that Electron release's Node/V8).\n- **The config/plugins child process** (`@packages/server` `lib/plugins/child/require_async_child.ts`, forked by `@packages/data-context` `ProjectConfigIpc`) and the **`cypress` CLI** (`cli/`) — the *user's* Node, whose supported range is `engines.node` in [`cli/package.json`](./cli/package.json). This floor is lower than the dev/bundled Node, so it is the binding constraint for that code.\n- **Browser-shipped bundles** (`@packages/app`, `@packages/frontend-shared`, `@packages/driver`) — the last 3 major versions of the supported browsers. Since Safari releases majors roughly annually, the last 3 major versions reach back years, making this the most conservative floor. `@packages/driver` runs in the user's AUT browser. For WebKit, Cypress runs the WebKit bundled with the installed `playwright-webkit` version — not the user's system Safari — so the WebKit floor tracks that dependency.\n\nVerify an API against the relevant floor (node.green for Node, caniuse/MDN for browsers) before relying on it.\n\n## Pull Requests\n\n[`CONTRIBUTING.md`](./CONTRIBUTING.md) is the source of truth for PR conventions, including the semantic-release title prefix that determines the next version. The other essentials:\n\n### Changelog & Template\n\n- The semantic title prefix decides whether an entry in [`cli/CHANGELOG.md`](./cli/CHANGELOG.md) is required, which section it belongs in, and how it must be phrased. The [Writing the Cypress Changelog Guide](./guides/writing-the-cypress-changelog.md) is the source of truth for all of it — read it rather than guessing, and note that a `fix` prefix always requires an entry.\n- Verify a changelog entry with `GH_TOKEN=\"$(gh auth token)\" node ./scripts/semantic-commits/validate-binary-changelog.js`, the same check CI's `verify-release-readiness` job runs. It fails without that token, and needs a root `yarn` install.\n- Fill out the [Pull Request Template](./.github/PULL_REQUEST_TEMPLATE.md) completely. Use `N/A` for irrelevant sections rather than deleting them — PRs will not be reviewed if the template is not filled in.\n\n## CI/CD\n\n- **Primary CI**: CircleCI. Config lives in `.circleci/src/` (modular) and is compiled to `.circleci/packed/pipeline.yml`. See [`.circleci/AGENTS.md`](.circleci/AGENTS.md) for when to add a branch to the full-CI allowlist (binary tests, Windows jobs, v8 snapshot validation).\n- **Supplementary**: GitHub Actions for security scanning (Snyk), SBOM generation, browser version auto-updates, and PR validation.\n- **Base branch**: `develop` — all PRs target `develop`; release branches follow `release/X.Y.Z`.\n- **Multi-platform matrix**: Linux x64, Linux ARM64, macOS x64, macOS ARM64, Windows — all run in parallel. Coverage is per-job, not uniform: `unit-tests` runs only on linux-x64 and windows, so a unit test coupled to the host architecture passes CI and still fails locally on arm64. See [`cli/AGENTS.md`](./cli/AGENTS.md) for keeping specs host-independent.\n- **Release gate**: All tests must pass through the `ready-to-release` aggregation job before `npm-release` runs.\n- **External PRs**: Require manual approval via `approve-contributor-pr` gate before CI runs.\n- **Binary builds**: Triggered separately after npm release; cross-platform binaries are assembled and distributed via CDN.\n\n## Cloud agent environments\n\nRunning the repo in a hosted container (Cursor Cloud, Claude Code on the web, and similar). Most of this applies to any of them; bullets that name a host apply only there, so confirm the rest against the container you are in rather than assuming.\n\n### Environment\n\n- Yarn 1.22.22 is pre-installed. Whatever the host runs to prepare the container invokes `yarn`, which runs the postinstall. What it covers depends on `CI` ([`scripts/run-postInstall.js`](./scripts/run-postInstall.js)): with `CI` set, as on Claude Code on the web, it skips `yarn-deduplicate`, `yarn build` and the V8 snapshot, so nothing is built. Check `echo $CI`, and run `yarn build` before anything that loads built packages, such as system tests. After adding or changing a dependency, run `yarn check-lockfile`. If it lists duplicates, run `yarn-deduplicate --strategy=highest` and commit the result, or CI's \"Check yarn.lock is deduplicated\" job fails.\n- The root `package.json` sets `engines.node` to the version in [`.node-version`](./.node-version), so yarn refuses to run any script on an older Node: `The engine \"node\" is incompatible with this module`. Containers that pre-install a lower version need the required one installed before anything else works — see [Matching the required Node version](#matching-the-required-node-version).\n- Browsers and a display differ by host. Cursor Cloud runs Xvfb on `DISPLAY=:1` and ships Chrome at `/usr/bin/google-chrome-stable`. Claude Code on the web has Xvfb installed but leaves `DISPLAY` unset, and has no Chrome — only the Chromium that Playwright bundles under `$PLAYWRIGHT_BROWSERS_PATH`. There, `cypress run` starts its own Xvfb when `DISPLAY` is unset, so the Cypress-based suites do run; pass `--browser \"$PLAYWRIGHT_BROWSERS_PATH/chromium\"` instead of `--browser chrome`, and wrap anything else that needs a display (such as `yarn dev`) in `xvfb-run -a`. On any host, prefix Electron commands with `env -u ELECTRON_RUN_AS_NODE`: some agent hosts set it, and it makes Electron start as plain Node.\n\n### Running Cypress in dev mode\n\n- `yarn dev` starts the Cypress Electron GUI in global/dev mode (Launchpad). It builds Vite bundles for `@packages/app` and `@packages/launchpad`, then launches Electron. The GraphQL server runs at `http://localhost:4444/__launchpad/graphql`.\n- `yarn cypress:run -- --project <path> --browser chrome --headless` runs Cypress headlessly in dev mode. The config file at the target project must NOT `require('cypress')` since it resolves from the project root.\n\n### Running tests\n\n- Prefer scoped tests: `yarn workspace @packages/<name> test`. Do not use `yarn test --scope <name>` — lerna unions scopes with the ones the root `test` script already sets, so it broadens the run instead of narrowing it. `yarn lint --scope` and `yarn check-ts --scope` do narrow correctly.\n- Some test suites (e.g., `@packages/network`) require privileged ports (443) and will fail with EACCES in unprivileged containers — this is expected.\n- `@packages/config` has 2 tests that assert `cypressBinaryRoot` contains `'cypress'`; these fail when the workspace directory name differs (e.g., `/workspace`). This is a known path-dependent issue, not a code bug.\n\n### Running system tests\n\nSpecs in `system-tests/test` run in cloud containers. Specs in `system-tests/test-binary` need Docker and a built binary, so they do not.\n\n1. **Build once:** `env -u ELECTRON_RUN_AS_NODE yarn build`. System tests need all three things it produces: the compiled workspace packages, the dev Electron app in `packages/electron/dist/Cypress`, and the `cli/dist` bundle that fixture projects resolve `cypress` from. Without them the run fails with `Cannot find module '…/lib-dist/index.js'`, `spawn …/dist/Cypress/Cypress ENOENT`, or `Cannot find module '…/cypress/dist/index.js'`.\n2. **Run by file name fragment:** `env -u ELECTRON_RUN_AS_NODE yarn test-system go_spec --browser electron`. The script wraps its argument in `{test,test-binary}/**/*<arg>*`, so a path such as `test/go_spec.js`, or `--spec <path>`, matches nothing. The runner starts its own Xvfb, so `DISPLAY` can stay unset.\n3. **Pick a browser that exists:** Claude Code on the web has no Chrome or Firefox install, so pass `--browser electron`. It runs the Electron variant and reports the other browsers as pending.\n4. **Restore snapshots afterwards:** a local run prunes snapshot keys for tests it skipped. See [`system-tests/AGENTS.md`](./system-tests/AGENTS.md).\n\nIf `yarn build` fails in `@cypress/vue` with `Cannot find module '@cypress/mount-utils'` while `npm/mount-utils/dist` exists, the rollup-plugin-typescript2 cache is stale: delete `npm/vue/node_modules/.cache/rollup-plugin-typescript2` and rerun.\n\n### Linting\n\n- `yarn lint --scope @packages/<name>` for focused lint. Full monorepo lint: `yarn lint`.\n\n### Matching the required Node version\n\nInstall the required version from the repo root, where `nvm` picks it up from [`.nvmrc`](./.nvmrc):\n\n```bash\nexport NVM_DIR=/opt/nvm          # wherever nvm is installed\n. \"$NVM_DIR/nvm.sh\" || true      # see below: sourcing can exit non-zero\nnvm install                      # reads .nvmrc\n```\n\nTwo things bite here:\n\n- **Source `nvm.sh` on its own line.** It exits non-zero when no default version is aliased yet, so `. \"$NVM_DIR/nvm.sh\" && nvm install` silently skips the install and looks like a failed download.\n- **`nvm use` does not survive a new shell.** Containers that put their own Node first on `PATH` keep resolving to it in every new shell, so the version reverts between commands. Prepend the installed version's bin directory to `PATH` in whatever the environment persists across commands (a shell profile, or the session env file that agent harnesses expose):\n\n```bash\necho \"export PATH=\\\"$(nvm which current | xargs dirname):\\$PATH\\\"\" >> ~/.bashrc\n```\n\nVerify with `node -v` in a *fresh* shell rather than the one that ran `nvm use`.\n\nPrefer this over `yarn --ignore-engines`: the flag only silences the check for the install itself. `yarn <script>` still refuses to run afterwards (`Commands cannot run with an incompatible environment`), and the postinstall rebuilds native modules such as `better-sqlite3` against the wrong Node.\n\n### Key caveats\n\n- The postinstall takes ~4-5 minutes (build + V8 snapshot generation). If `yarn` is interrupted, re-run it.\n- `yarn --frozen-lockfile` should be preferred when the lockfile hasn't changed; it falls back to `yarn` (which runs postinstall) if it fails.\n- Do not run `yarn` from within sub-packages. Always run from the repo root.\n","isInternal":false,"tokens":6653,"sizeBytes":27492},{"name":"AGENTS.md","path":"cli/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/cli/AGENTS.md","title":"cli - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# CLI Workspace\n\n## Purpose\n\nThe `cli/` workspace contains the `cypress` npm package — the user-facing CLI and programmatic API — plus the first-party component-testing mount adapters that ship bundled inside it. This is the top-level package users install (`npm install cypress`). The mount adapters (`@cypress/react`, `@cypress/vue`, etc.) live here as sibling directories and are published independently on npm, but their built artifacts are also copied into `cli/` so that users can import them as `cypress/react`, `cypress/vue`, etc.\n\n## Package Map\n\n### Main CLI\n\n**cypress** — The `cypress` npm package. Provides the `cypress` binary, programmatic Node.js API, TypeScript type definitions, and re-exports the built CT adapter artifacts.\n\n### Component-Testing Adapters\n\n**@cypress/angular** — Mount adapter for Angular 21+ components.\n\n**@cypress/mount-utils** — Internal shared utilities and types that all CT mount adapters depend on. Not intended for direct use by end users.\n\n**@cypress/react** — Mount adapter for React 18+ components.\n\n**@cypress/svelte** — Mount adapter for Svelte 5+ components.\n\n**@cypress/vue** — Mount adapter for Vue 3 components.\n\n## Workspace Commands\n\n```bash\n# Build the main cypress CLI package\ncd cli && yarn build-cli\n\n# Build only (no pre/post steps)\ncd cli && yarn build\n\n# Run a specific unit test file\ncd cli && yarn test-unit -- <path-to-spec>\n\n# Run unit tests matching a glob pattern\ncd cli && yarn test-unit -- \"<glob-pattern>\"\n\n# Type-check types/\ncd cli && yarn types\n\n# Build a CT adapter (example: react)\ncd cli/react && yarn build\n\n# Build mount-utils (tsc-based, not rollup)\ncd cli/mount-utils && yarn build\n```\n\n## Unit Tests\n\nThe `unit-tests` CI job runs only on `linux-x64` and `windows` — there is no arm64 executor — so **a spec coupled to the host machine passes CI and still fails for contributors**, most often on Apple Silicon. Keep specs host-independent.\n\n- **Pin the architecture at both layers.** `util.getRealArch()` consults `os.arch()` only for its early returns; otherwise it falls through to the `arch` package, which reports the real machine. A spec asserting on output that carries an arch — `Platform:` lines, download URLs, `?arch=` query params, CDN build URLs — needs a file-scoped `vi.mock('arch', () => ({ default: () => 'x64' }))` alongside `vi.mocked(os.arch).mockReturnValue('x64')`. Mock it per file rather than globally through `setupFiles`: some specs exercise real-machine detection deliberately, and a shared mock hides the dependency from the file that relies on it.\n- **Keep test helpers generic.** Normalizers that scrub output before snapshotting must match the shape of a host value, not the value itself — `&arch=[\\w-]+`, never `&arch=x64` — so the helper cannot re-couple a snapshot to the host.\n- **Never run `vitest -u` to clear a host-dependent failure.** Committed snapshots encode the canonical values; regenerating them on a different machine buries the coupling and breaks everyone else. Fix the mock instead.\n- **Treat other host facts the same way** — `os.platform()`, `os.release()`, `os.tmpdir()`, `os.homedir()`, cache directories, path separators. Assert against mocked values, never whatever the machine reports.\n\nVerify an arch or platform mock is load-bearing rather than decorative: flip its factory to the other value, run that spec, and confirm the expected tests fail. A mock wired to nothing is worse than no mock, because it reads as coverage.\n\n`util._cachedArch` is a module-level singleton. A file-scoped `vi.mock('arch')` is in place before the first call, so the cached value is already the mocked one; reset it (`util._cachedArch = undefined`) only in specs that vary the arch between tests.\n\n## Notes\n\n- The main CLI build uses Rollup (configured in `rollup.config.mjs`). Entry points are `lib/index.ts`, `lib/cli.ts`, `lib/cypress.ts`, `lib/exec/xvfb.ts`, `lib/exec/spawn.ts`, and `lib/bin/cypress.ts`. Output goes to `dist/` and is copied to `build/` via `sync-build-dist.ts`.\n- The `cli/react`, `cli/vue`, `cli/angular`, `cli/svelte`, and `cli/mount-utils` directories are build output, not sources — each adapter's `postbuild` writes them, and the adapter sources live in `npm/`. See [`npm/AGENTS.md`](../npm/AGENTS.md) for the mechanism.\n- Unit tests for the CLI itself live in `cli/test/` and run under Vitest (`test/**/*.spec.ts`).\n- TypeScript type definitions for the public Cypress API live in `cli/types/`. The `dtslint` tool is used to validate them, configured by `cli/types/tslint.json`. That file must stay plain JSON, so the reasons behind its settings are recorded here:\n  - `no-single-declare-module` is off because the Cypress npm module API is kept in its own file on purpose.\n  - `no-unnecessary-qualifier` is off because it flags qualifiers the types need.\n  - `linterOptions.exclude` lists the bundled third-party typings (lodash, chai, sinon and so on), which don't follow our rules. It also lists `net-stubbing.d.ts`, which is copied in from `@packages/network-interception` and renamed, so it was never written as a declaration file.\n- The `CYPRESS_INSTALL_BINARY` environment variable can be set to a path or URL to override the binary downloaded during `postinstall`.\n- The `cypress` package sets `\"private\": true` in its monorepo `package.json` — publishing is handled by CI scripts that prepare a separate `package.json`.\n","isInternal":false,"tokens":1297,"sizeBytes":5412},{"name":"AGENTS.md","path":"npm/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/npm/AGENTS.md","title":"npm - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# npm Workspace\n\n## Purpose\n\nThe `npm/` directory contains the publicly published npm packages for the Cypress ecosystem, including component testing adapters for each supported UI framework, bundler integrations that power the component testing dev server, and plugins and dev tooling used by Cypress consumers and the Cypress team. These packages are versioned and released independently from the main `cypress` binary; they are released automatically via semantic-versioning commit prefixes (`feat`, `fix`, `chore`, etc.) when changes land on `develop`.\n\n## Package Map\n\n### Component Testing Adapters\n\n- **@cypress/react** — Mount React components (React 18+) in the Cypress test runner\n- **@cypress/vue** — Mount Vue 3 components in the Cypress test runner\n- **@cypress/angular** — Mount Angular components (Angular 21+) in the Cypress test runner\n- **@cypress/svelte** — Mount Svelte 5+ components in the Cypress test runner\n- **@cypress/mount-utils** — Shared utility types and helper functions consumed by all component testing adapters; not intended for direct use by end users\n\n### Bundler Integrations\n\n- **@cypress/webpack-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Webpack Dev Server\n- **@cypress/vite-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Vite (peer dependency `vite@^8`)\n- **@cypress/webpack-preprocessor** — Cypress file preprocessor for bundling test files via Webpack 5; requires peer deps (`@babel/core`, `babel-loader`, etc.) to be installed by the consumer\n- **@cypress/webpack-batteries-included-preprocessor** — Wrapper around `@cypress/webpack-preprocessor` that bundles Babel and TypeScript loaders so consumers do not need to configure them separately\n- **@cypress/vite-plugin-cypress-esm** — Vite plugin (alpha) that wraps ES modules in a `Proxy` to allow mutation/mocking of ESM namespaces in component tests\n\n### Plugins & Dev Tooling\n\n- **@cypress/grep** — Plugin for filtering Cypress tests by substring or tags at runtime, with options for spec pre-filtering and test burning\n- **@cypress/puppeteer** — Plugin (beta) that runs Puppeteer message handlers registered in `setupNodeEvents` when a spec calls `cy.puppeteer(name, ...args)`; each handler receives a Puppeteer `Browser` connected to the Cypress-launched Chromium browser\n- **@cypress/schematic** — Official Angular CLI schematic and builder for scaffolding Cypress configuration into Angular projects (`ng add @cypress/schematic`)\n- **@cypress/eslint-plugin-dev** — Private, unpublished. The eslintrc presets the monorepo packages still on ESLint 8 lint against; being retired in favour of `@packages/eslint-config`\n\n## Workspace Commands\n\nEach package manages its own build, and script names are not uniform — check the package's `package.json` before running anything. From within a package directory:\n\n```sh\nyarn build          # compile TypeScript / run rollup (varies by package)\nyarn check-ts       # type-check without emitting (not every package has it, e.g. grep, schematic)\nyarn lint           # run ESLint\nyarn test -- <path-to-spec>          # vitest packages: target a specific file\nyarn test -- \"<glob-pattern>\"        # vitest packages: target specs matching a glob\n```\n\nWhat `yarn test` runs depends on the package:\n\n- **vitest** — `grep`, `puppeteer`, `schematic`, `vite-dev-server`, `webpack-dev-server`, `webpack-batteries-included-preprocessor`, `eslint-plugin-dev`\n- **Cypress** — `react` and `vue` (`yarn cy:run -- --spec <path-to-spec>`), `vite-plugin-cypress-esm` (`yarn cypress:run`)\n- **Custom script** — `webpack-preprocessor` runs `tsx ./scripts/test-webpack-5.ts` (it also has `test-unit` and `test-e2e`)\n- **No `test` script** — `angular`, `svelte`, `mount-utils`\n\nPackages with their own Cypress e2e suite use `cypress:open` / `cypress:run` (`grep`, `puppeteer`, `vite-dev-server`, `webpack-dev-server`, `vite-plugin-cypress-esm`); only `react` and `vue` use `cy:open` / `cy:run`.\n\nFrom the monorepo root:\n\n```sh\nyarn workspace @cypress/<pkg> build              # build a single package\nyarn lerna run build --scope '@cypress/*'        # build all npm packages\n```\n\n## Notes\n\n- **Re-export into `cli/`** (canonical description; other files point here). `react`, `vue`, `angular`, `svelte`, and `mount-utils` each run `postbuild` → [`scripts/sync-exported-npm-with-cli.js`](../scripts/sync-exported-npm-with-cli.js). It resolves the file list with `npm-packlist` — the files npm *would publish*, per the package's `files` key, which is a wider set than `dist/` — wipes `cli/<name>/`, copies them in, and then rewrites the `exports` map in `cli/package.json`. That is what makes `import ... from 'cypress/react'` resolve. Build the package before testing it in the binary; nothing else refreshes the `cli/` copy.\n- **Adapter builds can run before the `cypress` typedefs exist.** Packages with `\"types\": [\"cypress\"]` resolve it to `cli/types`, whose third-party folders (`jquery`, `mocha`, `chai`, etc., listed in `cli/.gitignore`) are generated by the cli build. CI's `lerna run build` compiles `@cypress/react` before that, so names like `JQuery` are undefined there but resolve in a local checkout that has built the cli once. A `@ts-expect-error` on such a line fails in one setup or the other, and so does deleting the directive. Reproduce CI by moving those generated folders out of `cli/types` before running the package build.\n- `@cypress/webpack-dev-server` and `@cypress/vite-dev-server` are bundled with the Cypress binary and generally do not need to be installed separately by end users; the object-syntax `devServer` config in `cypress.config.ts` is the primary API.\n- `@cypress/webpack-batteries-included-preprocessor` requires `@cypress/webpack-preprocessor` as a peer dependency and must be installed alongside it.\n- `@cypress/eslint-plugin-dev` is private and no longer published — it is for internal Cypress development only, and the packages that consume it are migrating to `@packages/eslint-config`. Do not recommend it to end users; the user-facing ESLint plugin lives at `eslint-plugin-cypress` (a separate repository).\n- `npm/xpath/` holds only a README: `@cypress/xpath` is deprecated and no longer maintained, and there is no source or `package.json` here.\n- Releases are triggered automatically by semantic commit messages on `develop`; there is no manual publish step for individual packages.\n","isInternal":false,"tokens":1581,"sizeBytes":6506},{"name":"AGENTS.md","path":"packages/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/AGENTS.md","title":"packages - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# Packages Workspace\n\n## Purpose\n\nThe `packages/` workspace contains all first-party Cypress packages that make up the Cypress monorepo. These packages are the implementation of the Cypress test runner, its tooling, and supporting infrastructure. Each package is a standalone npm package (scoped under `@packages/`) consumed by the Cypress binary build, by each other, and in some cases by the public.\n\n## Package Map\n\n### App & Frontend\n\n- **@packages/app** — The main Vue 3 front-end application for the Cypress browser-side UI (specs list, Test Replay, runner toolbar, Studio).\n- **@packages/launchpad** — Vue 3 Electron-rendered application shown when running `cypress open`; handles login, project selection, and configuration setup.\n- **@packages/frontend-shared** — Shared Vue 3 components, TailwindCSS config, composables, and i18n strings consumed by both `app` and `launchpad`.\n- **@packages/reporter** — The test result reporter UI (command log, test tree) rendered inside the runner iframe.\n- **@packages/runner** — Legacy webpack bundler for `driver` and `reporter`; being phased out in favour of `app`.\n\n### Test Runner & Driver\n\n- **@packages/driver** — Core JavaScript library loaded inside the browser; executes Cypress commands and manages the test runtime.\n- **@packages/extension** — Chrome/Firefox WebExtension that enables browser automation (v2 Manifest V2, v3 Manifest V3).\n\n### Server & Network\n\n- **@packages/server** — Node.js heart of Cypress: HTTP server, proxy orchestration, file watching, plugin execution, and IPC with the browser.\n- **@packages/proxy** — HTTP interception proxy layer; applies middleware to requests and responses to enable stubbing, rewriting, and header injection.\n- **@packages/net-stubbing** — Server-side implementation of `cy.intercept()`; route matching, request/response lifecycle, and driver event bridge.\n- **@packages/network** — Node.js networking utilities: HTTP/HTTPS proxy-aware agents, CA certificate management, and connection helpers.\n- **@packages/network-tools** — Isomorphic (browser + Node.js) low-level networking utilities: CORS helpers, URI parsing, domain utilities.\n- **@packages/https-proxy** — Intercepts TLS connections by acting as a dynamic CA; generates per-hostname certificates on the fly using `node-forge`.\n\n### Configuration & Data\n\n- **@packages/config** — Canonical Cypress configuration schema, option definitions, validation logic, and AST-based `cypress.config` file transforms.\n- **@packages/data-context** — Centralized GraphQL data layer (Nexus schema) for the Cypress app; manages project state, Cloud queries, file watching, and actions.\n- **@packages/scaffold-config** — Detects frameworks/bundlers in a user's project and scaffolds `cypress.config.js` and supporting files during onboarding.\n\n### Desktop & Electron\n\n- **@packages/electron** — Installs, packages, and manages the Electron binary that wraps Cypress; provides the `cypress-electron` CLI entrypoint.\n- **@packages/launcher** — Detects installed browsers on macOS, Linux, and Windows and launches them with the correct flags and profile paths.\n\n### Types, Errors & Utilities\n\n- **@packages/types** — Shared TypeScript type definitions used across the entire monorepo.\n- **@packages/errors** — Centralised error definitions, formatting utilities, and `errTemplate` tagged-template system for all Cypress error messages.\n- **@packages/socket** — Thin shared wrapper around `socket.io` client and server instances used for browser–server IPC.\n- **@packages/telemetry** — OpenTelemetry convenience wrapper for capturing performance spans and usage signals inside Cypress processes.\n- **@packages/icons** — Cypress icon assets (SVG, PNG, ICO) and build scripts that produce browser-consumable image files.\n- **@packages/stderr-filtering** — Utility for tagging and filtering noisy third-party stderr output into `debug` streams.\n- **@packages/agent-info** — Detects whether an AI coding agent invoked the current process, and which one, by fingerprinting environment variables.\n\n### Build & Snapshot Infrastructure\n\n- **@packages/v8-snapshot-require** — Loads V8 heap snapshots created by `@tooling/v8-snapshot` to accelerate Electron startup time.\n- **@packages/packherd-require** — Module loader for bundles produced by `@tooling/packherd`; also provides on-demand TypeScript transpilation with source-map support.\n- **@packages/web-config** — Shared webpack/Vite configuration helpers for browser bundles inside the monorepo.\n- **@packages/ts** — Standardises `ts-node` version and base `tsconfig` options for development-time TypeScript require hooks.\n- **@packages/eslint-config** — Monorepo-wide ESLint flat-config with rules for TypeScript, Vue, React, Cypress tests, and imports.\n- **@packages/resolve-dist** — Centralizes path resolution for compiled/static assets referenced from server-side code.\n- **@packages/root** — Bundles the monorepo root `package.json` as an installable package so any package can reference root metadata without absolute paths.\n- **@packages/runner** — (see App & Frontend above)\n\n## Workspace Commands\n\n```bash\n# Run tests targeting a specific file (vitest packages)\nyarn workspace @packages/<name> test -- <path-to-spec>\n\n# Run tests targeting a specific file glob (vitest packages)\nyarn workspace @packages/<name> test -- \"<glob-pattern>\"\n\n# Build a specific package\nyarn workspace @packages/<name> build\n\n# Run lint for a specific package\nyarn workspace @packages/<name> lint\n\n# Type-check a specific package\nyarn workspace @packages/<name> check-ts\n\n# Run all package builds (from repo root)\nyarn build\n```\n\n## Notes\n\n- Most packages publish both CJS (`cjs/`) and ESM (`esm/`) builds; the `main` field points to CJS and `module` to ESM.\n- Do not build `.js` files by hand. Whether a package needs a pre-build is decided by where its `main` points. A handful still point at tracked source and resolve TypeScript at require time — `proxy` and `data-context` through an `@packages/ts/register` shim, `server` through `tsx`, `net-stubbing` straight at `lib/server` — and those need no build. That is the legacy pattern and is being retired: most Node-side packages now point `main` at build output under `cjs/`, `esm/`, or `dist/`, and a package cannot run its tests until every first-party dependency resolved that way has been built. Check the dependency's own `main` rather than assuming either way.\n- A missing dependency build surfaces as `Failed to resolve entry for package \"@packages/x\"` from `vite:import-analysis`, which reads like a malformed `package.json` rather than a missing build. Each run only names the next one, so a fresh worktree can need several builds in turn — see [`network/AGENTS.md`](./network/AGENTS.md) for a worked example. A full root `yarn` runs a lerna build and covers this; `yarn clean` or an interrupted install is what leaves you short.\n- The browser bundles (`driver`, `runner`, `app`, `launchpad`, `frontend-shared`, `reporter`) always need building, by `yarn watch` from the repo root.\n- Many packages use `vitest` for unit tests; the front-end packages (`app`, `launchpad`, `frontend-shared`) use Cypress component tests and E2E tests (cypress-in-cypress pattern).\n- The `nohoist` workspace option prevents specific dependencies from being hoisted to the monorepo root. It is set in `driver` (which nohoists everything, `[\"*\"]`), `frontend-shared`, `proxy`, `server`, `socket`, and `types` — check the package's own `package.json` `workspaces.nohoist` rather than assuming.\n- Packages that depend on generated GraphQL types (from `data-context`) must run `yarn build:graphql` before type-checking will pass.\n- **When adding or removing a package under `packages/`**, regenerate the path map with `yarn gulp makePathMap` (from the repo root). This rewrites the auto-generated [`scripts/gulp/monorepoPaths.ts`](../scripts/gulp/monorepoPaths.ts), produced by [`scripts/gulp/utils/makePathMap.ts`](../scripts/gulp/utils/makePathMap.ts) from an enumeration of `packages/*` — do not hand-edit it. `yarn dev` regenerates it too, but run the task explicitly so the change is committed alongside the package addition.\n","isInternal":false,"tokens":1869,"sizeBytes":8226},{"name":"AGENTS.md","path":"scripts/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/AGENTS.md","title":"scripts - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# scripts - AI Agent Protocol & Instructions\n\nPath: `scripts/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/AGENTS.md)","tokens":300,"sizeBytes":178},{"name":"AGENTS.md","path":"system-tests/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/AGENTS.md","title":"system-tests - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# system-tests - AI Agent Protocol & Instructions\n\nPath: `system-tests/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/AGENTS.md)","tokens":300,"sizeBytes":193},{"name":"AGENTS.md","path":"tooling/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/AGENTS.md","title":"tooling - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# tooling - AI Agent Protocol & Instructions\n\nPath: `tooling/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/AGENTS.md)","tokens":300,"sizeBytes":178},{"name":"generated-files.md","path":".claude/rules/generated-files.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/generated-files.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/generated-files.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/generated-files.md)","tokens":300,"sizeBytes":177},{"name":"runtime-floor-browser.md","path":".claude/rules/runtime-floor-browser.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-browser.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/runtime-floor-browser.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-browser.md)","tokens":300,"sizeBytes":189},{"name":"runtime-floor-user-node.md","path":".claude/rules/runtime-floor-user-node.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-user-node.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/runtime-floor-user-node.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-user-node.md)","tokens":300,"sizeBytes":193},{"name":"snapshots.md","path":".claude/rules/snapshots.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/snapshots.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/snapshots.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/snapshots.md)","tokens":300,"sizeBytes":165},{"name":"test-runner.md","path":".claude/rules/test-runner.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/test-runner.md","title":"Rules Skill","category":"anthropic-skill","format":"markdown","content":"# Rules Skill\n\nPath: `.claude/rules/test-runner.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/test-runner.md)","tokens":300,"sizeBytes":169},{"name":"SKILL.md","path":".claude/skills/building-cypress-binary/SKILL.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/skills/building-cypress-binary/SKILL.md","title":"building-cypress-binary","category":"anthropic-skill","format":"markdown","content":"---\nname: building-cypress-binary\ndescription: >-\n  Builds and packages the Cypress Electron binary locally (yarn binary-build,\n  binary-package, binary-zip, Docker/Linux parity), including non-interactive\n  --version/--platform flags and unsetting ELECTRON_RUN_AS_NODE for agent hosts.\n  Covers macOS signing, optional env speedups, dist smoke-test pitfalls, and why\n  the tree is dirty after a build. Use when the user asks to build the Cypress\n  binary, binary-package, electron MODULE_NOT_FOUND during binary-build, or\n  local binary zip. For artifact debugging, use debugging-cypress-artifacts.\n---\n\n# Building the Cypress binary\n\nCanonical reference: [guides/building-release-artifacts.md](../../../guides/building-release-artifacts.md) (npm `.tgz` vs binary `.zip`, CI context).\n\nArtifact debugging (packaged CLI, `CYPRESS_RUN_BINARY`, git debug loop): [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## Agent execution\n\nRun from repo root with **Yarn 1** and Node per **`.node-version`**. Request **`network`** for `yarn` / `yarn lerna …`; request **`all`** for `yarn binary-build` and `yarn binary-package` (long runs, temp dir under OS tmp, high memory). Sandbox vs full permissions does **not** fix a failed dist smoke test if **`ELECTRON_RUN_AS_NODE=1`** is set — unset that var instead (below). Do not ask the user to approve each command separately during one build session.\n\n**Prerequisites:** If `node_modules/.bin/lerna` or `rollup` is missing, run **`yarn`** first (postinstall runs the monorepo build; may take several minutes).\n\n**Agent hosts:** Prefix binary commands with **`env -u ELECTRON_RUN_AS_NODE`** (or export `env -u ELECTRON_RUN_AS_NODE` for the shell session). Cursor/Electron environments often set this to `1`, which is unrelated to sandboxing.\n\n## Commands (from repo root)\n\nUse **Yarn 1** and the Node version in `.node-version`.\n\n1. **`yarn binary-build`** — build the Electron app and staging tree (runs broad `lerna` `build` / `build-prod` as part of the pipeline).\n2. **`yarn binary-package`** — package the built binary (electron-builder).\n3. **`yarn binary-zip`** — zip the packaged output.\n\nLinux parity with CI: run `yarn binary-build` and `yarn binary-package` **inside** `yarn docker` if you want the same environment as CI.\n\n### Non-interactive (CI, agents, no TTY)\n\n`scripts/binary/index.js` prompts for missing options via Inquirer. If **`version`** and **`platform`** are already present in argv (parsed with `minimist`), those prompts are skipped.\n\n| Step | Required argv |\n|------|----------------|\n| `binary-build` | `--version <semver>` and `--platform <os>` |\n| `binary-package` | same as build |\n| `binary-zip` | `--platform <os>` only |\n\n**`--platform`:** `darwin` \\| `linux` \\| `win32` (defaults to `os.platform()` when interactive).\n\n**`--version`:** must match what the built app reports from **`node index.js --version`** in the staged `dist/` (via `@packages/root`). On `develop` this is often **not** root `package.json`’s `0.0.0-development` — e.g. a release-style **`15.x.x`** baked into packages. Before a long build, discover it with:\n\n```bash\nenv -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version\n```\n\nOr read stdout from a prior partial build’s `dist/`. A mismatch fails with `different version reported`.\n\n**macOS local example** (skip notarization; Apple Silicon ad-hoc run after pack):\n\n```bash\nexport SKIP_NOTARIZATION=1\nexport RESET_ADHOC_SIGNATURE=1   # arm64 only; harmless to omit on Intel\nexport V8_SNAPSHOT_DISABLE_MINIFY=1   # optional: faster packaging\nBINARY_VERSION=\"$(env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version)\"\nenv -u ELECTRON_RUN_AS_NODE yarn binary-build --version \"$BINARY_VERSION\" --platform darwin\nenv -u ELECTRON_RUN_AS_NODE yarn binary-package --version \"$BINARY_VERSION\" --platform darwin\nyarn binary-zip --platform darwin\n```\n\nYarn 1 forwards extra args to the script; an explicit `--` before flags also works if you prefer it.\n\n## macOS\n\n- Code signing: follow Apple’s code signing setup (see guide link above); [code-signing.md](../../../guides/code-signing.md) for CI-oriented detail.\n- Local builds often skip notarization: set **`SKIP_NOTARIZATION=1`** (notarization needs an Apple Developer Program account).\n\n## Optional environment\n\n| Variable | Effect |\n|----------|--------|\n| `V8_SNAPSHOT_DISABLE_MINIFY=1` | Faster packaging (less minification work). |\n| `RESET_ADHOC_SIGNATURE=1` | **Apple Silicon (M1+)** — often required to run the packaged binary locally after an ad-hoc sign. |\n| `SKIP_NOTARIZATION=1` | Skip macOS notarization for local builds. |\n\n**Unset for binary-build (do not export):** `ELECTRON_RUN_AS_NODE` — see next section.\n\n## Why the repo looks “dirty” afterward\n\nA full binary build drives **`yarn lerna run build`** and **`build-prod`** across packages, writes many **`dist/`** artifacts, uses a **root `build/`** symlink into a temp dir (`scripts/binary/build.ts` → `TMP_BUILD_DIR`), and can leave output **interleaved with source** (**.js` beside `.ts`**, some **`.ts` mutations**). Expect **`git status` to be unusable** until reset.\n\n**Full reset:** `git clean -xfd && yarn` — destroys untracked/ignored files; do not rely on stash here.\n\n**Keeping WIP through a build:** use the commit → build → clean → **`git reset HEAD~1`** loop or a **git worktree** — see [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## `binary-build` dist smoke test and `ELECTRON_RUN_AS_NODE`\n\nAfter Lerna `build` / `build-prod`, `scripts/binary/build.ts` runs **`node index.js --version`** in the staged **`dist/`** tree (`TMP_BUILD_DIR`, e.g. `/tmp/cypress-build/darwin/dist`). `testDistVersion` compares stdout to the **`--version`** argv.\n\n### `Cannot find module 'electron'` (false failure)\n\n**Cause:** Parent shell has **`ELECTRON_RUN_AS_NODE=1`** (common in Cursor/Electron agent hosts). `packages/server/lib/util/electron-app.js` `isRunning()` then returns true, `start-cypress.js` calls **`require('electron')`**, and Node fails — the production **`dist/`** tree does **not** include the `electron` npm package (only the packaged Electron app later).\n\n**Not:** missing `copyAllToDist` / sandbox hiding `node_modules`. Repro: with `ELECTRON_RUN_AS_NODE=1` the staged dist fails; with **`env -u ELECTRON_RUN_AS_NODE`** the same `node …/dist/index.js --version` succeeds.\n\n**Mitigations:**\n\n1. Agents: **`env -u ELECTRON_RUN_AS_NODE yarn binary-build …`** (and package steps).\n2. Repo: `testDistVersion` in `scripts/binary/build.ts` omits **`ELECTRON_RUN_AS_NODE`** from the child `execa` env so builds are stable even when the parent sets it.\n\n### `different version reported`\n\n**Cause:** `--version` argv does not match **`node index.js --version`** from the built dist (version baked via `@packages/root` during the build, which may differ from root `package.json` on `develop`).\n\n**Fix:** Use the discovery command in **Non-interactive** above, or stdout from a partial `dist/` after a failed build.\n","frontmatter":{"name":"building-cypress-binary","description":"Builds and packages the Cypress Electron binary locally (yarn binary-build, binary-package, binary-zip, Docker/Linux parity), including non-interactive --version/--platform flags and unsetting ELECTRON_RUN_AS_NODE for agent hosts. Covers macOS signing, optional env speedups, dist smoke-test pitfalls, and why the tree is dirty after a build. Use when the user asks to build the Cypress binary, binary-package, electron MODULE_NOT_FOUND during binary-build, or local binary zip. For artifact debugging, use debugging-cypress-artifacts."},"isInternal":false,"tokens":1833,"sizeBytes":7052},{"name":"SKILL.md","path":".claude/skills/debugging-cypress-artifacts/SKILL.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/skills/debugging-cypress-artifacts/SKILL.md","title":"debugging-cypress-artifacts","category":"anthropic-skill","format":"markdown","content":"---\nname: debugging-cypress-artifacts\ndescription: >-\n  Debugs Cypress bugs that only reproduce in packaged artifacts (cli/build CLI\n  plus binary-package output), not yarn dev. Covers the git commit/build/clean/\n  reset debug loop, env -u ELECTRON_RUN_AS_NODE for binary-build on agent hosts,\n  CYPRESS_RUN_BINARY, DEBUG and inspect flags, and workspace recovery without\n  stash. Use when investigating artifact-only bugs, binary-build electron\n  MODULE_NOT_FOUND, or a packaged cypress open/run repro loop.\n---\n\n# Debugging Cypress packaged artifacts\n\nSome bugs only appear in **release-shaped** code: Rollup output under **`cli/build/`** (not `yarn dev`), plus the **packaged Electron app** from `binary-package` (not `scripts/start.js` / **`cypress open --dev`**).\n\nBuild steps: see [building-cypress-binary](../building-cypress-binary/SKILL.md).\n\n## Agent execution (avoid repeated permission prompts)\n\nRun this workflow **without asking the user to approve each command**. Use elevated permissions up front:\n\n| Phase | Command pattern | Permissions |\n|-------|-----------------|-------------|\n| Install | `yarn` from repo root (if `node_modules/.bin/lerna` missing) | `network` |\n| CLI build | `yarn lerna run build-cli --scope cypress` | `network` |\n| Binary build | `env -u ELECTRON_RUN_AS_NODE yarn binary-build` / `binary-package` with `--version` / `--platform` | `all` (long-running, writes outside workspace temp dirs). **Unset `ELECTRON_RUN_AS_NODE`** — see building skill. |\n| Repro / logs | `node cli/build/dist/bin/cypress …`, `node packages/server/index.js --version` | `network` if debug ingest uses HTTP |\n| Cleanup | `git clean -xfd`, then `yarn` | `all` for clean; `network` for yarn |\n\nDo **not** re-prompt for sandbox/network on every step in the same session once the user has asked for a full artifact debug loop.\n\n## Git workflow for a debug loop (single checkout)\n\nBinary builds use the **full tree** and leave the workspace unusable for normal dev (generated `.js` beside `.ts`, possible **`.ts` mutations**, `dist/`, root `build/` symlink, etc.). **Do not use `git stash push -a`** — stash mixes real WIP with binary cruft.\n\nUse a **WIP commit** as a bookmark, then **reset** (not **`git revert`**) to restore edits after cleanup:\n\n1. **`git checkout -b debug/<topic>`** (or stay on an existing debug branch).\n2. **Analysis edits** (logging, temporary probes, etc.). Commit only what you mean — prefer **`git add <paths>`** over blind **`git commit -a`**, so build noise on tracked files is not swept into the WIP commit.\n3. **`git commit -m \"wip: debug …\"`** if there are changes worth preserving (see **Husky** below if commit fails).\n4. **Build** packaged CLI and binary (see building skill): `yarn lerna run build-cli --scope cypress`, then **`env -u ELECTRON_RUN_AS_NODE yarn binary-build`** / **`binary-package`** with matching **`--version`** (discover via `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version`) and **`--platform`**.\n5. **Repro** with packaged entrypoints (below).\n6. **Restore workspace:**\n   ```bash\n   git clean -xfd && yarn\n   ```\n   Then either:\n   - **`git reset HEAD~1`** (mixed, default) if step 3 succeeded — WIP commit becomes unstaged changes again; **not `git revert`**.\n   - **`git restore --staged --worktree <paths>`** if there was **no WIP commit** (instrumentation-only files listed in step 2). Remove any temporary helper files (e.g. `packages/server/lib/util/debug-agent-log.js`) with `rm`.\n\n7. Repeat from step 2.\n\n**Rules:** Do not **`git reset HEAD~1`** after pushing that WIP commit unless you intend to rewrite remote history. Untracked files not in the WIP commit are **gone** after `git clean -xfd`. `.claude/*` and `.cursor/*` are gitignored except for a short allowlist (`.claude/skills`, `.claude/settings.json`, `.cursor/BUGBOT.md`, `.cursor/environment.json`, `.cursor/Dockerfile`) — those are tracked and survive `git clean -xfd`; anything else you keep under those directories will not.\n\n**Husky:** If **`git commit`** fails with missing **`.husky/_/husky.sh`**, do not loop on commit. Proceed with staged instrumentation, then restore via **`git restore`** in step 6 (or fix Husky / run `yarn` so hooks install, then commit).\n\n**Alternative:** a **separate git worktree** for binary-only work avoids the commit/reset dance; see the building skill’s reset section.\n\n## Packaged CLI entrypoint\n\nAfter **`yarn lerna run build-cli --scope cypress`**:\n\n```bash\nnode <repo>/cli/build/dist/bin/cypress <command>\n```\n\nRollup emits the instrumented entry at **`cli/build/dist/bin/cypress`**. **`cli/build/bin/cypress`** is a **thin copy** of `cli/bin/cypress` (loads `../dist/cli` via a different path) and is **not** the same as the Rollup bundle — do not use it for artifact or agent-log repro.\n\nPrefer an absolute path when cwd might confuse postinstall-relative logic.\n\n## Point the CLI at your packaged binary\n\n```bash\nexport CYPRESS_RUN_BINARY=/path/to/platform/executable\n```\n\nSet the **real executable** (validated in `cli/lib/tasks/state.ts` via `realpath`), not the `.app` folder alone:\n\n| OS | Example shape |\n|----|----------------|\n| macOS | `…/Cypress.app/Contents/MacOS/Cypress` |\n| Linux | `…/Cypress` (unpacked binary) |\n| win32 | `…/Cypress.exe` |\n\nAlign **CLI package version** with the **binary `--version`** used at build time when possible.\n\n## Log and trace flags\n\n- **`DEBUG=cypress:cli*`** — CLI install, verify, spawn.\n- **`DEBUG=cypress:electron*`** — Electron install/open; CLI spawn also uses `cypress:electron`.\n- **`ELECTRON_ENABLE_LOGGING=1`** — unfiltered Electron stderr (`packages/electron/src/open.ts`).\n- Prefer scoped `DEBUG` patterns over **`DEBUG=cypress:*`**.\n\n## Attach debuggers\n\n- **CLI (Node):** `node --inspect-brk <repo>/cli/build/dist/bin/cypress <command>`\n- **Electron main (packaged):** `node <repo>/cli/build/dist/bin/cypress open --inspect-brk` (or `--inspect`); forwarded in `cli/lib/exec/open.ts` / `run.ts`. Use with **`CYPRESS_RUN_BINARY`** so the debuggee is your local package output.\n\n## Debug-session instrumentation (agents)\n\nWhen using Cursor debug-mode HTTP ingest (`127.0.0.1:7709`, session log under **`.cursor/debug-<session>.log`**):\n\n- **Entry layers** to tag: CLI bin → CLI `init` → CLI `spawn` (only when the binary is spawned, not for `version`) → `packages/server/index.js` (`startCypress`) → `packages/server/start-cypress.js`.\n- **Short-lived CLI:** fire-and-forget `fetch` alone often loses events because the process exits first. Also **`appendFileSync`** the same NDJSON line to the session log path (or a small `debug-agent-log.js` helper on the server side) in addition to `fetch`.\n- **Verify server layers** without a full green binary: `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version` from `packages/server` (exercises index + start-cypress; **unset `ELECTRON_RUN_AS_NODE`** if the agent host sets it).\n- **Verify CLI layers:** `node cli/build/dist/bin/cypress version` (does not hit spawn). CLI bin is unaffected by `ELECTRON_RUN_AS_NODE` for the version subcommand, but binary-build still needs the var unset.\n\n## What to skip\n\n- **`--dev`** on `open` / `run`\n- Assuming **`yarn dev`** matches packaged behavior (`cli/lib/tasks/verify.ts` uses `scripts/start.js` when `dev` is true)\n\n## Common workspace gotcha after `yarn`\n\nIf **`yarn`** / Vite fails on **`urqlSchema`** or **`urqlCacheKeys`** imports from `@packages/data-context`, stale **`packages/data-context/src/**/*.js`** files may be shadowing **`.ts`**. Regenerate (`yarn workspace @packages/data-context build`) and remove **`.js` siblings that have a matching `.ts`** under `packages/data-context/src/` before retrying `yarn`.\n","frontmatter":{"name":"debugging-cypress-artifacts","description":"Debugs Cypress bugs that only reproduce in packaged artifacts (cli/build CLI plus binary-package output), not yarn dev. Covers the git commit/build/clean/ reset debug loop, env -u ELECTRON_RUN_AS_NODE for binary-build on agent hosts, CYPRESS_RUN_BINARY, DEBUG and inspect flags, and workspace recovery without stash. Use when investigating artifact-only bugs, binary-build electron MODULE_NOT_FOUND, or a packaged cypress open/run repro loop."},"isInternal":false,"tokens":2010,"sizeBytes":7727},{"name":"SKILL.md","path":".cursor/skills/server-mocha-to-vitest/SKILL.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.cursor/skills/server-mocha-to-vitest/SKILL.md","title":"server-mocha-to-vitest","category":"anthropic-skill","format":"markdown","content":"---\nname: server-mocha-to-vitest\ndescription: >-\n  Converts one @packages/server unit spec from mocha (test/unit/**/*_spec.ts) to\n  vitest (*.spec.ts) without changing what the test proves. Use when migrating a\n  server unit spec, when a converted spec passes but its mocks may not be\n  intercepting, or when the user mentions spec_helper, mockery, proxyquire,\n  sinon, snap-shot-it, or the mocha/vitest split in packages/server.\n---\n\n# Migrate a `@packages/server` unit spec from mocha to vitest\n\nScope: `packages/server/test/unit` only. Integration and performance suites stay on mocha.\n\nThis skill lists the things that go wrong *silently*: a converted spec that is green while\nits mocks never engaged, or that asserts less than the mocha original did. Plain API\nmapping (`sinon.stub` to `vi.fn`, `context` to `describe`)\nis not covered; you already know it. Parent issue: cypress-io/cypress#34846.\n\n## The contract\n\n- `*_spec.ts` runs on mocha via `test/scripts/run.js`. `*.spec.ts` runs on vitest via\n  `packages/server/vitest.config.ts`. `yarn test-unit` runs both.\n- Convert by `git mv foo_spec.ts foo.spec.ts` and rewriting the file. The mocha file must be\n  gone when you finish. Never leave a file half-converted: every `it` in the original is\n  ported, or the file is not touched at all.\n- The new file imports from `vitest` explicitly and uses nothing else for test plumbing:\n  no `spec_helper`, `mockery`, `proxyquire`, `sinon`, `chai` or its plugins, `snap-shot-it`,\n  `mocked-env`. Keep `nock`, `supertest`, `express`, `lodash`, `bluebird` where the original\n  used them for real work.\n- Never weaken a test: no `.skip`, no dropped or loosened assertion, no `vitest -u` to make a\n  snapshot agree. If a test cannot be made green, leave it failing and say why in the PR.\n- Do not touch `.circleci/`, `vitest.config.ts`, or `cloud/environment_spec.ts`. The last one\n  is named in four CI workflows and migrates in its own human PR.\n- Specs never connect to a non-loopback address. Tests must pass on a sandboxed host.\n\n## `spec_helper.js` is not ported. Inline what the file needs.\n\n`test/spec_helper.js` installs root hooks for the whole mocha process. A mocha spec depends\non them even when it never imports `spec_helper`, because some other spec in the same run\ndid. Under vitest each file is on its own, so read `spec_helper.js` and inline only the\nhooks this file actually relies on:\n\n| Original behavior | Inline as |\n|---|---|\n| `setCtx(makeDataContext({}))` before, `getCtx()._reset()` + `clearCtx()` after | only if the SUT calls `getCtx()`; see the GraphQL note below before using `makeDataContext` |\n| `nock.disableNetConnect()` + `nock.enableNetConnect(/localhost/)` before, `nock.cleanAll()` + `nock.enableNetConnect()` after | any spec that uses `nock`, even when the original had no hooks (`cloud/api/create_instance.spec.ts`) |\n| `cache.remove()` before each | specs touching `lib/cache` |\n| `GracefulExit.resetForTesting()` | specs that start servers; it is a silent no-op unless `globalThis.IS_TEST = true` is set first (`server-base.spec.ts`) |\n| `process.env` cloned and restored after each | specs that set env; `vi.stubEnv` + `vi.unstubAllEnvs()` also works |\n| `mockElectron(mockery)` | `vi.mock('electron', ...)` only if the SUT's import graph reaches `electron`; most do not |\n| `sinon.restore()` after each | `vi.restoreAllMocks()`, with the caveat below |\n\nA spec with no hooks is fine. `automation/commands/key_press.spec.ts` needs none.\n\n## Mocks that load the real module without telling you\n\n**Prove each mock intercepts.** Add a temporary `throw` or call count\nto the factory, run the spec, then remove it. A green run alone proves nothing.\n\n**`vi.mock` specifiers must be the string the importer wrote**, resolved from your spec's\nlocation for relative paths. `vi.mock('../../../../lib/cloud/network/fetch')` from the spec\nmatches the SUT's `import ... from '../network/fetch'` because both resolve to the same file.\nA path that resolves elsewhere is ignored and the real module loads.\n\n**A bare `require()` inside the SUT is never intercepted by `vi.mock`**, with or without\n`server.deps.inline`. vite-node hands transformed modules a plain node `require`, and\nvitest's mocker only hooks ESM imports. Seed the CJS cache instead, which is what mockery did:\n\n```ts\nconst requireCjs = createRequire(import.meta.url)\nconst morganPath = requireCjs.resolve('morgan')\n\nrequireCjs.cache[morganPath] = { exports: morganMockFactory } as NodeModule\n// afterAll / afterEach: delete requireCjs.cache[morganPath]\n```\n\nThe `exports` value is exactly what the SUT's `require()` returns, so a callable\n`module.exports = function` package (`morgan`, the `@cypress/*` preprocessors) is mocked with\nthe function itself. Examples: `plugins/child/run_plugins.spec.ts`, `server-base.spec.ts`.\n\n**Partial mocks of node builtins must override `default` too.** A SUT that does\n`import fs from 'fs'` reads `fs.createReadStream` off the default export. Spread the actual\nmodule into both the named exports and a rebuilt `default`, or the real function runs:\n\n```ts\nvi.mock('fs', async (importOriginal) => {\n  const actual = await importOriginal<typeof import('fs')>()\n\n  return { ...actual, createReadStream: stub, default: { ...actual, createReadStream: stub } }\n})\n```\n\nExample: `cloud/api/put_protocol_artifact.spec.ts`.\n\n**A two-hop `proxyquire` chain usually collapses to one `vi.mock` of the leaf.** The second\nhop existed because proxyquire cannot reach a transitive dependency. `vi.mock` applies to the\nwhole module graph, so mock `chrome-remote-interface` once with `vi.hoisted` state and import\nthe SUT statically. Only reach for `vi.resetModules()` plus a dynamic import when the SUT\nholds module-level mutable state that mocha reset by re-requiring. Example:\n`browsers/cri-client.spec.ts`.\n\n**`vi.spyOn` on an ESM namespace import does work** for `lib/*.ts` modules, because vite's\nSSR transform rewrites named imports to live property reads. `vi.spyOn(ensureUrl, 'isListening')`\npatches what `server-base.ts` sees. It keeps the real implementation unless you add\n`.mockImplementation`, which `sinon.stub` did not.\n\n## Assertions that flip meaning\n\n**chai `deep.equal` is `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose value is\n`undefined`, so an expected `{ envUrl: undefined }` also matches an object with no `envUrl` key,\nwhich chai rejects (`cloud/environment.spec.ts`).\n\n**sinon `calledWith` is a prefix match. vitest `toHaveBeenCalledWith` is exact-arity.**\n`client.send('Network.enable', opts, sessionId)` satisfies `calledWith('Network.enable')` but\nfails `toHaveBeenCalledWith('Network.enable')`. Worse, `not.toHaveBeenCalledWith('Fetch.disable')`\npasses vacuously against a 3-argument call. Either assert the full argument list or filter\n`mock.calls` by leading arguments. Examples: `expectCalledWith` in `browsers/cri-client.spec.ts`,\n`callsFor` in `server-base.spec.ts`.\n\n**chai `deep.equal` / `eql` maps to `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose\nvalue is `undefined`, which chai does not. `toStrictEqual` is stricter than chai mainly about\nprototypes: Node's header objects have a null prototype, so spread them into a plain object\nbefore asserting (`request.spec.ts`).\n\n**`sinon.stub().withArgs(x)` returns the filtered stub.** When the original assigned that return\nvalue, the \"filter\" never gated anything and the stub answered every call. Porting it as an\nargument-conditional mock returns `undefined` for the real calls. Read what the mocha stub\nactually did before translating it.\n\n**`vi.restoreAllMocks()` wipes `vi.fn().mockReturnValue(...)`.** `sinon.restore()` left\n`.returns()` behavior on plain stubs alone. Shared fixtures need `vi.fn(() => value)` so the\nimplementation survives restore.\n\n**Bluebird.** Server code still chains `.return()`, `.spread()`, `.tap()` on values it awaits.\nWhere the SUT chains Bluebird methods on a mocked return, `mockResolvedValue` hands back a\nnative promise and the SUT throws a confusing `not a function`. Return `Bluebird.resolve(...)`\nfrom that mock. Check the current SUT first; many call sites are plain `await` now and native\npromises are fine (`ensureUrl.isListening` in `server-base.ts` is one).\n\n**The transpiler is visible in stringified functions.** A test that asserts on\n`fn.toString()` of a handler defined in the spec reads esbuild's output under vitest, not\nts-node's. Keep the assertion exact and update the literal; do not normalize it away.\n\n**Decomposed Unicode literals get normalized by editors.** `'é'` as `e` + U+0301 becomes\nU+00E9 on save. Byte-compare string literals against `git show HEAD:<mocha file>` when a spec\ncontains combining characters (`automation/commands/key_press.spec.ts`).\n\n## GraphQL, nock, timers\n\n**Importing `lib/server-base`, `lib/routes`, or `lib/makeDataContext` builds the GraphQL\nschema a second time** in the worker and `graphql` rejects the duplicate realm. Mock\n`@packages/data-context/graphql/makeGraphQLServer` with `graphqlWS` and `graphQLHTTP` stubs.\nMocking that alone is not enough if you also call `makeDataContext`; use a minimal\n`DataContext` object carrying only the members the SUT touches (`routes.spec.ts`).\n\n**nock `delayConnection` with one large `advanceTimersByTimeAsync`** fires the delayed\nconnection before the request timeout and consumes the wrong interceptor. Use\n`vi.runAllTimersAsync()` in rounds or step the clock in small increments. Also note that\nchaining `delayConnection(5000)` then `delayConnection(0)` on the same interceptor mutates one\nobject, so both replies get delay 0; port that verbatim rather than \"fixing\" it.\n\n**Fake timers:** `vi.useFakeTimers()` / `vi.useRealTimers()` in hooks. `clock.tickAsync(n)`\nbecomes `await vi.advanceTimersByTimeAsync(n)`. A non-async helper that the original `await`ed\nmust stay non-async, or you add a microtask and change what mid-flight assertions observe.\n\n## Source edits for testability\n\nAllowed only when obvious on sight: an optional parameter with a default that preserves\nbehavior, exporting a function that already exists, extracting an inline expression into a\nnamed pure function in the same file. Not allowed: changing control flow, changing a signature\ncallers depend on, touching more than one `lib/` file per batch, or anything you cannot justify\nin one sentence. Every source edit gets its own heading in the PR body. When in doubt, skip the\nspec; it stays in the pool.\n\n## Verify\n\n```bash\nyarn workspace @packages/server test-unit-vitest -- test/unit/<dir>/foo.spec.ts\nyarn workspace @packages/server test-unit          # both runners, from a real terminal\nyarn lint --scope @packages/server\nyarn workspace @packages/server check-ts\n```\n\nRun the converted spec at least twice. Run `test-unit` from a terminal, not with stdout piped\nto a file: `util/tty_spec` needs `process.stdout.getWindowSize`, which only exists on a TTY,\nand fails on develop too when piped. Count `it(` in the mocha original and in the vitest file;\nthey must match (loops that generate tests expand at runtime, so compare the static count).\n\n## Style\n\nSingle quotes, no semicolons, 2-space indent, trailing commas, blank line before `return`,\n`import type` for type-only imports, no `console`. Prefer no comment; when one is needed, say\nwhy in one or two lines and describe the present code, never how it used to work.\n","frontmatter":{"name":"server-mocha-to-vitest","description":"Converts one @packages/server unit spec from mocha (test/unit/**/*_spec.ts) to vitest (*.spec.ts) without changing what the test proves. Use when migrating a server unit spec, when a converted spec passes but its mocks may not be intercepting, or when the user mentions spec_helper, mockery, proxyquire, sinon, snap-shot-it, or the mocha/vitest split in packages/server."},"isInternal":false,"tokens":2796,"sizeBytes":11367},{"name":"AGENTS.md","path":"packages/agent-info/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/AGENTS.md","title":"Agent-info Skill","category":"anthropic-skill","format":"markdown","content":"# Agent-info Skill\n\nPath: `packages/agent-info/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/AGENTS.md)","tokens":300,"sizeBytes":176},{"name":"CLAUDE.md","path":"packages/agent-info/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/CLAUDE.md","title":"Agent-info Skill","category":"anthropic-skill","format":"markdown","content":"# Agent-info Skill\n\nPath: `packages/agent-info/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/CLAUDE.md)","tokens":300,"sizeBytes":176},{"name":"package.json","path":"packages/agent-info/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/package.json","title":"Agent-info Skill","category":"anthropic-skill","format":"json","content":"# Agent-info Skill\n\nPath: `packages/agent-info/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/package.json)","tokens":300,"sizeBytes":182},{"name":"tsconfig.json","path":"packages/agent-info/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/tsconfig.json","title":"Agent-info Skill","category":"anthropic-skill","format":"json","content":"# Agent-info Skill\n\nPath: `packages/agent-info/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/tsconfig.json)","tokens":300,"sizeBytes":184},{"name":".eslintrc.json","path":"packages/app/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/.eslintrc.json","title":"App Skill","category":"anthropic-skill","format":"json","content":"# App Skill\n\nPath: `packages/app/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/.eslintrc.json)","tokens":300,"sizeBytes":165},{"name":"AGENTS.md","path":"packages/app/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/AGENTS.md","title":"App Skill","category":"anthropic-skill","format":"markdown","content":"# App Skill\n\nPath: `packages/app/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/AGENTS.md)","tokens":300,"sizeBytes":155},{"name":"CLAUDE.md","path":"packages/app/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/CLAUDE.md","title":"App Skill","category":"anthropic-skill","format":"markdown","content":"# App Skill\n\nPath: `packages/app/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/CLAUDE.md)","tokens":300,"sizeBytes":155},{"name":"retries.experimentalRetries.mochaEvents.cy.ts.json","path":"packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json","title":"Snapshots Skill","category":"anthropic-skill","format":"json","content":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json)","tokens":300,"sizeBytes":301},{"name":"retries.mochaEvents.cy.ts.json","path":"packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json","title":"Snapshots Skill","category":"anthropic-skill","format":"json","content":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json)","tokens":300,"sizeBytes":261},{"name":"runner.experimentalRetries.mochaEvents.cy.ts.json","path":"packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json","title":"Snapshots Skill","category":"anthropic-skill","format":"json","content":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json)","tokens":300,"sizeBytes":299},{"name":"runner.mochaEvents.cy.ts.json","path":"packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json","title":"Snapshots Skill","category":"anthropic-skill","format":"json","content":"# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json)","tokens":300,"sizeBytes":259},{"name":"gql-Debug.json","path":"packages/app/cypress/fixtures/debug-Failing/gql-Debug.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Failing/gql-Debug.json","title":"Debug-Failing Skill","category":"anthropic-skill","format":"json","content":"# Debug-Failing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Failing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Failing/gql-Debug.json)","tokens":300,"sizeBytes":237},{"name":"gql-Debug.json","path":"packages/app/cypress/fixtures/debug-Passing/gql-Debug.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Passing/gql-Debug.json","title":"Debug-Passing Skill","category":"anthropic-skill","format":"json","content":"# Debug-Passing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Passing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Passing/gql-Debug.json)","tokens":300,"sizeBytes":237},{"name":"FileChooser.json","path":"packages/app/cypress/fixtures/FileChooser.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileChooser.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/FileChooser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileChooser.json)","tokens":300,"sizeBytes":208},{"name":"FileList.json","path":"packages/app/cypress/fixtures/FileList.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileList.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/FileList.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileList.json)","tokens":300,"sizeBytes":202},{"name":"found-specs.json","path":"packages/app/cypress/fixtures/found-specs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/found-specs.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/found-specs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/found-specs.json)","tokens":300,"sizeBytes":208},{"name":"GeneratorSuccess.json","path":"packages/app/cypress/fixtures/GeneratorSuccess.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/GeneratorSuccess.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/GeneratorSuccess.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/GeneratorSuccess.json)","tokens":300,"sizeBytes":218},{"name":"gql-RelevantRunsDataSource_RunsByCommitShas.json","path":"packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/gql-RelevantRunsDataSource_RunsByCommitShas.json)","tokens":300,"sizeBytes":272},{"name":"package.json","path":"packages/app/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/package.json","title":"App Skill","category":"anthropic-skill","format":"json","content":"# App Skill\n\nPath: `packages/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/package.json)","tokens":300,"sizeBytes":161},{"name":"gql-DebugRunDetailedView.json","path":"packages/app/src/debug/gql-DebugRunDetailedView.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/debug/gql-DebugRunDetailedView.json","title":"Debug Skill","category":"anthropic-skill","format":"json","content":"# Debug Skill\n\nPath: `packages/app/src/debug/gql-DebugRunDetailedView.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/debug/gql-DebugRunDetailedView.json)","tokens":300,"sizeBytes":217},{"name":"AGENTS.md","path":"packages/app/src/tap/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/AGENTS.md","title":"Tap Skill","category":"anthropic-skill","format":"markdown","content":"# Tap Skill\n\nPath: `packages/app/src/tap/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/AGENTS.md)","tokens":300,"sizeBytes":171},{"name":"CLAUDE.md","path":"packages/app/src/tap/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/CLAUDE.md","title":"Tap Skill","category":"anthropic-skill","format":"markdown","content":"# Tap Skill\n\nPath: `packages/app/src/tap/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/tap/CLAUDE.md)","tokens":300,"sizeBytes":171},{"name":"tsconfig.json","path":"packages/app/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/tsconfig.json","title":"App Skill","category":"anthropic-skill","format":"json","content":"# App Skill\n\nPath: `packages/app/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/tsconfig.json)","tokens":300,"sizeBytes":163},{"name":"AGENTS.md","path":"packages/config/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/AGENTS.md","title":"Config Skill","category":"anthropic-skill","format":"markdown","content":"# Config Skill\n\nPath: `packages/config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/AGENTS.md)","tokens":300,"sizeBytes":164},{"name":"CLAUDE.md","path":"packages/config/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/CLAUDE.md","title":"Config Skill","category":"anthropic-skill","format":"markdown","content":"# Config Skill\n\nPath: `packages/config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/CLAUDE.md)","tokens":300,"sizeBytes":164},{"name":"package.json","path":"packages/config/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/package.json","title":"Config Skill","category":"anthropic-skill","format":"json","content":"# Config Skill\n\nPath: `packages/config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/package.json)","tokens":300,"sizeBytes":170},{"name":"tsconfig.cjs.json","path":"packages/config/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.cjs.json","title":"Config Skill","category":"anthropic-skill","format":"json","content":"# Config Skill\n\nPath: `packages/config/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.cjs.json)","tokens":300,"sizeBytes":180},{"name":"tsconfig.esm.json","path":"packages/config/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.esm.json","title":"Config Skill","category":"anthropic-skill","format":"json","content":"# Config Skill\n\nPath: `packages/config/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.esm.json)","tokens":300,"sizeBytes":180},{"name":"tsconfig.json","path":"packages/config/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.json","title":"Config Skill","category":"anthropic-skill","format":"json","content":"# Config Skill\n\nPath: `packages/config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"AGENTS.md","path":"packages/cypress-sessions/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/AGENTS.md","title":"Cypress-sessions Skill","category":"anthropic-skill","format":"markdown","content":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/AGENTS.md)","tokens":300,"sizeBytes":194},{"name":"CLAUDE.md","path":"packages/cypress-sessions/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/CLAUDE.md","title":"Cypress-sessions Skill","category":"anthropic-skill","format":"markdown","content":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/CLAUDE.md)","tokens":300,"sizeBytes":194},{"name":"package.json","path":"packages/cypress-sessions/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/package.json","title":"Cypress-sessions Skill","category":"anthropic-skill","format":"json","content":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/package.json)","tokens":300,"sizeBytes":200},{"name":"tsconfig.json","path":"packages/cypress-sessions/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/tsconfig.json","title":"Cypress-sessions Skill","category":"anthropic-skill","format":"json","content":"# Cypress-sessions Skill\n\nPath: `packages/cypress-sessions/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/cypress-sessions/tsconfig.json)","tokens":300,"sizeBytes":202},{"name":"AGENTS.md","path":"packages/data-context/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/AGENTS.md","title":"Data-context Skill","category":"anthropic-skill","format":"markdown","content":"# Data-context Skill\n\nPath: `packages/data-context/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/AGENTS.md)","tokens":300,"sizeBytes":182},{"name":"CLAUDE.md","path":"packages/data-context/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/CLAUDE.md","title":"Data-context Skill","category":"anthropic-skill","format":"markdown","content":"# Data-context Skill\n\nPath: `packages/data-context/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/CLAUDE.md)","tokens":300,"sizeBytes":182},{"name":"package.json","path":"packages/data-context/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/package.json","title":"Data-context Skill","category":"anthropic-skill","format":"json","content":"# Data-context Skill\n\nPath: `packages/data-context/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/package.json)","tokens":300,"sizeBytes":188},{"name":"Hello.md","path":"packages/data-context/src/codegen/templates/test/nested/Hello.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/src/codegen/templates/test/nested/Hello.md","title":"Nested Skill","category":"anthropic-skill","format":"markdown","content":"# Nested Skill\n\nPath: `packages/data-context/src/codegen/templates/test/nested/Hello.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/src/codegen/templates/test/nested/Hello.md)","tokens":300,"sizeBytes":242},{"name":"Hello.md","path":"packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md","title":"Nested Skill","category":"anthropic-skill","format":"markdown","content":"# Nested Skill\n\nPath: `packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/test/unit/codegen/files/template-test/nested/Hello.md)","tokens":300,"sizeBytes":264},{"name":"tsconfig.json","path":"packages/data-context/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.json","title":"Data-context Skill","category":"anthropic-skill","format":"json","content":"# Data-context Skill\n\nPath: `packages/data-context/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.json)","tokens":300,"sizeBytes":190},{"name":"tsconfig.test.json","path":"packages/data-context/tsconfig.test.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.test.json","title":"Data-context Skill","category":"anthropic-skill","format":"json","content":"# Data-context Skill\n\nPath: `packages/data-context/tsconfig.test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/tsconfig.test.json)","tokens":300,"sizeBytes":200},{"name":"AGENTS.md","path":"packages/driver/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/AGENTS.md","title":"Driver Skill","category":"anthropic-skill","format":"markdown","content":"# Driver Skill\n\nPath: `packages/driver/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/AGENTS.md)","tokens":300,"sizeBytes":164},{"name":"CLAUDE.md","path":"packages/driver/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/CLAUDE.md","title":"Driver Skill","category":"anthropic-skill","format":"markdown","content":"# Driver Skill\n\nPath: `packages/driver/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/CLAUDE.md)","tokens":300,"sizeBytes":164},{"name":"cross-origin-testing.md","path":"packages/driver/cross-origin-testing.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cross-origin-testing.md","title":"Driver Skill","category":"anthropic-skill","format":"markdown","content":"# Driver Skill\n\nPath: `packages/driver/cross-origin-testing.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cross-origin-testing.md)","tokens":300,"sizeBytes":192},{"name":".eslintrc.json","path":"packages/driver/cypress/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/.eslintrc.json","title":"Cypress Skill","category":"anthropic-skill","format":"json","content":"# Cypress Skill\n\nPath: `packages/driver/cypress/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/.eslintrc.json)","tokens":300,"sizeBytes":191},{"name":"app.json","path":"packages/driver/cypress/fixtures/app.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/app.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/app.json)","tokens":300,"sizeBytes":198},{"name":"boolean.json","path":"packages/driver/cypress/fixtures/boolean.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/boolean.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/boolean.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/boolean.json)","tokens":300,"sizeBytes":206},{"name":"example.json","path":"packages/driver/cypress/fixtures/example.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/example.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/example.json)","tokens":300,"sizeBytes":206},{"name":"fileSpec.json","path":"packages/driver/cypress/fixtures/fileSpec.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/fileSpec.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/fileSpec.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/fileSpec.json)","tokens":300,"sizeBytes":208},{"name":"foo.bar.baz.json","path":"packages/driver/cypress/fixtures/foo.bar.baz.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/foo.bar.baz.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/foo.bar.baz.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/foo.bar.baz.json)","tokens":300,"sizeBytes":214},{"name":"invalid.json","path":"packages/driver/cypress/fixtures/invalid.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/invalid.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/invalid.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/invalid.json)","tokens":300,"sizeBytes":206},{"name":"null.json","path":"packages/driver/cypress/fixtures/null.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/null.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/null.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/null.json)","tokens":300,"sizeBytes":200},{"name":"number.json","path":"packages/driver/cypress/fixtures/number.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/number.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/number.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/number.json)","tokens":300,"sizeBytes":204},{"name":"valid.json","path":"packages/driver/cypress/fixtures/valid.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/valid.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/valid.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/valid.json)","tokens":300,"sizeBytes":202},{"name":"yaml.yaml","path":"packages/driver/cypress/fixtures/yaml.yaml","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/yaml.yaml","title":"Fixtures Skill","category":"anthropic-skill","format":"yaml","content":"# Fixtures Skill\n\nPath: `packages/driver/cypress/fixtures/yaml.yaml`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/fixtures/yaml.yaml)","tokens":300,"sizeBytes":200},{"name":"tsconfig.json","path":"packages/driver/cypress/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/tsconfig.json","title":"Cypress Skill","category":"anthropic-skill","format":"json","content":"# Cypress Skill\n\nPath: `packages/driver/cypress/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/cypress/tsconfig.json)","tokens":300,"sizeBytes":189},{"name":"package.json","path":"packages/driver/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/package.json","title":"Driver Skill","category":"anthropic-skill","format":"json","content":"# Driver Skill\n\nPath: `packages/driver/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/package.json)","tokens":300,"sizeBytes":170},{"name":"errorScenarios.md","path":"packages/driver/src/cypress/errorScenarios.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/cypress/errorScenarios.md","title":"Cypress Skill","category":"anthropic-skill","format":"markdown","content":"# Cypress Skill\n\nPath: `packages/driver/src/cypress/errorScenarios.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/cypress/errorScenarios.md)","tokens":300,"sizeBytes":205},{"name":"getInvocationDetails_spec_stackframes.json","path":"packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json","title":"__fixtures__ Skill","category":"anthropic-skill","format":"json","content":"# __fixtures__ Skill\n\nPath: `packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getInvocationDetails_spec_stackframes.json)","tokens":300,"sizeBytes":298},{"name":"getUserInvocationStack_stackFrames.json","path":"packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json","title":"__fixtures__ Skill","category":"anthropic-skill","format":"json","content":"# __fixtures__ Skill\n\nPath: `packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/test/unit/cypress/__fixtures__/getUserInvocationStack_stackFrames.json)","tokens":300,"sizeBytes":292},{"name":"tsconfig.json","path":"packages/driver/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/tsconfig.json","title":"Driver Skill","category":"anthropic-skill","format":"json","content":"# Driver Skill\n\nPath: `packages/driver/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"AGENTS.md","path":"packages/electron/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/AGENTS.md","title":"Electron Skill","category":"anthropic-skill","format":"markdown","content":"# Electron Skill\n\nPath: `packages/electron/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/AGENTS.md)","tokens":300,"sizeBytes":170},{"name":"package.json","path":"packages/electron/app/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/app/package.json","title":"App Skill","category":"anthropic-skill","format":"json","content":"# App Skill\n\nPath: `packages/electron/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/app/package.json)","tokens":300,"sizeBytes":179},{"name":"CLAUDE.md","path":"packages/electron/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/CLAUDE.md","title":"Electron Skill","category":"anthropic-skill","format":"markdown","content":"# Electron Skill\n\nPath: `packages/electron/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/CLAUDE.md)","tokens":300,"sizeBytes":170},{"name":"package.json","path":"packages/electron/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/package.json","title":"Electron Skill","category":"anthropic-skill","format":"json","content":"# Electron Skill\n\nPath: `packages/electron/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/package.json)","tokens":300,"sizeBytes":176},{"name":"tsconfig.base.json","path":"packages/electron/tsconfig.base.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.base.json","title":"Electron Skill","category":"anthropic-skill","format":"json","content":"# Electron Skill\n\nPath: `packages/electron/tsconfig.base.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.base.json)","tokens":300,"sizeBytes":188},{"name":"tsconfig.cjs.json","path":"packages/electron/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.cjs.json","title":"Electron Skill","category":"anthropic-skill","format":"json","content":"# Electron Skill\n\nPath: `packages/electron/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.cjs.json)","tokens":300,"sizeBytes":186},{"name":"tsconfig.esm.json","path":"packages/electron/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.esm.json","title":"Electron Skill","category":"anthropic-skill","format":"json","content":"# Electron Skill\n\nPath: `packages/electron/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.esm.json)","tokens":300,"sizeBytes":186},{"name":"tsconfig.json","path":"packages/electron/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.json","title":"Electron Skill","category":"anthropic-skill","format":"json","content":"# Electron Skill\n\nPath: `packages/electron/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":"AGENTS.md","path":"packages/errors/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/AGENTS.md","title":"Errors Skill","category":"anthropic-skill","format":"markdown","content":"# Errors Skill\n\nPath: `packages/errors/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/AGENTS.md)","tokens":300,"sizeBytes":164},{"name":"CLAUDE.md","path":"packages/errors/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/CLAUDE.md","title":"Errors Skill","category":"anthropic-skill","format":"markdown","content":"# Errors Skill\n\nPath: `packages/errors/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/CLAUDE.md)","tokens":300,"sizeBytes":164},{"name":"package.json","path":"packages/errors/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/package.json","title":"Errors Skill","category":"anthropic-skill","format":"json","content":"# Errors Skill\n\nPath: `packages/errors/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/package.json)","tokens":300,"sizeBytes":170},{"name":"tsconfig.cjs.json","path":"packages/errors/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.cjs.json","title":"Errors Skill","category":"anthropic-skill","format":"json","content":"# Errors Skill\n\nPath: `packages/errors/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.cjs.json)","tokens":300,"sizeBytes":180},{"name":"tsconfig.esm.json","path":"packages/errors/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.esm.json","title":"Errors Skill","category":"anthropic-skill","format":"json","content":"# Errors Skill\n\nPath: `packages/errors/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.esm.json)","tokens":300,"sizeBytes":180},{"name":"tsconfig.json","path":"packages/errors/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.json","title":"Errors Skill","category":"anthropic-skill","format":"json","content":"# Errors Skill\n\nPath: `packages/errors/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"AGENTS.md","path":"packages/eslint-config/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/AGENTS.md","title":"Eslint-config Skill","category":"anthropic-skill","format":"markdown","content":"# Eslint-config Skill\n\nPath: `packages/eslint-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/AGENTS.md)","tokens":300,"sizeBytes":185},{"name":"CLAUDE.md","path":"packages/eslint-config/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/CLAUDE.md","title":"Eslint-config Skill","category":"anthropic-skill","format":"markdown","content":"# Eslint-config Skill\n\nPath: `packages/eslint-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/CLAUDE.md)","tokens":300,"sizeBytes":185},{"name":"package.json","path":"packages/eslint-config/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/package.json","title":"Eslint-config Skill","category":"anthropic-skill","format":"json","content":"# Eslint-config Skill\n\nPath: `packages/eslint-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/package.json)","tokens":300,"sizeBytes":191},{"name":"tsconfig.json","path":"packages/eslint-config/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/tsconfig.json","title":"Eslint-config Skill","category":"anthropic-skill","format":"json","content":"# Eslint-config Skill\n\nPath: `packages/eslint-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/tsconfig.json)","tokens":300,"sizeBytes":193},{"name":"AGENTS.md","path":"packages/example/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/AGENTS.md","title":"Example Skill","category":"anthropic-skill","format":"markdown","content":"# Example Skill\n\nPath: `packages/example/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/AGENTS.md)","tokens":300,"sizeBytes":167},{"name":"CLAUDE.md","path":"packages/example/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/CLAUDE.md","title":"Example Skill","category":"anthropic-skill","format":"markdown","content":"# Example Skill\n\nPath: `packages/example/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/CLAUDE.md)","tokens":300,"sizeBytes":167},{"name":"package.json","path":"packages/example/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/package.json","title":"Example Skill","category":"anthropic-skill","format":"json","content":"# Example Skill\n\nPath: `packages/example/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/package.json)","tokens":300,"sizeBytes":173},{"name":"tsconfig.json","path":"packages/example/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.json","title":"Example Skill","category":"anthropic-skill","format":"json","content":"# Example Skill\n\nPath: `packages/example/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.json)","tokens":300,"sizeBytes":175},{"name":"tsconfig.prod.json","path":"packages/example/tsconfig.prod.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.prod.json","title":"Example Skill","category":"anthropic-skill","format":"json","content":"# Example Skill\n\nPath: `packages/example/tsconfig.prod.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/tsconfig.prod.json)","tokens":300,"sizeBytes":185},{"name":"AGENTS.md","path":"packages/extension/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/AGENTS.md","title":"Extension Skill","category":"anthropic-skill","format":"markdown","content":"# Extension Skill\n\nPath: `packages/extension/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/AGENTS.md)","tokens":300,"sizeBytes":173},{"name":"manifest.json","path":"packages/extension/app/v2/manifest.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v2/manifest.json","title":"V2 Skill","category":"anthropic-skill","format":"json","content":"# V2 Skill\n\nPath: `packages/extension/app/v2/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v2/manifest.json)","tokens":300,"sizeBytes":188},{"name":"manifest.json","path":"packages/extension/app/v3/manifest.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v3/manifest.json","title":"V3 Skill","category":"anthropic-skill","format":"json","content":"# V3 Skill\n\nPath: `packages/extension/app/v3/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/app/v3/manifest.json)","tokens":300,"sizeBytes":188},{"name":"CLAUDE.md","path":"packages/extension/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/CLAUDE.md","title":"Extension Skill","category":"anthropic-skill","format":"markdown","content":"# Extension Skill\n\nPath: `packages/extension/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/CLAUDE.md)","tokens":300,"sizeBytes":173},{"name":"package.json","path":"packages/extension/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/package.json","title":"Extension Skill","category":"anthropic-skill","format":"json","content":"# Extension Skill\n\nPath: `packages/extension/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/package.json)","tokens":300,"sizeBytes":179},{"name":".eslintrc.json","path":"packages/extension/test/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/test/.eslintrc.json","title":"Test Skill","category":"anthropic-skill","format":"json","content":"# Test Skill\n\nPath: `packages/extension/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/test/.eslintrc.json)","tokens":300,"sizeBytes":188},{"name":"manifest.json","path":"packages/extension/theme/manifest.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/theme/manifest.json","title":"Theme Skill","category":"anthropic-skill","format":"json","content":"# Theme Skill\n\nPath: `packages/extension/theme/manifest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/theme/manifest.json)","tokens":300,"sizeBytes":189},{"name":"tsconfig.app.v2.json","path":"packages/extension/tsconfig.app.v2.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v2.json","title":"Extension Skill","category":"anthropic-skill","format":"json","content":"# Extension Skill\n\nPath: `packages/extension/tsconfig.app.v2.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v2.json)","tokens":300,"sizeBytes":195},{"name":"tsconfig.app.v3.json","path":"packages/extension/tsconfig.app.v3.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v3.json","title":"Extension Skill","category":"anthropic-skill","format":"json","content":"# Extension Skill\n\nPath: `packages/extension/tsconfig.app.v3.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.app.v3.json)","tokens":300,"sizeBytes":195},{"name":"tsconfig.json","path":"packages/extension/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.json","title":"Extension Skill","category":"anthropic-skill","format":"json","content":"# Extension Skill\n\nPath: `packages/extension/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.json)","tokens":300,"sizeBytes":181},{"name":"tsconfig.lib.json","path":"packages/extension/tsconfig.lib.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.lib.json","title":"Extension Skill","category":"anthropic-skill","format":"json","content":"# Extension Skill\n\nPath: `packages/extension/tsconfig.lib.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/tsconfig.lib.json)","tokens":300,"sizeBytes":189},{"name":".eslintrc.json","path":"packages/frontend-shared/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/.eslintrc.json","title":"Frontend-shared Skill","category":"anthropic-skill","format":"json","content":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/.eslintrc.json)","tokens":300,"sizeBytes":201},{"name":"AGENTS.md","path":"packages/frontend-shared/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/AGENTS.md","title":"Frontend-shared Skill","category":"anthropic-skill","format":"markdown","content":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/AGENTS.md)","tokens":300,"sizeBytes":191},{"name":"CLAUDE.md","path":"packages/frontend-shared/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/CLAUDE.md","title":"Frontend-shared Skill","category":"anthropic-skill","format":"markdown","content":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/CLAUDE.md)","tokens":300,"sizeBytes":191},{"name":"config.json","path":"packages/frontend-shared/cypress/fixtures/config.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/config.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/config.json)","tokens":300,"sizeBytes":222},{"name":"example.json","path":"packages/frontend-shared/cypress/fixtures/example.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/example.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/example.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/example.json)","tokens":300,"sizeBytes":224},{"name":"TestCurrentProject.json","path":"packages/frontend-shared/cypress/fixtures/TestCurrentProject.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/TestCurrentProject.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/frontend-shared/cypress/fixtures/TestCurrentProject.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/cypress/fixtures/TestCurrentProject.json)","tokens":300,"sizeBytes":246},{"name":"package.json","path":"packages/frontend-shared/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/package.json","title":"Frontend-shared Skill","category":"anthropic-skill","format":"json","content":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/package.json)","tokens":300,"sizeBytes":197},{"name":"en-US.json","path":"packages/frontend-shared/src/locales/en-US.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/locales/en-US.json","title":"Locales Skill","category":"anthropic-skill","format":"json","content":"# Locales Skill\n\nPath: `packages/frontend-shared/src/locales/en-US.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/locales/en-US.json)","tokens":300,"sizeBytes":209},{"name":"css.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/css.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/css.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/css.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/css.tmLanguage.json)","tokens":300,"sizeBytes":245},{"name":"html.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/html.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/html.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/html.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/html.tmLanguage.json)","tokens":300,"sizeBytes":247},{"name":"javascript.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/javascript.tmLanguage.json)","tokens":300,"sizeBytes":259},{"name":"json.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/json.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/json.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/json.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/json.tmLanguage.json)","tokens":300,"sizeBytes":247},{"name":"jsonc.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsonc.tmLanguage.json)","tokens":300,"sizeBytes":249},{"name":"jsx.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/jsx.tmLanguage.json)","tokens":300,"sizeBytes":245},{"name":"tsx.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/tsx.tmLanguage.json)","tokens":300,"sizeBytes":245},{"name":"typescript.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/typescript.tmLanguage.json)","tokens":300,"sizeBytes":259},{"name":"vue-html.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue-html.tmLanguage.json)","tokens":300,"sizeBytes":255},{"name":"vue.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/vue.tmLanguage.json)","tokens":300,"sizeBytes":245},{"name":"yaml.tmLanguage.json","path":"packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json","title":"Languages Skill","category":"anthropic-skill","format":"json","content":"# Languages Skill\n\nPath: `packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/languages/yaml.tmLanguage.json)","tokens":300,"sizeBytes":247},{"name":"cypress.theme.template.json","path":"packages/frontend-shared/src/shiki/themes/cypress.theme.template.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/cypress.theme.template.json","title":"Themes Skill","category":"anthropic-skill","format":"json","content":"# Themes Skill\n\nPath: `packages/frontend-shared/src/shiki/themes/cypress.theme.template.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/cypress.theme.template.json)","tokens":300,"sizeBytes":252},{"name":"tsconfig.json","path":"packages/frontend-shared/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/tsconfig.json","title":"Frontend-shared Skill","category":"anthropic-skill","format":"json","content":"# Frontend-shared Skill\n\nPath: `packages/frontend-shared/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/tsconfig.json)","tokens":300,"sizeBytes":199},{"name":"AGENTS.md","path":"packages/https-proxy/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/AGENTS.md","title":"Https-proxy Skill","category":"anthropic-skill","format":"markdown","content":"# Https-proxy Skill\n\nPath: `packages/https-proxy/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/AGENTS.md)","tokens":300,"sizeBytes":179},{"name":"CLAUDE.md","path":"packages/https-proxy/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/CLAUDE.md","title":"Https-proxy Skill","category":"anthropic-skill","format":"markdown","content":"# Https-proxy Skill\n\nPath: `packages/https-proxy/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/CLAUDE.md)","tokens":300,"sizeBytes":179},{"name":"package.json","path":"packages/https-proxy/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/package.json","title":"Https-proxy Skill","category":"anthropic-skill","format":"json","content":"# Https-proxy Skill\n\nPath: `packages/https-proxy/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/package.json)","tokens":300,"sizeBytes":185},{"name":".eslintrc.json","path":"packages/https-proxy/test/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/test/.eslintrc.json","title":"Test Skill","category":"anthropic-skill","format":"json","content":"# Test Skill\n\nPath: `packages/https-proxy/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/test/.eslintrc.json)","tokens":300,"sizeBytes":192},{"name":"tsconfig.cjs.json","path":"packages/https-proxy/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.cjs.json","title":"Https-proxy Skill","category":"anthropic-skill","format":"json","content":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.cjs.json)","tokens":300,"sizeBytes":195},{"name":"tsconfig.esm.json","path":"packages/https-proxy/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.esm.json","title":"Https-proxy Skill","category":"anthropic-skill","format":"json","content":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.esm.json)","tokens":300,"sizeBytes":195},{"name":"tsconfig.json","path":"packages/https-proxy/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.json","title":"Https-proxy Skill","category":"anthropic-skill","format":"json","content":"# Https-proxy Skill\n\nPath: `packages/https-proxy/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/tsconfig.json)","tokens":300,"sizeBytes":187},{"name":"AGENTS.md","path":"packages/icons/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/AGENTS.md","title":"Icons Skill","category":"anthropic-skill","format":"markdown","content":"# Icons Skill\n\nPath: `packages/icons/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/AGENTS.md)","tokens":300,"sizeBytes":161},{"name":"CLAUDE.md","path":"packages/icons/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/CLAUDE.md","title":"Icons Skill","category":"anthropic-skill","format":"markdown","content":"# Icons Skill\n\nPath: `packages/icons/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/CLAUDE.md)","tokens":300,"sizeBytes":161},{"name":"package.json","path":"packages/icons/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/package.json","title":"Icons Skill","category":"anthropic-skill","format":"json","content":"# Icons Skill\n\nPath: `packages/icons/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/package.json)","tokens":300,"sizeBytes":167},{"name":"tsconfig.cjs.json","path":"packages/icons/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.cjs.json","title":"Icons Skill","category":"anthropic-skill","format":"json","content":"# Icons Skill\n\nPath: `packages/icons/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.cjs.json)","tokens":300,"sizeBytes":177},{"name":"tsconfig.esm.json","path":"packages/icons/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.esm.json","title":"Icons Skill","category":"anthropic-skill","format":"json","content":"# Icons Skill\n\nPath: `packages/icons/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.esm.json)","tokens":300,"sizeBytes":177},{"name":"tsconfig.json","path":"packages/icons/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.json","title":"Icons Skill","category":"anthropic-skill","format":"json","content":"# Icons Skill\n\nPath: `packages/icons/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/tsconfig.json)","tokens":300,"sizeBytes":169},{"name":"AGENTS.md","path":"packages/launcher/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/AGENTS.md","title":"Launcher Skill","category":"anthropic-skill","format":"markdown","content":"# Launcher Skill\n\nPath: `packages/launcher/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/AGENTS.md)","tokens":300,"sizeBytes":170},{"name":"CLAUDE.md","path":"packages/launcher/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/CLAUDE.md","title":"Launcher Skill","category":"anthropic-skill","format":"markdown","content":"# Launcher Skill\n\nPath: `packages/launcher/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/CLAUDE.md)","tokens":300,"sizeBytes":170},{"name":"package.json","path":"packages/launcher/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/package.json","title":"Launcher Skill","category":"anthropic-skill","format":"json","content":"# Launcher Skill\n\nPath: `packages/launcher/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/package.json)","tokens":300,"sizeBytes":176},{"name":".eslintrc.json","path":"packages/launcher/test/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/test/.eslintrc.json","title":"Test Skill","category":"anthropic-skill","format":"json","content":"# Test Skill\n\nPath: `packages/launcher/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/test/.eslintrc.json)","tokens":300,"sizeBytes":186},{"name":"tsconfig.json","path":"packages/launcher/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/tsconfig.json","title":"Launcher Skill","category":"anthropic-skill","format":"json","content":"# Launcher Skill\n\nPath: `packages/launcher/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":".eslintrc.json","path":"packages/launchpad/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/.eslintrc.json","title":"Launchpad Skill","category":"anthropic-skill","format":"json","content":"# Launchpad Skill\n\nPath: `packages/launchpad/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/.eslintrc.json)","tokens":300,"sizeBytes":183},{"name":"AGENTS.md","path":"packages/launchpad/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/AGENTS.md","title":"Launchpad Skill","category":"anthropic-skill","format":"markdown","content":"# Launchpad Skill\n\nPath: `packages/launchpad/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/AGENTS.md)","tokens":300,"sizeBytes":173},{"name":"CLAUDE.md","path":"packages/launchpad/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/CLAUDE.md","title":"Launchpad Skill","category":"anthropic-skill","format":"markdown","content":"# Launchpad Skill\n\nPath: `packages/launchpad/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/CLAUDE.md)","tokens":300,"sizeBytes":173},{"name":"package.json","path":"packages/launchpad/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/package.json","title":"Launchpad Skill","category":"anthropic-skill","format":"json","content":"# Launchpad Skill\n\nPath: `packages/launchpad/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/package.json)","tokens":300,"sizeBytes":179},{"name":"tsconfig.json","path":"packages/launchpad/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/tsconfig.json","title":"Launchpad Skill","category":"anthropic-skill","format":"json","content":"# Launchpad Skill\n\nPath: `packages/launchpad/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/tsconfig.json)","tokens":300,"sizeBytes":181},{"name":"AGENTS.md","path":"packages/net-stubbing/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/AGENTS.md","title":"Net-stubbing Skill","category":"anthropic-skill","format":"markdown","content":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/AGENTS.md)","tokens":300,"sizeBytes":182},{"name":"CLAUDE.md","path":"packages/net-stubbing/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/CLAUDE.md","title":"Net-stubbing Skill","category":"anthropic-skill","format":"markdown","content":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/CLAUDE.md)","tokens":300,"sizeBytes":182},{"name":"package.json","path":"packages/net-stubbing/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/package.json","title":"Net-stubbing Skill","category":"anthropic-skill","format":"json","content":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/package.json)","tokens":300,"sizeBytes":188},{"name":".eslintrc.json","path":"packages/net-stubbing/test/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/test/.eslintrc.json","title":"Test Skill","category":"anthropic-skill","format":"json","content":"# Test Skill\n\nPath: `packages/net-stubbing/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/test/.eslintrc.json)","tokens":300,"sizeBytes":194},{"name":"tsconfig.json","path":"packages/net-stubbing/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/tsconfig.json","title":"Net-stubbing Skill","category":"anthropic-skill","format":"json","content":"# Net-stubbing Skill\n\nPath: `packages/net-stubbing/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/tsconfig.json)","tokens":300,"sizeBytes":190},{"name":"package.json","path":"packages/network-interception/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/package.json","title":"Network-interception Skill","category":"anthropic-skill","format":"json","content":"# Network-interception Skill\n\nPath: `packages/network-interception/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/package.json)","tokens":300,"sizeBytes":212},{"name":"tsconfig.cjs.json","path":"packages/network-interception/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.cjs.json","title":"Network-interception Skill","category":"anthropic-skill","format":"json","content":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.cjs.json)","tokens":300,"sizeBytes":222},{"name":"tsconfig.esm.json","path":"packages/network-interception/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.esm.json","title":"Network-interception Skill","category":"anthropic-skill","format":"json","content":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.esm.json)","tokens":300,"sizeBytes":222},{"name":"tsconfig.json","path":"packages/network-interception/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.json","title":"Network-interception Skill","category":"anthropic-skill","format":"json","content":"# Network-interception Skill\n\nPath: `packages/network-interception/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/tsconfig.json)","tokens":300,"sizeBytes":214},{"name":"AGENTS.md","path":"packages/network-tools/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/AGENTS.md","title":"Network-tools Skill","category":"anthropic-skill","format":"markdown","content":"# Network-tools Skill\n\nPath: `packages/network-tools/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/AGENTS.md)","tokens":300,"sizeBytes":185},{"name":"CLAUDE.md","path":"packages/network-tools/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/CLAUDE.md","title":"Network-tools Skill","category":"anthropic-skill","format":"markdown","content":"# Network-tools Skill\n\nPath: `packages/network-tools/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/CLAUDE.md)","tokens":300,"sizeBytes":185},{"name":"package.json","path":"packages/network-tools/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/package.json","title":"Network-tools Skill","category":"anthropic-skill","format":"json","content":"# Network-tools Skill\n\nPath: `packages/network-tools/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/package.json)","tokens":300,"sizeBytes":191},{"name":"tsconfig.check.json","path":"packages/network-tools/tsconfig.check.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.check.json","title":"Network-tools Skill","category":"anthropic-skill","format":"json","content":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.check.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.check.json)","tokens":300,"sizeBytes":205},{"name":"tsconfig.cjs.json","path":"packages/network-tools/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.cjs.json","title":"Network-tools Skill","category":"anthropic-skill","format":"json","content":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.cjs.json)","tokens":300,"sizeBytes":201},{"name":"tsconfig.esm.json","path":"packages/network-tools/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.esm.json","title":"Network-tools Skill","category":"anthropic-skill","format":"json","content":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.esm.json)","tokens":300,"sizeBytes":201},{"name":"tsconfig.json","path":"packages/network-tools/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.json","title":"Network-tools Skill","category":"anthropic-skill","format":"json","content":"# Network-tools Skill\n\nPath: `packages/network-tools/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/tsconfig.json)","tokens":300,"sizeBytes":193},{"name":"AGENTS.md","path":"packages/network/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/AGENTS.md","title":"Network Skill","category":"anthropic-skill","format":"markdown","content":"# Network Skill\n\nPath: `packages/network/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/AGENTS.md)","tokens":300,"sizeBytes":167},{"name":"CLAUDE.md","path":"packages/network/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/CLAUDE.md","title":"Network Skill","category":"anthropic-skill","format":"markdown","content":"# Network Skill\n\nPath: `packages/network/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/CLAUDE.md)","tokens":300,"sizeBytes":167},{"name":"package.json","path":"packages/network/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/package.json","title":"Network Skill","category":"anthropic-skill","format":"json","content":"# Network Skill\n\nPath: `packages/network/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/package.json)","tokens":300,"sizeBytes":173},{"name":".eslintrc.json","path":"packages/network/test/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/test/.eslintrc.json","title":"Test Skill","category":"anthropic-skill","format":"json","content":"# Test Skill\n\nPath: `packages/network/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/test/.eslintrc.json)","tokens":300,"sizeBytes":184},{"name":"tsconfig.cjs.json","path":"packages/network/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.cjs.json","title":"Network Skill","category":"anthropic-skill","format":"json","content":"# Network Skill\n\nPath: `packages/network/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.cjs.json)","tokens":300,"sizeBytes":183},{"name":"tsconfig.esm.json","path":"packages/network/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.esm.json","title":"Network Skill","category":"anthropic-skill","format":"json","content":"# Network Skill\n\nPath: `packages/network/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.esm.json)","tokens":300,"sizeBytes":183},{"name":"tsconfig.json","path":"packages/network/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.json","title":"Network Skill","category":"anthropic-skill","format":"json","content":"# Network Skill\n\nPath: `packages/network/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/tsconfig.json)","tokens":300,"sizeBytes":175},{"name":"AGENTS.md","path":"packages/packherd-require/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/AGENTS.md","title":"Packherd-require Skill","category":"anthropic-skill","format":"markdown","content":"# Packherd-require Skill\n\nPath: `packages/packherd-require/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/AGENTS.md)","tokens":300,"sizeBytes":194},{"name":"CLAUDE.md","path":"packages/packherd-require/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/CLAUDE.md","title":"Packherd-require Skill","category":"anthropic-skill","format":"markdown","content":"# Packherd-require Skill\n\nPath: `packages/packherd-require/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/CLAUDE.md)","tokens":300,"sizeBytes":194},{"name":"package.json","path":"packages/packherd-require/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/package.json","title":"Packherd-require Skill","category":"anthropic-skill","format":"json","content":"# Packherd-require Skill\n\nPath: `packages/packherd-require/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/package.json)","tokens":300,"sizeBytes":200},{"name":"package.json","path":"packages/packherd-require/test/fixtures/circular-deps/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/circular-deps/package.json","title":"Circular-deps Skill","category":"anthropic-skill","format":"json","content":"# Circular-deps Skill\n\nPath: `packages/packherd-require/test/fixtures/circular-deps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/circular-deps/package.json)","tokens":300,"sizeBytes":253},{"name":"package.json","path":"packages/packherd-require/test/fixtures/normal-deps/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/normal-deps/package.json","title":"Normal-deps Skill","category":"anthropic-skill","format":"json","content":"# Normal-deps Skill\n\nPath: `packages/packherd-require/test/fixtures/normal-deps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/test/fixtures/normal-deps/package.json)","tokens":300,"sizeBytes":247},{"name":"tsconfig.json","path":"packages/packherd-require/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/tsconfig.json","title":"Packherd-require Skill","category":"anthropic-skill","format":"json","content":"# Packherd-require Skill\n\nPath: `packages/packherd-require/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/tsconfig.json)","tokens":300,"sizeBytes":202},{"name":"AGENTS.md","path":"packages/proxy/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/AGENTS.md","title":"Proxy Skill","category":"anthropic-skill","format":"markdown","content":"# Proxy Skill\n\nPath: `packages/proxy/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/AGENTS.md)","tokens":300,"sizeBytes":161},{"name":"CLAUDE.md","path":"packages/proxy/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/CLAUDE.md","title":"Proxy Skill","category":"anthropic-skill","format":"markdown","content":"# Proxy Skill\n\nPath: `packages/proxy/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/CLAUDE.md)","tokens":300,"sizeBytes":161},{"name":"rewrite-constants.json","path":"packages/proxy/lib/http/util/rewrite-constants.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/lib/http/util/rewrite-constants.json","title":"Util Skill","category":"anthropic-skill","format":"json","content":"# Util Skill\n\nPath: `packages/proxy/lib/http/util/rewrite-constants.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/lib/http/util/rewrite-constants.json)","tokens":300,"sizeBytes":214},{"name":"package.json","path":"packages/proxy/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/package.json","title":"Proxy Skill","category":"anthropic-skill","format":"json","content":"# Proxy Skill\n\nPath: `packages/proxy/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/package.json)","tokens":300,"sizeBytes":167},{"name":"tsconfig.json","path":"packages/proxy/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/tsconfig.json","title":"Proxy Skill","category":"anthropic-skill","format":"json","content":"# Proxy Skill\n\nPath: `packages/proxy/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/tsconfig.json)","tokens":300,"sizeBytes":169},{"name":".eslintrc.json","path":"packages/reporter/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/.eslintrc.json","title":"Reporter Skill","category":"anthropic-skill","format":"json","content":"# Reporter Skill\n\nPath: `packages/reporter/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/.eslintrc.json)","tokens":300,"sizeBytes":180},{"name":"AGENTS.md","path":"packages/reporter/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/AGENTS.md","title":"Reporter Skill","category":"anthropic-skill","format":"markdown","content":"# Reporter Skill\n\nPath: `packages/reporter/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/AGENTS.md)","tokens":300,"sizeBytes":170},{"name":"CLAUDE.md","path":"packages/reporter/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/CLAUDE.md","title":"Reporter Skill","category":"anthropic-skill","format":"markdown","content":"# Reporter Skill\n\nPath: `packages/reporter/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/CLAUDE.md)","tokens":300,"sizeBytes":170},{"name":".eslintrc.json","path":"packages/reporter/cypress/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/.eslintrc.json","title":"Cypress Skill","category":"anthropic-skill","format":"json","content":"# Cypress Skill\n\nPath: `packages/reporter/cypress/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/.eslintrc.json)","tokens":300,"sizeBytes":195},{"name":"command_error.json","path":"packages/reporter/cypress/fixtures/command_error.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/command_error.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/command_error.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/command_error.json)","tokens":300,"sizeBytes":222},{"name":"runnables_agents.json","path":"packages/reporter/cypress/fixtures/runnables_agents.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_agents.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_agents.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_agents.json)","tokens":300,"sizeBytes":228},{"name":"runnables_aliases.json","path":"packages/reporter/cypress/fixtures/runnables_aliases.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_aliases.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_aliases.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_aliases.json)","tokens":300,"sizeBytes":230},{"name":"runnables_commands.json","path":"packages/reporter/cypress/fixtures/runnables_commands.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_commands.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_commands.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_commands.json)","tokens":300,"sizeBytes":232},{"name":"runnables_error.json","path":"packages/reporter/cypress/fixtures/runnables_error.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_error.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_error.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_error.json)","tokens":300,"sizeBytes":226},{"name":"runnables_hooks.json","path":"packages/reporter/cypress/fixtures/runnables_hooks.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_hooks.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_hooks.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_hooks.json)","tokens":300,"sizeBytes":226},{"name":"runnables_memory.json","path":"packages/reporter/cypress/fixtures/runnables_memory.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_memory.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_memory.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_memory.json)","tokens":300,"sizeBytes":228},{"name":"runnables_routes.json","path":"packages/reporter/cypress/fixtures/runnables_routes.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_routes.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables_routes.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables_routes.json)","tokens":300,"sizeBytes":228},{"name":"runnables.json","path":"packages/reporter/cypress/fixtures/runnables.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/reporter/cypress/fixtures/runnables.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/cypress/fixtures/runnables.json)","tokens":300,"sizeBytes":214},{"name":"package.json","path":"packages/reporter/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/package.json","title":"Reporter Skill","category":"anthropic-skill","format":"json","content":"# Reporter Skill\n\nPath: `packages/reporter/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/package.json)","tokens":300,"sizeBytes":176},{"name":"tsconfig.json","path":"packages/reporter/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/tsconfig.json","title":"Reporter Skill","category":"anthropic-skill","format":"json","content":"# Reporter Skill\n\nPath: `packages/reporter/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/tsconfig.json)","tokens":300,"sizeBytes":178},{"name":"AGENTS.md","path":"packages/resolve-dist/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/AGENTS.md","title":"Resolve-dist Skill","category":"anthropic-skill","format":"markdown","content":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/AGENTS.md)","tokens":300,"sizeBytes":182},{"name":"CLAUDE.md","path":"packages/resolve-dist/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/CLAUDE.md","title":"Resolve-dist Skill","category":"anthropic-skill","format":"markdown","content":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/CLAUDE.md)","tokens":300,"sizeBytes":182},{"name":"package.json","path":"packages/resolve-dist/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/package.json","title":"Resolve-dist Skill","category":"anthropic-skill","format":"json","content":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/package.json)","tokens":300,"sizeBytes":188},{"name":"tsconfig.cjs.json","path":"packages/resolve-dist/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.cjs.json","title":"Resolve-dist Skill","category":"anthropic-skill","format":"json","content":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.cjs.json)","tokens":300,"sizeBytes":198},{"name":"tsconfig.esm.json","path":"packages/resolve-dist/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.esm.json","title":"Resolve-dist Skill","category":"anthropic-skill","format":"json","content":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.esm.json)","tokens":300,"sizeBytes":198},{"name":"tsconfig.json","path":"packages/resolve-dist/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.json","title":"Resolve-dist Skill","category":"anthropic-skill","format":"json","content":"# Resolve-dist Skill\n\nPath: `packages/resolve-dist/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/tsconfig.json)","tokens":300,"sizeBytes":190},{"name":"AGENTS.md","path":"packages/root/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/AGENTS.md","title":"Root Skill","category":"anthropic-skill","format":"markdown","content":"# Root Skill\n\nPath: `packages/root/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/AGENTS.md)","tokens":300,"sizeBytes":158},{"name":"CLAUDE.md","path":"packages/root/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/CLAUDE.md","title":"Root Skill","category":"anthropic-skill","format":"markdown","content":"# Root Skill\n\nPath: `packages/root/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/CLAUDE.md)","tokens":300,"sizeBytes":158},{"name":"package.json","path":"packages/root/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/package.json","title":"Root Skill","category":"anthropic-skill","format":"json","content":"# Root Skill\n\nPath: `packages/root/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/package.json)","tokens":300,"sizeBytes":164},{"name":"tsconfig.json","path":"packages/root/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/tsconfig.json","title":"Root Skill","category":"anthropic-skill","format":"json","content":"# Root Skill\n\nPath: `packages/root/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/tsconfig.json)","tokens":300,"sizeBytes":166},{"name":"AGENTS.md","path":"packages/runner/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/AGENTS.md","title":"Runner Skill","category":"anthropic-skill","format":"markdown","content":"# Runner Skill\n\nPath: `packages/runner/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/AGENTS.md)","tokens":300,"sizeBytes":164},{"name":"CLAUDE.md","path":"packages/runner/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/CLAUDE.md","title":"Runner Skill","category":"anthropic-skill","format":"markdown","content":"# Runner Skill\n\nPath: `packages/runner/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/CLAUDE.md)","tokens":300,"sizeBytes":164},{"name":".eslintrc.json","path":"packages/runner/injection/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/injection/.eslintrc.json","title":"Injection Skill","category":"anthropic-skill","format":"json","content":"# Injection Skill\n\nPath: `packages/runner/injection/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/injection/.eslintrc.json)","tokens":300,"sizeBytes":197},{"name":"package.json","path":"packages/runner/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/package.json","title":"Runner Skill","category":"anthropic-skill","format":"json","content":"# Runner Skill\n\nPath: `packages/runner/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/package.json)","tokens":300,"sizeBytes":170},{"name":"tsconfig.json","path":"packages/runner/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/tsconfig.json","title":"Runner Skill","category":"anthropic-skill","format":"json","content":"# Runner Skill\n\nPath: `packages/runner/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"AGENTS.md","path":"packages/scaffold-config/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/AGENTS.md","title":"Scaffold-config Skill","category":"anthropic-skill","format":"markdown","content":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/AGENTS.md)","tokens":300,"sizeBytes":191},{"name":"CLAUDE.md","path":"packages/scaffold-config/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/CLAUDE.md","title":"Scaffold-config Skill","category":"anthropic-skill","format":"markdown","content":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/CLAUDE.md)","tokens":300,"sizeBytes":191},{"name":"package.json","path":"packages/scaffold-config/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/package.json","title":"Scaffold-config Skill","category":"anthropic-skill","format":"json","content":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/package.json)","tokens":300,"sizeBytes":197},{"name":"tsconfig.browser.json","path":"packages/scaffold-config/tsconfig.browser.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.browser.json","title":"Scaffold-config Skill","category":"anthropic-skill","format":"json","content":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.browser.json)","tokens":300,"sizeBytes":215},{"name":"tsconfig.cjs.json","path":"packages/scaffold-config/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.cjs.json","title":"Scaffold-config Skill","category":"anthropic-skill","format":"json","content":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.cjs.json)","tokens":300,"sizeBytes":207},{"name":"tsconfig.esm.json","path":"packages/scaffold-config/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.esm.json","title":"Scaffold-config Skill","category":"anthropic-skill","format":"json","content":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.esm.json)","tokens":300,"sizeBytes":207},{"name":"tsconfig.json","path":"packages/scaffold-config/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.json","title":"Scaffold-config Skill","category":"anthropic-skill","format":"json","content":"# Scaffold-config Skill\n\nPath: `packages/scaffold-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/tsconfig.json)","tokens":300,"sizeBytes":199},{"name":"AGENTS.md","path":"packages/server/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/AGENTS.md","title":"Server Skill","category":"anthropic-skill","format":"markdown","content":"# Server Skill\n\nPath: `packages/server/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/AGENTS.md)","tokens":300,"sizeBytes":164},{"name":"CLAUDE.md","path":"packages/server/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/CLAUDE.md","title":"Server Skill","category":"anthropic-skill","format":"markdown","content":"# Server Skill\n\nPath: `packages/server/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/CLAUDE.md)","tokens":300,"sizeBytes":164},{"name":"app.json","path":"packages/server/config/app.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/config/app.json","title":"Config Skill","category":"anthropic-skill","format":"json","content":"# Config Skill\n\nPath: `packages/server/config/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/config/app.json)","tokens":300,"sizeBytes":176},{"name":"firefox_automation.md","path":"packages/server/lib/browsers/firefox_automation.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/browsers/firefox_automation.md","title":"Browsers Skill","category":"anthropic-skill","format":"markdown","content":"# Browsers Skill\n\nPath: `packages/server/lib/browsers/firefox_automation.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/browsers/firefox_automation.md)","tokens":300,"sizeBytes":216},{"name":"package.json","path":"packages/server/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/package.json","title":"Server Skill","category":"anthropic-skill","format":"json","content":"# Server Skill\n\nPath: `packages/server/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/package.json)","tokens":300,"sizeBytes":170},{"name":".eslintrc.json","path":"packages/server/test/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/.eslintrc.json","title":"Test Skill","category":"anthropic-skill","format":"json","content":"# Test Skill\n\nPath: `packages/server/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/.eslintrc.json)","tokens":300,"sizeBytes":182},{"name":".eslintrc.json","path":"packages/server/test/scripts/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/scripts/.eslintrc.json","title":"Scripts Skill","category":"anthropic-skill","format":"json","content":"# Scripts Skill\n\nPath: `packages/server/test/scripts/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/scripts/.eslintrc.json)","tokens":300,"sizeBytes":201},{"name":"app.json","path":"packages/server/test/support/fixtures/ajax/app.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/ajax/app.json","title":"Ajax Skill","category":"anthropic-skill","format":"json","content":"# Ajax Skill\n\nPath: `packages/server/test/support/fixtures/ajax/app.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/ajax/app.json)","tokens":300,"sizeBytes":214},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json","title":"Bar Skill","category":"anthropic-skill","format":"json","content":"# Bar Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/bar/package.json)","tokens":300,"sizeBytes":331},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json","title":"Foo Skill","category":"anthropic-skill","format":"json","content":"# Foo Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/node_modules/foo/package.json)","tokens":300,"sizeBytes":331},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json","title":"All-tracked-dependencies Skill","category":"anthropic-skill","format":"json","content":"# All-tracked-dependencies Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/all-tracked-dependencies/package.json)","tokens":300,"sizeBytes":318},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json","title":"Foo Skill","category":"anthropic-skill","format":"json","content":"# Foo Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/node_modules/foo/package.json)","tokens":300,"sizeBytes":341},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json","title":"Partial-dependencies-matching Skill","category":"anthropic-skill","format":"json","content":"# Partial-dependencies-matching Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-matching/package.json)","tokens":300,"sizeBytes":333},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json","title":"Bar Skill","category":"anthropic-skill","format":"json","content":"# Bar Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/node_modules/bar/package.json)","tokens":300,"sizeBytes":349},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json","title":"Partial-dependencies-not-matching Skill","category":"anthropic-skill","format":"json","content":"# Partial-dependencies-not-matching Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/partial-dependencies-not-matching/package.json)","tokens":300,"sizeBytes":345},{"name":"package.json","path":"packages/server/test/support/fixtures/cloud/environment/test-project/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/test-project/package.json","title":"Test-project Skill","category":"anthropic-skill","format":"json","content":"# Test-project Skill\n\nPath: `packages/server/test/support/fixtures/cloud/environment/test-project/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/cloud/environment/test-project/package.json)","tokens":300,"sizeBytes":282},{"name":"really_big_json.json","path":"packages/server/test/support/fixtures/server/really_big_json.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/server/really_big_json.json","title":"Server Skill","category":"anthropic-skill","format":"json","content":"# Server Skill\n\nPath: `packages/server/test/support/fixtures/server/really_big_json.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/test/support/fixtures/server/really_big_json.json)","tokens":300,"sizeBytes":244},{"name":"tsconfig.json","path":"packages/server/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/tsconfig.json","title":"Server Skill","category":"anthropic-skill","format":"json","content":"# Server Skill\n\nPath: `packages/server/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"AGENTS.md","path":"packages/socket/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/AGENTS.md","title":"Socket Skill","category":"anthropic-skill","format":"markdown","content":"# Socket Skill\n\nPath: `packages/socket/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/AGENTS.md)","tokens":300,"sizeBytes":164},{"name":"CLAUDE.md","path":"packages/socket/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/CLAUDE.md","title":"Socket Skill","category":"anthropic-skill","format":"markdown","content":"# Socket Skill\n\nPath: `packages/socket/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/CLAUDE.md)","tokens":300,"sizeBytes":164},{"name":"package.json","path":"packages/socket/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/package.json","title":"Socket Skill","category":"anthropic-skill","format":"json","content":"# Socket Skill\n\nPath: `packages/socket/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/package.json)","tokens":300,"sizeBytes":170},{"name":".eslintrc.json","path":"packages/socket/test/.eslintrc.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/test/.eslintrc.json","title":"Test Skill","category":"anthropic-skill","format":"json","content":"# Test Skill\n\nPath: `packages/socket/test/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/test/.eslintrc.json)","tokens":300,"sizeBytes":182},{"name":"tsconfig.browser.json","path":"packages/socket/tsconfig.browser.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.browser.json","title":"Socket Skill","category":"anthropic-skill","format":"json","content":"# Socket Skill\n\nPath: `packages/socket/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.browser.json)","tokens":300,"sizeBytes":188},{"name":"tsconfig.cjs.json","path":"packages/socket/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.cjs.json","title":"Socket Skill","category":"anthropic-skill","format":"json","content":"# Socket Skill\n\nPath: `packages/socket/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.cjs.json)","tokens":300,"sizeBytes":180},{"name":"tsconfig.esm.json","path":"packages/socket/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.esm.json","title":"Socket Skill","category":"anthropic-skill","format":"json","content":"# Socket Skill\n\nPath: `packages/socket/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.esm.json)","tokens":300,"sizeBytes":180},{"name":"tsconfig.json","path":"packages/socket/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.json","title":"Socket Skill","category":"anthropic-skill","format":"json","content":"# Socket Skill\n\nPath: `packages/socket/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/tsconfig.json)","tokens":300,"sizeBytes":172},{"name":"AGENTS.md","path":"packages/stderr-filtering/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/AGENTS.md","title":"Stderr-filtering Skill","category":"anthropic-skill","format":"markdown","content":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/AGENTS.md)","tokens":300,"sizeBytes":194},{"name":"CLAUDE.md","path":"packages/stderr-filtering/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/CLAUDE.md","title":"Stderr-filtering Skill","category":"anthropic-skill","format":"markdown","content":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/CLAUDE.md)","tokens":300,"sizeBytes":194},{"name":"package.json","path":"packages/stderr-filtering/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/package.json","title":"Stderr-filtering Skill","category":"anthropic-skill","format":"json","content":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/package.json)","tokens":300,"sizeBytes":200},{"name":"tsconfig.json","path":"packages/stderr-filtering/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/tsconfig.json","title":"Stderr-filtering Skill","category":"anthropic-skill","format":"json","content":"# Stderr-filtering Skill\n\nPath: `packages/stderr-filtering/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/tsconfig.json)","tokens":300,"sizeBytes":202},{"name":"AGENTS.md","path":"packages/telemetry/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/AGENTS.md","title":"Telemetry Skill","category":"anthropic-skill","format":"markdown","content":"# Telemetry Skill\n\nPath: `packages/telemetry/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/AGENTS.md)","tokens":300,"sizeBytes":173},{"name":"CLAUDE.md","path":"packages/telemetry/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/CLAUDE.md","title":"Telemetry Skill","category":"anthropic-skill","format":"markdown","content":"# Telemetry Skill\n\nPath: `packages/telemetry/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/CLAUDE.md)","tokens":300,"sizeBytes":173},{"name":"package.json","path":"packages/telemetry/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/package.json","title":"Telemetry Skill","category":"anthropic-skill","format":"json","content":"# Telemetry Skill\n\nPath: `packages/telemetry/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/package.json)","tokens":300,"sizeBytes":179},{"name":"tsconfig.browser.json","path":"packages/telemetry/tsconfig.browser.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.browser.json","title":"Telemetry Skill","category":"anthropic-skill","format":"json","content":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.browser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.browser.json)","tokens":300,"sizeBytes":197},{"name":"tsconfig.cjs.json","path":"packages/telemetry/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.cjs.json","title":"Telemetry Skill","category":"anthropic-skill","format":"json","content":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.cjs.json)","tokens":300,"sizeBytes":189},{"name":"tsconfig.esm.json","path":"packages/telemetry/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.esm.json","title":"Telemetry Skill","category":"anthropic-skill","format":"json","content":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.esm.json)","tokens":300,"sizeBytes":189},{"name":"tsconfig.json","path":"packages/telemetry/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.json","title":"Telemetry Skill","category":"anthropic-skill","format":"json","content":"# Telemetry Skill\n\nPath: `packages/telemetry/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/tsconfig.json)","tokens":300,"sizeBytes":181},{"name":"AGENTS.md","path":"packages/ts/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/AGENTS.md","title":"Ts Skill","category":"anthropic-skill","format":"markdown","content":"# Ts Skill\n\nPath: `packages/ts/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/AGENTS.md)","tokens":300,"sizeBytes":152},{"name":"CLAUDE.md","path":"packages/ts/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/CLAUDE.md","title":"Ts Skill","category":"anthropic-skill","format":"markdown","content":"# Ts Skill\n\nPath: `packages/ts/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/CLAUDE.md)","tokens":300,"sizeBytes":152},{"name":"package.json","path":"packages/ts/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/package.json","title":"Ts Skill","category":"anthropic-skill","format":"json","content":"# Ts Skill\n\nPath: `packages/ts/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/package.json)","tokens":300,"sizeBytes":158},{"name":"tsconfig.json","path":"packages/ts/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tsconfig.json","title":"Ts Skill","category":"anthropic-skill","format":"json","content":"# Ts Skill\n\nPath: `packages/ts/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tsconfig.json)","tokens":300,"sizeBytes":160},{"name":"tslint.json","path":"packages/ts/tslint.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tslint.json","title":"Ts Skill","category":"anthropic-skill","format":"json","content":"# Ts Skill\n\nPath: `packages/ts/tslint.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/tslint.json)","tokens":300,"sizeBytes":156},{"name":"AGENTS.md","path":"packages/types/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/AGENTS.md","title":"Types Skill","category":"anthropic-skill","format":"markdown","content":"# Types Skill\n\nPath: `packages/types/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/AGENTS.md)","tokens":300,"sizeBytes":161},{"name":"CLAUDE.md","path":"packages/types/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/CLAUDE.md","title":"Types Skill","category":"anthropic-skill","format":"markdown","content":"# Types Skill\n\nPath: `packages/types/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/CLAUDE.md)","tokens":300,"sizeBytes":161},{"name":"package.json","path":"packages/types/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/package.json","title":"Types Skill","category":"anthropic-skill","format":"json","content":"# Types Skill\n\nPath: `packages/types/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/package.json)","tokens":300,"sizeBytes":167},{"name":"tsconfig.check.json","path":"packages/types/tsconfig.check.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.check.json","title":"Types Skill","category":"anthropic-skill","format":"json","content":"# Types Skill\n\nPath: `packages/types/tsconfig.check.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.check.json)","tokens":300,"sizeBytes":181},{"name":"tsconfig.cjs.json","path":"packages/types/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.cjs.json","title":"Types Skill","category":"anthropic-skill","format":"json","content":"# Types Skill\n\nPath: `packages/types/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.cjs.json)","tokens":300,"sizeBytes":177},{"name":"tsconfig.esm.json","path":"packages/types/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.esm.json","title":"Types Skill","category":"anthropic-skill","format":"json","content":"# Types Skill\n\nPath: `packages/types/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.esm.json)","tokens":300,"sizeBytes":177},{"name":"tsconfig.json","path":"packages/types/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.json","title":"Types Skill","category":"anthropic-skill","format":"json","content":"# Types Skill\n\nPath: `packages/types/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/types/tsconfig.json)","tokens":300,"sizeBytes":169},{"name":"AGENTS.md","path":"packages/v8-snapshot-require/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/AGENTS.md","title":"V8-snapshot-require Skill","category":"anthropic-skill","format":"markdown","content":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/AGENTS.md)","tokens":300,"sizeBytes":203},{"name":"CLAUDE.md","path":"packages/v8-snapshot-require/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/CLAUDE.md","title":"V8-snapshot-require Skill","category":"anthropic-skill","format":"markdown","content":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/CLAUDE.md)","tokens":300,"sizeBytes":203},{"name":"package.json","path":"packages/v8-snapshot-require/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/package.json","title":"V8-snapshot-require Skill","category":"anthropic-skill","format":"json","content":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/package.json)","tokens":300,"sizeBytes":209},{"name":"tsconfig.json","path":"packages/v8-snapshot-require/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/tsconfig.json","title":"V8-snapshot-require Skill","category":"anthropic-skill","format":"json","content":"# V8-snapshot-require Skill\n\nPath: `packages/v8-snapshot-require/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/tsconfig.json)","tokens":300,"sizeBytes":211},{"name":"AGENTS.md","path":"packages/web-config/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/AGENTS.md","title":"Web-config Skill","category":"anthropic-skill","format":"markdown","content":"# Web-config Skill\n\nPath: `packages/web-config/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/AGENTS.md)","tokens":300,"sizeBytes":176},{"name":"CLAUDE.md","path":"packages/web-config/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/CLAUDE.md","title":"Web-config Skill","category":"anthropic-skill","format":"markdown","content":"# Web-config Skill\n\nPath: `packages/web-config/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/CLAUDE.md)","tokens":300,"sizeBytes":176},{"name":"package.json","path":"packages/web-config/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/package.json","title":"Web-config Skill","category":"anthropic-skill","format":"json","content":"# Web-config Skill\n\nPath: `packages/web-config/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/package.json)","tokens":300,"sizeBytes":182},{"name":"tsconfig.json","path":"packages/web-config/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/tsconfig.json","title":"Web-config Skill","category":"anthropic-skill","format":"json","content":"# Web-config Skill\n\nPath: `packages/web-config/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/tsconfig.json)","tokens":300,"sizeBytes":184},{"name":"package.json","path":"system-tests/projects/bun-workspace/packages/app/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/app/package.json","title":"App Skill","category":"anthropic-skill","format":"json","content":"# App Skill\n\nPath: `system-tests/projects/bun-workspace/packages/app/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/app/package.json)","tokens":300,"sizeBytes":233},{"name":"package.json","path":"system-tests/projects/bun-workspace/packages/shared/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/shared/package.json","title":"Shared Skill","category":"anthropic-skill","format":"json","content":"# Shared Skill\n\nPath: `system-tests/projects/bun-workspace/packages/shared/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/bun-workspace/packages/shared/package.json)","tokens":300,"sizeBytes":242},{"name":"package.json","path":"system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json","title":"Bar Skill","category":"anthropic-skill","format":"json","content":"# Bar Skill\n\nPath: `system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/bar/package.json)","tokens":300,"sizeBytes":255},{"name":"package.json","path":"system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json","title":"Foo Skill","category":"anthropic-skill","format":"json","content":"# Foo Skill\n\nPath: `system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/projects/ct-monorepo-unconfigured/packages/foo/package.json)","tokens":300,"sizeBytes":255},{"name":"electron-upgrade.mdc","path":"packages/electron/.cursor/rules/electron-upgrade.mdc","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/.cursor/rules/electron-upgrade.mdc","title":"Cursor Rule: electron-upgrade","category":"cursor-rule","format":"mdc","content":"# Cursor Rule: electron-upgrade\n\nPath: `packages/electron/.cursor/rules/electron-upgrade.mdc`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/.cursor/rules/electron-upgrade.mdc)","tokens":300,"sizeBytes":235},{"name":"CLAUDE.md","path":".circleci/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.circleci/CLAUDE.md","title":".circleci - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CircleCI Configuration\n\n@AGENTS.md\n","isInternal":false,"tokens":10,"sizeBytes":37},{"name":"CLAUDE.md","path":"CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/CLAUDE.md","title":"Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLAUDE.md\n\n## Workflow Orchestration\n\n### 1. Plan Mode Default\n\n- Enter plan mode for ANY non-trivial task (3+ steps or architectural decisions)\n- If something goes sideways, STOP and re-plan immediately - don't keep pushing\n- Use plan mode for verification steps, not just building\n- Write detailed specs upfront to reduce ambiguity\n\n### 2. Subagent Strategy\n\n- Use subagents liberally to keep main context window clean\n- Offload research, exploration, and parallel analysis to subagents\n- For complex problems, throw more compute at it via subagents\n- One task per subagent for focused execution\n\n### 3. Self-Improvement Loop\n\n- After ANY correction from the user: update the closest relevant `CLAUDE.md` file\n- Write rules for yourself that prevent the same mistake\n\n### 4. Verification Before Done\n\n- Never mark a task complete without proving it works\n- Diff behavior between main and your changes when relevant\n- Ask yourself: \"Would a staff engineer approve this?\"\n- Run relevant tests only, check logs, demonstrate correctness\n\n### 5. Demand Elegance (Balanced)\n\n- For non-trivial changes: pause and ask \"is there a more elegant way?\"\n- If a fix feels hacky: \"Knowing everything I know now, implement the elegant solution\"\n- Skip this for simple, obvious fixes - don't over-engineer\n- Challenge your own work before presenting it\n\n## Core Principles\n\n- **Minimal Impact**: Changes should only touch what's necessary. Avoid introducing bugs.\n\n## Working Constraints\n\n- Worktrees must use a full `yarn` install in the worktree. Do not symlink `node_modules` or packages back to another checkout.\n- Packaged-binary integration tests (`system-tests/test-binary`) need Docker and a built binary, so they do not run in the sandbox. When they are needed, provide the exact commands and ask the user to run them.\n- System tests under `system-tests/test` do run in cloud containers once the monorepo is built. Run them yourself rather than handing them off; see [Running system tests](./AGENTS.md#running-system-tests).\n- Keep follow-up work from the same task, such as review fixes and related instruction updates, on that task's branch. Create a separate branch only when the user asks for one.\n- Before committing or pushing, `yarn check-ts`, `yarn lint`, `yarn health-check` (knip), and relevant unit tests must pass locally. CI currently does not block expensive e2e jobs when these fail.\n\n@AGENTS.md\n","isInternal":false,"tokens":542,"sizeBytes":2407},{"name":"CLAUDE.md","path":"cli/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/cli/CLAUDE.md","title":"cli - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# CLI\n\n@AGENTS.md\n","isInternal":false,"tokens":8,"sizeBytes":18},{"name":"CLAUDE.md","path":"npm/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/npm/CLAUDE.md","title":"npm - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# npm\n\n@AGENTS.md\n","isInternal":false,"tokens":8,"sizeBytes":18},{"name":"CLAUDE.md","path":"packages/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/CLAUDE.md","title":"packages - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# packages - Claude Agent Guidelines & System Prompt\n\nPath: `packages/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/CLAUDE.md)","tokens":300,"sizeBytes":188},{"name":"CLAUDE.md","path":"scripts/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/CLAUDE.md","title":"scripts - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# scripts - Claude Agent Guidelines & System Prompt\n\nPath: `scripts/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/CLAUDE.md)","tokens":300,"sizeBytes":185},{"name":"CLAUDE.md","path":"system-tests/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/CLAUDE.md","title":"system-tests - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# system-tests - Claude Agent Guidelines & System Prompt\n\nPath: `system-tests/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/CLAUDE.md)","tokens":300,"sizeBytes":200},{"name":"CLAUDE.md","path":"tooling/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/CLAUDE.md","title":"tooling - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"# tooling - Claude Agent Guidelines & System Prompt\n\nPath: `tooling/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/CLAUDE.md)","tokens":300,"sizeBytes":185},{"name":"README.md","path":"npm/vue/cypress/component/basic/plugins/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/npm/vue/cypress/component/basic/plugins/README.md","title":"plugins Documentation","category":"plugin-manifest","format":"markdown","content":"# plugins Documentation\n\nPath: `npm/vue/cypress/component/basic/plugins/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/npm/vue/cypress/component/basic/plugins/README.md)","tokens":300,"sizeBytes":221},{"name":"README.md","path":"packages/agent-info/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/README.md","title":"agent-info Documentation","category":"plugin-manifest","format":"markdown","content":"# agent-info Documentation\n\nPath: `packages/agent-info/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/README.md)","tokens":300,"sizeBytes":184},{"name":"README.md","path":"packages/app/cypress/e2e/studio/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/studio/README.md","title":"studio Documentation","category":"plugin-manifest","format":"markdown","content":"# studio Documentation\n\nPath: `packages/app/cypress/e2e/studio/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/studio/README.md)","tokens":300,"sizeBytes":204},{"name":"README.md","path":"packages/app/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/README.md","title":"app Documentation","category":"plugin-manifest","format":"markdown","content":"# app Documentation\n\nPath: `packages/app/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/README.md)","tokens":300,"sizeBytes":163},{"name":"README.md","path":"packages/app/src/runner/screenshot/reference-screenshots/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/runner/screenshot/reference-screenshots/README.md","title":"reference-screenshots Documentation","category":"plugin-manifest","format":"markdown","content":"# reference-screenshots Documentation\n\nPath: `packages/app/src/runner/screenshot/reference-screenshots/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/src/runner/screenshot/reference-screenshots/README.md)","tokens":300,"sizeBytes":269},{"name":"README.md","path":"packages/config/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/README.md","title":"config Documentation","category":"plugin-manifest","format":"markdown","content":"# config Documentation\n\nPath: `packages/config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/config/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/data-context/graphql/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/graphql/README.md","title":"graphql Documentation","category":"plugin-manifest","format":"markdown","content":"# graphql Documentation\n\nPath: `packages/data-context/graphql/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/graphql/README.md)","tokens":300,"sizeBytes":201},{"name":"README.md","path":"packages/data-context/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/README.md","title":"data-context Documentation","category":"plugin-manifest","format":"markdown","content":"# data-context Documentation\n\nPath: `packages/data-context/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/data-context/README.md)","tokens":300,"sizeBytes":190},{"name":"README.md","path":"packages/driver/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/README.md","title":"driver Documentation","category":"plugin-manifest","format":"markdown","content":"# driver Documentation\n\nPath: `packages/driver/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/driver/src/util/serialization/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/util/serialization/README.md","title":"serialization Documentation","category":"plugin-manifest","format":"markdown","content":"# serialization Documentation\n\nPath: `packages/driver/src/util/serialization/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/driver/src/util/serialization/README.md)","tokens":300,"sizeBytes":225},{"name":"README.md","path":"packages/electron/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/README.md","title":"electron Documentation","category":"plugin-manifest","format":"markdown","content":"# electron Documentation\n\nPath: `packages/electron/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/electron/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/errors/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/README.md","title":"errors Documentation","category":"plugin-manifest","format":"markdown","content":"# errors Documentation\n\nPath: `packages/errors/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/errors/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/eslint-config/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/README.md","title":"eslint-config Documentation","category":"plugin-manifest","format":"markdown","content":"# eslint-config Documentation\n\nPath: `packages/eslint-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/eslint-config/README.md)","tokens":300,"sizeBytes":193},{"name":"README.md","path":"packages/example/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/README.md","title":"example Documentation","category":"plugin-manifest","format":"markdown","content":"# example Documentation\n\nPath: `packages/example/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/example/README.md)","tokens":300,"sizeBytes":175},{"name":"README.md","path":"packages/extension/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/README.md","title":"extension Documentation","category":"plugin-manifest","format":"markdown","content":"# extension Documentation\n\nPath: `packages/extension/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/extension/README.md)","tokens":300,"sizeBytes":181},{"name":"README.md","path":"packages/frontend-shared/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/README.md","title":"frontend-shared Documentation","category":"plugin-manifest","format":"markdown","content":"# frontend-shared Documentation\n\nPath: `packages/frontend-shared/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/README.md)","tokens":300,"sizeBytes":199},{"name":"ReadMe.md","path":"packages/frontend-shared/src/shiki/themes/ReadMe.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/ReadMe.md","title":"themes Documentation","category":"plugin-manifest","format":"markdown","content":"# themes Documentation\n\nPath: `packages/frontend-shared/src/shiki/themes/ReadMe.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/frontend-shared/src/shiki/themes/ReadMe.md)","tokens":300,"sizeBytes":224},{"name":"README.md","path":"packages/https-proxy/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/README.md","title":"https-proxy Documentation","category":"plugin-manifest","format":"markdown","content":"# https-proxy Documentation\n\nPath: `packages/https-proxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/https-proxy/README.md)","tokens":300,"sizeBytes":187},{"name":"readme.md","path":"packages/icons/readme.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/readme.md","title":"icons Documentation","category":"plugin-manifest","format":"markdown","content":"# icons Documentation\n\nPath: `packages/icons/readme.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/icons/readme.md)","tokens":300,"sizeBytes":169},{"name":"README.md","path":"packages/launcher/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/README.md","title":"launcher Documentation","category":"plugin-manifest","format":"markdown","content":"# launcher Documentation\n\nPath: `packages/launcher/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launcher/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/launchpad/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/README.md","title":"launchpad Documentation","category":"plugin-manifest","format":"markdown","content":"# launchpad Documentation\n\nPath: `packages/launchpad/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/launchpad/README.md)","tokens":300,"sizeBytes":181},{"name":"README.md","path":"packages/net-stubbing/lib/adapters/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/lib/adapters/README.md","title":"adapters Documentation","category":"plugin-manifest","format":"markdown","content":"# adapters Documentation\n\nPath: `packages/net-stubbing/lib/adapters/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/lib/adapters/README.md)","tokens":300,"sizeBytes":212},{"name":"README.md","path":"packages/net-stubbing/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/README.md","title":"net-stubbing Documentation","category":"plugin-manifest","format":"markdown","content":"# net-stubbing Documentation\n\nPath: `packages/net-stubbing/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/net-stubbing/README.md)","tokens":300,"sizeBytes":190},{"name":"README.md","path":"packages/network-interception/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/README.md","title":"network-interception Documentation","category":"plugin-manifest","format":"markdown","content":"# network-interception Documentation\n\nPath: `packages/network-interception/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-interception/README.md)","tokens":300,"sizeBytes":214},{"name":"README.md","path":"packages/network-tools/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/README.md","title":"network-tools Documentation","category":"plugin-manifest","format":"markdown","content":"# network-tools Documentation\n\nPath: `packages/network-tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network-tools/README.md)","tokens":300,"sizeBytes":193},{"name":"README.md","path":"packages/network/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/README.md","title":"network Documentation","category":"plugin-manifest","format":"markdown","content":"# network Documentation\n\nPath: `packages/network/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/network/README.md)","tokens":300,"sizeBytes":175},{"name":"README.md","path":"packages/packherd-require/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/README.md","title":"packherd-require Documentation","category":"plugin-manifest","format":"markdown","content":"# packherd-require Documentation\n\nPath: `packages/packherd-require/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/packherd-require/README.md)","tokens":300,"sizeBytes":202},{"name":"README.md","path":"packages/proxy/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/README.md","title":"proxy Documentation","category":"plugin-manifest","format":"markdown","content":"# proxy Documentation\n\nPath: `packages/proxy/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/proxy/README.md)","tokens":300,"sizeBytes":169},{"name":"README.md","path":"packages/reporter/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/README.md","title":"reporter Documentation","category":"plugin-manifest","format":"markdown","content":"# reporter Documentation\n\nPath: `packages/reporter/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/reporter/README.md)","tokens":300,"sizeBytes":178},{"name":"README.md","path":"packages/resolve-dist/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/README.md","title":"resolve-dist Documentation","category":"plugin-manifest","format":"markdown","content":"# resolve-dist Documentation\n\nPath: `packages/resolve-dist/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/resolve-dist/README.md)","tokens":300,"sizeBytes":190},{"name":"README.md","path":"packages/root/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/README.md","title":"root Documentation","category":"plugin-manifest","format":"markdown","content":"# root Documentation\n\nPath: `packages/root/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/root/README.md)","tokens":300,"sizeBytes":166},{"name":"README.md","path":"packages/runner/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/README.md","title":"runner Documentation","category":"plugin-manifest","format":"markdown","content":"# runner Documentation\n\nPath: `packages/runner/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/runner/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/scaffold-config/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/README.md","title":"scaffold-config Documentation","category":"plugin-manifest","format":"markdown","content":"# scaffold-config Documentation\n\nPath: `packages/scaffold-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/scaffold-config/README.md)","tokens":300,"sizeBytes":199},{"name":"README.md","path":"packages/server/lib/adapters/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/adapters/README.md","title":"adapters Documentation","category":"plugin-manifest","format":"markdown","content":"# adapters Documentation\n\nPath: `packages/server/lib/adapters/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/lib/adapters/README.md)","tokens":300,"sizeBytes":200},{"name":"README.md","path":"packages/server/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/README.md","title":"server Documentation","category":"plugin-manifest","format":"markdown","content":"# server Documentation\n\nPath: `packages/server/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/server/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/socket/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/README.md","title":"socket Documentation","category":"plugin-manifest","format":"markdown","content":"# socket Documentation\n\nPath: `packages/socket/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/socket/README.md)","tokens":300,"sizeBytes":172},{"name":"README.md","path":"packages/stderr-filtering/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/README.md","title":"stderr-filtering Documentation","category":"plugin-manifest","format":"markdown","content":"# stderr-filtering Documentation\n\nPath: `packages/stderr-filtering/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/stderr-filtering/README.md)","tokens":300,"sizeBytes":202},{"name":"README.md","path":"packages/telemetry/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/README.md","title":"telemetry Documentation","category":"plugin-manifest","format":"markdown","content":"# telemetry Documentation\n\nPath: `packages/telemetry/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/telemetry/README.md)","tokens":300,"sizeBytes":181},{"name":"README.md","path":"packages/ts/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/README.md","title":"ts Documentation","category":"plugin-manifest","format":"markdown","content":"# ts Documentation\n\nPath: `packages/ts/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/ts/README.md)","tokens":300,"sizeBytes":160},{"name":"README.md","path":"packages/v8-snapshot-require/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/README.md","title":"v8-snapshot-require Documentation","category":"plugin-manifest","format":"markdown","content":"# v8-snapshot-require Documentation\n\nPath: `packages/v8-snapshot-require/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/v8-snapshot-require/README.md)","tokens":300,"sizeBytes":211},{"name":"README.md","path":"packages/web-config/README.md","rawUrl":"https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/README.md","title":"web-config Documentation","category":"plugin-manifest","format":"markdown","content":"# web-config Documentation\n\nPath: `packages/web-config/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/web-config/README.md)","tokens":300,"sizeBytes":184}],"systemPromptSnippet":"<yakaai_skills repo=\"cypress-io/cypress\">\n<!-- File: .circleci/AGENTS.md (Tokens: ~1719 | Category: root-instruction) -->\n# CircleCI Configuration\n\nAgent guidance for `.circleci/` — source configs under `src/` are packed into `packed/` at CI runtime. See [README.md](./README.md) for local CLI setup and the pre-commit `yarn pack-ci --validate` workflow.\n\n## Full CI branch allowlist\n\nMost PR branches run the **pull-request workflow** with path-based job filtering (`generate-pipeline-parameters.sh`). A small set of branch names instead run the **main workflows** (`linux-x64`, `linux-arm64`, `darwin-x64`, `darwin-arm64`, `windows`).\n\n### When to add a branch name\n\nAdd a branch when the change affects behavior that is only validated by main-branch CI — in particular:\n\n- **Windows jobs** — the `windows` workflow (`windows-v8-integration-tests`, `windows-create-build-artifacts`, etc.)\n- **V8 snapshot / packaging tooling** — `v8-integration-tests` on Linux, macOS, and Windows; snapshot cache updates in `tooling/v8-snapshot/cache/`\n- **Full binary tests** — kitchensink, staging, and npm-module verification jobs (see optional gates below). These no longer run on pull requests at all, so an allowlisted branch is the only way to exercise them before merge.\n\nIf only unit/integration tests scoped to changed packages are sufficient, do **not** add the branch — use a normal PR branch instead.\n\n### Where to add the branch name\n\n**Required:** append a **new** `- equal:` entry to the `or:` block in `&full-workflow-filters` in `.circleci/src/pipeline/workflows/@main.yml` (the `when:` at the top of `linux-x64`, reused by `windows` and other platform workflows). Do **not** rename or remove existing entries (`develop`, `update-v8-snapshot-cache-on-develop`, the `release/*` / `electron/*` patterns, or `force-persist-artifacts`):\n\n```yaml\n    or:\n      - equal: [ develop, << pipeline.git.branch >> ]\n      # ... leave existing entries unchanged ...\n      - equal: [ 'your-branch-name', << pipeline.git.branch >> ]  # add this line\n```\n\nPush your work to the branch name you add — do not repurpose an existing allowlisted branch (for example, do not change `update-v8-snapshot-cache-on-develop` to a different name).\n\nThis gate turns on the main/multi-platform workflow graph, including `windows-v8-integration-tests` and `v8-integration-tests` on Linux/macOS. The existing `update-v8-snapshot-cache-on-develop` entry is reserved for automated v8 snapshot cache PRs.\n\nThis gate does not turn on `windows`, `linux-arm64`, `darwin-x64`, or `darwin-arm64` for plain `develop` or `release/*` pushes. On those two, all four run from a scheduled pipeline instead — see \"Scheduled platform CI\" below. Any other branch you add here turns all five on per-push.\n\n**Optional — only if you need more than main workflows + path-filtered jobs:**\n\n| Location | When you also need it |\n|----------|------------------------|\n| `pull-request.yml` exclusion list | Avoid the PR workflow running in parallel with the main workflows on the same branch |\n| `notify-binary-failure`'s `filters:` in `@main.yml` | Testing binary failure alerting on a branch — it is pinned to `develop`, so it never fires elsewhere |\n| `generate-pipeline-parameters.sh` branch override | Force every path-filtered job to run even when changed files would not normally select them (or trigger manually with `run-all-jobs=true`) |\n| `&mainBuildFilters` in `@main.yml` | Binary/kitchensink/staging jobs in `linux-x64` that have an extra branch filter beyond the workflow `when:` |\n\nFor typical v8 snapshot cache work, changes under `tooling/*` already enable `run-v8-tests` via path filtering, so **`&full-workflow-filters` alone is usually enough**.\n\nAfter editing `.circleci/src/`, run `yarn pack-ci --validate` before committing.\n\n### Per-workflow gates\n\nThe `run-*` guards live in the shared job definitions in `@pipeline.yml` (via `halt-if-skipped`), not in the workflow files, so they apply to every workflow below — not just the PR one.\n\n- **`linux-x64`**: `build`, lint, and type checks always run, as do the binary/packaging chain and release gating (`create-and-trigger-packaging-artifacts`, `get-published-artifacts`, `test-binary-*`, `verify-release-readiness`, `ready-to-release`, `npm-release`). Per-package integration/unit jobs, system tests, and `v8-integration-tests` are guarded, so a webhook push to `develop` runs only the ones its changed paths select.\n- **`windows` / `linux-arm64` / `darwin-*`**: none of these three run on a plain `develop` or `release/*` push — see \"Scheduled platform CI\" below for when they do. Inside them, `v8-integration-tests`, `driver-integration-memory-tests`, and (Windows) selected integration/unit jobs are still guarded by `run-*` parameters, but a scheduled run gets all-true from `generate-pipeline-parameters.sh`'s trigger-source check, so nothing inside these workflows is actually path-filtered once one runs.\n\n`linux-x64` runs on any `&full-workflow-filters` branch directly. The other four need more than that. On `develop` and `release/*` they run only from a scheduled pipeline. On `electron/*`, `update-v8-snapshot-cache-on-develop`, or an allowlisted branch, `&full-workflow-filters` alone is enough.\n\n`npm-release` still runs only on `develop`, not on allowlisted feature branches.\n\n### Scheduled platform CI (develop and release/*)\n\nNone of the four runs on every `develop` or `release/*` push. Windows moved for credit cost. The two `darwin-*` workflows moved to free leased self-hosted macOS hardware. `linux-arm64` costs almost nothing and moved for consistency, so all platform coverage lands in one sweep. Per-merge platform signal was not actionable anyway — `develop` passed 47 of 213 runs. A release branch is long-lived enough for a scheduled sweep to cover it the same way.\n\n**What exists today**: a CircleCI Scheduled Pipeline named \"Platform Develop Branch Schedule\" (id `40ddfea0-34c3-47ab-8557-6bdb150b4d8d`) runs on `develop` once per weekday at 02:00 UTC and sets `run-platform-workflows=true`. `windows`, `linux-arm64`, `darwin-x64`, and `darwin-arm64` all read that parameter. There is still no release-branch schedule: `release/*` pushes get zero platform coverage of any kind until one exists.\n\n**Still needed**, to match the gates in `@main.yml`:\n\n- **Release schedule** — a second Scheduled Pipeline, targeting whichever `release/*` branch is currently active, setting `run-platform-workflows=true`. Repointing its branch to the new release branch is part of cutting a release; disabling it is part of shipping one. There is no default branch this can target permanently, since release branches are cut and retired.\n- **Owner**: App Foundations team\n\nThis is a CircleCI project setting, not code — it isn't visible anywhere in `.circleci/src`. Changing it requires CircleCI project-settings access (Project Settings → Triggers → Scheduled Pipelines), via the UI or `PATCH /api/v2/schedule/{id}`.\n\nFor an on-demand run of all four platform workflows outside either schedule (e.g. to validate a change before it reaches `develop`, or to recover a missed/failed release-branch build), use Trigger Pipeline with `run-platform-workflows=true`, or `force-persist-artifacts=true` — the latter works regardless of branch and needs only one flag. See the comment above the `linux-arm64` workflow in `@main.yml`.\n\n<!-- File: AGENTS.md (Tokens: ~6653 | Category: root-instruction) -->\n# Cypress Monorepo — AGENTS.md\n\n## Overview\n\nCypress is an open-source end-to-end and component testing framework for the modern web. This monorepo ships the Cypress desktop application and CLI (`cypress`), the JavaScript driver that runs tests in the browser, the Electron-based test runner, a suite of published npm packages (component testing adapters, webpack/vite dev-server integrations, plugins), and the internal tooling used to build and release all of it. Cypress is used by millions of developers to test web applications across Chrome, Firefox, Edge, WebKit, and Electron.\n\n## Workspaces\n\n- **`cli/`** — The main `cypress` npm package (CLI entry point) and co-located component testing framework adapters (`@cypress/react`, `@cypress/vue`, `@cypress/angular`, `@cypress/svelte`, `@cypress/mount-utils`)\n- **`packages/`** — Core internal packages: the test driver, Electron app, HTTP server, proxy, launcher, frontend Vue app, launchpad, reporter, config, data-context, telemetry, types, errors, and more\n- **`npm/`** — Publicly published npm packages: bundler integrations, component testing adapters, plugins, and dev tooling\n- **`tooling/`** — Internal build tooling: V8 snapshot creation, `packherd` dependency bundler, and `electron-mksnapshot`\n- **`system-tests/`** — Full end-to-end system test suite: `test/` runs against the dev app, `test-binary/` against a built Cypress binary\n- **`scripts/`** — Internal build, release, and CI automation scripts\n\n## Task runbooks\n\nStep-by-step procedures live in [`guides/`](./guides/) — start there for any multi-step workflow ([release process](./guides/release-process.md), [writing the changelog](./guides/writing-the-cypress-changelog.md), [V8 snapshots](./guides/v8-snapshots.md), and others indexed in [`guides/README.md`](./guides/README.md)). They are the canonical source for humans and agents alike.\n\n`.claude/skills/*/SKILL.md` adds a thin layer on top for the two workflows that need agent-specific execution guidance — which permissions a phase needs, long-running commands, and host quirks that would be noise in a contributor guide. Claude Code loads them on demand; **other agents should read the file directly**, since nothing loads them automatically:\n\n- [`building-cypress-binary`](./.claude/skills/building-cypress-binary/SKILL.md) — `binary-build` / `binary-package` / `binary-zip`, non-interactive flags, `ELECTRON_RUN_AS_NODE`, macOS signing.\n- [`debugging-cypress-artifacts`](./.claude/skills/debugging-cypress-artifacts/SKILL.md) — bugs that only reproduce in packaged output, the commit/build/clean/reset loop, `CYPRESS_RUN_BINARY`.\n\n`.claude/rules/*.md` is a second thin layer, for facts that are only correct in one part of the tree — which test runner a package uses, which runtime floor a directory is bound by, how a given kind of snapshot is regenerated. Each file carries a `paths:` glob, and Claude Code loads it when it opens a matching file. They are pointers, not sources of truth: every one links back to the guide or `AGENTS.md` section that owns the topic, so **other agents can skip them** and lose nothing.\n\nAdd new guidance to a guide by default. A skill is only warranted when the content is about *running* the task rather than doing it correctly — if a contributor doing the task by hand would need to know it, it belongs in the guide. A rule is only warranted when the guidance is wrong outside a specific path. See [Choosing where guidance goes](./CONTRIBUTING.md#choosing-where-guidance-goes).\n\n## Prerequisites\n\n- **Node**: Use the node version specified in the `.node-version` file (check with `node -v`; run `nvm use` to manage versions)\n- **Package manager**: Yarn 1 (`yarn@1.22.22`) — do not use npm or pnpm\n- **Lerna**: Orchestrated via root `package.json` scripts; installed as a dev dependency\n- **Electron** (for binary builds): handled automatically by `@packages/electron` during build\n\n## Common Commands\n\n### Setup & Development\n\n```bash\n# Install all dependencies (runs post-install hooks automatically)\nyarn\n\n# Start Cypress in dev mode (watch, rebuilds on change)\nyarn dev\n\n# Open the Cypress GUI in dev + global mode\nyarn start\n\n```\n\n### Testing\n\n```bash\n# Run a single package's tests (go through the workspace, not the root test script —\n# the root script hardcodes its own --scope flags and lerna unions them, so\n# `yarn test --scope <pkg>` runs the whole default suite plus that package)\nyarn workspace @packages/server test\n\n# Target a specific vitest spec file (packages that use vitest)\nyarn workspace @packages/config test -- <path-to-spec>\n\n# Target a specific vitest spec by glob pattern\nyarn workspace @packages/net-stubbing test -- \"<glob-pattern>\"\n\n# Target a specific mocha spec file (packages that use mocha)\nyarn workspace @packages/server test-unit -- <path-to-spec>\n\n# Filter mocha tests by name pattern\nyarn workspace @packages/server test-unit -- --grep \"<pattern>\"\n\n# @packages/data-context is the one package on jest, not vitest or mocha\nyarn workspace @packages/data-context test-unit -- <path-to-spec>\n\n# Run system test specs whose file name contains a fragment (not a path);\n# see system-tests/AGENTS.md\nyarn test-system go_spec --browser electron\n\n# Run Cypress headlessly against a specific spec (dev mode)\nyarn cypress:run -- --spec \"path/to/spec.cy.ts\"\n\n# Run Cypress component tests against a specific spec (dev mode)\nyarn cypress:run:ct -- --spec \"path/to/spec.cy.ts\"\n```\n\n### Type Checking\n\n```bash\n# Type-check all TypeScript across the monorepo\nyarn type-check\n\n# Lerna-only type check pass\nyarn check-ts\n```\n\n### Linting & Formatting\n\n```bash\n# Lint all packages (no bail, concurrency 2)\nyarn lint\n\n# Lint and auto-fix specific scopes\nyarn lint:fix\n```\n\n> **Note**: This project does **not** use Prettier. All formatting is enforced via ESLint.\n\nThe repo is mid-migration between two ESLint configs, so ignore rules live in two places: `ignorePatterns` in the root `.eslintrc.js` for the packages still on eslintrc, and the `ignores` block in `packages/eslint-config/src/baseConfig.ts` for the packages on flat config. Build output (`cjs/`, `esm/`, `dist/`) is already ignored in both; do not add a per-package `.eslintignore` for it, since patterns in those files that contain a `/` silently match nothing. [The ESLint migration guide](./guides/eslint-migration.md#6-ignore-build-output-centrally) explains the mechanism.\n\n### Build\n\n```bash\n# Full monorepo build\nyarn build\n\n# Build V8 snapshot (dev)\nyarn build-v8-snapshot-dev\n\n# Build V8 snapshot (prod)\nyarn build-v8-snapshot-prod\n\n# Clean all build artifacts\nyarn clean\n\n# Clean and reinstall (nuclear)\nyarn clean-deps && yarn\n```\n\n## Architecture\n\nOrientation, not a registry — the directories under `packages/`, `npm/`, and `tooling/` are the authoritative list, and each carries its own `AGENTS.md` with the detail. Read a package's own file before working in it rather than relying on the one-liner here.\n\n### CLI & Distribution\n\n- **`cypress` (`cli/`)** — The `cypress` npm package users install. Entry point for `cypress open`, `cypress run`, `cypress install`, etc. The published version is set by semantic-release, not by `cli/package.json` (which stays `0.0.0-development`).\n\n### Test Runner & Driver\n\n- **`@packages/driver`** — The JavaScript test driver that executes user test code inside the browser. Implements Cypress commands, assertions, retries, and all `cy.*` APIs.\n- **`@packages/runner`** — The webpack-bundled runner UI that hosts the AUT (application under test) iframe and driver communication layer.\n- **`@packages/app`** — The Vue 3 frontend for the Cypress GUI / Launchpad. Main visual interface for the desktop app.\n- **`@packages/launchpad`** — Project creation, onboarding, and test file scaffold UI.\n- **`@packages/frontend-shared`** — Shared Vue components and design system tokens used by `app` and `launchpad`.\n- **`@packages/reporter`** — The test results reporter UI component (pass/fail tree, log panel).\n\n### Server & Network\n\n- **`@packages/server`** — HTTP server responsible for serving test files, handling browser launching, socket communication, and orchestrating the test run.\n- **`@packages/proxy`** — HTTP/S proxy that intercepts all browser traffic during a test run.\n- **`@packages/net-stubbing`** — The `cy.intercept` surface: driver-side command, types, and the server-side glue.\n- **`@packages/network-interception`** — Transport-agnostic core behind `cy.intercept`: route matching, subscription planning, handler merging, and config policy. Holds the rules, none of the I/O — every transport is injected behind an interface.\n- **`@packages/network`** — Low-level network protocol utilities.\n- **`@packages/network-tools`** — Higher-level networking helpers used across packages.\n- **`@packages/https-proxy`** — HTTPS proxy implementation for TLS interception.\n\n### Configuration & Data\n\n- **`@packages/config`** — Configuration types, defaults, validation, and the public `defineConfig` API.\n- **`@packages/data-context`** — Centralized GraphQL data access layer for the Cypress app (projects, specs, runs, settings).\n- **`@packages/scaffold-config`** — Logic for scaffolding new testing setups via Launchpad (framework detection, config file generation).\n\n### Desktop & Electron\n\n- **`@packages/electron`** — Electron runtime wrapper, binary building utilities, and auto-update integration.\n- **`@packages/launcher`** — Browser detection and launch logic for Chrome, Firefox, Edge, WebKit, and Electron.\n- **`@packages/extension`** — WebExtension injected into browsers to enable cross-origin features and automation hooks.\n\n### Types, Errors & Utilities\n\n- **`@packages/types`** — Shared TypeScript type definitions used across all packages.\n- **`@packages/errors`** — Cypress error definitions, error templates, and error utilities.\n- **`@packages/socket`** — WebSocket communication library used for driver ↔ server messaging (browser and Node sides).\n- **`@packages/telemetry`** — OpenTelemetry instrumentation wrapper used throughout the monorepo.\n- **`@packages/icons`** — Icon registry and SVG assets.\n- **`@packages/stderr-filtering`** — Stderr output filtering utilities.\n- **`@packages/agent-info`** — Fingerprints the environment block to tell whether Cypress was invoked by an AI coding agent, and which one. Intentionally pure and dependency-free.\n- **`@packages/cypress-sessions`** — The cross-process contract for Cypress sessions: shared schema, on-disk layout, and the liveness-probe route that lets the CLI find a running `cypress open` session and attach over CDP.\n- **`@packages/example`** — The bundled kitchensink example project. Its `cypress/` and `app/` contents are generated from upstream `cypress-example-kitchensink` — change it there, not here.\n- **`@packages/root`** — Root package metadata consumed by the binary build.\n\n### Build & Snapshot Infrastructure\n\n- **`@packages/v8-snapshot-require`** — Module loading utilities for V8 snapshots in Electron.\n- **`@packages/packherd-require`** — Module loader for dependencies bundled by `@tooling/packherd`.\n- **`@packages/web-config`** — Webpack/PostCSS configuration for the Vue frontend bundles.\n- **`@packages/ts`** — Shared TypeScript configuration and `ts-node` register helper.\n- **`@packages/eslint-config`** — Shared ESLint configuration preset used across packages.\n- **`@packages/resolve-dist`** — Resolves paths to compiled distribution artifacts.\n- **`@tooling/v8-snapshot`** — V8 snapshot creation tooling for Electron startup optimization.\n- **`@tooling/packherd`** — Bundles all reachable dependencies from an entry point into a single artifact.\n- **`@tooling/electron-mksnapshot`** — Configurable `mksnapshot` binary wrapper for the target Electron version.\n\n### Component Testing Adapters (published via `npm/`)\n\n- **`@cypress/react`** — Component testing adapter for React.\n- **`@cypress/vue`** — Component testing adapter for Vue.js.\n- **`@cypress/angular`** — Component testing adapter for Angular.\n- **`@cypress/svelte`** — Component testing adapter for Svelte.\n- **`@cypress/mount-utils`** — Shared utilities used by all component testing adapters.\n\n### Bundler Integrations (published via `npm/`)\n\n- **`@cypress/webpack-dev-server`** — Webpack Dev Server launcher for component testing.\n- **`@cypress/vite-dev-server`** — Vite Dev Server launcher for component testing.\n- **`@cypress/webpack-preprocessor`** — Webpack preprocessor for bundling test spec files.\n- **`@cypress/webpack-batteries-included-preprocessor`** — Webpack preprocessor with batteries included (TypeScript, etc.).\n- **`@cypress/vite-plugin-cypress-esm`** — Vite plugin for mutable ESM modules in browser tests.\n\n### Plugins & Dev Tooling (published via `npm/`)\n\n- **`@cypress/grep`** — Plugin to filter test runs by substring/tag.\n- **`@cypress/puppeteer`** — Plugin to enhance Cypress tests with Puppeteer.\n- **`@cypress/schematic`** — Official Angular CLI schematic for adding Cypress.\n- **`@cypress/eslint-plugin-dev`** — ESLint rules shared across Cypress development packages.\n\n## Code Conventions\n\n- **TypeScript for all new code** — New source, specs, and test fixtures must be TypeScript, not JavaScript. This includes system-test project fixtures: use `cypress.config.ts` and `.cy.ts` specs (lightweight fixtures without their own `node_modules` should `export default { ... }` a plain object rather than importing `defineConfig` from `cypress`).\n- **No Prettier** — Formatting is enforced entirely through ESLint. The `.prettierignore` excludes all files.\n- **Single quotes** — `'single'` quote style required for all JS/TS.\n- **No semicolons** — Enforced via ESLint (`semi: 'never'`).\n- **2-space indentation** — Standard across all JS/TS files.\n- **Trailing commas** — Required in multiline contexts (`comma-dangle: 'always-multiline'`).\n- **No `var`** — `var` declarations are an ESLint error; use `const` or `let`.\n- **Template literals** — `prefer-template: 'error'` — no string concatenation.\n- **Object shorthand** — `object-shorthand: 'error'`.\n- **No `console`** — `no-console: 'error'`; use the logger utilities instead.\n- **TypeScript**: `strict: true` base, but `noImplicitAny: false` (implicit `any` allowed for pragmatic reasons).\n- **Type-only imports**: `importsNotUsedAsValues: \"error\"` — use `import type` for type-only imports.\n- **Type guards over `as`** — Narrow with a type guard, an `asserts` function or an `in` check rather than an `as` assertion, and explain any assertion that remains with a \"Safe because\" comment. See [Type Assertions](./guides/typescript.md#type-assertions).\n- **Unused vars**: Unused variables and imports are errors. Unused function parameters and caught errors are allowed, since callbacks often have to accept arguments they ignore. In packages on the flat config, prefix a variable that exists only to be type-checked with `_`.\n- **No `.only` in tests** — `mocha/no-exclusive-tests: 'error'` (ESLint). Caught by `yarn lint` and by pre-commit ESLint (`lint-staged`). For intentional `.only` in fixtures or type samples, use `eslint-disable-next-line mocha/no-exclusive-tests` (with a short comment).\n- **`.skip` requires a comment** — Must include `NOTE:`, `TODO:`, or `FIXME:` comment explaining why.\n- **Blank line before `return`** — Enforced via `padding-line-between-statements`.\n- **Sync FS calls** — Flagged with a warning (except `existsSync`); prefer async variants.\n\n### Code Comments\n\n- **Prefer none** — Always prefer no code comment if the code is self-explanatory.\n- **Explain the why** — When a comment is necessary, use it to explain the *why* and anything relevant that is not directly expressed by the code itself.\n- **Don't repeat yourself** — Do not restate the same comment multiple times in a file as the code flows through each step.\n- **Present state only** — Keep comments relevant to the current state of the code. Do not describe what changed or how the code used to be different.\n- **Name the reason, not the predecessor** — \"Matches what the old plugin did\" is not a *why*, and it rots once that plugin is deleted. State the reason the old code had, and put parity with replaced tooling in the commit message or guide.\n\nBad examples:\n\n```js\n// never wipe the entire jar - the old hack called clearCookies() with no filter\n// we no longer need to clear the state here, CDP added automatically clearing\n// Firefox previously relied on os-level focus, now we use WebDrive BiDi to focus\n```\n\nGood examples:\n\n```js\n// Close any extra pages so they don't leak into other tests\n// Firefox doesn't support this in native BiDi, so we pull remote.location from current frame\n// `cookie`'s serializer rejects an IPv6 literal Domain (e.g. `[::1]`), crashing\n// the proxy. Browsers scope cookies for IP hosts to that host anyway, so omit\n// Domain and let the cookie default to host-only.\n```\n\n## Runtime targets\n\nCode in this monorepo runs in several runtimes, each with its own JavaScript / runtime-API floor. Before using a modern JS or Node/DOM API, identify which runtime a file executes in and confirm the API is supported there — do **not** assume the development Node version. Where each floor is defined:\n\n- **Dev tooling, gulp, build/dev scripts** — the Node version in [`.node-version`](./.node-version).\n- **The bundled app (main/Electron process)** — the Node embedded in the `electron` version pinned in the root [`package.json`](./package.json) (look up that Electron release's Node/V8).\n- **The config/plugins child process** (`@packages/server` `lib/plugins/child/require_async_child.ts`, forked by `@packages/data-context` `ProjectConfigIpc`) and the **`cypress` CLI** (`cli/`) — the *user's* Node, whose supported range is `engines.node` in [`cli/package.json`](./cli/package.json). This floor is lower than the dev/bundled Node, so it is the binding constraint for that code.\n- **Browser-shipped bundles** (`@packages/app`, `@packages/frontend-shared`, `@packages/driver`) — the last 3 major versions of the supported browsers. Since Safari releases majors roughly annually, the last 3 major versions reach back years, making this the most conservative floor. `@packages/driver` runs in the user's AUT browser. For WebKit, Cypress runs the WebKit bundled with the installed `playwright-webkit` version — not the user's system Safari — so the WebKit floor tracks that dependency.\n\nVerify an API against the relevant floor (node.green for Node, caniuse/MDN for browsers) before relying on it.\n\n## Pull Requests\n\n[`CONTRIBUTING.md`](./CONTRIBUTING.md) is the source of truth for PR conventions, including the semantic-release title prefix that determines the next version. The other essentials:\n\n### Changelog & Template\n\n- The semantic title prefix decides whether an entry in [`cli/CHANGELOG.md`](./cli/CHANGELOG.md) is required, which section it belongs in, and how it must be phrased. The [Writing the Cypress Changelog Guide](./guides/writing-the-cypress-changelog.md) is the source of truth for all of it — read it rather than guessing, and note that a `fix` prefix always requires an entry.\n- Verify a changelog entry with `GH_TOKEN=\"$(gh auth token)\" node ./scripts/semantic-commits/validate-binary-changelog.js`, the same check CI's `verify-release-readiness` job runs. It fails without that token, and needs a root `yarn` install.\n- Fill out the [Pull Request Template](./.github/PULL_REQUEST_TEMPLATE.md) completely. Use `N/A` for irrelevant sections rather than deleting them — PRs will not be reviewed if the template is not filled in.\n\n## CI/CD\n\n- **Primary CI**: CircleCI. Config lives in `.circleci/src/` (modular) and is compiled to `.circleci/packed/pipeline.yml`. See [`.circleci/AGENTS.md`](.circleci/AGENTS.md) for when to add a branch to the full-CI allowlist (binary tests, Windows jobs, v8 snapshot validation).\n- **Supplementary**: GitHub Actions for security scanning (Snyk), SBOM generation, browser version auto-updates, and PR validation.\n- **Base branch**: `develop` — all PRs target `develop`; release branches follow `release/X.Y.Z`.\n- **Multi-platform matrix**: Linux x64, Linux ARM64, macOS x64, macOS ARM64, Windows — all run in parallel. Coverage is per-job, not uniform: `unit-tests` runs only on linux-x64 and windows, so a unit test coupled to the host architecture passes CI and still fails locally on arm64. See [`cli/AGENTS.md`](./cli/AGENTS.md) for keeping specs host-independent.\n- **Release gate**: All tests must pass through the `ready-to-release` aggregation job before `npm-release` runs.\n- **External PRs**: Require manual approval via `approve-contributor-pr` gate before CI runs.\n- **Binary builds**: Triggered separately after npm release; cross-platform binaries are assembled and distributed via CDN.\n\n## Cloud agent environments\n\nRunning the repo in a hosted container (Cursor Cloud, Claude Code on the web, and similar). Most of this applies to any of them; bullets that name a host apply only there, so confirm the rest against the container you are in rather than assuming.\n\n### Environment\n\n- Yarn 1.22.22 is pre-installed. Whatever the host runs to prepare the container invokes `yarn`, which runs the postinstall. What it covers depends on `CI` ([`scripts/run-postInstall.js`](./scripts/run-postInstall.js)): with `CI` set, as on Claude Code on the web, it skips `yarn-deduplicate`, `yarn build` and the V8 snapshot, so nothing is built. Check `echo $CI`, and run `yarn build` before anything that loads built packages, such as system tests. After adding or changing a dependency, run `yarn check-lockfile`. If it lists duplicates, run `yarn-deduplicate --strategy=highest` and commit the result, or CI's \"Check yarn.lock is deduplicated\" job fails.\n- The root `package.json` sets `engines.node` to the version in [`.node-version`](./.node-version), so yarn refuses to run any script on an older Node: `The engine \"node\" is incompatible with this module`. Containers that pre-install a lower version need the required one installed before anything else works — see [Matching the required Node version](#matching-the-required-node-version).\n- Browsers and a display differ by host. Cursor Cloud runs Xvfb on `DISPLAY=:1` and ships Chrome at `/usr/bin/google-chrome-stable`. Claude Code on the web has Xvfb installed but leaves `DISPLAY` unset, and has no Chrome — only the Chromium that Playwright bundles under `$PLAYWRIGHT_BROWSERS_PATH`. There, `cypress run` starts its own Xvfb when `DISPLAY` is unset, so the Cypress-based suites do run; pass `--browser \"$PLAYWRIGHT_BROWSERS_PATH/chromium\"` instead of `--browser chrome`, and wrap anything else that needs a display (such as `yarn dev`) in `xvfb-run -a`. On any host, prefix Electron commands with `env -u ELECTRON_RUN_AS_NODE`: some agent hosts set it, and it makes Electron start as plain Node.\n\n### Running Cypress in dev mode\n\n- `yarn dev` starts the Cypress Electron GUI in global/dev mode (Launchpad). It builds Vite bundles for `@packages/app` and `@packages/launchpad`, then launches Electron. The GraphQL server runs at `http://localhost:4444/__launchpad/graphql`.\n- `yarn cypress:run -- --project <path> --browser chrome --headless` runs Cypress headlessly in dev mode. The config file at the target project must NOT `require('cypress')` since it resolves from the project root.\n\n### Running tests\n\n- Prefer scoped tests: `yarn workspace @packages/<name> test`. Do not use `yarn test --scope <name>` — lerna unions scopes with the ones the root `test` script already sets, so it broadens the run instead of narrowing it. `yarn lint --scope` and `yarn check-ts --scope` do narrow correctly.\n- Some test suites (e.g., `@packages/network`) require privileged ports (443) and will fail with EACCES in unprivileged containers — this is expected.\n- `@packages/config` has 2 tests that assert `cypressBinaryRoot` contains `'cypress'`; these fail when the workspace directory name differs (e.g., `/workspace`). This is a known path-dependent issue, not a code bug.\n\n### Running system tests\n\nSpecs in `system-tests/test` run in cloud containers. Specs in `system-tests/test-binary` need Docker and a built binary, so they do not.\n\n1. **Build once:** `env -u ELECTRON_RUN_AS_NODE yarn build`. System tests need all three things it produces: the compiled workspace packages, the dev Electron app in `packages/electron/dist/Cypress`, and the `cli/dist` bundle that fixture projects resolve `cypress` from. Without them the run fails with `Cannot find module '…/lib-dist/index.js'`, `spawn …/dist/Cypress/Cypress ENOENT`, or `Cannot find module '…/cypress/dist/index.js'`.\n2. **Run by file name fragment:** `env -u ELECTRON_RUN_AS_NODE yarn test-system go_spec --browser electron`. The script wraps its argument in `{test,test-binary}/**/*<arg>*`, so a path such as `test/go_spec.js`, or `--spec <path>`, matches nothing. The runner starts its own Xvfb, so `DISPLAY` can stay unset.\n3. **Pick a browser that exists:** Claude Code on the web has no Chrome or Firefox install, so pass `--browser electron`. It runs the Electron variant and reports the other browsers as pending.\n4. **Restore snapshots afterwards:** a local run prunes snapshot keys for tests it skipped. See [`system-tests/AGENTS.md`](./system-tests/AGENTS.md).\n\nIf `yarn build` fails in `@cypress/vue` with `Cannot find module '@cypress/mount-utils'` while `npm/mount-utils/dist` exists, the rollup-plugin-typescript2 cache is stale: delete `npm/vue/node_modules/.cache/rollup-plugin-typescript2` and rerun.\n\n### Linting\n\n- `yarn lint --scope @packages/<name>` for focused lint. Full monorepo lint: `yarn lint`.\n\n### Matching the required Node version\n\nInstall the required version from the repo root, where `nvm` picks it up from [`.nvmrc`](./.nvmrc):\n\n```bash\nexport NVM_DIR=/opt/nvm          # wherever nvm is installed\n. \"$NVM_DIR/nvm.sh\" || true      # see below: sourcing can exit non-zero\nnvm install                      # reads .nvmrc\n```\n\nTwo things bite here:\n\n- **Source `nvm.sh` on its own line.** It exits non-zero when no default version is aliased yet, so `. \"$NVM_DIR/nvm.sh\" && nvm install` silently skips the install and looks like a failed download.\n- **`nvm use` does not survive a new shell.** Containers that put their own Node first on `PATH` keep resolving to it in every new shell, so the version reverts between commands. Prepend the installed version's bin directory to `PATH` in whatever the environment persists across commands (a shell profile, or the session env file that agent harnesses expose):\n\n```bash\necho \"export PATH=\\\"$(nvm which current | xargs dirname):\\$PATH\\\"\" >> ~/.bashrc\n```\n\nVerify with `node -v` in a *fresh* shell rather than the one that ran `nvm use`.\n\nPrefer this over `yarn --ignore-engines`: the flag only silences the check for the install itself. `yarn <script>` still refuses to run afterwards (`Commands cannot run with an incompatible environment`), and the postinstall rebuilds native modules such as `better-sqlite3` against the wrong Node.\n\n### Key caveats\n\n- The postinstall takes ~4-5 minutes (build + V8 snapshot generation). If `yarn` is interrupted, re-run it.\n- `yarn --frozen-lockfile` should be preferred when the lockfile hasn't changed; it falls back to `yarn` (which runs postinstall) if it fails.\n- Do not run `yarn` from within sub-packages. Always run from the repo root.\n\n<!-- File: cli/AGENTS.md (Tokens: ~1297 | Category: root-instruction) -->\n# CLI Workspace\n\n## Purpose\n\nThe `cli/` workspace contains the `cypress` npm package — the user-facing CLI and programmatic API — plus the first-party component-testing mount adapters that ship bundled inside it. This is the top-level package users install (`npm install cypress`). The mount adapters (`@cypress/react`, `@cypress/vue`, etc.) live here as sibling directories and are published independently on npm, but their built artifacts are also copied into `cli/` so that users can import them as `cypress/react`, `cypress/vue`, etc.\n\n## Package Map\n\n### Main CLI\n\n**cypress** — The `cypress` npm package. Provides the `cypress` binary, programmatic Node.js API, TypeScript type definitions, and re-exports the built CT adapter artifacts.\n\n### Component-Testing Adapters\n\n**@cypress/angular** — Mount adapter for Angular 21+ components.\n\n**@cypress/mount-utils** — Internal shared utilities and types that all CT mount adapters depend on. Not intended for direct use by end users.\n\n**@cypress/react** — Mount adapter for React 18+ components.\n\n**@cypress/svelte** — Mount adapter for Svelte 5+ components.\n\n**@cypress/vue** — Mount adapter for Vue 3 components.\n\n## Workspace Commands\n\n```bash\n# Build the main cypress CLI package\ncd cli && yarn build-cli\n\n# Build only (no pre/post steps)\ncd cli && yarn build\n\n# Run a specific unit test file\ncd cli && yarn test-unit -- <path-to-spec>\n\n# Run unit tests matching a glob pattern\ncd cli && yarn test-unit -- \"<glob-pattern>\"\n\n# Type-check types/\ncd cli && yarn types\n\n# Build a CT adapter (example: react)\ncd cli/react && yarn build\n\n# Build mount-utils (tsc-based, not rollup)\ncd cli/mount-utils && yarn build\n```\n\n## Unit Tests\n\nThe `unit-tests` CI job runs only on `linux-x64` and `windows` — there is no arm64 executor — so **a spec coupled to the host machine passes CI and still fails for contributors**, most often on Apple Silicon. Keep specs host-independent.\n\n- **Pin the architecture at both layers.** `util.getRealArch()` consults `os.arch()` only for its early returns; otherwise it falls through to the `arch` package, which reports the real machine. A spec asserting on output that carries an arch — `Platform:` lines, download URLs, `?arch=` query params, CDN build URLs — needs a file-scoped `vi.mock('arch', () => ({ default: () => 'x64' }))` alongside `vi.mocked(os.arch).mockReturnValue('x64')`. Mock it per file rather than globally through `setupFiles`: some specs exercise real-machine detection deliberately, and a shared mock hides the dependency from the file that relies on it.\n- **Keep test helpers generic.** Normalizers that scrub output before snapshotting must match the shape of a host value, not the value itself — `&arch=[\\w-]+`, never `&arch=x64` — so the helper cannot re-couple a snapshot to the host.\n- **Never run `vitest -u` to clear a host-dependent failure.** Committed snapshots encode the canonical values; regenerating them on a different machine buries the coupling and breaks everyone else. Fix the mock instead.\n- **Treat other host facts the same way** — `os.platform()`, `os.release()`, `os.tmpdir()`, `os.homedir()`, cache directories, path separators. Assert against mocked values, never whatever the machine reports.\n\nVerify an arch or platform mock is load-bearing rather than decorative: flip its factory to the other value, run that spec, and confirm the expected tests fail. A mock wired to nothing is worse than no mock, because it reads as coverage.\n\n`util._cachedArch` is a module-level singleton. A file-scoped `vi.mock('arch')` is in place before the first call, so the cached value is already the mocked one; reset it (`util._cachedArch = undefined`) only in specs that vary the arch between tests.\n\n## Notes\n\n- The main CLI build uses Rollup (configured in `rollup.config.mjs`). Entry points are `lib/index.ts`, `lib/cli.ts`, `lib/cypress.ts`, `lib/exec/xvfb.ts`, `lib/exec/spawn.ts`, and `lib/bin/cypress.ts`. Output goes to `dist/` and is copied to `build/` via `sync-build-dist.ts`.\n- The `cli/react`, `cli/vue`, `cli/angular`, `cli/svelte`, and `cli/mount-utils` directories are build output, not sources — each adapter's `postbuild` writes them, and the adapter sources live in `npm/`. See [`npm/AGENTS.md`](../npm/AGENTS.md) for the mechanism.\n- Unit tests for the CLI itself live in `cli/test/` and run under Vitest (`test/**/*.spec.ts`).\n- TypeScript type definitions for the public Cypress API live in `cli/types/`. The `dtslint` tool is used to validate them, configured by `cli/types/tslint.json`. That file must stay plain JSON, so the reasons behind its settings are recorded here:\n  - `no-single-declare-module` is off because the Cypress npm module API is kept in its own file on purpose.\n  - `no-unnecessary-qualifier` is off because it flags qualifiers the types need.\n  - `linterOptions.exclude` lists the bundled third-party typings (lodash, chai, sinon and so on), which don't follow our rules. It also lists `net-stubbing.d.ts`, which is copied in from `@packages/network-interception` and renamed, so it was never written as a declaration file.\n- The `CYPRESS_INSTALL_BINARY` environment variable can be set to a path or URL to override the binary downloaded during `postinstall`.\n- The `cypress` package sets `\"private\": true` in its monorepo `package.json` — publishing is handled by CI scripts that prepare a separate `package.json`.\n\n<!-- File: npm/AGENTS.md (Tokens: ~1581 | Category: root-instruction) -->\n# npm Workspace\n\n## Purpose\n\nThe `npm/` directory contains the publicly published npm packages for the Cypress ecosystem, including component testing adapters for each supported UI framework, bundler integrations that power the component testing dev server, and plugins and dev tooling used by Cypress consumers and the Cypress team. These packages are versioned and released independently from the main `cypress` binary; they are released automatically via semantic-versioning commit prefixes (`feat`, `fix`, `chore`, etc.) when changes land on `develop`.\n\n## Package Map\n\n### Component Testing Adapters\n\n- **@cypress/react** — Mount React components (React 18+) in the Cypress test runner\n- **@cypress/vue** — Mount Vue 3 components in the Cypress test runner\n- **@cypress/angular** — Mount Angular components (Angular 21+) in the Cypress test runner\n- **@cypress/svelte** — Mount Svelte 5+ components in the Cypress test runner\n- **@cypress/mount-utils** — Shared utility types and helper functions consumed by all component testing adapters; not intended for direct use by end users\n\n### Bundler Integrations\n\n- **@cypress/webpack-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Webpack Dev Server\n- **@cypress/vite-dev-server** — Implements the object-syntax `devServer` API for Cypress component testing backed by Vite (peer dependency `vite@^8`)\n- **@cypress/webpack-preprocessor** — Cypress file preprocessor for bundling test files via Webpack 5; requires peer deps (`@babel/core`, `babel-loader`, etc.) to be installed by the consumer\n- **@cypress/webpack-batteries-included-preprocessor** — Wrapper around `@cypress/webpack-preprocessor` that bundles Babel and TypeScript loaders so consumers do not need to configure them separately\n- **@cypress/vite-plugin-cypress-esm** — Vite plugin (alpha) that wraps ES modules in a `Proxy` to allow mutation/mocking of ESM namespaces in component tests\n\n### Plugins & Dev Tooling\n\n- **@cypress/grep** — Plugin for filtering Cypress tests by substring or tags at runtime, with options for spec pre-filtering and test burning\n- **@cypress/puppeteer** — Plugin (beta) that runs Puppeteer message handlers registered in `setupNodeEvents` when a spec calls `cy.puppeteer(name, ...args)`; each handler receives a Puppeteer `Browser` connected to the Cypress-launched Chromium browser\n- **@cypress/schematic** — Official Angular CLI schematic and builder for scaffolding Cypress configuration into Angular projects (`ng add @cypress/schematic`)\n- **@cypress/eslint-plugin-dev** — Private, unpublished. The eslintrc presets the monorepo packages still on ESLint 8 lint against; being retired in favour of `@packages/eslint-config`\n\n## Workspace Commands\n\nEach package manages its own build, and script names are not uniform — check the package's `package.json` before running anything. From within a package directory:\n\n```sh\nyarn build          # compile TypeScript / run rollup (varies by package)\nyarn check-ts       # type-check without emitting (not every package has it, e.g. grep, schematic)\nyarn lint           # run ESLint\nyarn test -- <path-to-spec>          # vitest packages: target a specific file\nyarn test -- \"<glob-pattern>\"        # vitest packages: target specs matching a glob\n```\n\nWhat `yarn test` runs depends on the package:\n\n- **vitest** — `grep`, `puppeteer`, `schematic`, `vite-dev-server`, `webpack-dev-server`, `webpack-batteries-included-preprocessor`, `eslint-plugin-dev`\n- **Cypress** — `react` and `vue` (`yarn cy:run -- --spec <path-to-spec>`), `vite-plugin-cypress-esm` (`yarn cypress:run`)\n- **Custom script** — `webpack-preprocessor` runs `tsx ./scripts/test-webpack-5.ts` (it also has `test-unit` and `test-e2e`)\n- **No `test` script** — `angular`, `svelte`, `mount-utils`\n\nPackages with their own Cypress e2e suite use `cypress:open` / `cypress:run` (`grep`, `puppeteer`, `vite-dev-server`, `webpack-dev-server`, `vite-plugin-cypress-esm`); only `react` and `vue` use `cy:open` / `cy:run`.\n\nFrom the monorepo root:\n\n```sh\nyarn workspace @cypress/<pkg> build              # build a single package\nyarn lerna run build --scope '@cypress/*'        # build all npm packages\n```\n\n## Notes\n\n- **Re-export into `cli/`** (canonical description; other files point here). `react`, `vue`, `angular`, `svelte`, and `mount-utils` each run `postbuild` → [`scripts/sync-exported-npm-with-cli.js`](../scripts/sync-exported-npm-with-cli.js). It resolves the file list with `npm-packlist` — the files npm *would publish*, per the package's `files` key, which is a wider set than `dist/` — wipes `cli/<name>/`, copies them in, and then rewrites the `exports` map in `cli/package.json`. That is what makes `import ... from 'cypress/react'` resolve. Build the package before testing it in the binary; nothing else refreshes the `cli/` copy.\n- **Adapter builds can run before the `cypress` typedefs exist.** Packages with `\"types\": [\"cypress\"]` resolve it to `cli/types`, whose third-party folders (`jquery`, `mocha`, `chai`, etc., listed in `cli/.gitignore`) are generated by the cli build. CI's `lerna run build` compiles `@cypress/react` before that, so names like `JQuery` are undefined there but resolve in a local checkout that has built the cli once. A `@ts-expect-error` on such a line fails in one setup or the other, and so does deleting the directive. Reproduce CI by moving those generated folders out of `cli/types` before running the package build.\n- `@cypress/webpack-dev-server` and `@cypress/vite-dev-server` are bundled with the Cypress binary and generally do not need to be installed separately by end users; the object-syntax `devServer` config in `cypress.config.ts` is the primary API.\n- `@cypress/webpack-batteries-included-preprocessor` requires `@cypress/webpack-preprocessor` as a peer dependency and must be installed alongside it.\n- `@cypress/eslint-plugin-dev` is private and no longer published — it is for internal Cypress development only, and the packages that consume it are migrating to `@packages/eslint-config`. Do not recommend it to end users; the user-facing ESLint plugin lives at `eslint-plugin-cypress` (a separate repository).\n- `npm/xpath/` holds only a README: `@cypress/xpath` is deprecated and no longer maintained, and there is no source or `package.json` here.\n- Releases are triggered automatically by semantic commit messages on `develop`; there is no manual publish step for individual packages.\n\n<!-- File: packages/AGENTS.md (Tokens: ~1869 | Category: root-instruction) -->\n# Packages Workspace\n\n## Purpose\n\nThe `packages/` workspace contains all first-party Cypress packages that make up the Cypress monorepo. These packages are the implementation of the Cypress test runner, its tooling, and supporting infrastructure. Each package is a standalone npm package (scoped under `@packages/`) consumed by the Cypress binary build, by each other, and in some cases by the public.\n\n## Package Map\n\n### App & Frontend\n\n- **@packages/app** — The main Vue 3 front-end application for the Cypress browser-side UI (specs list, Test Replay, runner toolbar, Studio).\n- **@packages/launchpad** — Vue 3 Electron-rendered application shown when running `cypress open`; handles login, project selection, and configuration setup.\n- **@packages/frontend-shared** — Shared Vue 3 components, TailwindCSS config, composables, and i18n strings consumed by both `app` and `launchpad`.\n- **@packages/reporter** — The test result reporter UI (command log, test tree) rendered inside the runner iframe.\n- **@packages/runner** — Legacy webpack bundler for `driver` and `reporter`; being phased out in favour of `app`.\n\n### Test Runner & Driver\n\n- **@packages/driver** — Core JavaScript library loaded inside the browser; executes Cypress commands and manages the test runtime.\n- **@packages/extension** — Chrome/Firefox WebExtension that enables browser automation (v2 Manifest V2, v3 Manifest V3).\n\n### Server & Network\n\n- **@packages/server** — Node.js heart of Cypress: HTTP server, proxy orchestration, file watching, plugin execution, and IPC with the browser.\n- **@packages/proxy** — HTTP interception proxy layer; applies middleware to requests and responses to enable stubbing, rewriting, and header injection.\n- **@packages/net-stubbing** — Server-side implementation of `cy.intercept()`; route matching, request/response lifecycle, and driver event bridge.\n- **@packages/network** — Node.js networking utilities: HTTP/HTTPS proxy-aware agents, CA certificate management, and connection helpers.\n- **@packages/network-tools** — Isomorphic (browser + Node.js) low-level networking utilities: CORS helpers, URI parsing, domain utilities.\n- **@packages/https-proxy** — Intercepts TLS connections by acting as a dynamic CA; generates per-hostname certificates on the fly using `node-forge`.\n\n### Configuration & Data\n\n- **@packages/config** — Canonical Cypress configuration schema, option definitions, validation logic, and AST-based `cypress.config` file transforms.\n- **@packages/data-context** — Centralized GraphQL data layer (Nexus schema) for the Cypress app; manages project state, Cloud queries, file watching, and actions.\n- **@packages/scaffold-config** — Detects frameworks/bundlers in a user's project and scaffolds `cypress.config.js` and supporting files during onboarding.\n\n### Desktop & Electron\n\n- **@packages/electron** — Installs, packages, and manages the Electron binary that wraps Cypress; provides the `cypress-electron` CLI entrypoint.\n- **@packages/launcher** — Detects installed browsers on macOS, Linux, and Windows and launches them with the correct flags and profile paths.\n\n### Types, Errors & Utilities\n\n- **@packages/types** — Shared TypeScript type definitions used across the entire monorepo.\n- **@packages/errors** — Centralised error definitions, formatting utilities, and `errTemplate` tagged-template system for all Cypress error messages.\n- **@packages/socket** — Thin shared wrapper around `socket.io` client and server instances used for browser–server IPC.\n- **@packages/telemetry** — OpenTelemetry convenience wrapper for capturing performance spans and usage signals inside Cypress processes.\n- **@packages/icons** — Cypress icon assets (SVG, PNG, ICO) and build scripts that produce browser-consumable image files.\n- **@packages/stderr-filtering** — Utility for tagging and filtering noisy third-party stderr output into `debug` streams.\n- **@packages/agent-info** — Detects whether an AI coding agent invoked the current process, and which one, by fingerprinting environment variables.\n\n### Build & Snapshot Infrastructure\n\n- **@packages/v8-snapshot-require** — Loads V8 heap snapshots created by `@tooling/v8-snapshot` to accelerate Electron startup time.\n- **@packages/packherd-require** — Module loader for bundles produced by `@tooling/packherd`; also provides on-demand TypeScript transpilation with source-map support.\n- **@packages/web-config** — Shared webpack/Vite configuration helpers for browser bundles inside the monorepo.\n- **@packages/ts** — Standardises `ts-node` version and base `tsconfig` options for development-time TypeScript require hooks.\n- **@packages/eslint-config** — Monorepo-wide ESLint flat-config with rules for TypeScript, Vue, React, Cypress tests, and imports.\n- **@packages/resolve-dist** — Centralizes path resolution for compiled/static assets referenced from server-side code.\n- **@packages/root** — Bundles the monorepo root `package.json` as an installable package so any package can reference root metadata without absolute paths.\n- **@packages/runner** — (see App & Frontend above)\n\n## Workspace Commands\n\n```bash\n# Run tests targeting a specific file (vitest packages)\nyarn workspace @packages/<name> test -- <path-to-spec>\n\n# Run tests targeting a specific file glob (vitest packages)\nyarn workspace @packages/<name> test -- \"<glob-pattern>\"\n\n# Build a specific package\nyarn workspace @packages/<name> build\n\n# Run lint for a specific package\nyarn workspace @packages/<name> lint\n\n# Type-check a specific package\nyarn workspace @packages/<name> check-ts\n\n# Run all package builds (from repo root)\nyarn build\n```\n\n## Notes\n\n- Most packages publish both CJS (`cjs/`) and ESM (`esm/`) builds; the `main` field points to CJS and `module` to ESM.\n- Do not build `.js` files by hand. Whether a package needs a pre-build is decided by where its `main` points. A handful still point at tracked source and resolve TypeScript at require time — `proxy` and `data-context` through an `@packages/ts/register` shim, `server` through `tsx`, `net-stubbing` straight at `lib/server` — and those need no build. That is the legacy pattern and is being retired: most Node-side packages now point `main` at build output under `cjs/`, `esm/`, or `dist/`, and a package cannot run its tests until every first-party dependency resolved that way has been built. Check the dependency's own `main` rather than assuming either way.\n- A missing dependency build surfaces as `Failed to resolve entry for package \"@packages/x\"` from `vite:import-analysis`, which reads like a malformed `package.json` rather than a missing build. Each run only names the next one, so a fresh worktree can need several builds in turn — see [`network/AGENTS.md`](./network/AGENTS.md) for a worked example. A full root `yarn` runs a lerna build and covers this; `yarn clean` or an interrupted install is what leaves you short.\n- The browser bundles (`driver`, `runner`, `app`, `launchpad`, `frontend-shared`, `reporter`) always need building, by `yarn watch` from the repo root.\n- Many packages use `vitest` for unit tests; the front-end packages (`app`, `launchpad`, `frontend-shared`) use Cypress component tests and E2E tests (cypress-in-cypress pattern).\n- The `nohoist` workspace option prevents specific dependencies from being hoisted to the monorepo root. It is set in `driver` (which nohoists everything, `[\"*\"]`), `frontend-shared`, `proxy`, `server`, `socket`, and `types` — check the package's own `package.json` `workspaces.nohoist` rather than assuming.\n- Packages that depend on generated GraphQL types (from `data-context`) must run `yarn build:graphql` before type-checking will pass.\n- **When adding or removing a package under `packages/`**, regenerate the path map with `yarn gulp makePathMap` (from the repo root). This rewrites the auto-generated [`scripts/gulp/monorepoPaths.ts`](../scripts/gulp/monorepoPaths.ts), produced by [`scripts/gulp/utils/makePathMap.ts`](../scripts/gulp/utils/makePathMap.ts) from an enumeration of `packages/*` — do not hand-edit it. `yarn dev` regenerates it too, but run the task explicitly so the change is committed alongside the package addition.\n\n<!-- File: scripts/AGENTS.md (Tokens: ~300 | Category: root-instruction) -->\n# scripts - AI Agent Protocol & Instructions\n\nPath: `scripts/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/scripts/AGENTS.md)\n\n<!-- File: system-tests/AGENTS.md (Tokens: ~300 | Category: root-instruction) -->\n# system-tests - AI Agent Protocol & Instructions\n\nPath: `system-tests/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/system-tests/AGENTS.md)\n\n<!-- File: tooling/AGENTS.md (Tokens: ~300 | Category: root-instruction) -->\n# tooling - AI Agent Protocol & Instructions\n\nPath: `tooling/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/tooling/AGENTS.md)\n\n<!-- File: .claude/rules/generated-files.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/generated-files.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/generated-files.md)\n\n<!-- File: .claude/rules/runtime-floor-browser.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/runtime-floor-browser.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-browser.md)\n\n<!-- File: .claude/rules/runtime-floor-user-node.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/runtime-floor-user-node.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/runtime-floor-user-node.md)\n\n<!-- File: .claude/rules/snapshots.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/snapshots.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/snapshots.md)\n\n<!-- File: .claude/rules/test-runner.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Rules Skill\n\nPath: `.claude/rules/test-runner.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/.claude/rules/test-runner.md)\n\n<!-- File: .claude/skills/building-cypress-binary/SKILL.md (Tokens: ~1833 | Category: anthropic-skill) -->\n---\nname: building-cypress-binary\ndescription: >-\n  Builds and packages the Cypress Electron binary locally (yarn binary-build,\n  binary-package, binary-zip, Docker/Linux parity), including non-interactive\n  --version/--platform flags and unsetting ELECTRON_RUN_AS_NODE for agent hosts.\n  Covers macOS signing, optional env speedups, dist smoke-test pitfalls, and why\n  the tree is dirty after a build. Use when the user asks to build the Cypress\n  binary, binary-package, electron MODULE_NOT_FOUND during binary-build, or\n  local binary zip. For artifact debugging, use debugging-cypress-artifacts.\n---\n\n# Building the Cypress binary\n\nCanonical reference: [guides/building-release-artifacts.md](../../../guides/building-release-artifacts.md) (npm `.tgz` vs binary `.zip`, CI context).\n\nArtifact debugging (packaged CLI, `CYPRESS_RUN_BINARY`, git debug loop): [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## Agent execution\n\nRun from repo root with **Yarn 1** and Node per **`.node-version`**. Request **`network`** for `yarn` / `yarn lerna …`; request **`all`** for `yarn binary-build` and `yarn binary-package` (long runs, temp dir under OS tmp, high memory). Sandbox vs full permissions does **not** fix a failed dist smoke test if **`ELECTRON_RUN_AS_NODE=1`** is set — unset that var instead (below). Do not ask the user to approve each command separately during one build session.\n\n**Prerequisites:** If `node_modules/.bin/lerna` or `rollup` is missing, run **`yarn`** first (postinstall runs the monorepo build; may take several minutes).\n\n**Agent hosts:** Prefix binary commands with **`env -u ELECTRON_RUN_AS_NODE`** (or export `env -u ELECTRON_RUN_AS_NODE` for the shell session). Cursor/Electron environments often set this to `1`, which is unrelated to sandboxing.\n\n## Commands (from repo root)\n\nUse **Yarn 1** and the Node version in `.node-version`.\n\n1. **`yarn binary-build`** — build the Electron app and staging tree (runs broad `lerna` `build` / `build-prod` as part of the pipeline).\n2. **`yarn binary-package`** — package the built binary (electron-builder).\n3. **`yarn binary-zip`** — zip the packaged output.\n\nLinux parity with CI: run `yarn binary-build` and `yarn binary-package` **inside** `yarn docker` if you want the same environment as CI.\n\n### Non-interactive (CI, agents, no TTY)\n\n`scripts/binary/index.js` prompts for missing options via Inquirer. If **`version`** and **`platform`** are already present in argv (parsed with `minimist`), those prompts are skipped.\n\n| Step | Required argv |\n|------|----------------|\n| `binary-build` | `--version <semver>` and `--platform <os>` |\n| `binary-package` | same as build |\n| `binary-zip` | `--platform <os>` only |\n\n**`--platform`:** `darwin` \\| `linux` \\| `win32` (defaults to `os.platform()` when interactive).\n\n**`--version`:** must match what the built app reports from **`node index.js --version`** in the staged `dist/` (via `@packages/root`). On `develop` this is often **not** root `package.json`’s `0.0.0-development` — e.g. a release-style **`15.x.x`** baked into packages. Before a long build, discover it with:\n\n```bash\nenv -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version\n```\n\nOr read stdout from a prior partial build’s `dist/`. A mismatch fails with `different version reported`.\n\n**macOS local example** (skip notarization; Apple Silicon ad-hoc run after pack):\n\n```bash\nexport SKIP_NOTARIZATION=1\nexport RESET_ADHOC_SIGNATURE=1   # arm64 only; harmless to omit on Intel\nexport V8_SNAPSHOT_DISABLE_MINIFY=1   # optional: faster packaging\nBINARY_VERSION=\"$(env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version)\"\nenv -u ELECTRON_RUN_AS_NODE yarn binary-build --version \"$BINARY_VERSION\" --platform darwin\nenv -u ELECTRON_RUN_AS_NODE yarn binary-package --version \"$BINARY_VERSION\" --platform darwin\nyarn binary-zip --platform darwin\n```\n\nYarn 1 forwards extra args to the script; an explicit `--` before flags also works if you prefer it.\n\n## macOS\n\n- Code signing: follow Apple’s code signing setup (see guide link above); [code-signing.md](../../../guides/code-signing.md) for CI-oriented detail.\n- Local builds often skip notarization: set **`SKIP_NOTARIZATION=1`** (notarization needs an Apple Developer Program account).\n\n## Optional environment\n\n| Variable | Effect |\n|----------|--------|\n| `V8_SNAPSHOT_DISABLE_MINIFY=1` | Faster packaging (less minification work). |\n| `RESET_ADHOC_SIGNATURE=1` | **Apple Silicon (M1+)** — often required to run the packaged binary locally after an ad-hoc sign. |\n| `SKIP_NOTARIZATION=1` | Skip macOS notarization for local builds. |\n\n**Unset for binary-build (do not export):** `ELECTRON_RUN_AS_NODE` — see next section.\n\n## Why the repo looks “dirty” afterward\n\nA full binary build drives **`yarn lerna run build`** and **`build-prod`** across packages, writes many **`dist/`** artifacts, uses a **root `build/`** symlink into a temp dir (`scripts/binary/build.ts` → `TMP_BUILD_DIR`), and can leave output **interleaved with source** (**.js` beside `.ts`**, some **`.ts` mutations**). Expect **`git status` to be unusable** until reset.\n\n**Full reset:** `git clean -xfd && yarn` — destroys untracked/ignored files; do not rely on stash here.\n\n**Keeping WIP through a build:** use the commit → build → clean → **`git reset HEAD~1`** loop or a **git worktree** — see [debugging-cypress-artifacts](../debugging-cypress-artifacts/SKILL.md).\n\n## `binary-build` dist smoke test and `ELECTRON_RUN_AS_NODE`\n\nAfter Lerna `build` / `build-prod`, `scripts/binary/build.ts` runs **`node index.js --version`** in the staged **`dist/`** tree (`TMP_BUILD_DIR`, e.g. `/tmp/cypress-build/darwin/dist`). `testDistVersion` compares stdout to the **`--version`** argv.\n\n### `Cannot find module 'electron'` (false failure)\n\n**Cause:** Parent shell has **`ELECTRON_RUN_AS_NODE=1`** (common in Cursor/Electron agent hosts). `packages/server/lib/util/electron-app.js` `isRunning()` then returns true, `start-cypress.js` calls **`require('electron')`**, and Node fails — the production **`dist/`** tree does **not** include the `electron` npm package (only the packaged Electron app later).\n\n**Not:** missing `copyAllToDist` / sandbox hiding `node_modules`. Repro: with `ELECTRON_RUN_AS_NODE=1` the staged dist fails; with **`env -u ELECTRON_RUN_AS_NODE`** the same `node …/dist/index.js --version` succeeds.\n\n**Mitigations:**\n\n1. Agents: **`env -u ELECTRON_RUN_AS_NODE yarn binary-build …`** (and package steps).\n2. Repo: `testDistVersion` in `scripts/binary/build.ts` omits **`ELECTRON_RUN_AS_NODE`** from the child `execa` env so builds are stable even when the parent sets it.\n\n### `different version reported`\n\n**Cause:** `--version` argv does not match **`node index.js --version`** from the built dist (version baked via `@packages/root` during the build, which may differ from root `package.json` on `develop`).\n\n**Fix:** Use the discovery command in **Non-interactive** above, or stdout from a partial `dist/` after a failed build.\n\n<!-- File: .claude/skills/debugging-cypress-artifacts/SKILL.md (Tokens: ~2010 | Category: anthropic-skill) -->\n---\nname: debugging-cypress-artifacts\ndescription: >-\n  Debugs Cypress bugs that only reproduce in packaged artifacts (cli/build CLI\n  plus binary-package output), not yarn dev. Covers the git commit/build/clean/\n  reset debug loop, env -u ELECTRON_RUN_AS_NODE for binary-build on agent hosts,\n  CYPRESS_RUN_BINARY, DEBUG and inspect flags, and workspace recovery without\n  stash. Use when investigating artifact-only bugs, binary-build electron\n  MODULE_NOT_FOUND, or a packaged cypress open/run repro loop.\n---\n\n# Debugging Cypress packaged artifacts\n\nSome bugs only appear in **release-shaped** code: Rollup output under **`cli/build/`** (not `yarn dev`), plus the **packaged Electron app** from `binary-package` (not `scripts/start.js` / **`cypress open --dev`**).\n\nBuild steps: see [building-cypress-binary](../building-cypress-binary/SKILL.md).\n\n## Agent execution (avoid repeated permission prompts)\n\nRun this workflow **without asking the user to approve each command**. Use elevated permissions up front:\n\n| Phase | Command pattern | Permissions |\n|-------|-----------------|-------------|\n| Install | `yarn` from repo root (if `node_modules/.bin/lerna` missing) | `network` |\n| CLI build | `yarn lerna run build-cli --scope cypress` | `network` |\n| Binary build | `env -u ELECTRON_RUN_AS_NODE yarn binary-build` / `binary-package` with `--version` / `--platform` | `all` (long-running, writes outside workspace temp dirs). **Unset `ELECTRON_RUN_AS_NODE`** — see building skill. |\n| Repro / logs | `node cli/build/dist/bin/cypress …`, `node packages/server/index.js --version` | `network` if debug ingest uses HTTP |\n| Cleanup | `git clean -xfd`, then `yarn` | `all` for clean; `network` for yarn |\n\nDo **not** re-prompt for sandbox/network on every step in the same session once the user has asked for a full artifact debug loop.\n\n## Git workflow for a debug loop (single checkout)\n\nBinary builds use the **full tree** and leave the workspace unusable for normal dev (generated `.js` beside `.ts`, possible **`.ts` mutations**, `dist/`, root `build/` symlink, etc.). **Do not use `git stash push -a`** — stash mixes real WIP with binary cruft.\n\nUse a **WIP commit** as a bookmark, then **reset** (not **`git revert`**) to restore edits after cleanup:\n\n1. **`git checkout -b debug/<topic>`** (or stay on an existing debug branch).\n2. **Analysis edits** (logging, temporary probes, etc.). Commit only what you mean — prefer **`git add <paths>`** over blind **`git commit -a`**, so build noise on tracked files is not swept into the WIP commit.\n3. **`git commit -m \"wip: debug …\"`** if there are changes worth preserving (see **Husky** below if commit fails).\n4. **Build** packaged CLI and binary (see building skill): `yarn lerna run build-cli --scope cypress`, then **`env -u ELECTRON_RUN_AS_NODE yarn binary-build`** / **`binary-package`** with matching **`--version`** (discover via `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version`) and **`--platform`**.\n5. **Repro** with packaged entrypoints (below).\n6. **Restore workspace:**\n   ```bash\n   git clean -xfd && yarn\n   ```\n   Then either:\n   - **`git reset HEAD~1`** (mixed, default) if step 3 succeeded — WIP commit becomes unstaged changes again; **not `git revert`**.\n   - **`git restore --staged --worktree <paths>`** if there was **no WIP commit** (instrumentation-only files listed in step 2). Remove any temporary helper files (e.g. `packages/server/lib/util/debug-agent-log.js`) with `rm`.\n\n7. Repeat from step 2.\n\n**Rules:** Do not **`git reset HEAD~1`** after pushing that WIP commit unless you intend to rewrite remote history. Untracked files not in the WIP commit are **gone** after `git clean -xfd`. `.claude/*` and `.cursor/*` are gitignored except for a short allowlist (`.claude/skills`, `.claude/settings.json`, `.cursor/BUGBOT.md`, `.cursor/environment.json`, `.cursor/Dockerfile`) — those are tracked and survive `git clean -xfd`; anything else you keep under those directories will not.\n\n**Husky:** If **`git commit`** fails with missing **`.husky/_/husky.sh`**, do not loop on commit. Proceed with staged instrumentation, then restore via **`git restore`** in step 6 (or fix Husky / run `yarn` so hooks install, then commit).\n\n**Alternative:** a **separate git worktree** for binary-only work avoids the commit/reset dance; see the building skill’s reset section.\n\n## Packaged CLI entrypoint\n\nAfter **`yarn lerna run build-cli --scope cypress`**:\n\n```bash\nnode <repo>/cli/build/dist/bin/cypress <command>\n```\n\nRollup emits the instrumented entry at **`cli/build/dist/bin/cypress`**. **`cli/build/bin/cypress`** is a **thin copy** of `cli/bin/cypress` (loads `../dist/cli` via a different path) and is **not** the same as the Rollup bundle — do not use it for artifact or agent-log repro.\n\nPrefer an absolute path when cwd might confuse postinstall-relative logic.\n\n## Point the CLI at your packaged binary\n\n```bash\nexport CYPRESS_RUN_BINARY=/path/to/platform/executable\n```\n\nSet the **real executable** (validated in `cli/lib/tasks/state.ts` via `realpath`), not the `.app` folder alone:\n\n| OS | Example shape |\n|----|----------------|\n| macOS | `…/Cypress.app/Contents/MacOS/Cypress` |\n| Linux | `…/Cypress` (unpacked binary) |\n| win32 | `…/Cypress.exe` |\n\nAlign **CLI package version** with the **binary `--version`** used at build time when possible.\n\n## Log and trace flags\n\n- **`DEBUG=cypress:cli*`** — CLI install, verify, spawn.\n- **`DEBUG=cypress:electron*`** — Electron install/open; CLI spawn also uses `cypress:electron`.\n- **`ELECTRON_ENABLE_LOGGING=1`** — unfiltered Electron stderr (`packages/electron/src/open.ts`).\n- Prefer scoped `DEBUG` patterns over **`DEBUG=cypress:*`**.\n\n## Attach debuggers\n\n- **CLI (Node):** `node --inspect-brk <repo>/cli/build/dist/bin/cypress <command>`\n- **Electron main (packaged):** `node <repo>/cli/build/dist/bin/cypress open --inspect-brk` (or `--inspect`); forwarded in `cli/lib/exec/open.ts` / `run.ts`. Use with **`CYPRESS_RUN_BINARY`** so the debuggee is your local package output.\n\n## Debug-session instrumentation (agents)\n\nWhen using Cursor debug-mode HTTP ingest (`127.0.0.1:7709`, session log under **`.cursor/debug-<session>.log`**):\n\n- **Entry layers** to tag: CLI bin → CLI `init` → CLI `spawn` (only when the binary is spawned, not for `version`) → `packages/server/index.js` (`startCypress`) → `packages/server/start-cypress.js`.\n- **Short-lived CLI:** fire-and-forget `fetch` alone often loses events because the process exits first. Also **`appendFileSync`** the same NDJSON line to the session log path (or a small `debug-agent-log.js` helper on the server side) in addition to `fetch`.\n- **Verify server layers** without a full green binary: `env -u ELECTRON_RUN_AS_NODE node packages/server/index.js --version` from `packages/server` (exercises index + start-cypress; **unset `ELECTRON_RUN_AS_NODE`** if the agent host sets it).\n- **Verify CLI layers:** `node cli/build/dist/bin/cypress version` (does not hit spawn). CLI bin is unaffected by `ELECTRON_RUN_AS_NODE` for the version subcommand, but binary-build still needs the var unset.\n\n## What to skip\n\n- **`--dev`** on `open` / `run`\n- Assuming **`yarn dev`** matches packaged behavior (`cli/lib/tasks/verify.ts` uses `scripts/start.js` when `dev` is true)\n\n## Common workspace gotcha after `yarn`\n\nIf **`yarn`** / Vite fails on **`urqlSchema`** or **`urqlCacheKeys`** imports from `@packages/data-context`, stale **`packages/data-context/src/**/*.js`** files may be shadowing **`.ts`**. Regenerate (`yarn workspace @packages/data-context build`) and remove **`.js` siblings that have a matching `.ts`** under `packages/data-context/src/` before retrying `yarn`.\n\n<!-- File: .cursor/skills/server-mocha-to-vitest/SKILL.md (Tokens: ~2796 | Category: anthropic-skill) -->\n---\nname: server-mocha-to-vitest\ndescription: >-\n  Converts one @packages/server unit spec from mocha (test/unit/**/*_spec.ts) to\n  vitest (*.spec.ts) without changing what the test proves. Use when migrating a\n  server unit spec, when a converted spec passes but its mocks may not be\n  intercepting, or when the user mentions spec_helper, mockery, proxyquire,\n  sinon, snap-shot-it, or the mocha/vitest split in packages/server.\n---\n\n# Migrate a `@packages/server` unit spec from mocha to vitest\n\nScope: `packages/server/test/unit` only. Integration and performance suites stay on mocha.\n\nThis skill lists the things that go wrong *silently*: a converted spec that is green while\nits mocks never engaged, or that asserts less than the mocha original did. Plain API\nmapping (`sinon.stub` to `vi.fn`, `context` to `describe`)\nis not covered; you already know it. Parent issue: cypress-io/cypress#34846.\n\n## The contract\n\n- `*_spec.ts` runs on mocha via `test/scripts/run.js`. `*.spec.ts` runs on vitest via\n  `packages/server/vitest.config.ts`. `yarn test-unit` runs both.\n- Convert by `git mv foo_spec.ts foo.spec.ts` and rewriting the file. The mocha file must be\n  gone when you finish. Never leave a file half-converted: every `it` in the original is\n  ported, or the file is not touched at all.\n- The new file imports from `vitest` explicitly and uses nothing else for test plumbing:\n  no `spec_helper`, `mockery`, `proxyquire`, `sinon`, `chai` or its plugins, `snap-shot-it`,\n  `mocked-env`. Keep `nock`, `supertest`, `express`, `lodash`, `bluebird` where the original\n  used them for real work.\n- Never weaken a test: no `.skip`, no dropped or loosened assertion, no `vitest -u` to make a\n  snapshot agree. If a test cannot be made green, leave it failing and say why in the PR.\n- Do not touch `.circleci/`, `vitest.config.ts`, or `cloud/environment_spec.ts`. The last one\n  is named in four CI workflows and migrates in its own human PR.\n- Specs never connect to a non-loopback address. Tests must pass on a sandboxed host.\n\n## `spec_helper.js` is not ported. Inline what the file needs.\n\n`test/spec_helper.js` installs root hooks for the whole mocha process. A mocha spec depends\non them even when it never imports `spec_helper`, because some other spec in the same run\ndid. Under vitest each file is on its own, so read `spec_helper.js` and inline only the\nhooks this file actually relies on:\n\n| Original behavior | Inline as |\n|---|---|\n| `setCtx(makeDataContext({}))` before, `getCtx()._reset()` + `clearCtx()` after | only if the SUT calls `getCtx()`; see the GraphQL note below before using `makeDataContext` |\n| `nock.disableNetConnect()` + `nock.enableNetConnect(/localhost/)` before, `nock.cleanAll()` + `nock.enableNetConnect()` after | any spec that uses `nock`, even when the original had no hooks (`cloud/api/create_instance.spec.ts`) |\n| `cache.remove()` before each | specs touching `lib/cache` |\n| `GracefulExit.resetForTesting()` | specs that start servers; it is a silent no-op unless `globalThis.IS_TEST = true` is set first (`server-base.spec.ts`) |\n| `process.env` cloned and restored after each | specs that set env; `vi.stubEnv` + `vi.unstubAllEnvs()` also works |\n| `mockElectron(mockery)` | `vi.mock('electron', ...)` only if the SUT's import graph reaches `electron`; most do not |\n| `sinon.restore()` after each | `vi.restoreAllMocks()`, with the caveat below |\n\nA spec with no hooks is fine. `automation/commands/key_press.spec.ts` needs none.\n\n## Mocks that load the real module without telling you\n\n**Prove each mock intercepts.** Add a temporary `throw` or call count\nto the factory, run the spec, then remove it. A green run alone proves nothing.\n\n**`vi.mock` specifiers must be the string the importer wrote**, resolved from your spec's\nlocation for relative paths. `vi.mock('../../../../lib/cloud/network/fetch')` from the spec\nmatches the SUT's `import ... from '../network/fetch'` because both resolve to the same file.\nA path that resolves elsewhere is ignored and the real module loads.\n\n**A bare `require()` inside the SUT is never intercepted by `vi.mock`**, with or without\n`server.deps.inline`. vite-node hands transformed modules a plain node `require`, and\nvitest's mocker only hooks ESM imports. Seed the CJS cache instead, which is what mockery did:\n\n```ts\nconst requireCjs = createRequire(import.meta.url)\nconst morganPath = requireCjs.resolve('morgan')\n\nrequireCjs.cache[morganPath] = { exports: morganMockFactory } as NodeModule\n// afterAll / afterEach: delete requireCjs.cache[morganPath]\n```\n\nThe `exports` value is exactly what the SUT's `require()` returns, so a callable\n`module.exports = function` package (`morgan`, the `@cypress/*` preprocessors) is mocked with\nthe function itself. Examples: `plugins/child/run_plugins.spec.ts`, `server-base.spec.ts`.\n\n**Partial mocks of node builtins must override `default` too.** A SUT that does\n`import fs from 'fs'` reads `fs.createReadStream` off the default export. Spread the actual\nmodule into both the named exports and a rebuilt `default`, or the real function runs:\n\n```ts\nvi.mock('fs', async (importOriginal) => {\n  const actual = await importOriginal<typeof import('fs')>()\n\n  return { ...actual, createReadStream: stub, default: { ...actual, createReadStream: stub } }\n})\n```\n\nExample: `cloud/api/put_protocol_artifact.spec.ts`.\n\n**A two-hop `proxyquire` chain usually collapses to one `vi.mock` of the leaf.** The second\nhop existed because proxyquire cannot reach a transitive dependency. `vi.mock` applies to the\nwhole module graph, so mock `chrome-remote-interface` once with `vi.hoisted` state and import\nthe SUT statically. Only reach for `vi.resetModules()` plus a dynamic import when the SUT\nholds module-level mutable state that mocha reset by re-requiring. Example:\n`browsers/cri-client.spec.ts`.\n\n**`vi.spyOn` on an ESM namespace import does work** for `lib/*.ts` modules, because vite's\nSSR transform rewrites named imports to live property reads. `vi.spyOn(ensureUrl, 'isListening')`\npatches what `server-base.ts` sees. It keeps the real implementation unless you add\n`.mockImplementation`, which `sinon.stub` did not.\n\n## Assertions that flip meaning\n\n**chai `deep.equal` is `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose value is\n`undefined`, so an expected `{ envUrl: undefined }` also matches an object with no `envUrl` key,\nwhich chai rejects (`cloud/environment.spec.ts`).\n\n**sinon `calledWith` is a prefix match. vitest `toHaveBeenCalledWith` is exact-arity.**\n`client.send('Network.enable', opts, sessionId)` satisfies `calledWith('Network.enable')` but\nfails `toHaveBeenCalledWith('Network.enable')`. Worse, `not.toHaveBeenCalledWith('Fetch.disable')`\npasses vacuously against a 3-argument call. Either assert the full argument list or filter\n`mock.calls` by leading arguments. Examples: `expectCalledWith` in `browsers/cri-client.spec.ts`,\n`callsFor` in `server-base.spec.ts`.\n\n**chai `deep.equal` / `eql` maps to `toStrictEqual`, not `toEqual`.** `toEqual` ignores keys whose\nvalue is `undefined`, which chai does not. `toStrictEqual` is stricter than chai mainly about\nprototypes: Node's header objects have a null prototype, so spread them into a plain object\nbefore asserting (`request.spec.ts`).\n\n**`sinon.stub().withArgs(x)` returns the filtered stub.** When the original assigned that return\nvalue, the \"filter\" never gated anything and the stub answered every call. Porting it as an\nargument-conditional mock returns `undefined` for the real calls. Read what the mocha stub\nactually did before translating it.\n\n**`vi.restoreAllMocks()` wipes `vi.fn().mockReturnValue(...)`.** `sinon.restore()` left\n`.returns()` behavior on plain stubs alone. Shared fixtures need `vi.fn(() => value)` so the\nimplementation survives restore.\n\n**Bluebird.** Server code still chains `.return()`, `.spread()`, `.tap()` on values it awaits.\nWhere the SUT chains Bluebird methods on a mocked return, `mockResolvedValue` hands back a\nnative promise and the SUT throws a confusing `not a function`. Return `Bluebird.resolve(...)`\nfrom that mock. Check the current SUT first; many call sites are plain `await` now and native\npromises are fine (`ensureUrl.isListening` in `server-base.ts` is one).\n\n**The transpiler is visible in stringified functions.** A test that asserts on\n`fn.toString()` of a handler defined in the spec reads esbuild's output under vitest, not\nts-node's. Keep the assertion exact and update the literal; do not normalize it away.\n\n**Decomposed Unicode literals get normalized by editors.** `'é'` as `e` + U+0301 becomes\nU+00E9 on save. Byte-compare string literals against `git show HEAD:<mocha file>` when a spec\ncontains combining characters (`automation/commands/key_press.spec.ts`).\n\n## GraphQL, nock, timers\n\n**Importing `lib/server-base`, `lib/routes`, or `lib/makeDataContext` builds the GraphQL\nschema a second time** in the worker and `graphql` rejects the duplicate realm. Mock\n`@packages/data-context/graphql/makeGraphQLServer` with `graphqlWS` and `graphQLHTTP` stubs.\nMocking that alone is not enough if you also call `makeDataContext`; use a minimal\n`DataContext` object carrying only the members the SUT touches (`routes.spec.ts`).\n\n**nock `delayConnection` with one large `advanceTimersByTimeAsync`** fires the delayed\nconnection before the request timeout and consumes the wrong interceptor. Use\n`vi.runAllTimersAsync()` in rounds or step the clock in small increments. Also note that\nchaining `delayConnection(5000)` then `delayConnection(0)` on the same interceptor mutates one\nobject, so both replies get delay 0; port that verbatim rather than \"fixing\" it.\n\n**Fake timers:** `vi.useFakeTimers()` / `vi.useRealTimers()` in hooks. `clock.tickAsync(n)`\nbecomes `await vi.advanceTimersByTimeAsync(n)`. A non-async helper that the original `await`ed\nmust stay non-async, or you add a microtask and change what mid-flight assertions observe.\n\n## Source edits for testability\n\nAllowed only when obvious on sight: an optional parameter with a default that preserves\nbehavior, exporting a function that already exists, extracting an inline expression into a\nnamed pure function in the same file. Not allowed: changing control flow, changing a signature\ncallers depend on, touching more than one `lib/` file per batch, or anything you cannot justify\nin one sentence. Every source edit gets its own heading in the PR body. When in doubt, skip the\nspec; it stays in the pool.\n\n## Verify\n\n```bash\nyarn workspace @packages/server test-unit-vitest -- test/unit/<dir>/foo.spec.ts\nyarn workspace @packages/server test-unit          # both runners, from a real terminal\nyarn lint --scope @packages/server\nyarn workspace @packages/server check-ts\n```\n\nRun the converted spec at least twice. Run `test-unit` from a terminal, not with stdout piped\nto a file: `util/tty_spec` needs `process.stdout.getWindowSize`, which only exists on a TTY,\nand fails on develop too when piped. Count `it(` in the mocha original and in the vitest file;\nthey must match (loops that generate tests expand at runtime, so compare the static count).\n\n## Style\n\nSingle quotes, no semicolons, 2-space indent, trailing commas, blank line before `return`,\n`import type` for type-only imports, no `console`. Prefer no comment; when one is needed, say\nwhy in one or two lines and describe the present code, never how it used to work.\n\n<!-- File: packages/agent-info/AGENTS.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agent-info Skill\n\nPath: `packages/agent-info/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/AGENTS.md)\n\n<!-- File: packages/agent-info/CLAUDE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Agent-info Skill\n\nPath: `packages/agent-info/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/CLAUDE.md)\n\n<!-- File: packages/agent-info/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agent-info Skill\n\nPath: `packages/agent-info/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/package.json)\n\n<!-- File: packages/agent-info/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Agent-info Skill\n\nPath: `packages/agent-info/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/agent-info/tsconfig.json)\n\n<!-- File: packages/app/.eslintrc.json (Tokens: ~300 | Category: anthropic-skill) -->\n# App Skill\n\nPath: `packages/app/.eslintrc.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/.eslintrc.json)\n\n<!-- File: packages/app/AGENTS.md (Tokens: ~300 | Category: anthropic-skill) -->\n# App Skill\n\nPath: `packages/app/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/AGENTS.md)\n\n<!-- File: packages/app/CLAUDE.md (Tokens: ~300 | Category: anthropic-skill) -->\n# App Skill\n\nPath: `packages/app/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/CLAUDE.md)\n\n<!-- File: packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.experimentalRetries.mochaEvents.cy.ts.json)\n\n<!-- File: packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/retries.mochaEvents.cy.ts.json)\n\n<!-- File: packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.experimentalRetries.mochaEvents.cy.ts.json)\n\n<!-- File: packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Snapshots Skill\n\nPath: `packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/e2e/runner/snapshots/runner.mochaEvents.cy.ts.json)\n\n<!-- File: packages/app/cypress/fixtures/debug-Failing/gql-Debug.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Debug-Failing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Failing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Failing/gql-Debug.json)\n\n<!-- File: packages/app/cypress/fixtures/debug-Passing/gql-Debug.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Debug-Passing Skill\n\nPath: `packages/app/cypress/fixtures/debug-Passing/gql-Debug.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/debug-Passing/gql-Debug.json)\n\n<!-- File: packages/app/cypress/fixtures/FileChooser.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Fixtures Skill\n\nPath: `packages/app/cypress/fixtures/FileChooser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/cypress-io/cypress/HEAD/packages/app/cypress/fixtures/FileChooser.json)\n\n<!-- ... +306 more modular skills available via /api/skills/cypress-io/cypress?path={path} -->\n</yakaai_skills>"}