# Общий набор для команды

Курс: Claude Code: уровень профи — https://zero2claude.ru/learn/claude-code-pro
Канонический URL: https://zero2claude.ru/learn/claude-code-pro/5-3-obshchiy-nabor

Что нужно всем, коммитится в репозиторий, что твоё — остаётся вне git. Маркетплейс прямо в репозитории плюс два ключа в .claude/settings.json дают каждому, кто клонировал проект и доверил папку, общий плагин без единой команды установки.

На прошлых уровнях ты собрал свою настройку: правила разрешений, хуки, навыки, субагентов. Теперь её нужно отдать команде — так, чтобы каждый получил то же самое, а твои личные настройки остались твоими.

## Что коммитить, а что нет

| Коммитится — для всех | Остаётся у тебя |
|---|---|
| `.claude/settings.json` | `.claude/settings.local.json` |
| `CLAUDE.md` и `.claude/rules/` | `CLAUDE.local.md` |
| навыки, агенты, `.mcp.json` | |

Локальный файл настроек главнее общего: коллега может переопределить для себя командную настройку без коммита. Исключение — списки вроде правил разрешений: они не заменяются, а объединяются.

Оба личных файла добавь в `.gitignore` проекта сам. Правило, которое Claude Code пишет для `settings.local.json`, попадает в твой глобальный список исключений git — у коллег его нет. А `CLAUDE.local.md` создаётся руками, и следить за ним тоже тебе.

## Маркетплейс в репозитории

Плагин упаковывает навыки, агентов и хуки в одну единицу. Маркетплейс — это папка, где файл `.claude-plugin/marketplace.json` перечисляет плагины. Его можно положить прямо в репозиторий:

```
team-marketplace/
  .claude-plugin/marketplace.json     ← маркетплейс team-tools
  plugins/team-kit/
    .claude-plugin/plugin.json        ← плагин team-kit
    skills/onboard/SKILL.md
    agents/config-reviewer.md
```

В `marketplace.json` плагин указан относительным путём:

```json
{
  "name": "team-tools",
  "owner": { "name": "Команда" },
  "plugins": [
    { "name": "team-kit", "source": "./plugins/team-kit" }
  ]
}
```

Имя записи (`team-kit`) должно совпадать с `name` в `plugin.json` плагина.

## Проверка перед коммитом

```bash
claude plugin validate ./team-marketplace
claude plugin validate ./team-marketplace/plugins/team-kit --strict
```

Нужны **оба** запуска. Проверка маркетплейса смотрит его файл и записи, но не открывает навыки и агентов внутри плагинов. Вторая проверка открывает их, а `--strict` превращает предупреждения в ошибки. Успех заканчивается строкой `Validation passed`.

## Два ключа в настройках

В `.claude/settings.json`:

```json
{
  "extraKnownMarketplaces": {
    "team-tools": {
      "source": { "source": "directory", "path": "./team-marketplace" }
    }
  },
  "enabledPlugins": {
    "team-kit@team-tools": true
  }
}
```

- ключ внутри `extraKnownMarketplaces` — это `name` маркетплейса;
- идентификатор плагина — `имя-записи@имя-маркетплейса`;
- значение — `true`, а не строка `"true"`;
- относительный путь считается от основной копии репозитория, поэтому сессия в worktree возьмёт тот же `team-marketplace/`.

Закоммить `team-marketplace/` и `.claude/settings.json`. Коллега клонирует репозиторий, запускает `claude`, принимает диалог доверия — и плагин загружается **без команды установки**. Навык вызывается как `/team-kit:onboard`, субагент — как `team-kit:config-reviewer`.

Плагин из папки на диске загружается на месте: правка в `team-marketplace/` подхватывается при следующем запуске или после `/reload-plugins`, номер версии менять не нужно.

## Для себя

**Выключить общий плагин только у себя.** В `.claude/settings.local.json`:

```json
{ "enabledPlugins": { "team-kit@team-tools": false } }
```

Потом `/reload-plugins`. У остальных плагин по-прежнему включён.

**Попробовать без подключения.** `claude --plugin-dir ./team-marketplace/plugins/team-kit` загружает плагин на одну сессию и ничего не пишет в настройки.

## Подводные камни

- **Доверие.** Маркетплейс из репозитория молча ждёт, пока человек примет диалог доверия к папке. `claude -p` подключит его только в папке, которой уже доверяли в интерактивной сессии. Облачная сессия диалога не показывает — там такой маркетплейс не подключится никогда. Общие правила разрешений ждут того же диалога.
- **Дубли.** Компонент, оставленный и в `.claude/`, и в плагине, загрузится дважды: заработают и `/tdd`, и `/team-kit:tdd`, а хук будет срабатывать два раза.
- **Имя навсегда.** Плагин включают по `имя@маркетплейс`. Переименованный плагин для всех, у кого он был включён, — это **другой** плагин. Нужна новая подпись — меняй `displayName`, а не `name`.

**Осторожно.** 
Каждый, кто доверил репозиторий, запускает содержимое team-kit со своими правами. Хуки и MCP-серверы плагина работают вне песочницы, и правила разрешений не распространяются на код, который они запускают. Изменения в team-marketplace ревьюй так же внимательно, как код.
