{"owner":"google-gemini","repo":"gemini-cli","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["GEMINI.md"],"files":{"GEMINI.md":"# Gemini CLI Project Context\n\nGemini CLI is an open-source AI agent that brings the power of Gemini directly\ninto the terminal. It is designed to be a terminal-first, extensible, and\npowerful tool for developers.\n\n## Project Overview\n\n- **Purpose:** Provide a seamless terminal interface for Gemini models,\n  supporting code understanding, generation, automation, and integration via MCP\n  (Model Context Protocol).\n- **Main Technologies:**\n  - **Runtime:** Node.js (>=20.0.0, recommended ~20.19.0 for development)\n  - **Language:** TypeScript\n  - **UI Framework:** React (using [Ink](https://github.com/vadimdemedes/ink)\n    for CLI rendering)\n  - **Testing:** Vitest\n  - **Bundling:** esbuild\n  - **Linting/Formatting:** ESLint, Prettier\n- **Architecture:** Monorepo structure using npm workspaces.\n  - `packages/cli`: User-facing terminal UI, input processing, and display\n    rendering.\n  - `packages/core`: Backend logic, Gemini API orchestration, prompt\n    construction, and tool execution.\n  - `packages/a2a-server`: Experimental Agent-to-Agent server.\n  - `packages/sdk`: Programmatic SDK for embedding Gemini CLI capabilities.\n  - `packages/devtools`: Integrated developer tools (Network/Console inspector).\n  - `packages/test-utils`: Shared test utilities and test rig.\n  - `packages/vscode-ide-companion`: VS Code extension pairing with the CLI.\n\n## Building and Running\n\n- **Install Dependencies:** `npm install`\n- **Build All:** `npm run build:all` (Builds packages, sandbox, and VS Code\n  companion)\n- **Build Packages:** `npm run build`\n- **Run in Development:** `npm run start`\n- **Run in Debug Mode:** `npm run debug` (Enables Node.js inspector)\n- **Bundle Project:** `npm run bundle`\n- **Clean Artifacts:** `npm run clean`\n\n## Testing and Quality\n\n- **Test Commands:**\n  - **Unit (All):** `npm run test`\n  - **Integration (E2E):** `npm run test:e2e`\n  - > **NOTE**: Please run the memory and perf tests locally **only if** you are\n    > implementing changes related to those test areas. Otherwise skip these\n    > tests locally and rely on CI to run them on nightly builds.\n  - **Memory (Nightly):** `npm run test:memory` (Runs memory regression tests\n    against baselines. Excluded from `preflight`, run nightly.)\n  - **Performance (Nightly):** `npm run test:perf` (Runs CPU performance\n    regression tests against baselines. Excluded from `preflight`, run nightly.)\n  - **Workspace-Specific:** `npm test -w <pkg> -- <path>` (Note: `<path>` must\n    be relative to the workspace root, e.g.,\n    `-w @google/gemini-cli-core -- src/routing/modelRouterService.test.ts`)\n- **Full Validation:** `npm run preflight` (Heaviest check; runs clean, install,\n  build, lint, type check, and tests. Recommended before submitting PRs. Due to\n  its long runtime, only run this at the very end of a code implementation task.\n  If it fails, use faster, targeted commands (e.g., `npm run test`,\n  `npm run lint`, or workspace-specific tests) to iterate on fixes before\n  re-running `preflight`. For simple, non-code changes like documentation or\n  prompting updates, skip `preflight` at the end of the task and wait for PR\n  validation.)\n- **Individual Checks:** `npm run lint` / `npm run format` / `npm run typecheck`\n\n## Development Conventions\n\n- **Contributions:** Follow the process outlined in `CONTRIBUTING.md`. Requires\n  signing the Google CLA.\n- **Pull Requests:** Keep PRs small, focused, and linked to an existing issue.\n  Always activate the `pr-creator` skill for PR generation, even when using the\n  `gh` CLI.\n- **Commit Messages:** Follow the\n  [Conventional Commits](https://www.conventionalcommits.org/) standard.\n- **Imports:** Use specific imports and avoid restricted relative imports\n  between packages (enforced by ESLint).\n- **License Headers:** For all new source code files (`.ts`, `.tsx`, `.js`),\n  include the Apache-2.0 license header with the current year. (e.g.,\n  `Copyright 2026 Google LLC`). This is enforced by ESLint.\n\n## Testing Conventions\n\n- **Environment Variables:** When testing code that depends on environment\n  variables, use `vi.stubEnv('NAME', 'value')` in `beforeEach` and\n  `vi.unstubAllEnvs()` in `afterEach`. Avoid modifying `process.env` directly as\n  it can lead to test leakage and is less reliable. To \"unset\" a variable, use\n  an empty string `vi.stubEnv('NAME', '')`.\n\n## Documentation\n\n- Always use the `docs-writer` skill when you are asked to write, edit, or\n  review any documentation.\n- Documentation is located in the `docs/` directory.\n- Suggest documentation updates when code changes render existing documentation\n  obsolete or incomplete.\n"}}