corp-new · git:20261020.cc02dea · 2026-10-20 · sha256 f43aa2a577c8ecbb

corp-new git:20261020.cc02deaA

Immutable. This exact content never changes and is served at /api/v1/blob/f43aa2a577c8ecbb.

---
name: corp-new
description: >-
  Создаёт новый отдел штаба: папку `corp-<слово>` рядом со штабом, файл правил, папку скиллов, папку задач `tasks/` и связь со штабом в правилах в обе стороны. Если штаба ещё нет, сначала ставит его из agent-starter. Применять по /corp-new, «создай отдел», «новый отдел», «заведи отдел <домен>».
disable-model-invocation: true
---

# corp-new: новый отдел штаба

Штаб это главная папка работы с агентом: файл правил, `me.md`, карта отделов. Отдел это соседняя папка штаба со своим файлом правил, словарём, скиллами и задачами, например `corp-sales` или `corp-learn`. Отдел знает свой штаб, штаб знает свои отделы: связь записана в правилах с обеих сторон.

Скилл идёт по шагам и отвечает таблицей ✓/✗. Правила отдела за человека он не пишет: ставит каркас с пустыми местами, их человек заполняет сам или вместе с агентом через /mp-grill-me. Исключение — готовые отделы из `templates/` (шаг 3): их правила уже заполнены. Чужие файлы не трогает, незакоммиченную работу не выбрасывает. GitHub не нужен: отдел живёт в локальной папке.

Команды даны для macOS и Linux (zsh, bash). На Windows агент делает то же средствами PowerShell.

## 1. Найти штаб

Штаб узнаётся так же, как в скилле `hq` (шаг 1): папка с `me.md` или `stack/harness.md`. Где искать, по порядку:

```sh
for d in . ./hq .. ../hq ~/Documents/GitHub/hq ~/hq; do
  { [ -e "$d/me.md" ] || [ -e "$d/stack/harness.md" ]; } && (cd "$d" && pwd -P)
done | sort -u
```

- Нашёлся один — это штаб; дальше его путь `HQ`, папка репозиториев `ROOT` — его родитель.
- Нашлось несколько — спросить одной строкой, какой.
- Открыт отдел, и в его файле правил есть ссылка на штаб (`../<папка>`) — штаб берётся по ней.
- Не нашлось — шаг 2.

## 2. Штаба нет: поставить из agent-starter

Папка штаба по умолчанию — `~/Documents/GitHub/hq`, если есть `~/Documents/GitHub`; иначе спросить одной строкой, где держать репозитории. Путь только латиницей.

```sh
ROOT=~/Documents/GitHub; HQ="$ROOT/hq"
git clone https://github.com/serejaris/agent-starter.git "$HQ"
git -C "$HQ" remote rename origin upstream   # обновления стартера — git pull upstream main
mkdir -p "$HQ/stack"
```

Дальше в папке штаба пройти скилл `hq` этого штаба (`$HQ/.agents/skills/hq`): он определит харнес, поставит главный файл правил и `me.md`. Пустые правила штаба заполняются по образцу из шага 5 скилла `hq`, словами человека.

Проверка: в `$HQ` есть `AGENTS.md` и `CLAUDE.md` (один из них симлинк на другой), `.agents/skills/hq`, `stack/harness.md`.

## 3. Имя отдела

Имя папки — `corp-<домен>` латиницей в нижнем регистре: `corp-sales`, `corp-learn`. Человек назвал отдел по-русски — предложить имя одной строкой и взять его ответ. Если домен уже есть у другого отдела штаба (карта отделов в правилах штаба) — спросить, новый ли это отдел, до любых правок.

```sh
SLUG=corp-<домен>; D="$ROOT/$SLUG"
test -d "$D" && echo "папка есть"
grep -n "$SLUG" "$HQ/AGENTS.md" "$HQ/CLAUDE.md" 2>/dev/null
```

- Папка есть — каркас не ставить: только связь (шаг 6) и проверка (шаг 7). Нет папки `tasks/`: создать её, как в шаге 4. Нет `.gitignore` или `CONTEXT.md`: поставить их из `templates/common/`, как в шаге 4. `.gitignore` уже есть: дописать в конец строки шаблона, которых в нём нет, строки человека не трогать. В `AGENTS.md` нет раздела «Словарь»: дописать его из каркаса шага 4.

**Готовые отделы.** В папке скилла лежат шаблоны заполненных отделов: `templates/<slug>/`. Домен отдела совпал с шаблоном — предложить его одной строкой: «Есть готовый отдел <имя>: правила, словарь и скиллы. Ставим его или пустой каркас?» Сейчас есть два шаблона:

| Шаблон | Домен | Что внутри |
|---|---|---|
| `templates/corp-research/` | исследования, ресёрч, разведка | `AGENTS.md` — восемь правил отдела исследований; `INDEX.md` — каталог отчётов с шапкой таблицы; `tags.md` — пустой словарь тегов; скилл отдела `corp-research` |
| `templates/corp-it/` | ИТ, машины, серверы, сеть, доступы, ключи, ноутбуки, принтеры | `AGENTS.md` — десять правил ИТ-отдела; `CONTEXT.md` — словарь (устройство, доступ, разрешение, роль устройства); `agents/engineer.md` — агент-инженер; `devices/README.md` — правила описи; скиллы `device-inventory` (шаблон описи и два скрипта снимка, macOS и Linux, только чтение) и `machine-access` (доступ к машине записывается в скилл один раз, без секретов) |

Человек выбрал шаблон — имя папки берётся из шаблона, шаг 4 идёт по ветке «из шаблона».

## 4. Каркас отдела

```sh
C="<папка этого скилла>/templates/common"
mkdir -p "$D/.agents/skills" "$D/.claude" "$D/tasks"
touch "$D/tasks/.gitkeep"
ln -s AGENTS.md "$D/CLAUDE.md"
ln -s ../.agents/skills "$D/.claude/skills"
cp "$C/gitignore" "$D/.gitignore"
sed "s|<slug>|$SLUG|g" "$C/CONTEXT.md" > "$D/CONTEXT.md"
git -C "$D" init -b main
```

`.gitignore` ставится до первого коммита. Он не пускает в git секреты (`.env`, ключи), тяжёлые файлы (видео, аудио, записи Zoom, архивы) и временное. Без него агент пытается закоммитить запись на сотни мегабайт, коммит падает, агент повторяет, и временные файлы забивают диск. В шаблоне он лежит как `gitignore` без точки, чтобы не действовать на папку самого скилла.

`CONTEXT.md` — словарь отдела: слова, которыми человек и агенты называют вещи этого домена. Каркас с одним пустым местом под термин. Если человек, заказывая отдел, уже объяснил свои слова (что у него «пост», «выпуск», «лид»), агент сразу записывает их туда по образцу каркаса. Своих слов агент не придумывает.

Это для macOS и Linux. На Windows симлинк без режима разработчика не создаётся, поэтому две ссылки ставятся иначе:

| Ссылка | macOS, Linux | Windows |
|---|---|---|
| файл правил для Claude Code | `ln -s AGENTS.md CLAUDE.md` | `CLAUDE.md` из одной строки `@AGENTS.md` (импорт Claude Code) |
| папка скиллов для Claude Code | `ln -s ../.agents/skills .claude/skills` | `cmd /c mklink /J .claude\skills .agents\skills` (junction, без прав администратора) |

`$D/AGENTS.md` — ровно этот каркас, `<HQ>` — имя папки штаба:

~~~markdown
# <slug>

Это отдел штаба `../<HQ>`: там общие правила, карта отделов и `me.md`.

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

<одна-две строки: что хранит и делает этот отдел>

## Канон

- <путь/файл> — <что здесь живёт>.

## Словарь

Слова отдела и что они значат лежат в `CONTEXT.md`. Читай его перед работой. Договорились о новом слове или человек поправил слово: сразу допиши определение туда.

## Задачи

Задачи отдела лежат в `tasks/`.

## Границы

- Секреты, токены, пароли и платёжные данные не хранить.
- Видео, аудио, архивы и секреты в git не идут, их отсекает `.gitignore`. Файл больше 50 МБ другого типа: допиши его в `.gitignore` и скажи человеку, коммит с ним не повторяй.
- Не копировать содержимое отдела в другие папки; ставить ссылку на файл-владелец.
- Карту отделов не дублировать: она живёт в штабе.

## Проверка

```bash
git diff --check
```
~~~

`$D/README.md` — одна строка: `<slug> — <домен одной строкой>. Правила для агентов — в AGENTS.md.`

`.agents/skills/` остаётся пустой, пока у отдела не появятся свои скиллы. `tasks/` пустая, в ней только `.gitkeep`.

**Из шаблона `corp-research`.** Папки, симлинки, `.gitignore` и `CONTEXT.md` те же, что выше. `AGENTS.md`, `INDEX.md` и `tags.md` скопировать из шаблона, `<HQ>` заменить на имя папки штаба. `README.md` — одна строка, как выше.

```sh
T="<папка этого скилла>/templates/corp-research"
cp "$T/INDEX.md" "$T/tags.md" "$D/"
sed "s|<HQ>|$(basename "$HQ")|g" "$T/AGENTS.md" > "$D/AGENTS.md"
mkdir -p "$D/.agents/skills/corp-research"
cp "$T/skills/corp-research/SKILL.md.tmpl" "$D/.agents/skills/corp-research/SKILL.md"
```

Скилл в шаблоне лежит как `SKILL.md.tmpl`, чтобы установщик плагина не принял его за скилл самого плагина. В отделе он становится `SKILL.md`.

**Из шаблона `corp-it`.** Свой `CONTEXT.md` шаблона заменяет общий (`<slug>` подставляется), `AGENTS.md` ставится с подстановкой `<HQ>`, папки `agents/` и `devices/` копируются целиком, скиллы переносятся вместе со скриптами, а `SKILL.md.tmpl` переименовываются.

```sh
T="<папка этого скилла>/templates/corp-it"
sed "s|<HQ>|$(basename "$HQ")|g" "$T/AGENTS.md" > "$D/AGENTS.md"
sed "s|<slug>|$SLUG|g" "$T/CONTEXT.md" > "$D/CONTEXT.md"
cp -R "$T/agents" "$T/devices" "$D/"
cp -R "$T/skills/." "$D/.agents/skills/"
find "$D/.agents/skills" -name 'SKILL.md.tmpl' | while read -r f; do mv "$f" "${f%.tmpl}"; done
chmod +x "$D"/.agents/skills/device-inventory/scripts/*.sh
```

После установки сказать человеку: отдел начинается с одной машины, его ноутбука. Первый шаг — попросить агента-инженера снять опись этого ноутбука скиллом `device-inventory`; готовый промпт лежит в `devices/README.md`, раздел «С чего начать». Данные в опись не вписываются руками из шаблона: их снимает скрипт.

```sh
git -C "$D" add -A && git -C "$D" commit -m "chore: init $SLUG"
```

## 5. Репозиторий на GitHub: только по желанию

Шаг делается, только если человек сам попросил держать отдел на GitHub. Иначе пропустить. Нужен `gh` с входом в аккаунт (`gh auth status`); репозиторий только приватный, в отделах рабочие данные человека.

```sh
gh repo create "$SLUG" --private --source "$D" --remote origin --push
```

## 6. Связь со штабом в правилах

- **Штаб → отдел.** В карту отделов файла правил штаба (или в `projects.md`, если карта вынесена туда) дописать отдел в том формате, который там уже есть: таблица — строкой таблицы, список — пунктом. Путь всегда `../<slug>`, в строке сказано, где лежат задачи отдела: `- <Имя отдела>: ../<slug>. Задачи отдела лежат в ../<slug>/tasks/.` Если правила штаба сами говорят, какие отделы вписывать в карту, — следовать им.
- **Отдел → штаб.** Первая строка после заголовка `AGENTS.md` отдела: «Это отдел штаба `../<HQ>` …» (каркас из шага 4). У существующего отдела без неё — дописать её. Нет раздела «Задачи»: дописать строку «Задачи отдела лежат в `tasks/`».

Коммит в штабе — только этой правки; push — если так велят правила человека.

## 7. Проверка и отчёт

```sh
[ "$(readlink "$D/CLAUDE.md")" = AGENTS.md ] && echo "✓ CLAUDE.md -> AGENTS.md"
[ "$(readlink "$D/.claude/skills")" = ../.agents/skills ] && echo "✓ .claude/skills -> ../.agents/skills"
[ -d "$D/tasks" ] && echo "✓ tasks/"
git -C "$D" check-ignore -q zoom.mp4 && git -C "$D" check-ignore -q .env && echo "✓ .gitignore не пускает видео и секреты"
[ -f "$D/CONTEXT.md" ] && grep -q "CONTEXT.md" "$D/AGENTS.md" && echo "✓ словарь CONTEXT.md, правила на него ссылаются"
grep -q "\.\./$(basename "$HQ")" "$D/AGENTS.md" && echo "✓ отдел ссылается на штаб"
grep -q "Задачи отдела лежат в" "$D/AGENTS.md" && echo "✓ в правилах отдела сказано, где задачи"
cat "$HQ/AGENTS.md" "$HQ/CLAUDE.md" "$HQ/projects.md" 2>/dev/null | grep -q "\.\./$SLUG\|\`$SLUG\`" && echo "✓ штаб ссылается на отдел"
```

Связь в обе стороны проверяет и скилл `hq` (шаг 5): после создания отдела «проверь штаб» даёт по нему ✓.

Отчёт человеку — таблица ✓/✗ по шагам, строка, добавленная в карту отделов штаба, и что заполнить дальше: назначение и канон отдела и первые слова словаря. У отдела из шаблона правила уже заполнены: в отчёте путь к ним, чтобы человек их прочитал, а заполнить остаётся словарь. У `corp-it` словарь тоже готов: его дополняют словами человека по ходу работы. Заполнить их человек может сам или вместе с агентом через /mp-grill-me.

## 8. Скилл отдела: как добавить

Человек просит добавить скилл в отдел — агент ставит его по своему харнесу и системе. Харнес берётся из `$HQ/stack/harness.md`, система — из `uname` (на Windows — `$env:OS`).

Скилл всегда лежит в `$D/.agents/skills/<имя>/SKILL.md`: эту папку читает Codex, а Claude Code видит её через ссылку `.claude/skills` из шага 4. Нет ссылки — поставить её по таблице шага 4.

| Харнес | Главный файл правил | Где видит скиллы отдела | Как вызвать |
|---|---|---|---|
| Claude Code | `CLAUDE.md` | `.claude/skills/` → `.agents/skills/` | `/<имя>` |
| Codex | `AGENTS.md` | `.agents/skills/` | `$<имя>` или через `/skills` |

Порядок:

1. Имя скилла латиницей через дефис. Совпадает со скиллом из личной папки человека (`~/.claude/skills`, `~/.agents/skills`) — предупредить: вызов по имени может открыть не тот скилл.
2. `SKILL.md`: в шапке `name` и `description` (что делает и на какие фразы срабатывает), ниже шаги словами. Правила отдела в скилл не копировать: скилл ссылается на файл правил отдела.
3. Коммит в репо отдела.
4. Проверка: агент, открытый в папке отдела, видит скилл и вызывает его по таблице выше. Codex читает список скиллов при старте — после добавления его перезапустить.