Мой рабочий пайплайн для Claude Code: правила с гейтами (CLAUDE.md), именованные агенты-ревьюверы
(agents/), чекер, который сверяет заявленное с журналом сессии (pipeline/), и проектные скиллы,
которые в самих репо лежат под гитигнором (project-skills/).
Ядро — CLAUDE.md, agents/, pipeline/ — не привязано ни к проекту, ни к машине: путей
конкретного пользователя в нём нет (на выгрузке ~/.claude заменяется плейсхолдером
{{CLAUDE_HOME}}, установщик подставляет свой), а всё проектное живёт в самом проекте:
- что в проекте секретное — секция
## Secretsв репо-файле проекта (AGENTS.md,CLAUDE.md,docs-internal/AGENTS.mdили.claude/CLAUDE.md): файлы, модули, типы и пути с ключами и шифрованным конфигом, куда законно течёт их открытый вид, какие защиты нельзя снимать.leak-check.jsкопирует её в отчёт дляleak-review, а имена в бэктиках добавляет в pre-scan. Без секции гейт всё равно работает — агент ищет ключи и креды сам и пишет в вердикте, что проект ничего не объявил; сама секция тогда — первое, что заводится в репо-файле; - команды сборки / линта / тестов — блок
## Commandsрепо-файла (§5 правил); - скиллы —
project-skills/<repo>/, ставятся только с--project.
Скопируй агенту дословно:
Клонируй https://github.com/guyverino/ClaudRules и выполни
node install.js --project <путь к чекауту MoonTerminal>
Затем перезапусти сессию (правила и агенты читаются на старте).
Что сделает install.js:
- перепишет абсолютные пути в правилах (корень и хвост, с разделителями этой ОС) под домашнюю
папку машины — агент без shell не умеет раскрывать
~; на POSIX заменит и единственную PowerShell-фразу в правилах. Проектные скиллы MoonTerminal — Windows/MSVC-специфичны (команды сборки, PowerShell): на Linux/macOS установщик это скажет, а команды брать из## Commandsрепо; - сделает бэкап существующих
~/.claude/CLAUDE.md,agents/,pipeline/; - положит
CLAUDE.md,agents/*.md,pipeline/**/*.js(точки входа,lib/,tests/) и Linux-бандлinstall-pipeline.sh; уберёт агентов, которых в этой версии уже нет; - прогонит регрессионный набор чекера (
pipeline/test.js) — красный набор или отказ регистрации хуков откатывают установку (бэкап возвращается, на первой установке — записанное удаляется); - зарегистрирует хуки
Stop/UserPromptSubmit/SessionStartв~/.claude/settings.json(идемпотентно, чужие хуки не трогает); - положит проектные скиллы в
<проект>/.claude/skills/для каждого--projectи запишет, какие именно пришли отсюда (.claude/skills/.claudrules.json) — только их и уберёт при следующей установке, свои скиллы проекта не тронет; - запомнит путь этого чекаута в
~/.claude/pipeline/rules-repo.local, чтобы выгрузка обратно не требовала пути.
Флаги: --prefix <dir> — установить в другую «домашнюю» папку (песочница), --dry-run — только
показать, --force-no-backup — ставить, даже если бэкап не записался.
Linux-сервер по SSH: pipeline/install-pipeline.sh — тот же набор одним самодостаточным bash-файлом
(scp + ssh host 'bash install-pipeline.sh').
Правила правятся в ~/.claude (так их видит Claude Code), а сюда выгружаются:
node ~/.claude/pipeline/export-rules.js --project <MoonTerminal> --commit "rules: <что изменилось>" --push
Путь чекаута берётся из ~/.claude/pipeline/rules-repo.local (его пишет install.js; позиционный
аргумент перед флагами перекрывает). Скрипт сначала пересобирает Linux-бандл, копирует файлы,
заменяя путь ~/.claude этой машины на {{CLAUDE_HOME}}, обновляет manifest.json, удаляет из репо
то, что на машине уже снято, и коммитит только свои пути — и только если они изменились.
Когда: в конце любой задачи, которая правила ~/.claude (правила, агентов, pipeline/) или
проектный скилл — это шаг §11 в самих правилах. Иначе репо отстаёт от машины, и следующая установка
развернёт старое.
settings.json— права и хуки конкретной машины; ставятся только три хука пайплайна;memory/— знания по проекту, приватные;- леджер и дайджесты чекера — учётные данные сессий;
pipeline/rules-repo.local— путь чекаута на конкретной машине;- имя пользователя, машины и проекта: путь дома — плейсхолдер,
manifest.jsonбез hostname, секретный контур проекта — в его собственном репо-файле.
| путь | что |
|---|---|
CLAUDE.md |
правила: §0 класс задачи → … → §10 квитанция, гейты |
agents/ |
flow, half-fix, contracts, error-paths, seams, external-data, value-integrity, type-design, tests (углы ревью, sonnet) · fix-diff (дельта, opus) · verify-finding (фильтр находок, haiku) · leak-review (проверка чужих коммитов на утечки по ## Secrets проекта, opus) |
pipeline/gate-check.js |
чекер: читает журнал сессии, сверяет класс/углы/сборку/тесты/sleep/дельту/утечки, пишет отчёт; Stop- и UserPromptSubmit-хуки. Точка входа; работа — в pipeline/lib/ |
pipeline/lib/ |
модули: transcript (найти/прочитать/вырезать задачу), digest (что задача делала), checks (гейты, по функции на гейт), late (ответы агентов после следующего промпта), git/parallel (чужие коммиты, PR), ledger (учёт), stacks (таблица стеков и классификаций), hook (payload хука), root (корень, список скриптов) |
pipeline/stats.js |
scorecard по леджеру с предложениями мер |
pipeline/leak-check.js |
чужие коммиты на origin/main: статус (SessionStart-хук: LEAK REVIEW PENDING + PARALLEL WORK), отчёт для leak-review (с секцией ## Secrets проекта), метка «проверено»; others — что другие влили с моего последнего коммита и какие PR открыты, с файлами (гейт §1: не делать одно и то же дважды; срабатывает только там, где есть другие контрибьюторы) |
pipeline/test.js, pipeline/tests/ |
регрессионный набор: раннер сканирует tests/*.test.js (по файлу на предмет; каждый кейс — дыра, которая один раз случилась); tests/agents.test.js следит, чтобы контракт в файлах агентов не разъезжался |
pipeline/install-hooks.js |
регистрация хуков |
pipeline/make-bundle.js → install-pipeline.sh |
Linux-бандл |
pipeline/export-rules.js |
выгрузка из ~/.claude сюда |
project-skills/<repo>/<skill>/SKILL.md |
проектные скиллы (/publish для MoonTerminal) |
Issue и PR приветствуются — присылай из форка. В main пушит только владелец: правила ставят хуки,
которые исполняются на машине установившего, поэтому каждая чужая правка проходит ревью PR.
Лицензия — MIT (LICENSE).