Все статьи

Мой воркспейс

9 мин чтения Обновлено 8 сентября 2026
AI Claude Code Workflow
Слева — тёмный хаос из зависших задач, обрывков схем и табличек «broken». Справа — освещённый отсек, где робот ведёт журнал за столом: карта инфраструктуры на стене, чек-лист контекста, ящики с подписями playbooks, runbooks и archive

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

Мне нужно, чтобы в новой сессии можно было продолжить работу без пересказа предыдущей. Если мы уже нашли нужный конфиг, разобрались с доступом или выяснили причину сбоя, результат должен остаться в файлах. Перед следующей задачей агент читает эти записи.

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

Что я делаю через воркспейс

В основном это обслуживание инфраструктуры и операционная работа по управлению отделом. Агент собирает данные по инцидентам, выдаёт доступы, проверяет зависшие задачи и недологи, готовит ответы по тикетам. Решения, для которых нужен управленческий контекст, остаются за мной.

При работе с сервером агент сначала читает его карточку, зависимости и историю изменений. Затем проводит диагностику, предлагает план и после моего подтверждения выполняет изменения. В конце проверяет результат и обновляет документы.

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

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

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

workspace/
├── CLAUDE.md              # правила работы агента
├── projects/              # активные проекты
├── infra/                 # карта серверов, сервисов и людей
│   ├── servers/
│   ├── services/
│   └── people/
├── journal/               # хронология выполненных задач
├── playbooks/             # повторяемые сценарии
├── .vault/                # параметры доступа и ссылки на секреты, вне git
├── .claude/
│   └── skills/
│       └── ops-log/       # протокол закрытия задачи
├── scripts/               # переиспользуемая автоматизация
├── data/                  # выгрузки и генерируемые результаты
├── templates/             # шаблоны проектов и карточек
└── vault/                 # подключённый личный Obsidian

В infra/ лежит описание того, что я обслуживаю. У сервера есть карточка с его ролью, сервисами, способом деплоя, зависимостями и историей изменений. У внешних сервисов — свои карточки. В infra/people/ записано, кто отвечает за систему и к кому обращаться за решением.

В journal/ хранится хронология: один файл на месяц, свежие записи сверху. В записи нужны место работы, задача, выполненные действия и проверенный результат.

Повторяемые операции я выношу в playbooks/: диагностику заполненного диска, проверку прокси-цепочки, выдачу доступа, изменение DNS. Там должны быть конкретные команды, варианты действий при разных результатах и способ проверить, что всё получилось.

Для задач с собственной реализацией есть projects/. Общие скрипты лежат в scripts/, выгрузки — в data/, шаблоны документов — в templates/. В CLAUDE.md записаны правила работы с этими каталогами и порядок завершения задачи.

Что сохраняется после задачи

Замкнутый цикл из четырёх станций: робот достаёт карточку из картотеки, применяет знание к серверу и получает расхождение, чинит карточку гаечным ключом, кладёт исправленную обратно в картотеку с зелёной галочкой

Допустим, в карточке сервера указан старый путь к конфигу. Агент выясняет, куда переехал файл, и продолжает работу. Если оставить карточку как есть, следующая сессия снова будет искать конфиг по неправильному пути. Поэтому исправить запись нужно в той же задаче.

За завершение работы у меня отвечает скилл ops-log. В нём записано, что сохранить и какие документы проверить. Я требую вызывать его после каждой задачи с проверяемым результатом: изменения системы, законченной диагностики или найденного решения. Обычный ответ на вопрос и мелкая правка текста записи в журнале не требуют.

Журнал обновляется после такой задачи всегда. Карточки серверов, сервисов и людей — если работа их затронула. Новые параметры подключения попадают в .vault/, повторяемый случай агент предлагает оформить как плейбук. Отдельно сохраняет мои поправки к способу работы вместе с причиной и областью применения.

Скилл закрытия задачи

Сокращённая версия .claude/skills/ops-log/SKILL.md выглядит так:

---
name: ops-log
description: Протокол закрытия задачи. Вызывай автоматически в конце КАЖДОЙ выполненной задачи, не только по явным словам «зафиксируй» или «запиши в журнал».
---

# Протокол закрытия задачи

Перенеси подтверждённые знания из текущей сессии в воркспейс.
Ничего не выдумывай.

1. Журнал — всегда:
   - добавь запись в `journal/YYYY-MM.md`;
   - укажи дату, место, симптом или задачу, действия и результат.

2. Карточки:
   - обнови карточки затронутых серверов, сервисов и людей;
   - исправь устаревшие сведения;
   - добавь ссылку на запись журнала.

3. Vault:
   - новые хосты, пользователи и порты запиши в `.vault/inventory.yaml`;
   - для ключей, паролей и токенов оставь ссылку на менеджер секретов;
   - в коммитимых файлах оставляй только `vault:`-ссылки.

4. Плейбук:
   - повторяемый случай оформи как
     `симптом → диагностика → причина → фикс → прецедент`.

5. Уроки:
   - если карточка или плейбук соврали, проверь, что они уже исправлены;
   - поправку пользователя сохрани вместе с причиной и областью применения;
   - после третьего независимого повторения предложи поднять её
     в `CLAUDE.md` или скилл.

В description я указываю, когда нужен скилл. Claude Code использует это поле для выбора скиллов, поэтому условие запуска записано прямо в нём.

То же требование я дублирую в CLAUDE.md:

## Протокол закрытия задачи

Задача не считается завершённой без прохода скилла `ops-log`.
Вызывай его автоматически в конце каждой выполненной задачи.

- журнал обновляется после задачи с проверяемым результатом;
- карточки, vault и плейбуки — если затронуты;
- если документ соврал, исправь его в момент обнаружения;
- поправку пользователя сохрани с объяснением «почему» и «как применять»;
- третье независимое повторение поправки — кандидат в правило
  `CLAUDE.md` или скилл.

Это инструкции для агента, и он может их пропустить. Если задача закончена, а записи нет, нужно потребовать выполнить ops-log и проверить изменённые файлы.

Для журнала хватает такого формата:

## YYYY-MM-DD — короткое название задачи

- **Где:** ссылки на затронутые карточки
- **Что:** симптом или задача → выполненные действия → проверенный результат
- **Плейбук:** ссылка или «—»

В плейбуке нужны шаги, по которым можно повторить диагностику и исправление:

# Название сценария

## Симптом

Что наблюдает человек или система.

## Диагностика

```bash
# Конкретные команды и проверки
```

Как трактовать результаты и куда переходить дальше.

## Причина

Подтверждённая причина проблемы.

## Исправление

Последовательность действий и проверка результата.

## Прецеденты

- YYYY-MM-DD — краткий итог и ссылка на журнал.

Полные версии скилла и шаблонов есть в инструкции в конце статьи.

Когда задача становится проектом

Если у задачи есть собственная постановка, реализация и несколько запусков, я завожу для неё проект. Начальная структура такая:

projects/<slug>/
├── README.md   # что это, какие файлы внутри, как запускать
├── brief.md    # задача, цели, контекст, дедлайн
├── spec.md     # спецификация реализации
└── scripts/    # скрипты проекта

В brief.md записана задача, в spec.md — принятое решение. По README.md должно быть понятно, в каком состоянии проект и как его запустить.

Дальше структура зависит от реализации. Например, в projects/team-leads/ проверки недологов и зависших задач лежат в processes/, общий запуск и API-клиенты — в runtime/, расписание — в deploy/. У этих проверок есть тесты. Добавлять все эти каталоги в каждую разовую задачу мне не нужно.

Где лежат доступы

Карточки, журнал и плейбуки я храню в git. Параметры подключения вынесены в .vault/inventory.yaml, который исключён из репозитория. В карточке сервера остаётся ссылка:

vault: servers.billing_prod

По ней агент находит хост, пользователя и порт. В шаблоне ниже для паролей, ключей и токенов предусмотрены ссылки на менеджер секретов. Сами секреты не должны попадать в карточки, журнал или историю git.

Файл в .gitignore остаётся обычным файлом на диске: исключение из git его не шифрует. Поэтому в .vault/ стоит хранить параметры подключения и ссылки, а постоянные секреты — в предназначенном для них хранилище.

Соседние репозитории

Корпоративный репозиторий подключён через исключённый из git симлинк. По умолчанию агент читает его для контекста. Если задача требует правок, он переходит в этот репозиторий, читает его правила и работает там. У репозиториев могут отличаться соглашения и права на изменения.

Личный Obsidian подключён через vault/. Оттуда агент читает планы и заметки. Это отдельный каталог: .vault/ с точкой предназначен для параметров доступа.

Режим работы с каждым источником записан в CLAUDE.md: только чтение, разрешённая запись или отдельная сессия. Это правило поведения агента; права файловой системы настраиваются отдельно.

Откуда взялись правила

Для настройки CLAUDE.md я разобрал 842 транскрипта своих сессий: 2 278 реплик и 192 пользовательские корректировки. Корректировкой считал случай, когда я менял предложенный агентом способ работы. Обычное уточнение задачи в этот счёт не входило.

Поправку я поднимал в общее правило, если она независимо повторялась три раза. До этого достаточно сохранить саму поправку, её причину и задачи, к которым она относится. Порог в три повторения я выбрал для своего воркспейса, чтобы не переносить каждое разовое пожелание в CLAUDE.md.

Кроме обновлений во время работы, раз в неделю запускается infra-verify. Он сверяет карточки серверов с доступностью, дисками, сервисами, контейнерами и таймерами. Найденные расхождения попадают в отчёт, который агент читает перед инфраструктурной задачей.

Рик и Морти в халатах отдыхают в бассейне отеля с коктейлями, рядом на бортике сидит робот, на стене неоновая вывеска «Hotel Blips and Chitz»

Инструкция для вашего агента

Ниже — инструкция для разворачивания такого воркспейса в пустой папке. В ней есть структура, готовые файлы, скилл ops-log и проверки перед первым коммитом. Она рассчитана на Claude Code. Для другого агента нужно адаптировать файл с правилами, расположение скиллов и способ их вызова.

Скопируйте блок целиком и передайте агенту. После создания файлов проверьте результат. Дальше можно взять первую рабочую задачу и посмотреть, какие записи агент оставит после её завершения. Набор папок сам по себе эту привычку не заменит.

Промпт для агента

Ты находишься в пустой папке. Разверни в ней базовый рабочий воркспейс для совместной работы человека и AI-агента.

Не ограничивайся описанием: создай все перечисленные каталоги и файлы, проверь результат, инициализируй git-репозиторий и сделай первый коммит.

Не записывай реальные секреты в создаваемые файлы. Используй только заглушки и документированные тестовые IP-адреса.

Все блоки с готовым содержимым файлов копируй дословно. Не сокращай их, не пересказывай, не объединяй строки и не меняй форматирование. После создания перечитай каждый файл и построчно сравни его с соответствующим блоком этой инструкции. Если нашёл расхождение, исправь файл до проверки и коммита.

## 1. Создай структуру

```text
.
├── CLAUDE.md
├── .gitignore
├── .claude/
│   └── skills/
│       └── ops-log/
│           └── SKILL.md
├── .vault/
│   ├── .gitkeep
│   └── inventory.yaml
├── projects/
├── infra/
│   ├── README.md
│   ├── servers/
│   ├── services/
│   └── people/
├── journal/
│   ├── README.md
│   └── YYYY-MM.md
├── playbooks/
│   └── README.md
├── scripts/
├── data/
│   └── .gitkeep
└── templates/
    ├── project-readme.md
    ├── project-brief.md
    ├── project-spec.md
    └── server-card.md
```

Вместо `YYYY-MM.md` используй текущий год и месяц системной даты.

Сохрани пустые каталоги `projects/`, `scripts/`, `infra/servers/`, `infra/services/`, `infra/people/`, `.vault/` и `data/` в git с помощью файлов `.gitkeep`. Содержимое `.vault/` и `data/`, кроме этих двух файлов `.gitkeep`, должно оставаться локальным.

## 2. Создай .gitignore

Запиши в `.gitignore`:

```gitignore
# Секреты и локальные доступы
.vault/*
!.vault/.gitkeep

# Выгрузки, отчёты и генерируемые данные
data/*
!data/.gitkeep

# Локальное окружение
.env
.env.*
!.env.example

# Системные файлы
.DS_Store
```

Проверь, что `.vault/inventory.yaml` действительно игнорируется git. Файл должен существовать локально, но не должен попасть в первый коммит.

## 3. Создай CLAUDE.md

Запиши следующее содержимое:

```markdown
# Рабочий воркспейс

## Назначение

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

Воркспейс хранит активные проекты, карту инфраструктуры, хронологию задач,
повторяемые сценарии и проверенные правила. Используй существующие знания,
проверяй их реальностью и исправляй при обнаружении расхождений.

## Структура

- `projects/` — активная работа; один проект живёт в `projects/<slug>/`.
- `infra/servers/` — карточки серверов: роль, сервисы, эксплуатация и история.
- `infra/services/` — карточки внешних сервисов и платформ.
- `infra/people/` — карта ответственности и рабочих контактов.
- `journal/` — хронология выполненных задач, один файл на месяц.
- `playbooks/` — повторяемые сценарии диагностики и регламентных работ.
- `.vault/` — локальные параметры доступа; содержимое не попадает в git,
  кроме `.gitkeep`.
- `scripts/` — переиспользуемая автоматизация.
- `data/` — выгрузки и генерируемые результаты; содержимое не попадает в git,
  кроме `.gitkeep`.
- `templates/` — шаблоны проектов и карточек.

## Соглашения

- Каждый проект создавай в `projects/<slug>/`.
- Скрипты общего назначения размещай в `scripts/`.
- Результаты выгрузок и временные отчёты размещай в `data/`.
- Не выдумывай факты, доступы, результаты команд и состояние систем.
- Перед изменением существующего объекта прочитай его документацию и историю.
- После изменения проверь результат способом, независимым от команды записи.

## Секреты

Хосты, реальные IP-адреса, пользователи и другие локальные параметры
подключения храни только в `.vault/inventory.yaml`. Пароли, приватные ключи,
токены и API-ключи держи в менеджере паролей, системном хранилище или secret
manager. В `.vault/inventory.yaml` записывай только ссылку на секрет.

В коммитимых файлах оставляй стабильную ссылку:

`vault: servers.<имя>`

или:

`vault: services.<имя>`

Карточка описывает, что находится в системе и как с ней работать. Vault
описывает, как получить доступ.

Никогда не добавляй содержимое `.vault/` в git, кроме пустого файла
`.vault/.gitkeep`. Перед коммитом проверяй staged-файлы на наличие секретов.

## Протокол закрытия задачи

Задача не считается завершённой без прохода скилла `ops-log`.
Вызывай его автоматически в конце каждой выполненной задачи, а не только
после слов «зафиксируй» или «запиши в журнал».

- журнал обновляется после задачи с проверяемым результатом;
- карточки `infra/`, vault и плейбуки обновляются, если были затронуты;
- если карточка или плейбук соврали, исправь их в момент обнаружения;
- поправку пользователя сохрани вместе с объяснением, почему она нужна
  и когда применяется;
- если одна поправка встретилась в третий раз независимо, предложи поднять
  её в это правило или в отдельный скилл;
- не коммить изменения без явной просьбы пользователя, кроме первоначального
  коммита при разворачивании этого воркспейса.

Для чисто разговорного ответа, в котором ничего не диагностировалось,
не создавалось и не изменялось, запись в журнале не нужна.

Первоначальное разворачивание пустого воркспейса не записывай в журнал:
это установка рабочей среды, а не выполненная рабочая задача.
```

## 4. Создай .claude/skills/ops-log/SKILL.md

Запиши:

```markdown
---
name: ops-log
description: Протокол закрытия задачи — фиксация результата в journal/, infra/, playbooks/ и .vault плюс шаг «уроки». Вызывай автоматически в конце КАЖДОЙ выполненной задачи, не только по явной просьбе «зафиксируй», «запиши в журнал», «добавь в базу знаний» или «оформи плейбук».
---

# ops-log — протокол закрытия задачи

Перенеси подтверждённые знания из текущей сессии в воркспейс: что делали,
где работали и чем закончилась задача.

Ничего не выдумывай. Если факта, команды или результата не было в сессии,
не добавляй его в документы.

Это обязательный финал каждой выполненной задачи. Для чисто разговорной
сессии, в которой ничего не менялось и не диагностировалось, фиксация не нужна.

## 1. Журнал

Добавь запись в `journal/YYYY-MM.md` по формату из `journal/README.md`.

- Если файла текущего месяца нет, создай его.
- Новую запись помещай сверху, сразу после заголовка месяца.
- Укажи дату и короткое название.
- В поле «Где» дай ссылки на затронутые карточки или проект.
- В поле «Что» уложи в 2–5 строк симптом или задачу, выполненные действия
  и проверенный результат.
- В поле «Плейбук» дай ссылку или поставь `—`.

Журнал обновляется после задачи с проверяемым результатом: если изменилось
состояние системы, закончилась диагностика или появилось знание для следующей
сессии. Ответ на вопрос и мелкая правка формулировки сами по себе записи
не требуют.

## 2. Карточки

Для каждого затронутого сервера, внешнего сервиса или человека:

- если карточка существует, добавь запись в раздел «История» и исправь
  устаревшие факты в остальных разделах;
- если карточки нет, создай её в `infra/servers/`, `infra/services/`
  или `infra/people/`;
- добавь новую карточку в соответствующую таблицу `infra/README.md`;
- связывай запись истории со свежей записью журнала.

Минимальная карточка сервера должна содержать роль, ссылку `vault:`,
состав сервисов, способ эксплуатации, проверки и историю.

## 3. Vault

Если появились новые параметры доступа — хост, реальный IP, пользователь, порт
или панель — добавь их в `.vault/inventory.yaml`. Для пароля, ключа или токена
сохрани только ссылку на менеджер секретов.

В коммитимых файлах используй только ссылку вида:

`vault: servers.<имя>`

или:

`vault: services.<имя>`

Не выводи секреты в журнал, карточки, плейбуки, сообщения о завершении
и историю git.

## 4. Плейбук

Если случай может повториться — диагностика, регламентная операция или уже
встречавшаяся ошибка — предложи создать либо обновить плейбук.

После согласия пользователя создай файл в подходящем подкаталоге
`playbooks/` по структуре:

1. симптом;
2. диагностика с конкретными командами;
3. трактовка результатов и развилки;
4. подтверждённая причина;
5. исправление;
6. проверка результата;
7. прецедент с датой и ссылкой на журнал.

Добавь ссылку на плейбук в `playbooks/README.md`, журнал и карточку объекта.

Для действительно одноразового случая достаточно журнала.

## 5. Уроки

Проверь два контура самоулучшения.

### Знания соврали

Если карточка или плейбук оказались неверны — например, устарела команда,
сменился порт, изменился путь или больше не существует сервис, — документ
должен быть исправлен в момент обнаружения.

Перед завершением убедись, что исправление внесено. Не оставляй известную
ошибку следующей сессии.

### Поправка пользователя

Если пользователь поправил способ работы:

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

Если та же поправка встретилась в третий раз независимо, предложи поднять
её в `CLAUDE.md` или отдельный скилл. Не превращай единичное предпочтение
в глобальное правило.

## 6. Отчёт

Покажи пользователю список изменённых файлов и одной строкой объясни каждую
правку.

Не делай коммит без явной просьбы пользователя. Исключение — первый коммит,
прямо требуемый инструкцией разворачивания воркспейса.
```

## 5. Создай journal/README.md

Запиши:

```markdown
# Журнал задач

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

На каждый месяц используется файл `YYYY-MM.md`. Новые записи добавляются
сверху скиллом `ops-log`.

## Формат записи

## YYYY-MM-DD — короткое название задачи

- **Где:** ссылки на затронутые карточки, проекты или сервисы
- **Что:** 2–5 строк: симптом или задача → действия → проверенный результат
- **Плейбук:** ссылка на повторяемый сценарий или «—»

Не помещай в журнал пароли, токены, приватные ключи, реальные закрытые
адреса и другие секреты. Для доступов используй только `vault:`-ссылки.
```

Создай файл текущего месяца `journal/YYYY-MM.md`:

```markdown
# Журнал — YYYY-MM
```

Подставь фактический текущий год и месяц. Не добавляй выдуманных задач.

## 6. Создай playbooks/README.md

Запиши:

```markdown
# Плейбуки

Плейбуки — повторяемые сценарии диагностики и регламентных работ.

Создавай плейбук, если случай может повториться или если ошибка уже возникала.
Одноразовую работу фиксируй только в журнале.

## Структура плейбука

# Название сценария

## Симптом

Что наблюдает человек или система. Укажи проверяемые признаки.

## Перед началом

Какие нужны права, ссылки `vault:` и условия безопасности.

## Диагностика

Конкретные команды в порядке выполнения. Для каждой проверки объясни:

- какой результат считается нормой;
- что означает отклонение;
- к какому следующему шагу перейти.

## Причина

Подтверждённая причина. Не перечисляй неподтверждённые догадки как факт.

## Исправление

Пошаговое изменение с командами, границами полномочий и способом отката.

## Проверка

Как независимо убедиться, что проблема устранена и побочных эффектов нет.

## Прецеденты

- YYYY-MM-DD — краткий итог и ссылка на запись журнала.

## Индекс

### Диагностика

Пока пусто.

### Регламентные работы

Пока пусто.
```

## 7. Создай infra/README.md

Запиши:

```markdown
# Инфраструктура

`infra/` — карта серверов, внешних сервисов и ответственности: куда агент
идёт, что там находится, как с этим работать и что происходило раньше.

Секреты хранятся только в `.vault/inventory.yaml`. Карточки ссылаются
на них ключом `vault: <раздел>.<имя>`.

## Слои

- `infra/servers/` — машины и среды: роль, сервисы, деплой, зависимости,
  проверки и история.
- `infra/services/` — облака, DNS, панели, SaaS и другие внешние сервисы.
- `infra/people/` — зоны ответственности и рабочие точки контакта.
- `journal/` — хронология задач.
- `playbooks/` — повторяемые сценарии.

## Серверы

| Карточка | Назначение | Vault |
|---|---|---|

## Внешние сервисы

| Карточка | Назначение | Vault |
|---|---|---|

## Люди и зоны ответственности

| Карточка | Зона ответственности | Контакт |
|---|---|---|
```

## 8. Создай шаблон карточки сервера

Запиши в `templates/server-card.md`:

```markdown
# {{Название сервера}}

- **Роль:** {{для чего нужна машина}}
- **Среда:** {{production, staging, development или другая}}
- **Доступ:** `vault: servers.{{ключ}}`
- **Ответственный:** {{ссылка на карточку в infra/people или «не определён»}}

## Что работает

| Компонент | Назначение | Как запущен |
|---|---|---|
| {{сервис}} | {{роль}} | {{systemd, Docker, Kubernetes, вручную}} |

## Эксплуатация

- **Деплой:** {{проверенная последовательность или ссылка на плейбук}}
- **Логи:** {{пути или команды без секретов}}
- **Конфигурация:** {{пути или источник конфигурации}}
- **Зависимости:** {{другие серверы и внешние сервисы}}

## Проверки

Безопасные команды проверки состояния. Опиши ожидаемый результат каждой.

## Особенности и ограничения

- {{что легко сделать неправильно}}
- {{что требует отдельного согласования}}
- {{какие действия опасны или необратимы}}

## Связанные плейбуки

- Пока нет.

## История

- YYYY-MM-DD — карточка создана.
```

При создании реальной карточки не оставляй выдуманную строку истории:
подставь настоящую дату и причину появления карточки.

## 9. Создай .vault/inventory.yaml

Файл должен существовать локально, но оставаться исключённым из git.

Запиши в него только заготовку с комментариями и тестовыми значениями:

```yaml
# Этот файл содержит локальные параметры подключения и ссылки на секреты.
# Он исключён из git. Не копируй его значения в коммитимые документы.
# Пароли, приватные ключи и токены храни в менеджере секретов, не здесь.
#
# В карточках используй ссылки:
#   vault: servers.billing_prod
#   vault: services.cloud_provider

servers:
  billing_prod:
    host: 203.0.113.10
    user: deploy
    credentials_ref: "password-manager://infrastructure/billing-prod"
    panel: https://panel.example.com
    notes: "пример: доступ через бастион, порт нестандартный"

  ci_runner:
    host: 203.0.113.20
    auth: ssh-key
    credentials_ref: "system-keychain://ssh/ci-runner"

services:
  cloud_provider:
    account: team@example.com
    credentials_ref: "secret-manager://cloud/provider-api"

sheets:
  planning_2026: https://docs.google.com/spreadsheets/d/EXAMPLE

own_ips:
  vpn_exit: 198.51.100.5  # пример: собственный IP для сверки при аудитах
```

Не заменяй тестовые значения реальными параметрами подключения во время
первоначального разворачивания.

## 10. Создай шаблоны проекта

Запиши в `templates/project-readme.md`:

```markdown
# {{Название проекта}}

{{Одно-два предложения: что это за проект и зачем он нужен}}

- `brief.md` — исходная задача, цели и контекст.
- `spec.md` — спецификация реализации.
- `scripts/` — рабочие скрипты проекта.
- результаты выгрузок — в `data/` корня воркспейса.

## Состав

{{По мере появления перечисли дополнительные каталоги и их назначение}}

## Запуск

{{Требования и проверенные команды запуска}}

## Проверка

{{Как убедиться, что результат корректен}}

## Секреты

Доступы хранятся в `.vault/inventory.yaml`. Здесь используются только
ссылки вида `vault: services.<имя>`.
```

Запиши в `templates/project-brief.md`:

```markdown
# {{Название проекта}}

## Задача

{{Что нужно сделать и зачем}}

## Цели

- [ ] {{Измеримая цель 1}}
- [ ] {{Измеримая цель 2}}

## Контекст

- **Дедлайн:** {{дата или «не задан»}}
- **Стейкхолдеры:** {{кто заинтересован}}
- **Ограничения:** {{что важно учесть}}
- **Зависимости:** {{системы, люди и решения}}

## Результат

{{Как выглядит проверяемый успех}}

## Не входит в задачу

- {{Явная граница проекта}}
```

Запиши в `templates/project-spec.md`:

```markdown
# Спецификация: {{Название проекта}}

## Обзор

{{Что именно реализуется}}

## Требования

- {{Требование 1}}
- {{Требование 2}}

## Входные данные

{{Источники, форматы и ограничения}}

## Реализация

{{Архитектура, алгоритмы, структуры и ключевые решения}}

## Выходные данные

{{Формат результата и место сохранения}}

## Ошибки и граничные случаи

- {{Сценарий и ожидаемое поведение}}

## Проверка

- [ ] {{Проверка результата}}
- [ ] {{Проверка отсутствия побочных эффектов}}

## Откат

{{Как безопасно отменить изменение, если это применимо}}
```

## 11. Проверь структуру и безопасность

Перед коммитом:

1. Выведи дерево созданных файлов.
2. Проверь, что существует файл журнала текущего месяца.
3. Проверь, что `.vault/inventory.yaml` существует.
4. Создай временный файл `data/ignore-probe`, проверь через `git check-ignore -v`, что `.vault/inventory.yaml` и этот файл игнорируются, затем удали пробный файл.
5. Убедись, что `.vault/inventory.yaml` отсутствует среди staged-файлов.
6. Проверь, что все Markdown-файлы непустые.
7. Просмотри `git diff --cached --name-only` и `git diff --cached`. Ищи пароли, токены, приватные ключи, реальные закрытые адреса и файлы окружения. Если в системе установлен gitleaks, дополнительно запусти проверку staged-изменений с редактированием найденных значений. Не выводи возможные секреты в итоговый ответ.
8. Не добавляй в репозиторий локальные системные файлы.
9. Убедись, что созданные файлы совпадают с блоками инструкции и не были сокращены или перефразированы.

Если обнаружишь проблему, исправь её до коммита.

## 12. Инициализируй git и сделай первый коммит

Выполни:

```bash
git init
git add .
git status --short
git diff --cached --check
git config --get user.name
git config --get user.email >/dev/null
git commit -m "Initialize AI workspace"
```

Если коммит невозможен только из-за отсутствующих `user.name` или `user.email`, не придумывай идентичность человека и не меняй глобальную конфигурацию. Попроси пользователя указать значения, настрой их локально для этого репозитория и затем заверши первый коммит.

Если имя и email уже настроены, перед коммитом покажи имя автора и подтверди, что email задан, не выводя сам адрес. Не меняй существующую идентичность без просьбы.

После коммита ещё раз проверь:

```bash
git status --short
git ls-files
```

Рабочее дерево должно быть чистым. `.vault/inventory.yaml` и локальное содержимое `data/` не должны присутствовать в `git ls-files`. Файлы `.vault/.gitkeep` и `data/.gitkeep`, наоборот, должны присутствовать: благодаря им оба каталога восстановятся после `git clone`.

## 13. Покажи памятку человеку

После успешного разворачивания выведи краткий итог: какие каталоги созданы, какой файл журнала открыт для текущего месяца и какой hash получил первый коммит.

Затем покажи эту памятку:

### Первая неделя с воркспейсом

1. Решайте через него каждую рабочую задачу, даже если она кажется разовой.
2. В конце задачи проверяйте, что агент выполнил `ops-log`. Если забыл — прямо потребуйте пройти протокол закрытия.
3. Если карточка или плейбук соврали, исправляйте документ сразу, в той же задаче.
4. Локальные параметры подключения записывайте в `.vault/inventory.yaml`, а пароли, ключи и токены — в менеджер секретов. В остальных файлах оставляйте только `vault:`-ссылки.
5. Не создавайте плейбук ради количества. Создавайте его, когда сценарий действительно можно повторить.
6. В конце недели просмотрите журнал: из повторяющихся задач выберите первый сценарий для автоматизации или нового плейбука.