{"owner":"vercel","repo":"turborepo","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"files":{"AGENTS.md":"# AGENTS.md\n\nInstructions for AI agents working on this repository.\n\n## Architecture\n\nSee [ARCHITECTURE.md](./crates/turborepo/ARCHITECTURE.md) for an overview of the `turbo run` command architecture.\n\n## Keeping Documentation Up to Date\n\nWhen making changes to the codebase, check if the following docs need updates:\n\n- **[ARCHITECTURE.md](./crates/turborepo/ARCHITECTURE.md)** - Update when changing core `turbo run` components:\n  - Run builder, package graph, task graph/engine\n  - Task visitor, caching system, task hashing\n  - Run tracking and summary generation\n  - Any files in `crates/turborepo-lib/src/run/`, `crates/turborepo-lib/src/engine/`, `crates/turborepo-lib/src/task_graph/`, or `crates/turborepo-cache/`\n\n- **[CONTRIBUTING.md](./CONTRIBUTING.md)** - Update when changing:\n  - Build process or development setup\n  - Testing procedures or requirements\n  - Project structure or tooling\n\n- **This file (AGENTS.md)** - Update when changing:\n  - PR requirements or CI workflows\n  - Repository conventions or policies\n\n## Pull Request Guidelines\n\n### Always run pre-commit/pre-push hooks\n\n- You are not allowed to use `--no-verify` when making a commit or push.\n- If you do not have dependencies available, you can download them with `pnpm install --frozen-lockfile`.\n\n### Rust panic extraction policy\n\n- Workspace Clippy lints deny `.unwrap()`, `.unwrap_err()`, `.unwrap_none()`, and `.expect()` in Rust targets covered by `cargo lint`.\n- Crates with existing implementation-code violations may temporarily allow `clippy::unwrap_used` and `clippy::expect_used` at the crate root; remove those allows as each crate is cleaned up.\n- Tests are exempt from this panic-extraction policy, but still linted by `cargo lint` with panic-extraction lints allowed under `cfg(test)`.\n\n### CI task scheduling\n\n- Test and lint workflows do not pre-classify changed paths. PR jobs run consistently and use the Turborepo task graph and cache where applicable.\n- Same-repository PRs authenticate to Remote Cache through OIDC; fork PRs remain local-only.\n- Rust CI restores full Cargo target state on Ubuntu, macOS, and Windows from trusted `main` snapshots; only `main` writes. Repository sccache dogfooding is disabled.\n- Linux Rust shards include `terminal-control` black-box TUI integration tests; known regressions remain explicitly ignored.\n- Example validation remains push-only because it requires Vercel credentials and project state.\n\n### PR Title Format\n\nPR titles must follow [Conventional Commits](https://www.conventionalcommits.org/). See [`.github/workflows/lint-pr-title.yml`](./.github/workflows/lint-pr-title.yml) for the enforced constraints.\n\nFormat: `<type>: <Description>`\n\nKey rules:\n\n- Description must start with an uppercase letter\n- Scopes are not allowed\n\nExamples:\n\n```\nfeat: Add new cache configuration option\nfix: Resolve race condition in task scheduling\ndocs: Update installation instructions\n```\n\n## Release Workflow Notes\n\n- The `LSP` workflow packages `packages/turbo-vsc` VSIX artifacts for release. Stable and canary Turborepo versions are mapped to Marketplace-safe `major.minor.patch` versions before packaging.\n- Canary VS Code extension packages use `--pre-release`.\n- Non-dry-run releases publish the VS Code extension through the `LSP` workflow using `publish=true`, `dry_run=false`, and a `VSCE_PAT` secret on the protected `vscode-marketplace` environment. This publish path must not block release PR creation. Once npm publishing starts, preserve the staging branch and release tag so partial releases can be resumed safely.\n- npm publishing is resumable per package: existing versions are skipped only when registry integrity and the requested dist-tag match the local release and provenance is present, and `turbo` publishes last after the native and supporting packages.\n- Release PRs are created by `github-actions[bot]` using the ephemeral workflow token and squash-merged automatically after the required release review gate passes. The gate validates exact generated release changes from immutable SHAs and pins the merge to the validated head SHA. Turborepo release PR titles use `chore: Release Turborepo <version>`; the author and title are part of the trusted release-PR validation contract.\n- The `Release` workflow signs and notarizes macOS `turbo` binaries during `build-rust` using static GitHub secrets and `apple-codesign`/`rcodesign`.\n- The `Release` and `LSP` workflows install Zig during `build-rust` because `turbo` and `turborepo-lsp` link `libghostty-vt` through `libghostty-vt-sys`.\n"}}