Skip to content

Repository files navigation

ClaudRules

Мой рабочий пайплайн для 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:

  1. перепишет абсолютные пути в правилах (корень и хвост, с разделителями этой ОС) под домашнюю папку машины — агент без shell не умеет раскрывать ~; на POSIX заменит и единственную PowerShell-фразу в правилах. Проектные скиллы MoonTerminal — Windows/MSVC-специфичны (команды сборки, PowerShell): на Linux/macOS установщик это скажет, а команды брать из ## Commands репо;
  2. сделает бэкап существующих ~/.claude/CLAUDE.md, agents/, pipeline/;
  3. положит CLAUDE.md, agents/*.md, pipeline/**/*.js (точки входа, lib/, tests/) и Linux-бандл install-pipeline.sh; уберёт агентов, которых в этой версии уже нет;
  4. прогонит регрессионный набор чекера (pipeline/test.js) — красный набор или отказ регистрации хуков откатывают установку (бэкап возвращается, на первой установке — записанное удаляется);
  5. зарегистрирует хуки Stop / UserPromptSubmit / SessionStart в ~/.claude/settings.json (идемпотентно, чужие хуки не трогает);
  6. положит проектные скиллы в <проект>/.claude/skills/ для каждого --project и запишет, какие именно пришли отсюда (.claude/skills/.claudrules.json) — только их и уберёт при следующей установке, свои скиллы проекта не тронет;
  7. запомнит путь этого чекаута в ~/.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).

About

A gated Claude Code pipeline: rules, adversarial review agents, a session checker and an installer

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages