{"owner":"redis","repo":"RedisInsight","hasSkills":true,"hasMcp":true,"mcpConfig":{"mcpServers":{"RedisInsight":{"command":"npx","args":["-y","@modelcontextprotocol/server-RedisInsight"]}}},"found":["AGENTS.md",".github/copilot-instructions.md","mcp.json"],"skills":{"AGENTS.md":"# RedisInsight AI Agent Instructions\n\nThis file provides essential context and instructions for AI coding agents working on RedisInsight.\n\n## Project Overview\n\n**RedisInsight** is a desktop application for Redis database management built with:\n\n- **Frontend**: React 18, TypeScript, Redux Toolkit, styled-components, Monaco Editor, Vite\n- **Backend**: NestJS, TypeScript, Node.js\n- **Desktop**: Electron for cross-platform distribution\n- **Testing**: Jest, Testing Library, Playwright\n\n**Architecture**:\n\n```\nredisinsight/\n├── ui/          # React frontend (Vite + TypeScript)\n├── api/         # NestJS backend (TypeScript)\n├── desktop/     # Electron main process\n└── tests/       # E2E tests (Playwright)\n```\n\n## Setup Commands\n\n### Development\n\n```bash\n# Frontend development (web)\nnpm run dev:ui\n\n# Backend development\nnpm run dev:api\n\n# Desktop app development (runs all: API + UI + Electron)\nnpm run dev:desktop\n\n# Frontend with coverage\nnpm run dev:ui:coverage\n```\n\n## Testing Instructions\n\n### Run Tests\n\n```bash\n# Frontend tests\nnpm test               # Run all UI tests\n\n# Backend tests\nnpm run test:api       # Run all API tests\n\n# E2E tests\nnpm test --prefix tests/e2e-playwright\n```\n\n### Run Specific Frontend Tests\n\n```bash\n# Run a specific test file\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/path/to/Component.spec.tsx' -c 'jest.config.cjs'\n\n# Run a specific test by name (use -t flag)\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/path/to/Component.spec.tsx' -c 'jest.config.cjs' -t 'test name pattern'\n\n# Example:\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/slices/tests/browser/keys.spec.ts' -c 'jest.config.cjs' -t 'refreshKeyInfoAction'\n```\n\n### Before Committing\n\n**ALWAYS run these before committing:**\n\n```bash\n# Lint check\nnpm run lint           # All code\nnpm run lint:ui        # Frontend only\nnpm run lint:api       # Backend only\n\n# Type checking (compares against .tscheck.rec.json baselines for ui/api/desktop + configs)\nnpm run type-check\n\n# Refresh baselines after intentionally adding or fixing TS errors (do not run casually)\nnpm run tscheck\n\n# Tests\nnpm test               # Frontend tests\nnpm run test:api       # Backend tests\n```\n\n`npm run type-check` is the gate — CI fails if any (file × error-code) TS-error count increases. If you intentionally changed TS-error counts, run `npm run tscheck` to refresh the baselines and commit the updated `.tscheck.rec.json` files. See `.ai/skills/type-check-baselines/SKILL.md` for details (including the `npm run tscheck:force` escape hatch).\n\n**Fix any linting errors, type errors, or test failures before committing.**\n\n## Always-On Rules\n\nThese apply to every change in the repo. Skill files contain the full detail; the essentials are listed here so they're never missed.\n\n### Code quality (always)\n\n- Run `npm run lint` and `npm run type-check` before committing — both must pass.\n- TypeScript everywhere. Avoid `any`; use `unknown` if you must.\n- Naming: `PascalCase` components, `camelCase` functions/variables, `UPPER_SNAKE_CASE` constants, `is/has/should` prefix for booleans.\n- No `console.log` in production code (use `console.warn`/`error`).\n- Imports: external → built-ins → internal aliases (`uiSrc/*`, `apiClient`, `desktopSrc/*`) → relative → styles last. UI must not import from backend directly — use `apiClient`.\n- No magic numbers; extract duplicated strings to constants.\n\n### Git safety (always)\n\n- **Never commit, push, or force-push directly to `main`, `latest`, or `release/*`.** Always create a feature branch first.\n- Verify current branch with `git branch --show-current` before any push.\n- All changes go through pull requests.\n\n### Dependency / lockfile management (always)\n\n- After modifying any `package.json` (root, `redisinsight/`, `redisinsight/api/`, or a `redisinsight/ui/src/packages/*` plugin), run `npm install` from that directory and commit the resulting `package-lock.json` changes.\n- Never edit `package-lock.json` files by hand and never run `npm install --ignore-scripts` (or otherwise skip `postinstall`) when preparing a commit — the `postinstall` applies `patch-package` patches, and the lockfile shipped to CI must match what `npm install` produces locally.\n- CI runs `npm ci`, which installs strictly from `package-lock.json` and fails if it is out of sync with `package.json`. A green local install in every changed package's directory is required before pushing.\n- Use the right package manager for the change: `npm install <pkg>` / `npm uninstall <pkg>` (or `npm update`) for dependency changes, never manual edits to `package.json` versions without re-running install.\n\n## Skills\n\nAll detailed development standards are exposed as skills under `.ai/skills/`. Claude Code auto-discovers them; each skill triggers when its description matches the task.\n\n- **Code Quality**: `.ai/skills/code-quality/SKILL.md` - Linting, TypeScript standards, naming, import order\n- **Frontend**: `.ai/skills/frontend/SKILL.md` - React, Redux, UI patterns, styled-components\n- **i18n**: `.ai/skills/i18n/SKILL.md` - i18next translations, locale key conventions, translating backend errors and notifications\n- **Backend**: `.ai/skills/backend/SKILL.md` - NestJS, API patterns, dependency injection\n- **Testing**: `.ai/skills/testing/SKILL.md` - Jest/Testing Library standards, faker, test patterns\n- **E2E Testing**: `.ai/skills/e2e-testing/SKILL.md` - Playwright standards, page objects\n- **Git Safety**: `.ai/skills/git-safety/SKILL.md` - Protected-branch guardrails (detail)\n- **Branches**: `.ai/skills/branches/SKILL.md` - Branch naming conventions\n- **Commits**: `.ai/skills/commits/SKILL.md` - Commit message guidelines\n- **Pull Requests**: `.ai/skills/pull-requests/SKILL.md` - PR process and review guidelines\n- **Feature Flags**: `.ai/skills/feature-flags/SKILL.md` - Adding, promoting, and removing feature flags\n- **TS Error Baselines**: `.ai/skills/type-check-baselines/SKILL.md` - Running and refreshing TypeScript error baselines\n- **Redis UI Components**: `.ai/skills/redis-ui-components/SKILL.md` - Component API references, props, and usage examples (from `@redis-ui/components` package)\n- **RedisInsight Plugins**: `.ai/skills/redis-insight-plugin/SKILL.md` - Building, deploying, and validating Workbench visualization plugins (manifests, `activationMethod`, phased workflow, command parsing); internal plugins under `redisinsight/ui/src/packages/` must also follow the Frontend, Code Quality, Redis UI Components, and Testing skills\n\n**Refer to these files for comprehensive guidelines on each topic.**\n\n## Boundaries\n\n### ✅ Always Do\n\n- Ensure the current branch name follows `.ai/skills/branches/SKILL.md` before opening a PR; rename it if it doesn't\n- Write to `src/` and `tests/` directories\n- Run `npm run lint` and `npm test` before commits\n- Follow naming conventions (camelCase, PascalCase, UPPER_SNAKE_CASE)\n- Use faker library for test data generation\n- Use `renderComponent` helper in component tests\n- Extract duplicate strings to constants\n- Use semantic colors from theme (not CSS variables)\n- Use layout components (Row/Col/FlexGroup) instead of div\n- Pass layout props as component props (not hardcoded in styles)\n- Consult the `redis-ui-components` skill (`.ai/skills/redis-ui-components/`) for component APIs when writing frontend code\n- Consult the `redis-insight-plugin` skill (`.ai/skills/redis-insight-plugin/`) when creating or modifying anything under `redisinsight/ui/src/packages/**` or any plugin manifest with a `visualizations` field\n\n### ⚠️ Ask First\n\n- Database schema changes\n- Adding new dependencies\n- Modifying CI/CD configuration (`.github/workflows/`)\n- Changes to build configuration\n- Breaking changes to APIs\n\n### 🚫 Never Do\n\n- Commit secrets or API keys\n- Edit `node_modules/` or `vendor/` directories\n- Edit `package-lock.json` by hand or commit a lockfile produced with `--ignore-scripts` / a skipped `postinstall`\n- Use fixed time waits in tests (use `waitFor` instead)\n- Use `!important` in styled-components\n- Import directly from `@redis-ui/*` (use internal wrappers from `uiSrc/components/ui`)\n- Use Elastic UI for new code (migrating to Redis UI)\n- Use hardcoded pixel values (use theme spacing)\n- Use `any` type without reason\n",".github/copilot-instructions.md":"# GitHub Copilot Instructions for RedisInsight\n\n> **🎯 Start here: Read `AGENTS.md` at the repository root for essential commands, testing instructions, and quick reference**\n\nThis project uses a centralized AI rules structure:\n\n- **`AGENTS.md`** (repository root) - Entry point with commands, testing, and boundaries\n- **`.ai/skills/`** - Detailed development standards as skill files (one folder per topic, each with a `SKILL.md`)\n- **`.ai/commands/`** - AI workflow commands and templates\n\n## 📂 Skills Structure\n\n### Core Development Skills\n\n- **Code Quality**: `.ai/skills/code-quality/SKILL.md`\n\n  - TypeScript best practices\n  - Import organization\n  - SonarJS complexity rules\n\n- **Frontend Development**: `.ai/skills/frontend/SKILL.md`\n\n  - React 18 patterns and best practices\n  - Redux Toolkit state management\n  - Styled-components (SCSS deprecated)\n  - Component folder structure\n  - Internal UI component wrappers (never import from @redis-ui directly)\n  - Elastic UI deprecation (use Redis UI wrappers)\n\n- **Backend Development**: `.ai/skills/backend/SKILL.md`\n\n  - NestJS module architecture\n  - Service and controller patterns\n  - DTOs and validation\n  - Error handling\n  - Redis integration patterns\n\n- **Testing Standards**: `.ai/skills/testing/SKILL.md`\n\n  - Jest and Testing Library patterns\n  - Component testing with renderComponent helper\n  - Faker for test data generation\n  - No fixed timeouts (use waitFor)\n  - Backend testing with NestJS\n\n- **E2E Testing**: `.ai/skills/e2e-testing/SKILL.md`\n\n  - Playwright standards, page object models, fixtures\n\n- **Git Safety**: `.ai/skills/git-safety/SKILL.md`\n\n  - Protected-branch guardrails (no direct commits to main/latest/release)\n\n- **Commit Messages**: `.ai/skills/commits/SKILL.md`\n\n  - Commit message format (Conventional Commits)\n\n- **Pull Requests**: `.ai/skills/pull-requests/SKILL.md`\n  - PR process and review guidelines\n  - Pre-commit checklist\n\n### Commands and Workflows\n\n- **PR Plan**: `.ai/commands/pr-plan.md` - Analyze JIRA tickets (RI-XXX) and create detailed implementation plans\n- **Commit Message Generation**: `.ai/commands/commit-message.md` - Generate commit messages following Conventional Commits\n- **PR Review**: `.ai/commands/pull-request-review.md` - Review pull requests and provide feedback\n\n## 🎯 Project Overview\n\n**Tech Stack:**\n\n- Frontend: React 18, TypeScript, Redux Toolkit, styled-components, Vite\n- Backend: NestJS, TypeScript, Node.js\n- Desktop: Electron\n- Testing: Jest, Testing Library, Playwright\n\n**Module Aliases:**\n\n- `uiSrc/*` → `redisinsight/ui/src/*`\n- `apiClient` → `redisinsight/api-client` (auto-generated OpenAPI types consumed by the UI)\n- `desktopSrc/*` → `redisinsight/desktop/src/*`\n\n## 📖 Additional Documentation\n\n- **For AI agents**: Start with `AGENTS.md` at repository root\n- **For human developers**: See `.ai/README.md` for setup and overview\n\n---\n\n**Note**: This is a minimal reference file. GitHub Copilot cannot read the referenced files directly, but developers can access the full guidelines. Claude Code and Codex read `AGENTS.md` directly; Claude Code additionally auto-discovers skills under `.ai/skills/` (Codex via the `.agents/skills` symlink).\n","mcp.json":"{\n  \"$schema\": \"https://modelcontextprotocol.io/schema/mcp.json\",\n  \"mcpServers\": {\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-github@2025.4.8\"],\n      \"description\": \"GitHub integration for managing issues, pull requests, and repository operations for RedisInsight/RedisInsight\"\n    },\n    \"memory\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-memory@2026.1.26\"],\n      \"description\": \"Persistent memory for storing context about the RedisInsight project across sessions\"\n    },\n    \"sequential-thinking\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-sequential-thinking@2025.12.18\"],\n      \"description\": \"Enhanced reasoning capabilities for complex architectural and debugging tasks\"\n    },\n    \"context-7\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@upstash/context7-mcp@2.1.8\"],\n      \"description\": \"Context 7 MCP server for enhanced context management and analysis\"\n    },\n    \"playwright\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@playwright/mcp@0.0.70\"\n      ]\n    },\n    \"atlassian\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"-i\",\n        \"--rm\",\n        \"--env-file\",\n        \".env.mcp\",\n        \"ghcr.io/sooperset/mcp-atlassian@sha256:60c3126b196feea01d29d25f0e6957268b97e5305c84d2f5a7b1c16a2f5af45b\"\n      ],\n      \"description\": \"Atlassian MCP server for managing JIRA projects (RI-XXX tickets) and Confluence content\"\n    },\n    \"figma\": {\n      \"url\": \"https://mcp.figma.com/mcp\",\n      \"description\": \"Figma MCP server for accessing design files, frames, and layers. Copy a Figma frame/layer link to provide design context in prompts.\"\n    }\n  }\n}\n"},"files":{"AGENTS.md":"# RedisInsight AI Agent Instructions\n\nThis file provides essential context and instructions for AI coding agents working on RedisInsight.\n\n## Project Overview\n\n**RedisInsight** is a desktop application for Redis database management built with:\n\n- **Frontend**: React 18, TypeScript, Redux Toolkit, styled-components, Monaco Editor, Vite\n- **Backend**: NestJS, TypeScript, Node.js\n- **Desktop**: Electron for cross-platform distribution\n- **Testing**: Jest, Testing Library, Playwright\n\n**Architecture**:\n\n```\nredisinsight/\n├── ui/          # React frontend (Vite + TypeScript)\n├── api/         # NestJS backend (TypeScript)\n├── desktop/     # Electron main process\n└── tests/       # E2E tests (Playwright)\n```\n\n## Setup Commands\n\n### Development\n\n```bash\n# Frontend development (web)\nnpm run dev:ui\n\n# Backend development\nnpm run dev:api\n\n# Desktop app development (runs all: API + UI + Electron)\nnpm run dev:desktop\n\n# Frontend with coverage\nnpm run dev:ui:coverage\n```\n\n## Testing Instructions\n\n### Run Tests\n\n```bash\n# Frontend tests\nnpm test               # Run all UI tests\n\n# Backend tests\nnpm run test:api       # Run all API tests\n\n# E2E tests\nnpm test --prefix tests/e2e-playwright\n```\n\n### Run Specific Frontend Tests\n\n```bash\n# Run a specific test file\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/path/to/Component.spec.tsx' -c 'jest.config.cjs'\n\n# Run a specific test by name (use -t flag)\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/path/to/Component.spec.tsx' -c 'jest.config.cjs' -t 'test name pattern'\n\n# Example:\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/slices/tests/browser/keys.spec.ts' -c 'jest.config.cjs' -t 'refreshKeyInfoAction'\n```\n\n### Before Committing\n\n**ALWAYS run these before committing:**\n\n```bash\n# Lint check\nnpm run lint           # All code\nnpm run lint:ui        # Frontend only\nnpm run lint:api       # Backend only\n\n# Type checking (compares against .tscheck.rec.json baselines for ui/api/desktop + configs)\nnpm run type-check\n\n# Refresh baselines after intentionally adding or fixing TS errors (do not run casually)\nnpm run tscheck\n\n# Tests\nnpm test               # Frontend tests\nnpm run test:api       # Backend tests\n```\n\n`npm run type-check` is the gate — CI fails if any (file × error-code) TS-error count increases. If you intentionally changed TS-error counts, run `npm run tscheck` to refresh the baselines and commit the updated `.tscheck.rec.json` files. See `.ai/skills/type-check-baselines/SKILL.md` for details (including the `npm run tscheck:force` escape hatch).\n\n**Fix any linting errors, type errors, or test failures before committing.**\n\n## Always-On Rules\n\nThese apply to every change in the repo. Skill files contain the full detail; the essentials are listed here so they're never missed.\n\n### Code quality (always)\n\n- Run `npm run lint` and `npm run type-check` before committing — both must pass.\n- TypeScript everywhere. Avoid `any`; use `unknown` if you must.\n- Naming: `PascalCase` components, `camelCase` functions/variables, `UPPER_SNAKE_CASE` constants, `is/has/should` prefix for booleans.\n- No `console.log` in production code (use `console.warn`/`error`).\n- Imports: external → built-ins → internal aliases (`uiSrc/*`, `apiClient`, `desktopSrc/*`) → relative → styles last. UI must not import from backend directly — use `apiClient`.\n- No magic numbers; extract duplicated strings to constants.\n\n### Git safety (always)\n\n- **Never commit, push, or force-push directly to `main`, `latest`, or `release/*`.** Always create a feature branch first.\n- Verify current branch with `git branch --show-current` before any push.\n- All changes go through pull requests.\n\n### Dependency / lockfile management (always)\n\n- After modifying any `package.json` (root, `redisinsight/`, `redisinsight/api/`, or a `redisinsight/ui/src/packages/*` plugin), run `npm install` from that directory and commit the resulting `package-lock.json` changes.\n- Never edit `package-lock.json` files by hand and never run `npm install --ignore-scripts` (or otherwise skip `postinstall`) when preparing a commit — the `postinstall` applies `patch-package` patches, and the lockfile shipped to CI must match what `npm install` produces locally.\n- CI runs `npm ci`, which installs strictly from `package-lock.json` and fails if it is out of sync with `package.json`. A green local install in every changed package's directory is required before pushing.\n- Use the right package manager for the change: `npm install <pkg>` / `npm uninstall <pkg>` (or `npm update`) for dependency changes, never manual edits to `package.json` versions without re-running install.\n\n## Skills\n\nAll detailed development standards are exposed as skills under `.ai/skills/`. Claude Code auto-discovers them; each skill triggers when its description matches the task.\n\n- **Code Quality**: `.ai/skills/code-quality/SKILL.md` - Linting, TypeScript standards, naming, import order\n- **Frontend**: `.ai/skills/frontend/SKILL.md` - React, Redux, UI patterns, styled-components\n- **i18n**: `.ai/skills/i18n/SKILL.md` - i18next translations, locale key conventions, translating backend errors and notifications\n- **Backend**: `.ai/skills/backend/SKILL.md` - NestJS, API patterns, dependency injection\n- **Testing**: `.ai/skills/testing/SKILL.md` - Jest/Testing Library standards, faker, test patterns\n- **E2E Testing**: `.ai/skills/e2e-testing/SKILL.md` - Playwright standards, page objects\n- **Git Safety**: `.ai/skills/git-safety/SKILL.md` - Protected-branch guardrails (detail)\n- **Branches**: `.ai/skills/branches/SKILL.md` - Branch naming conventions\n- **Commits**: `.ai/skills/commits/SKILL.md` - Commit message guidelines\n- **Pull Requests**: `.ai/skills/pull-requests/SKILL.md` - PR process and review guidelines\n- **Feature Flags**: `.ai/skills/feature-flags/SKILL.md` - Adding, promoting, and removing feature flags\n- **TS Error Baselines**: `.ai/skills/type-check-baselines/SKILL.md` - Running and refreshing TypeScript error baselines\n- **Redis UI Components**: `.ai/skills/redis-ui-components/SKILL.md` - Component API references, props, and usage examples (from `@redis-ui/components` package)\n- **RedisInsight Plugins**: `.ai/skills/redis-insight-plugin/SKILL.md` - Building, deploying, and validating Workbench visualization plugins (manifests, `activationMethod`, phased workflow, command parsing); internal plugins under `redisinsight/ui/src/packages/` must also follow the Frontend, Code Quality, Redis UI Components, and Testing skills\n\n**Refer to these files for comprehensive guidelines on each topic.**\n\n## Boundaries\n\n### ✅ Always Do\n\n- Ensure the current branch name follows `.ai/skills/branches/SKILL.md` before opening a PR; rename it if it doesn't\n- Write to `src/` and `tests/` directories\n- Run `npm run lint` and `npm test` before commits\n- Follow naming conventions (camelCase, PascalCase, UPPER_SNAKE_CASE)\n- Use faker library for test data generation\n- Use `renderComponent` helper in component tests\n- Extract duplicate strings to constants\n- Use semantic colors from theme (not CSS variables)\n- Use layout components (Row/Col/FlexGroup) instead of div\n- Pass layout props as component props (not hardcoded in styles)\n- Consult the `redis-ui-components` skill (`.ai/skills/redis-ui-components/`) for component APIs when writing frontend code\n- Consult the `redis-insight-plugin` skill (`.ai/skills/redis-insight-plugin/`) when creating or modifying anything under `redisinsight/ui/src/packages/**` or any plugin manifest with a `visualizations` field\n\n### ⚠️ Ask First\n\n- Database schema changes\n- Adding new dependencies\n- Modifying CI/CD configuration (`.github/workflows/`)\n- Changes to build configuration\n- Breaking changes to APIs\n\n### 🚫 Never Do\n\n- Commit secrets or API keys\n- Edit `node_modules/` or `vendor/` directories\n- Edit `package-lock.json` by hand or commit a lockfile produced with `--ignore-scripts` / a skipped `postinstall`\n- Use fixed time waits in tests (use `waitFor` instead)\n- Use `!important` in styled-components\n- Import directly from `@redis-ui/*` (use internal wrappers from `uiSrc/components/ui`)\n- Use Elastic UI for new code (migrating to Redis UI)\n- Use hardcoded pixel values (use theme spacing)\n- Use `any` type without reason\n",".github/copilot-instructions.md":"# GitHub Copilot Instructions for RedisInsight\n\n> **🎯 Start here: Read `AGENTS.md` at the repository root for essential commands, testing instructions, and quick reference**\n\nThis project uses a centralized AI rules structure:\n\n- **`AGENTS.md`** (repository root) - Entry point with commands, testing, and boundaries\n- **`.ai/skills/`** - Detailed development standards as skill files (one folder per topic, each with a `SKILL.md`)\n- **`.ai/commands/`** - AI workflow commands and templates\n\n## 📂 Skills Structure\n\n### Core Development Skills\n\n- **Code Quality**: `.ai/skills/code-quality/SKILL.md`\n\n  - TypeScript best practices\n  - Import organization\n  - SonarJS complexity rules\n\n- **Frontend Development**: `.ai/skills/frontend/SKILL.md`\n\n  - React 18 patterns and best practices\n  - Redux Toolkit state management\n  - Styled-components (SCSS deprecated)\n  - Component folder structure\n  - Internal UI component wrappers (never import from @redis-ui directly)\n  - Elastic UI deprecation (use Redis UI wrappers)\n\n- **Backend Development**: `.ai/skills/backend/SKILL.md`\n\n  - NestJS module architecture\n  - Service and controller patterns\n  - DTOs and validation\n  - Error handling\n  - Redis integration patterns\n\n- **Testing Standards**: `.ai/skills/testing/SKILL.md`\n\n  - Jest and Testing Library patterns\n  - Component testing with renderComponent helper\n  - Faker for test data generation\n  - No fixed timeouts (use waitFor)\n  - Backend testing with NestJS\n\n- **E2E Testing**: `.ai/skills/e2e-testing/SKILL.md`\n\n  - Playwright standards, page object models, fixtures\n\n- **Git Safety**: `.ai/skills/git-safety/SKILL.md`\n\n  - Protected-branch guardrails (no direct commits to main/latest/release)\n\n- **Commit Messages**: `.ai/skills/commits/SKILL.md`\n\n  - Commit message format (Conventional Commits)\n\n- **Pull Requests**: `.ai/skills/pull-requests/SKILL.md`\n  - PR process and review guidelines\n  - Pre-commit checklist\n\n### Commands and Workflows\n\n- **PR Plan**: `.ai/commands/pr-plan.md` - Analyze JIRA tickets (RI-XXX) and create detailed implementation plans\n- **Commit Message Generation**: `.ai/commands/commit-message.md` - Generate commit messages following Conventional Commits\n- **PR Review**: `.ai/commands/pull-request-review.md` - Review pull requests and provide feedback\n\n## 🎯 Project Overview\n\n**Tech Stack:**\n\n- Frontend: React 18, TypeScript, Redux Toolkit, styled-components, Vite\n- Backend: NestJS, TypeScript, Node.js\n- Desktop: Electron\n- Testing: Jest, Testing Library, Playwright\n\n**Module Aliases:**\n\n- `uiSrc/*` → `redisinsight/ui/src/*`\n- `apiClient` → `redisinsight/api-client` (auto-generated OpenAPI types consumed by the UI)\n- `desktopSrc/*` → `redisinsight/desktop/src/*`\n\n## 📖 Additional Documentation\n\n- **For AI agents**: Start with `AGENTS.md` at repository root\n- **For human developers**: See `.ai/README.md` for setup and overview\n\n---\n\n**Note**: This is a minimal reference file. GitHub Copilot cannot read the referenced files directly, but developers can access the full guidelines. Claude Code and Codex read `AGENTS.md` directly; Claude Code additionally auto-discovers skills under `.ai/skills/` (Codex via the `.agents/skills` symlink).\n","mcp.json":"{\n  \"$schema\": \"https://modelcontextprotocol.io/schema/mcp.json\",\n  \"mcpServers\": {\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-github@2025.4.8\"],\n      \"description\": \"GitHub integration for managing issues, pull requests, and repository operations for RedisInsight/RedisInsight\"\n    },\n    \"memory\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-memory@2026.1.26\"],\n      \"description\": \"Persistent memory for storing context about the RedisInsight project across sessions\"\n    },\n    \"sequential-thinking\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-sequential-thinking@2025.12.18\"],\n      \"description\": \"Enhanced reasoning capabilities for complex architectural and debugging tasks\"\n    },\n    \"context-7\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@upstash/context7-mcp@2.1.8\"],\n      \"description\": \"Context 7 MCP server for enhanced context management and analysis\"\n    },\n    \"playwright\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@playwright/mcp@0.0.70\"\n      ]\n    },\n    \"atlassian\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"-i\",\n        \"--rm\",\n        \"--env-file\",\n        \".env.mcp\",\n        \"ghcr.io/sooperset/mcp-atlassian@sha256:60c3126b196feea01d29d25f0e6957268b97e5305c84d2f5a7b1c16a2f5af45b\"\n      ],\n      \"description\": \"Atlassian MCP server for managing JIRA projects (RI-XXX tickets) and Confluence content\"\n    },\n    \"figma\": {\n      \"url\": \"https://mcp.figma.com/mcp\",\n      \"description\": \"Figma MCP server for accessing design files, frames, and layers. Copy a Figma frame/layer link to provide design context in prompts.\"\n    }\n  }\n}\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# RedisInsight AI Agent Instructions\n\nThis file provides essential context and instructions for AI coding agents working on RedisInsight.\n\n## Project Overview\n\n**RedisInsight** is a desktop application for Redis database management built with:\n\n- **Frontend**: React 18, TypeScript, Redux Toolkit, styled-components, Monaco Editor, Vite\n- **Backend**: NestJS, TypeScript, Node.js\n- **Desktop**: Electron for cross-platform distribution\n- **Testing**: Jest, Testing Library, Playwright\n\n**Architecture**:\n\n```\nredisinsight/\n├── ui/          # React frontend (Vite + TypeScript)\n├── api/         # NestJS backend (TypeScript)\n├── desktop/     # Electron main process\n└── tests/       # E2E tests (Playwright)\n```\n\n## Setup Commands\n\n### Development\n\n```bash\n# Frontend development (web)\nnpm run dev:ui\n\n# Backend development\nnpm run dev:api\n\n# Desktop app development (runs all: API + UI + Electron)\nnpm run dev:desktop\n\n# Frontend with coverage\nnpm run dev:ui:coverage\n```\n\n## Testing Instructions\n\n### Run Tests\n\n```bash\n# Frontend tests\nnpm test               # Run all UI tests\n\n# Backend tests\nnpm run test:api       # Run all API tests\n\n# E2E tests\nnpm test --prefix tests/e2e-playwright\n```\n\n### Run Specific Frontend Tests\n\n```bash\n# Run a specific test file\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/path/to/Component.spec.tsx' -c 'jest.config.cjs'\n\n# Run a specific test by name (use -t flag)\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/path/to/Component.spec.tsx' -c 'jest.config.cjs' -t 'test name pattern'\n\n# Example:\nnode 'node_modules/.bin/jest' 'redisinsight/ui/src/slices/tests/browser/keys.spec.ts' -c 'jest.config.cjs' -t 'refreshKeyInfoAction'\n```\n\n### Before Committing\n\n**ALWAYS run these before committing:**\n\n```bash\n# Lint check\nnpm run lint           # All code\nnpm run lint:ui        # Frontend only\nnpm run lint:api       # Backend only\n\n# Type checking (compares against .tscheck.rec.json baselines for ui/api/desktop + configs)\nnpm run type-check\n\n# Refresh baselines after intentionally adding or fixing TS errors (do not run casually)\nnpm run tscheck\n\n# Tests\nnpm test               # Frontend tests\nnpm run test:api       # Backend tests\n```\n\n`npm run type-check` is the gate — CI fails if any (file × error-code) TS-error count increases. If you intentionally changed TS-error counts, run `npm run tscheck` to refresh the baselines and commit the updated `.tscheck.rec.json` files. See `.ai/skills/type-check-baselines/SKILL.md` for details (including the `npm run tscheck:force` escape hatch).\n\n**Fix any linting errors, type errors, or test failures before committing.**\n\n## Always-On Rules\n\nThese apply to every change in the repo. Skill files contain the full detail; the essentials are listed here so they're never missed.\n\n### Code quality (always)\n\n- Run `npm run lint` and `npm run type-check` before committing — both must pass.\n- TypeScript everywhere. Avoid `any`; use `unknown` if you must.\n- Naming: `PascalCase` components, `camelCase` functions/variables, `UPPER_SNAKE_CASE` constants, `is/has/should` prefix for booleans.\n- No `console.log` in production code (use `console.warn`/`error`).\n- Imports: external → built-ins → internal aliases (`uiSrc/*`, `apiClient`, `desktopSrc/*`) → relative → styles last. UI must not import from backend directly — use `apiClient`.\n- No magic numbers; extract duplicated strings to constants.\n\n### Git safety (always)\n\n- **Never commit, push, or force-push directly to `main`, `latest`, or `release/*`.** Always create a feature branch first.\n- Verify current branch with `git branch --show-current` before any push.\n- All changes go through pull requests.\n\n### Dependency / lockfile management (always)\n\n- After modifying any `package.json` (root, `redisinsight/`, `redisinsight/api/`, or a `redisinsight/ui/src/packages/*` plugin), run `npm install` from that directory and commit the resulting `package-lock.json` changes.\n- Never edit `package-lock.json` files by hand and never run `npm install --ignore-scripts` (or otherwise skip `postinstall`) when preparing a commit — the `postinstall` applies `patch-package` patches, and the lockfile shipped to CI must match what `npm install` produces locally.\n- CI runs `npm ci`, which installs strictly from `package-lock.json` and fails if it is out of sync with `package.json`. A green local install in every changed package's directory is required before pushing.\n- Use the right package manager for the change: `npm install <pkg>` / `npm uninstall <pkg>` (or `npm update`) for dependency changes, never manual edits to `package.json` versions without re-running install.\n\n## Skills\n\nAll detailed development standards are exposed as skills under `.ai/skills/`. Claude Code auto-discovers them; each skill triggers when its description matches the task.\n\n- **Code Quality**: `.ai/skills/code-quality/SKILL.md` - Linting, TypeScript standards, naming, import order\n- **Frontend**: `.ai/skills/frontend/SKILL.md` - React, Redux, UI patterns, styled-components\n- **i18n**: `.ai/skills/i18n/SKILL.md` - i18next translations, locale key conventions, translating backend errors and notifications\n- **Backend**: `.ai/skills/backend/SKILL.md` - NestJS, API patterns, dependency injection\n- **Testing**: `.ai/skills/testing/SKILL.md` - Jest/Testing Library standards, faker, test patterns\n- **E2E Testing**: `.ai/skills/e2e-testing/SKILL.md` - Playwright standards, page objects\n- **Git Safety**: `.ai/skills/git-safety/SKILL.md` - Protected-branch guardrails (detail)\n- **Branches**: `.ai/skills/branches/SKILL.md` - Branch naming conventions\n- **Commits**: `.ai/skills/commits/SKILL.md` - Commit message guidelines\n- **Pull Requests**: `.ai/skills/pull-requests/SKILL.md` - PR process and review guidelines\n- **Feature Flags**: `.ai/skills/feature-flags/SKILL.md` - Adding, promoting, and removing feature flags\n- **TS Error Baselines**: `.ai/skills/type-check-baselines/SKILL.md` - Running and refreshing TypeScript error baselines\n- **Redis UI Components**: `.ai/skills/redis-ui-components/SKILL.md` - Component API references, props, and usage examples (from `@redis-ui/components` package)\n- **RedisInsight Plugins**: `.ai/skills/redis-insight-plugin/SKILL.md` - Building, deploying, and validating Workbench visualization plugins (manifests, `activationMethod`, phased workflow, command parsing); internal plugins under `redisinsight/ui/src/packages/` must also follow the Frontend, Code Quality, Redis UI Components, and Testing skills\n\n**Refer to these files for comprehensive guidelines on each topic.**\n\n## Boundaries\n\n### ✅ Always Do\n\n- Ensure the current branch name follows `.ai/skills/branches/SKILL.md` before opening a PR; rename it if it doesn't\n- Write to `src/` and `tests/` directories\n- Run `npm run lint` and `npm test` before commits\n- Follow naming conventions (camelCase, PascalCase, UPPER_SNAKE_CASE)\n- Use faker library for test data generation\n- Use `renderComponent` helper in component tests\n- Extract duplicate strings to constants\n- Use semantic colors from theme (not CSS variables)\n- Use layout components (Row/Col/FlexGroup) instead of div\n- Pass layout props as component props (not hardcoded in styles)\n- Consult the `redis-ui-components` skill (`.ai/skills/redis-ui-components/`) for component APIs when writing frontend code\n- Consult the `redis-insight-plugin` skill (`.ai/skills/redis-insight-plugin/`) when creating or modifying anything under `redisinsight/ui/src/packages/**` or any plugin manifest with a `visualizations` field\n\n### ⚠️ Ask First\n\n- Database schema changes\n- Adding new dependencies\n- Modifying CI/CD configuration (`.github/workflows/`)\n- Changes to build configuration\n- Breaking changes to APIs\n\n### 🚫 Never Do\n\n- Commit secrets or API keys\n- Edit `node_modules/` or `vendor/` directories\n- Edit `package-lock.json` by hand or commit a lockfile produced with `--ignore-scripts` / a skipped `postinstall`\n- Use fixed time waits in tests (use `waitFor` instead)\n- Use `!important` in styled-components\n- Import directly from `@redis-ui/*` (use internal wrappers from `uiSrc/components/ui`)\n- Use Elastic UI for new code (migrating to Redis UI)\n- Use hardcoded pixel values (use theme spacing)\n- Use `any` type without reason\n","category":"root","tokens":2058},{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","title":"copilot-instructions.md","content":"# GitHub Copilot Instructions for RedisInsight\n\n> **🎯 Start here: Read `AGENTS.md` at the repository root for essential commands, testing instructions, and quick reference**\n\nThis project uses a centralized AI rules structure:\n\n- **`AGENTS.md`** (repository root) - Entry point with commands, testing, and boundaries\n- **`.ai/skills/`** - Detailed development standards as skill files (one folder per topic, each with a `SKILL.md`)\n- **`.ai/commands/`** - AI workflow commands and templates\n\n## 📂 Skills Structure\n\n### Core Development Skills\n\n- **Code Quality**: `.ai/skills/code-quality/SKILL.md`\n\n  - TypeScript best practices\n  - Import organization\n  - SonarJS complexity rules\n\n- **Frontend Development**: `.ai/skills/frontend/SKILL.md`\n\n  - React 18 patterns and best practices\n  - Redux Toolkit state management\n  - Styled-components (SCSS deprecated)\n  - Component folder structure\n  - Internal UI component wrappers (never import from @redis-ui directly)\n  - Elastic UI deprecation (use Redis UI wrappers)\n\n- **Backend Development**: `.ai/skills/backend/SKILL.md`\n\n  - NestJS module architecture\n  - Service and controller patterns\n  - DTOs and validation\n  - Error handling\n  - Redis integration patterns\n\n- **Testing Standards**: `.ai/skills/testing/SKILL.md`\n\n  - Jest and Testing Library patterns\n  - Component testing with renderComponent helper\n  - Faker for test data generation\n  - No fixed timeouts (use waitFor)\n  - Backend testing with NestJS\n\n- **E2E Testing**: `.ai/skills/e2e-testing/SKILL.md`\n\n  - Playwright standards, page object models, fixtures\n\n- **Git Safety**: `.ai/skills/git-safety/SKILL.md`\n\n  - Protected-branch guardrails (no direct commits to main/latest/release)\n\n- **Commit Messages**: `.ai/skills/commits/SKILL.md`\n\n  - Commit message format (Conventional Commits)\n\n- **Pull Requests**: `.ai/skills/pull-requests/SKILL.md`\n  - PR process and review guidelines\n  - Pre-commit checklist\n\n### Commands and Workflows\n\n- **PR Plan**: `.ai/commands/pr-plan.md` - Analyze JIRA tickets (RI-XXX) and create detailed implementation plans\n- **Commit Message Generation**: `.ai/commands/commit-message.md` - Generate commit messages following Conventional Commits\n- **PR Review**: `.ai/commands/pull-request-review.md` - Review pull requests and provide feedback\n\n## 🎯 Project Overview\n\n**Tech Stack:**\n\n- Frontend: React 18, TypeScript, Redux Toolkit, styled-components, Vite\n- Backend: NestJS, TypeScript, Node.js\n- Desktop: Electron\n- Testing: Jest, Testing Library, Playwright\n\n**Module Aliases:**\n\n- `uiSrc/*` → `redisinsight/ui/src/*`\n- `apiClient` → `redisinsight/api-client` (auto-generated OpenAPI types consumed by the UI)\n- `desktopSrc/*` → `redisinsight/desktop/src/*`\n\n## 📖 Additional Documentation\n\n- **For AI agents**: Start with `AGENTS.md` at repository root\n- **For human developers**: See `.ai/README.md` for setup and overview\n\n---\n\n**Note**: This is a minimal reference file. GitHub Copilot cannot read the referenced files directly, but developers can access the full guidelines. Claude Code and Codex read `AGENTS.md` directly; Claude Code additionally auto-discovers skills under `.ai/skills/` (Codex via the `.agents/skills` symlink).\n","category":".github","tokens":799},{"name":"mcp.json","path":"mcp.json","title":"mcp.json","content":"{\n  \"$schema\": \"https://modelcontextprotocol.io/schema/mcp.json\",\n  \"mcpServers\": {\n    \"github\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-github@2025.4.8\"],\n      \"description\": \"GitHub integration for managing issues, pull requests, and repository operations for RedisInsight/RedisInsight\"\n    },\n    \"memory\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-memory@2026.1.26\"],\n      \"description\": \"Persistent memory for storing context about the RedisInsight project across sessions\"\n    },\n    \"sequential-thinking\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-sequential-thinking@2025.12.18\"],\n      \"description\": \"Enhanced reasoning capabilities for complex architectural and debugging tasks\"\n    },\n    \"context-7\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@upstash/context7-mcp@2.1.8\"],\n      \"description\": \"Context 7 MCP server for enhanced context management and analysis\"\n    },\n    \"playwright\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@playwright/mcp@0.0.70\"\n      ]\n    },\n    \"atlassian\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"-i\",\n        \"--rm\",\n        \"--env-file\",\n        \".env.mcp\",\n        \"ghcr.io/sooperset/mcp-atlassian@sha256:60c3126b196feea01d29d25f0e6957268b97e5305c84d2f5a7b1c16a2f5af45b\"\n      ],\n      \"description\": \"Atlassian MCP server for managing JIRA projects (RI-XXX tickets) and Confluence content\"\n    },\n    \"figma\": {\n      \"url\": \"https://mcp.figma.com/mcp\",\n      \"description\": \"Figma MCP server for accessing design files, frames, and layers. Copy a Figma frame/layer link to provide design context in prompts.\"\n    }\n  }\n}\n","category":"root","tokens":434}]}