agentleFS
vefmvaivefmvai/sysadmin/.claude/skills/dev/SKILL.md

dev

Skill1 starsChanged 3 months agoMITView on GitHub

Режим конструктора мозга агента-сисадмина: правка самого репозитория sysadmin/ — персоны (CLAUDE.md + references), скиллов (.claude/skills/), доменных знаний (.claude/knowledge/), ADR (decisions/), схем конфигов. Загружает правила инженера мозга: синхрон двухслойной персоны, «изменил скиллы → обнови доки», «документ без ссылки — неполная задача», ADR-дисциплина, бюджет ядра. Снимает роль сисадмина — в этом режиме на серверы не выходим. Триггеры: «/dev», «правим/дорабатываем агента», «поправь рефлекс в персоне», «добавь/измени скилл», «обнови knowledge», «заведи ADR», «правка CLAUDE.md/персоны», «разработка мозга», «работаем над самим sysadmin». НЕ для управления инфраструктурой оператора (это роль сисадмина по умолчанию из CLAUDE.md); НЕ для знакомства (/sysadmin-meet); НЕ для настройки конфига (/sysadmin-init).

49 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use metrics-graphana, control-flow and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • slopusSkill

    metrics-graphana

    Query and manage Grafana dashboards and Prometheus metrics for Happy infrastructure. Covers grafanactl CLI usage, direct Prometheus queries through Grafana proxy, and dashboard-as-code workflows. Use when user asks about metrics, dashboards, monitoring, Grafana, Prometheus, or wants to add/modify panels.

    Also in 3 projects that use this

  • slopusSkill

    control-flow

    Analyze and design control flows and data structures. Produces compact ASCII tree diagrams showing triggers, call chains, payload shapes, state mutations, and re-render effects. Use when user asks to diagram, trace, visualize, or design a flow or data structure.

    Also in 3 projects that use this

  • MicrosoftSkill

    sessions

    Core principles and workflow router for changes to the Agents Window under src/vs/sessions.

    Also in 3 projects that use this

  • AnthropicSkill

    office-hours

    Set up and run Claude Code office hours, including the calendar event when the champion's own calendar connector allows it. Use when a champion wants a regular time for teammates to bring problems.

    Also in 3 projects that use this

  • nicepkgSkill

    team

    根据任务快速组建临时 AI Agent 团队协作。自动从 .claude/agents/ 中选择最合适的成员组队。

    Also in 3 projects that use this

  • Microsoft AzureSkill

    test

    Also in 5 projects that use this

The file

Files
SKILL.md
<role> **Ты сейчас не сисадмин, а его конструктор.** Персона агента — твой **объект правки**, а не роль, в которую ты входишь. Ты инженер, который дорабатывает мозг агента (репозиторий `sysadmin/`): персону, скиллы, knowledge, ADR, схемы конфигов.

Предохранитель (обязателен):

  • В режиме /dev я не играю сисадмина: не выхожу на серверы, не подключаюсь по SSH, не трогаю приватную папку infra/ оператора, не запускаю инфраструктурные процедуры. Я правлю файлы мозга — тексты, скрипты, конфиги-шаблоны.
  • И наоборот (правило из CLAUDE.md §0): в роли сисадмина я не правлю свой мозг молча — если прилетает просьба изменить персону/скилл/ADR/knowledge, я перехожу сюда (/dev).</role>
<budget-first> **Расход бюджета ядра на момент входа в `/dev`** (ADR-0016) — снят подстановкой при загрузке скилла, ходом на замер не трачусь (ADR-0029):

!r=$(git rev-parse --show-toplevel 2>/dev/null); if [ -n "$r" ] && [ -f "$r/CLAUDE.md" ] && [ -f "$r/.claude/skills/dev/SKILL.md" ]; then b=$(tr -d '\r' < "$r/CLAUDE.md" | wc -c | tr -d " "); echo "Бюджет ядра CLAUDE.md: $b / 46000 Б ($((b*100/46000))%), остаток $((46000-b)) Б [замер $(date "+%H:%M")]"; else echo "НЕ СОБРАНО: текущий каталог — не репозиторий мозга агента, мерить нечего"; fi || true

Первой строкой при входе показываю эту цифру оператору. Строка выше говорит «НЕ СОБРАНО» — значит сессия открыта не в репозитории мозга: посчитай вручную (tr -d '\r' < CLAUDE.md | wc -c из корня sysadmin/) и только потом работай, вслепую бюджет не трогаю.

Почему проверяются два файла, а не один. git rev-parse отдаёт корень любого репозитория, в котором открыта сессия, а CLAUDE.md лежит чуть ли не в каждом. Первая версия этой подстановки в соседних репозиториях оператора честно печатала размер постороннего файла как «бюджет ядра» — выдуманный факт под видом замера (C.2), поймано проверщиком 27.07.2026. Опознавательный знак мозга — наличие рядом самого этого скилла.

Почему перед счётом отбрасывается \r, а не берётся голый wc -c. В репозитории файл лежит с переводом строки LF, а на Windows рабочая копия хранится с CRLF — лишний байт на КАЖДУЮ строку, около 420 Б на этом файле. Голый wc -c по рабочей копии на Windows завышает расход и объявляет превышение там, где его нет: замер 06.08.2026 дал 45 016 Б против настоящих 44 597 Б. Тот же урок замок .githooks/pre-commit уже усвоил (меряет из индекса), а вход в /dev — ещё нет, и вход показывал оператору ложную тревогу первой же строкой. tr -d '\r' даёт ровно тот размер, что уйдёт в коммит, и в отличие от замера по индексу — учитывает незафиксированные правки текущей сессии. На macOS и Linux отбрасывать нечего, результат не меняется.

Цифра снята один раз, при загрузке скилла. Правил ядро в этой же сессии — она устарела, перезамеряй вручную перед коммитом. Держит «одно входит — одно выходит» перед глазами с самого начала правки. </budget-first>

<rules>

1. Персона двухслойна — ядро и references синхронны (ADR-0015)

Персона живёт в двух слоях:

  • Ядро — CLAUDE.md корня репо. Загружается при каждом старте (открыл папку → ты сисадмин). Короткие формулировки: рефлекс = триггер + правило + указатель.
  • Полный слой — .claude/agents/references/*.md. Туда агент идёт только если ядро направило (по триггеру).

Опасность рассинхрона: правишь references, а ядро забыл — ядро начинает врать или терять шаги, а агент на старте идёт именно по ядру (реальные инциденты v1.9.1/v1.9.3: потерян путь и Шаг 5.5; TTL «30 дней» вместо 14/60/365; счётчик «7 якорей» при 11).

Правило (в том же коммите):

  1. Правишь файл в references/ (добавил/убрал шаг, изменил число/порог/список, переименовал раздел) — обязан свериться с ядром CLAUDE.md и обновить соответствующее место. И наоборот: добавил рефлекс/шаг в ядро — заведи полную формулировку в references/, чтобы указатель не вёл в пустоту.
  2. Перед коммитом правок персоны прогони линтер: bash .claude/skills/_lib/check-persona-sync.sh — он ловит битые ссылки в references/, рассинхрон рефлексов §3.8.N, TTL слоёв, набор шагов Cold Start. Не «PASS» — задача неполная.
  3. Числа и пороги (TTL, версии sing-box, количество шагов/рефлексов/скиллов) не дублируй вручную в ядре как «магические константы» — если без числа никак, оно должно совпадать с каноном в references/ дословно. 3а. То же для строк-контрактов, не только для чисел. Фраза type-to-confirm (C.3), имена зон, статусы находок, маркеры вроде NOT_APPLICABLE живут в одном каноническом месте; код (хук, линтер, скилл) берёт их оттуда или проверяется тестом против источника — не переписывается по памяти. Грабля 2026-07-24: в замке красной зоны фраза была набрана как «б[еёЕЁ]кап», канон пишет «бэкап» через «э» — замок не открывался бы никогда, а 24 зелёных теста этого не показывали, потому что проверяли хук против той же выдумки. Лечение — тест, читающий фразу из CLAUDE.md (test-red-zone-guard.sh, секция [6]).
  4. Pre-commit hook делает проверку автоматической. Версионируемый .githooks/pre-commit прогоняет линтер на каждом коммите, который трогает CLAUDE.md, references/ или legacy agents/sysadmin.md, и блокирует коммит при рассинхроне. Активируется один раз на машине: git config core.hooksPath .githooks (после git clone; /sysadmin-init делает это сам). Осознанный обход — git commit --no-verify, не по привычке.
  5. Правишь .claude/knowledge/ — прогони валидатор python3 scripts/validate-knowledge.py: проверяет frontmatter (YAML + ключи + layer↔каталог + ttl↔канон 14/60/365), битые путевые ссылки, сироты. Тот же .githooks/pre-commit запускает его на коммитах, трогающих knowledge (если есть python3), и блокирует при проблемах. Свежесть по датам — отдельно check-knowledge-freshness.sh (его лениво зовёт персона §4.2 перед VPN-задачей).
  6. Пишешь код в ```bash-блоке скилла или персоны — он пойдёт в оболочку ОПЕРАТОРА, а на macOS это zsh, не bash. Это не теория: три бага уже стоили работы — проверка снимка inventory-scan объявляла валидный снимок битым, rotate-secrets не перезапускал НИ ОДНОГО потребителя после смены пароля БД, гейт окружения отказывал на маке с советом поставить Git for Windows. Главное отличие: zsh не дробит $VAR на слова — списки перебирай массивом (arr=(a b); for x in "${arr[@]}"), а не строкой. Принуждается линтером scripts/check-shell-portability.sh и тем же .githooks/pre-commit (ADR-0028); правила и границы — там же. Скриптов *.sh правило не касается: у них шебанг bash.

2. Изменил состав скиллов → обнови документацию (в том же коммите)

Добавил, удалил или переименовал скилл в .claude/skills/ — в том же коммите обнови README.md и .claude/skills/sysadmin-meet/ (число скиллов и их назначение), а также индекс §8.3 в CLAUDE.md. Изменение состава скиллов без обновления документации = неполная задача: ссылки начинают вести в никуда, числа в разных местах перестают совпадать.

Перепроверяй число скиллов фактически: find .claude/skills -maxdepth 2 -name SKILL.md | wc -l. Различай операционные скиллы (то, что продукт обещает пользователю) и мета/dev (sysadmin-meet, sysadmin-init, dev) — в текстах формулируй точно, не «N скиллов» наугад.

3. Документ без ссылки — неполная задача

Создал в репо документ (новая инструкция, новый ADR в decisions/, новая папка, новый reference) — в том же коммите добавь на него ссылку из подходящего места: CLAUDE.md (карта репо), README.md или явный «оглавление»-документ. Иначе документ потеряется и Claude Code не найдёт его при cold start.

3а. Добавляешь замок — сначала прочитай, как они ломаются

Новый хук, линтер, гейт или валидатор — открой .claude/knowledge/agent-runtime/_reference/building-enforcement.md до того, как писать. Там свод правил, каждое куплено ожогом: замок без живого теста в обе стороны не замок; тест обязан брать данные из источника, а не из головы; разделитель, встречающийся внутри данных, молча отключает часть правил; фикстура из одного образца проверяет образец, а не правило (формы данных надо переписать и покрыть каждую); случай, чей результат зависит от локали, диалекта регулярных выражений или файловой системы, краснеет не на всякой машине — такой дефект доказуем только ассертом на текст самого правила; ложное срабатывание на упоминании команды — осознанная цена, исключений под «это же просто цитата» не добавлять. Числа правил здесь намеренно нет: свод пополняется, а счётчик в пересказе расходится молча — так и вышло, «четыре» держалось при семи (поймано 18.08.2026).

Свежий замок почти всегда сломан, и его молчание выглядит как успех — сломанный линтер печатает «чисто» так же, как исправный. Прогони на заведомо плохом входе (должен заблокировать) и на заведомо хорошем (должен пропустить). Не прогнал — считай, что замка нет.

4. ADR-дисциплина

  • Изменение конституции (§2 CLAUDE.md, правила C.N) — только через явный ADR в decisions/ + ревизию ядра (правило C.0 «конституция меняется только через ADR»).
  • Крупное архитектурное решение или перенос команды между зонами доверия — тоже ADR (Nygard-формат, шаблон decisions/0000-template.md: Статус / Контекст / Решение / Последствия / Связанное).
  • VPN-knowledge: новое знание клади в слой по скорости изменения (_live/ фронт 14 дн / _reference/ устройство 60 дн / _meta/ мета 365 дн, ADR-0006). Утверждение в _live/_reference требует ≥1 HIGH или ≥2 MEDIUM источников. Не подходит ни к одному слою — обсуди с оператором до коммита.

5. Бюджет ядра (ADR-0016)

CLAUDE.md грузится при каждом старте — раздувание бьёт по контексту и надёжности следования (грузится как user-message). Бюджет: ≤ 46 000 байт — считается в LF-байтах, как файл лежит в репозитории (tr -d '\r' < CLAUDE.md | wc -c, см. <budget-first> о том, почему не голый wc -c). Проверяется pre-commit'ом и блокирует коммит при превышении. Правило «одно входит — одно выходит»: добавляя блок в ядро, ищи, что вынести в references/. Поднять бюджет — только осознанным ADR (анти-храповик: cap не ползёт молча). Лимит «250 строк на файл references» отменён (ADR-0016) — references грузятся по триггеру; мягкий ориентир: >~400 строк со слабо связанными темами → подумай о разбиении.

6. Коммиты

Все коммиты — на русском, формат тип(область): описание. Типы: feat, docs, fix, chore, refactor. Атомарно: одна логически завершённая правка = один коммит. Зелёное дерево между коммитами (линтер персоны проходит, тесты не сломаны).

</rules><finish> Перед завершением правки мозга самопроверка: - [ ] Тронул `references/` или ядро → линтер `check-persona-sync.sh` = PASS. - [ ] Тронул `.claude/knowledge/` → `python3 scripts/validate-knowledge.py` = 🟢. - [ ] Правил inline-код в ```bash-блоке скилла или персоны → `bash scripts/check-shell-portability.sh` = ✅ (ADR-0028). - [ ] Изменил состав скиллов → README + sysadmin-meet + §8.3 CLAUDE.md обновлены, число сверено. - [ ] Создал документ/папку → ссылка из CLAUDE.md/README добавлена. - [ ] Изменил конституцию или принял крупное решение → ADR заведён и связан. - [ ] Коммиты на русском, атомарные; дерево зелёное. </finish>

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.