Перейти к содержимому
PraktickAI
КурсыДля командУслугиДокументацияБлог
КурсыДля командУслугиДокументацияБлог
ГлавнаяКурсыAI WorkspaceПаттерн мета-воркспейса
Назад к курсуСледующий урок
Урок 1 из 835 мин

Паттерн мета-воркспейса

Перейти к разделу
  • Проблема: фрагментированный контекст
  • Решение: мета-воркспейс
  • AGENTS.md: единственный источник истины
  • Символические ссылки для совместимости с инструментами
  • Стратегия .gitignore
  • Что куда идёт
  • Реальный пример: открытие воркспейса
  • Почему не монорепозиторий?

Проблема: фрагментированный контекст

В вашей компании есть репозиторий фронтенда, бэкенда, инфраструктуры как кода, общих библиотек, возможно один-два пайплайна данных. Когда вы открываете Claude Code или Cursor в одном репозитории, AI не имеет никакого представления об остальных. Он не может рассуждать о том, как изменение backend API влияет на фронтенд. Он не может спланировать фичу, затрагивающую три репозитория.

Это фундаментальное узкое место. AI-инструменты мощны в рамках одного репозитория, но большинство реальной работы пересекает границы репозиториев. Задача по добавлению фичи нередко означает: добавить API-эндпоинт (бэкенд), создать UI (фронтенд), обновить деплой (инфра) и, возможно, добавить джоб миграции (данные). Без унифицированного контекста AI становится инструментом, который видит лишь один кусочек пазла.

Решение: мета-воркспейс

Мета-воркспейс — это Git-репозиторий, содержащий все остальные репозитории в виде поддиректорий. Дочерние репозитории сохраняют собственные Git-истории — мета-воркспейс просто агрегирует их через .gitignore. Думайте об этом как о «репозитории репозиториев» с единым мозгом.

company-workspace/
  AGENTS.md                    # Single source of truth for AI agents
  .claude/                     # Claude Code configuration
    agents/                    # Agent definitions
    skills/                    # Skill definitions (pipelines)
  repos/                       # All child repos (gitignored)
    backend/                   # Django/Rails/Express repo
    frontend/                  # Next.js/React/Vue repo
    infra/                     # Terraform + k8s manifests
    shared-libs/               # Shared packages
    data-pipeline/             # ETL jobs
  projects/                    # Project tracking
    ACTIVE                     # Current active project
    TICKET-123/
      README.md                # Project plan and status
  docs/                        # Cross-repo documentation
  setup.sh                     # One-command workspace setup

Ключевой инсайт: сам мета-воркспейс — это Git-репозиторий, но все дочерние репозитории в директории repos/ добавлены в .gitignore. Каждый дочерний репозиторий ведёт собственные ветки, PR и CI. Мета-воркспейс отслеживает только общую конфигурацию: определения агентов, навыки, планы проектов и документацию на уровне воркспейса.

AGENTS.md: единственный источник истины

AGENTS.md (или CLAUDE.md для Claude Code, GEMINI.md для Gemini CLI) — самый важный файл в вашем воркспейсе. Каждый AI-агент читает его первым. Он сообщает AI: какие репозитории существуют, что делает каждый из них, какие соглашения соблюдать и какие агенты/навыки доступны.

# Company Workspace

Meta-workspace for managing all company repositories with AI agents.

## Repository Map

| Repo | Path | Stack | Description |
|------|------|-------|-------------|
| Backend API | repos/backend/ | Django + Ninja | REST API, auth, payments |
| Frontend | repos/frontend/ | Next.js 15 | Customer-facing web app |
| Admin | repos/admin/ | Next.js 15 | Internal admin dashboard |
| Infra | repos/infra/ | Terraform + k8s | Cloud infrastructure |
| Shared Types | repos/shared-types/ | TypeScript | Shared API types |

## Conventions

- All repos use trunk-based development (short-lived feature branches)
- Backend: Django apps under apps/, tests mirror app structure
- Frontend: App Router, server components by default
- Infra: Terraform modules in modules/, environments in envs/

## Agents

| Agent | File | Model | Role |
|-------|------|-------|------|
| Solution Architect | .claude/agents/solution-architect.md | opus | Cross-repo planning |
| Backend Developer | .claude/agents/backend-dev.md | sonnet | Django implementation |
| Frontend Developer | .claude/agents/frontend-dev.md | sonnet | Next.js implementation |
| Infra Engineer | .claude/agents/infra-eng.md | sonnet | Terraform + k8s |
| Reviewer | .claude/agents/reviewer.md | opus | Code review |

## Skills

| Skill | File | Description |
|-------|------|-------------|
| /feature | .claude/skills/feature-pipeline.md | Full feature implementation |
| /deploy | .claude/skills/deploy.md | Deploy to staging/production |
| /review | .claude/skills/review.md | Cross-repo code review |

AGENTS.md не зависит от конкретного инструмента. Одно и то же содержимое работает для Claude Code (как CLAUDE.md), Cursor (как .cursorrules), Gemini CLI (как GEMINI.md). Используйте символические ссылки для совместного использования без дублирования.

Символические ссылки для совместимости с инструментами

Разные AI-инструменты ищут разные имена файлов. Claude Code читает CLAUDE.md, Cursor — .cursorrules или .cursor/rules, Gemini CLI — GEMINI.md. Вместо поддержки нескольких копий используйте символические ссылки.

# Create the canonical source
vi AGENTS.md

# Symlink for each tool
ln -s AGENTS.md CLAUDE.md
ln -s AGENTS.md GEMINI.md
mkdir -p .cursor && ln -s ../AGENTS.md .cursor/rules

# Verify
ls -la CLAUDE.md
# lrwxr-xr-x  CLAUDE.md -> AGENTS.md

Теперь при обновлении AGENTS.md все инструменты автоматически подхватывают изменения. Это критично для команд — один человек обновляет соглашения, и AI-инструменты всех разработчиков немедленно это отражают.

Стратегия .gitignore

Файл .gitignore мета-воркспейса — связующее звено всей конструкции. Он игнорирует все дочерние репозитории (у них есть собственный Git), отслеживая при этом всё остальное.

# .gitignore for the meta-workspace

# Child repos — each has its own git history
repos/

# OS files
.DS_Store

# IDE files (optional — some teams track these)
.idea/
.vscode/

Это означает, что коммиты в мета-воркспейс содержат только: AGENTS.md, определения агентов, определения навыков, планы проектов и документацию. Реальный код живёт в дочерних репозиториях со своими ветками и CI.

Что куда идёт

  • Репозиторий мета-воркспейса: AGENTS.md, определения агентов/навыков, отслеживание проектов, кросс-репозиторная документация, setup.sh
  • Дочерние репозитории: весь исходный код, тесты, конфигурации CI/CD, репозиторно-специфичные файлы AGENTS.md
  • Никогда в мета-воркспейсе: исходный код, зависимости, артефакты сборки, секреты

Каждый дочерний репозиторий может иметь собственный AGENTS.md с репозиторно-специфичными соглашениями. AGENTS.md мета-воркспейса даёт общую картину; файлы AGENTS.md дочерних репозиториев — детали. AI-агенты читают оба: воркспейс-уровневый для контекста, репозиторно-уровневый для конкретных правил.

Реальный пример: открытие воркспейса

Вот как это выглядит на практике. Вы открываете терминал в корне воркспейса и запускаете Claude Code. AI сразу читает AGENTS.md и знает о каждом репозитории, каждом агенте, каждом навыке. Вы говорите «реализуй TICKET-456» — и он знает, какие репозитории затронуть.

$ cd ~/company-workspace
$ claude

> Implement TICKET-456: Add user preferences API endpoint
  with a settings page in the frontend.

# Claude reads AGENTS.md, sees:
# - Backend repo at repos/backend/ (Django + Ninja)
# - Frontend repo at repos/frontend/ (Next.js)
# - Solution Architect agent for planning
# - Backend Developer agent for implementation
# - Frontend Developer agent for UI

# It plans the work across both repos,
# creates branches in each, and implements the feature.

Почему не монорепозиторий?

Монорепозитории решают ту же проблему контекста — всё в одном месте. Но они требуют тяжёлого инструментария (Nx, Turborepo, Bazel), принудительно объединяют все репозитории в одну CI-систему и с трудом внедряются постепенно. Паттерн мета-воркспейса работает с любой существующей структурой репозиториев. Вам не нужно менять CI, стратегию ветвления или пайплайн деплоя. Вы просто добавляете тонкий слой сверху.

Если у вас уже есть монорепозиторий, мета-воркспейс всё равно добавляет ценность: он предоставляет определения агентов, навыки и отслеживание проектов, которые инструменты монорепозитория не поддерживают.

Создайте структуру воркспейса

Создайте мета-воркспейс для вашей команды: 1. Создайте новую директорию: mkdir company-workspace && cd company-workspace && git init 2. Создайте структуру директорий: repos/, .claude/agents/, .claude/skills/, projects/, docs/ 3. Напишите AGENTS.md с картой репозиториев (перечислите 2–3 ваших реальных репозитория) 4. Добавьте .gitignore, игнорирующий repos/ 5. Склонируйте 2–3 ваших реальных репозитория в repos/ 6. Создайте символические ссылки: CLAUDE.md -> AGENTS.md 7. Откройте Claude Code в корне воркспейса и убедитесь, что он читает ваш AGENTS.md

Подсказка

Начните всего с 2 репозиториев. Добавить больше всегда можно позже. Карта репозиториев в AGENTS.md — самая важная часть: убедитесь, что она точно описывает стек и назначение каждого репозитория.

Протестируйте кросс-репозиторный контекст

После настройки воркспейса откройте Claude Code и спросите: «Опиши архитектуру этого проекта на основе репозиториев, которые ты видишь». Убедитесь, что он правильно определил все репозитории и их взаимосвязи. Затем спросите: «Если бы я хотел добавить новый API-эндпоинт, который использует фронтенд, какие файлы нужно изменить?» Проверьте, что он ссылается на файлы в обоих репозиториях.

Подсказка

Если AI не упоминает все репозитории, карта репозиториев в AGENTS.md может быть неполной. Убедитесь, что пути правильные, а описания достаточно конкретные.

Ключевые выводы
  • Мета-воркспейс агрегирует несколько репозиториев в единую директорию с общим AGENTS.md
  • Дочерние репозитории сохраняют собственные Git-истории — мета-воркспейс отслеживает только конфигурацию агентов, навыки и планы проектов
  • AGENTS.md — единственный источник истины: карта репозиториев, соглашения, реестр агентов, реестр навыков
  • Символические ссылки позволяют одному AGENTS.md служить Claude Code, Cursor, Gemini CLI и любым будущим инструментам
  • Работает с любой существующей структурой репозиториев — миграция на монорепозиторий не требуется
Назад к курсу
LinkedInX / Twitter
  • Проблема: фрагментированный контекст
  • Решение: мета-воркспейс
  • AGENTS.md: единственный источник истины
  • Символические ссылки для совместимости с инструментами
  • Стратегия .gitignore
  • Что куда идёт
  • Реальный пример: открытие воркспейса
  • Почему не монорепозиторий?

PraktickAI

AI-обучение и консалтинг для технических команд

КурсыДля командУслугиДокументацияБлог
karel@praktickai.appLinkedIn

© 2026 PraktickAI — SkyVisual s.r.o. Все права защищены. Политика конфиденциальности · Условия использования · Порядок рассмотрения жалоб