Manager — двусторонний мост между сессией и GitHub issues
Железные инварианты — читать первым, повторять перед каждым синком
1-3 обязательны для любого issue, который трогает manager. 4-5 добавляются для активного issue текущей недели. 6-9 действуют в режиме записи и при закрытии.
- W-label — текущая неделя, будущая неделя или дата конкретной менторской сессии. Нет в репо — создать.
- Родительский эпик — ровно один parent через GitHub Sub-issues API. Всё, что не эпик само, имеет parent. Подробно: reference/parent-epic-rules.md.
- Трек различается по title + членству в эпике — track-labels (
x26-bloom,ai-native-s2и т.п.) больше не заводим. - Project placement — активный issue текущей недели стоит на канонической GitHub Project-доске своего слоя и в глобальном недельном Project
ris © corp/ Project#4. W-label без Project placement =Расхождение Project. - Родитель виден в Project — для активного child одного
parent_issue_urlмало. Видимый parent/root эпик тоже должен быть в нужном Project view с непустой status lane. - Комментарий-запись о работе (режим записи, только при РЕАЛЬНОЙ работе по issue) — GitHub-комментарий в таймлайне: что сделано + ссылки на коммиты. Смена status/label/Project placement его не заменяет. Чисто механический re-label или Project-fix — без комментария.
- Дробность задач: никакого чат-журнала — если по треку появилось больше одного самостоятельного следующего шага или founder говорит, что за ходом тяжело следить, не превращать один issue в длинный журнал. Parent/track issue держит короткий канон:
Status,Next issues,Decisions. Исполняемые шаги выносить в отдельные child/sibling issues под тем же эпиком — с W-label, Project placement и понятным критерием готовности. - Чек-лист закрытия — закрывать issue можно, только когда: (а) нерешённые развилки и секция «Открыто» из тела перенесены в отдельный открытый issue; (б) каждый follow-up с датой вписан в
tasks/WNN/<дата>.mdсвоей даты; (в) параллельные открытые issues того же контура закрыты комментом-указателем «продолжение в #N» либо оставлены открытыми с причиной. - Переход «нетронута → In progress» и запись предложений/драфтов в issue — при создании задача находится в статусе
Backlog/ Untouched (не тронута). Как только по задаче появилось первое предложение, черновик текста, драфт поста, спецификация или решение:- Статус задачи (в Project и body) ОБЯЗАТЕЛЬНО переводится в
In progress. - Само подготовленное предложение/драфт/спецификация записывается прямо в тело задачи (в
## Proposed draft / solutionили## Updates), чтобы наработки и варианты не терялись в чате сессии.
- Статус задачи (в Project и body) ОБЯЗАТЕЛЬНО переводится в
Если родительского эпика нет ни в одном репо — вынести в предложение founder'у: создать новый или выбрать существующий, до синка.
ВАЖНО: не использовать generic-скиллы github-issues / gh-issues. Manager сам является каноническим workflow.
Выбор режима
Режим записи: founder сказал «синкни сессию», «зафиксируй», «обнови issues», ИЛИ вызвал /manager без аргументов в конце сессии.
Режим чтения: founder спросил о состоянии — «что по», «статус», «есть ли», «какие issues по».
Режим среды (денежный gate): «/manager midweek», «mid-week gate», «среда-чек», ИЛИ автозапуск по расписанию в среду утром. Агент инициирует сам, founder не просит. По умолчанию ничего не пишет в GitHub, но цель не статус-справка, а раннее предупреждение по денежным обещаниям недели — пока неделя ещё не сгорела.
Голый /manager: вывести артефакты из текущего разговора. Не просить founder'а перечислять всё заново. Составить короткий план исполнения (5-15 строк) и сразу выполнить — постоянное разрешение действует.
Manager НЕ используется для: идей без артефактов (это брейншторм); закрытия issue без явной команды founder'а; пакетных обновлений CRM — это CRM-процессы в репо crm, не manager.
Подробный алгоритм обоих режимов: reference/modes-read-write.md.
Постоянное разрешение на запись
Founder подтвердил: GitHub-записи manager'а разрешены по умолчанию. После тихой преднастройки и короткого плана исполнять точечные GitHub-записи не спрашивая отдельное «подтверди».
Покрыто: правки body, комментарии-записи о работе (инвариант 6), создание W-label, привязка parent/sub-issue, Project placement, статус In progress на затронутых активных issues, assignee @me (founder) по умолчанию, правки дневного плана в tasks/WNN/YYYY-MM-DD.md, создание issue, когда эпик, репо и рамка очевидны.
Спрашивать только когда: нет подходящего эпика; неясно, чей это репо или трек; риск приватности в публичном репо; разрушительные или массовые изменения; закрытие issue, чья рамка явно не выполнена.
Преднастройка (ЖЁСТКОЕ ПРЕДУСЛОВИЕ)
Выполнить до ЛЮБОЙ команды gh search, gh issue и прочих GH-вызовов. Бюджет вывода в чат: 0 строк. Полный алгоритм: reference/search-algorithm.md → «Pre-flight».
- Прочитать
~/Documents/obsidian/0_hq/tasks.mdПЕРВЫМ — это курируемый индекс: Project ID, активные треки, указатели на репо. Без него поиск бьёт наугад. - Снять снимок Project #4:
gh project item-list 4 --owner serejaris --format json --limit 1000 > /tmp/manager-proj4.json(один раз за прогон;--limit 1000обязателен). - Страж дрифта HQ — если активная задача в
tasks.mdбезrepo#N, вывестиРасхождение HQ tasks. - Тихо проверить git status; показать только незакоммиченные артефакты, названные в сессии.
- Вычислить ISO-неделю, если
tasks.mdустарел.
Красный флаг: собираешься запустить gh search issues, не прочитав tasks.md — СТОП.
Где правда
| Нужно | Источник |
|---|---|
| Текущая неделя, активные треки | ~/Documents/obsidian/0_hq/tasks.md (читать ПЕРВЫМ) |
| Сегодняшний план | tasks/WNN/YYYY-MM-DD.md + tasks/WNN/README.md |
| Отдельные задачи | GitHub issues в serejaris/* |
| Люди, компании, деньги | ~/Documents/GitHub/crm/ — ставить указатель [[crm-slug]], не переносить детали |
Project ID (реестр констант)
| Project | number | project-id |
|---|---|---|
| ris © corp | 4 | PVT_kwHOCisBXs4BCN8O |
| Менторство 1-на-1 | 14 | PVT_kwHOCisBXs4BQrb1 |
| Кружок Вайбкодинга | 28 | PVT_kwHOCisBXs4BR41f |
| Colder — корпоративное обучение | 31 | PVT_kwHOCisBXs4BT5Hs |
| Спортмастер — корпоративное обучение | 38 | PVT_kwHOCisBXs4Bec7S |
| Personal Corp | 34 | PVT_kwHOCisBXs4BVZDi |
| Школа Вайбкодинга | 5 | PVT_kwHOCisBXs4BDKxF |
| Personal Corp Course Launch | 10 | PVT_kwHOCisBXs4BP8bu |
Status option IDs (ris © corp #4): Backlog = f75ad846, Ready = 08afe404, In progress = 47fc9ee4, In review = 4cc61d42, Done = 98236657. Status field id: PVTSSF_lAHOCisBXs4BCN8Ozg0fml0. Time field id: PVTF_lAHOCisBXs4BCN8OzhVKHhI.
Доска #31 — только Colvir. Спортмастер на неё не кладём (решение founder'а, 2026-07-25); он живёт на доске #38 с полем «Трек»: field id PVTSSF_lAHOCisBXs4Bec7SzhY3CWI, опции Product G1 = a0a5e557, Strategy = 2ed89da4, Договор и закупка = 099b1185. Status field id PVTSSF_lAHOCisBXs4Bec7SzhY3CSM (Todo f75ad846, In Progress 47fc9ee4, Done 98236657). Треков пока два — Product G1 и Strategy; process analysts треком не считается, пока не подтверждён.
Опции single-select не удалять через updateProjectV2Field — мутация пересоздаёт опции с новыми id и обнуляет значения на всех items. Если удаление всё же нужно: снять снимок значений до, удалить, переназначить по новым id.
Смысл лейнов (конвейер): Backlog — спеки ещё нет; Ready — спека в теле готова к исполнению; In progress — у исполнителя; In review — на приёмке; Done — приёмка пройдена. Агент, продолжающий работу после рестарта или компакции, восстанавливает состояние конвейера с доски Project #4 и из тел issues, а не из истории чата.
Полные field ID других досок и команды — reference/search-algorithm.md → «Project evidence commands».
Дисциплина Project API
Для доказательств по Project и смены статусов путь по умолчанию — issue-scoped GraphQL.
gh project item-list— только там, где этот скилл прямо его называет (снимок Project #4 в преднастройке).- Любое другое чтение Project — сначала батч-GraphQL по нужным issues, поле
projectItems. - Перед любым
gh project item-editподтвердить живым issue-scoped GraphQL: issue существует, Project item существует, текущая lane, целевой Project и lane. - Если rate limit не даёт получить это доказательство — остановить Project-синк и сообщить
Project lane pending: rate limit.
Красный флаг: собираешься запустить gh project item-list <domain-project> до батч-чтения состояния issues — СТОП. Сначала GraphQL projectItems.
Маршрутизация по доменам
| Домен трека | Где живёт эпик |
|---|---|
| Поток школы (Кружок) | serejaris/teach-vibecoding (канон маршрутизации: скилл multi-repo-initiatives) |
| Образовательная программа / партнёрство | teach-vibecoding / teach-personal-corp |
| Менторство / сессия | teaching-репо, issues сессий S<N> |
| B2B сделка | serejaris/crm |
| Продуктовый запуск | репо самого продукта |
| Research | serejaris/research-corp |
Полный алгоритм выбора эпика по доменам: reference/parent-epic-rules.md → «Resolve epic».
Слои менторства: отношения и деньги → CRM/ledger; обзор трека → issue в teaching-репо; сессия S<N> → отдельный issue; delivery → child issue под S<N>.
Для Кружка (поток, урок, запуск, воронка, bot/funnel, публикации для учеников) сначала загрузить templates/kruzhok-product-task-hierarchy.md, потом синкать. Детальная иерархия → reference/kruzhok-hierarchy.md.
Формула заголовка issue
{object} — {action}
{object}узнаваемый (Sportmaster, Кружок #11 L3, Валентин S2)- em-dash
—как разделитель - без дат, времени, дедлайнов и W-label — это живёт в labels, полях Project и body
- без эмодзи и служебных префиксов (
product:,epic:,ops:) - заголовок на русском; английский только для имён собственных и токенов
Полный свод с примерами и анти-паттернами: reference/issue-authoring.md → «Issue title convention».
Режим записи — шпаргалка
- Тихая преднастройка → прочитать
tasks.md - Кросс-репо поиск (батч-GraphQL при 3+ ключах) → найти и проверить родительский эпик
- Короткий план исполнения (5-15 строк) → сразу исполнить (постоянное разрешение)
- Обновить body, а не комментарий по умолчанию — Status / Next /
## Updates+ SHA - W-label + parent (Sub-issues API) + Project placement
In progress+ assignee@meпо умолчанию (founder; существующего исполнителя не перетирать — см. reference/issue-authoring.md → «Assignee») - Комментарий-запись о работе, если работа была реальной
- Если в body или таймлайне уже 3+ разнородных обновления — сначала разделить: вынести открытые следующие шаги в отдельные issues под тем же эпиком, а в исходном оставить краткий статус и ссылки
- Синк дневного плана HQ:
tasks/WNN/YYYY-MM-DD.md - Учёт времени в
time/log.csv+ поле «Часы», если founder назвал время
Детали: reference/modes-read-write.md и reference/project-sync.md.
Режим чтения — шпаргалка
- Преднастройка →
tasks.md - Кросс-репо поиск (несколько ключей, батч-GraphQL)
- Отсеять ложные совпадения — показать их как IGNORED, а не прятать
- Батч-GraphQL по настоящим совпадениям → state + labels + parent + projectItems
- Сжатая таблица: repo#N «заголовок» | parent | W-label | Project | последняя активность | статус
- Режим чтения ничего не пишет в GitHub
Режим среды (денежный gate) — шпаргалка
Лёгкая проверка в среду между планированием (пн) и ретро (вс): ловит провал недели — воркшоп переносится, денежное обещание стоит — ДО воскресенья, когда неделя уже потрачена. Агент инициирует сам; founder отвечает максимум на один точечный вопрос. Времени founder'а ≈ 0.
Что считать деньгами (денежное обещание — бинарно, поле coprep_active) и откуда брать обещания недели (retros/W{NN}-outcomes.md, строки O*) — то же, что в retro / weekly-planning; здесь не дублируем. См. ~/Documents/GitHub/hq/.agents/skills/retro/SKILL.md (Iron Rule #16 + time-series поля cash_*) и weekly-planning Phase 5.
- Прочитать денежные обещания недели (только чтение, батчем):
- открытые issues с денежным контуром = label текущей недели
W{NN}+ домены PC-продажи / Кружок / Спортмастер / менторство / ad-slot; ~/Documents/obsidian/0_hq/retros/W{NN}-outcomes.md→ строки O*, помеченные как денежные.
- открытые issues с денежным контуром = label текущей недели
- Снять движение с понедельника (доказательствами, не самоотчётом): новые сделки и оплаты за окно недели по
corp-sales/CLAUDE.md§ Live cash truth при чистом reconcile; статус каждого денежного issue — комменты, коммиты (refs/closes), закрытие после понедельника; активность co-prep — соответствующий issue вcorp-team(то же полеcoprep_active, что в ретро). - Если не движется (нет сделок + тишина в issue + co-prep молчит) — задать founder'у ОДИН самодостаточный вопрос с конкретикой: сущность целиком, одна развилка. Пример:
«O1 не двинулся за 3 дня, воркшоп-преп стоит, corp-team#5 (co-prep) — 0 активности. Co-prep назначен или контур горит?»
- Если движется — короткое
cash on track: <доказательство>(сделка / коммит / активность co-prep), без шума.
По умолчанию gate ничего не пишет в GitHub. Если по ответу founder'а нужен синк (re-label, статус, новый issue) — перейти в режим записи под постоянным разрешением.
Расписание: gate стоит повесить на автозапуск в среду утром через скилл schedule или cron. Не создавать cron из этого скилла — это решение founder'а. Пример команды для его подтверждения (не исполнять):
# среда 09:00 — авто mid-week cash gate
schedule: "0 9 * * 3" → /manager midweek
Главные анти-паттерны
- Issue без родительского эпика — железный инвариант. Вынести в предложение, не создавать сироту.
- Создание track-labels (
x26-bloom,<slug>) — запрещено. Только title + членство в эпике. - Markdown
Parent: #Nв body, когда есть связь через API — дубликат, протухает. - Закрытие issue без явной команды founder'а — по умолчанию оставлять открытым с комментарием.
- Схлопывание менторских сессий — обзор трека,
S1,S2, delivery живут отдельными issues. Никогда не сворачивать в один. - Деньги в менторских задачах — деньги только в CRM/ledger, не в теле GitHub-issue.
- Массовая правка
tasks.md— manager читает недельный индекс, но не пишет в него;tasks/WNN/YYYY-MM-DD.md— writable. - Вопрос «подтверди» перед обычной записью — действует постоянное разрешение. Только жёсткие блокеры.
- Голые номера — всегда
repo#N «title», никогда простоcrm#27. - Синк или закрытие после реальной работы без комментария-записи — инвариант 6.
- Большой чат-журнал внутри одного issue — запрещено. Появились независимые действия, документы, ожидания ответа, созвоны → разделить на child/sibling issues, parent держит summary.
- Закрытие с непереданными развилками и follow-up — сначала перенос («Открыто» → новый issue, даты → дневные файлы, хвосты → указатели), потом close.
Полный список ошибок: reference/issue-authoring.md и таблица ниже.
Частые ошибки
| Ошибка | Как правильно |
|---|---|
| Пропустить tasks.md перед gh search | СТОП. Сначала tasks.md — там ссылки на Project и слаги треков |
| Закрыть delivery по менторству/LMS после локального смоука | Готовность для ученика = загруженное видео + video_id + смоук на проде + отправленная ссылка |
| Принять смежный issue за нужный | Смежный = контекст; синкать только в issue с тем же артефактом/сессией/уроком/lane |
| Превратить Related в ручной список задач | Блок Related = только контекст: без статусов, чек-листов, W-label и полей Project |
| Забыть указатель [[crm-slug]] в issue про коммуникацию | В теле каждого такого issue должна быть ссылка [[<slug>]] |
| Считать, что W-label достаточно | Нужны W-label + parent + Project placement с непустой lane |
| Считать, что связи parent через API достаточно | Проверяй видимый root в Project и его status lane |
| N×gh issue view поодиночке | Батч-GraphQL; одиночный вызов — только точечный fallback |
| Коммит без refs <owner>/<repo>#N | Каждый коммит несёт refs-трейлер |
| PRD в локальном md, а в issue только ссылка | Полный PRD живёт в теле issue; локальная копия — осознанный дубль, ссылка — GitHub-URL |
| Пропустить создание W-label, которого нет в репо | Создай label, не пропускай |
| Урок/сессия остались в prep-состоянии после даты события | Дата прошла + «готовлюсь» = Расхождение lifecycle; нужен итог после события |
| Попросить founder'а открыть URL или файл руками | Никогда. Приноси содержимое сам через инструменты |
| Локальный путь как результат в отчёте | Коммит + push + GitHub-URL ДО отчёта |
Навигация по reference
| Тема | Файл | |---|---| | Алгоритм режимов записи/чтения, шаблоны и язык вывода | reference/modes-read-write.md | | Преднастройка, Project ID подробно, батч-GraphQL, ключи поиска, ложные совпадения | reference/search-algorithm.md | | Родительский эпик, алгоритм выбора, агрегирующий parent, видимый root, смежные issues | reference/parent-epic-rules.md | | Синк дневного плана HQ, учёт времени, коммиты, PRD в issue, lifecycle, правила W-label | reference/project-sync.md | | Заголовки issue, критерий готовности, обновить или создать, менторство, комментарий vs body | reference/issue-authoring.md | | Иерархия Кружка, паттерн заголовков, правила обновления, чек-лист перед синком | reference/kruzhok-hierarchy.md | | Шаблоны тела (новый issue, менторская сессия, комментарий) | templates/issue-body-templates.md | | Полный шаблон иерархии задач по Кружку | templates/kruzhok-product-task-hierarchy.md |
Главное — повторение в конце
Перед любым gh-вызовом: прочитать tasks.md, иначе поиск бьёт наугад.
Каждый issue обязан иметь: W-label + parent (Sub-issues API) + Project placement с непустым статусом.
Режим записи всегда: In progress на затронутых issues; комментарий-запись при реальной работе; синк дневного плана HQ; при закрытии — чек-лист закрытия (инвариант 8).
Постоянное разрешение: план → исполнение без «подтверди». Спрашивать только при настоящей неоднозначности или жёстком блокере.
Режим среды: агент сам собирает денежные доказательства по corp-sales/CLAUDE.md § Live cash truth при чистом reconcile (+ денежные issues + co-prep); один точечный вопрос, только если обещание стоит, иначе cash on track. Определения денег и обещаний — общие с retro / weekly-planning, не дублировать.
Все тексты для founder'а — на русском. Технические токены (crm#27, W18, команды) — как есть.