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. Где искать, по порядку:
shfor 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; иначе спросить одной строкой, где держать репозитории. Путь только латиницей.
shROOT=~/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. Человек назвал отдел по-русски — предложить имя одной строкой и взять его ответ. Если домен уже есть у другого отдела штаба (карта отделов в правилах штаба) — спросить, новый ли это отдел, до любых правок.
shSLUG=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. Каркас отдела
shC="<папка этого скилла>/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 — одна строка, как выше.
shT="<папка этого скилла>/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 переименовываются.
shT="<папка этого скилла>/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, раздел «С чего начать». Данные в опись не вписываются руками из шаблона: их снимает скрипт.
shgit -C "$D" add -A && git -C "$D" commit -m "chore: init $SLUG"
5. Репозиторий на GitHub: только по желанию
Шаг делается, только если человек сам попросил держать отдел на GitHub. Иначе пропустить. Нужен gh с входом в аккаунт (gh auth status); репозиторий только приватный, в отделах рабочие данные человека.
shgh 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 |
Порядок:
- Имя скилла латиницей через дефис. Совпадает со скиллом из личной папки человека (
~/.claude/skills,~/.agents/skills) — предупредить: вызов по имени может открыть не тот скилл. SKILL.md: в шапкеnameиdescription(что делает и на какие фразы срабатывает), ниже шаги словами. Правила отдела в скилл не копировать: скилл ссылается на файл правил отдела.- Коммит в репо отдела.
- Проверка: агент, открытый в папке отдела, видит скилл и вызывает его по таблице выше. Codex читает список скиллов при старте — после добавления его перезапустить.


