Контрольный список развёртывания
Контрольный список предварительной проверки для развёртывания или совместного использования экосистемы Apothem
Шаги предварительной проверки перед развёртыванием экосистемы Apothem на новой машине, её совместным использованием с другими или признанием её готовой к продакшену.
1. Валидность YAML
- Все файлы правил разбираются без ошибок YAML — блок frontmatter открывается
---, закрывается---и не содержит осиротевшего контента за пределами блока - Все файлы делегированных исполнителей разбираются без ошибок YAML
- Все файлы команд разбираются без ошибок YAML
- Все файлы навыков
SKILL.mdразбираются без ошибок YAML
Проверка: python scripts/dev/validate_ecosystem.py разбирает
frontmatter каждого артефакта и помечает ошибки YAML и отсутствующие обязательные поля. Для специальной
проверки осиротевших элементов списка: rg -n "^- " src/apothem/rules/*.md.
2. Полнота frontmatter
Для каждого типа артефакта убедитесь, что обязательные поля присутствуют:
Правила (src/apothem/rules/*.md)
-
name— идентификатор в kebab-case, совпадающий с именем файла -
description— однострочное резюме -
alwaysApply—trueдля правил, которые действуют всегда,falseдля правил с фильтром по путям -
pathFilter— присутствует в каждом правиле:""для правил, которые действуют всегда (alwaysApply: true), список glob-шаблонов через запятую для правил с фильтром по путям (alwaysApply: false)
Правила не содержат ключей version, updated, scope или portability.
Команды (src/apothem/commands/*.md)
-
name— имя команды в kebab-case -
version,updated,description,argument-hint,portability,allowed-toolsприсутствуют -
disable-model-invocationприсутствует и намеренно (falseдля команд только для чтения или рекомендательных команд;trueтолько когда выполнение команды меняет состояние за пределами рабочего дерева или зависит от выбора момента оператором) - Ключа
effortнет:command.schema.jsonзадаётadditionalProperties: falseи его не допускает
Делегированные исполнители
Путь:
src/apothem/agents/*.md-
name,version,updated,descriptionприсутствуют -
tools— список разрешённых инструментов через запятую -
disallowedTools— явно перечисляет запрещённые инструменты -
maxTurns— задан (с комментарием-обоснованием, если > 10) -
permissionMode— НЕ должен быть"bypassPermissions"; не задавайте ключ, поскольку нейтральная (agnostic) конфигурация заранее не задаёт режим разрешений -
memoryне указан, если постоянная память не предусмотрена намеренно; если указан, то одно из значенийuser,project,local(логической формы нет)
Навыки (src/apothem/skills/*/SKILL.md)
-
name,version,updated,description,archetype,disable-model-invocation,allowed-toolsприсутствуют -
userInvocableобъявлено (true/false). В исходнике используется написаниеuserInvocable; навык несёт ровно одно изuserInvocableилиuser-invocable(написание Claude Code).
3. Безопасность
- Ни один делегированный исполнитель не использует
permissionMode: "bypassPermissions"— это обходит интерактивное подтверждение для операций Write/Bash - Списки
toolsисполнителя минимальны — только те инструменты, которые исполнителю действительно нужны - Исполнители с доступом к
Bashобоснованы и имеют ограничения maxTurns - Ни в одном артефакте нет жёстко прописанных путей, токенов или секретов
- Хуки в
settings.jsonимеют разумные таймауты (≤ 60 секунд) и не выполняют произвольный код из пользовательского ввода
4. Целостность перекрёстных ссылок
- Каждое правило, перечисленное в таблице
src/apothem/rules/, существует на диске по указанному пути - Каждая команда, перечисленная в таблице
src/apothem/commands/, существует на диске - Каждый делегированный исполнитель, перечисленный в таблице реестра
src/apothem/agents/, существует на диске - Каждый навык, перечисленный в таблице
src/apothem/skills/, существует на диске - Каждый хук в таблице
src/apothem/hooks/имеет соответствующую запись вsettings.json - Все файлы
src/apothem/rules/*.mdсуществуют, и их перекрёстные ссылкиBindingsразрешаются
5. Покрытие предписаний
- Каждое предписание CM-N имеет место применения (либо файл правила, либо явное встроенное определение)
- Ни один файл правила не противоречит другому (особенно в части масштабирования серьёзности)
- Разграничение трёх граней CM-21 соблюдается — ни одно правило не претендует на владение гранью CM-21 другого правила
6. Функциональные дымовые тесты
Сначала запустите поверхность проверки на Python — она быстрая, автономная и отлавливает структурные регрессии:
-
pytest tests— модульные тесты среды выполнения хуков, все зелёные -
python scripts/dev/validate_hooks.py— проверка структуры хуков + гигиены только-Python пройдена -
python scripts/dev/validate_ecosystem.py— полное дерево + frontmatter + проверки делегированных хуков пройдены -
python scripts/dev/chaos_pass.py— каждая настроенная команда хука возвращает корректный JSON-конверт при деградированных входных данных
Затем живые сценарии:
-
/plan-spec <sample-file>— завершает приём и уточнение без ошибок уровня команды -
/plan-generate --dry-run— выдаёт предпросмотр структуры без записи файлов -
/plan-statusна полном наборе планов — возвращает точное количество фаз - Диспетчеризация делегированного исполнителя: исполнитель
codebase-explorer, вызванный с небольшим охватом, завершается в пределах maxTurns и возвращает структурированный вывод
7. Актуальность документации
-
CHANGELOG.md(в корне экосистемы) отражает каждое изменение артефакта с момента последнего выпуска; раздел следующего выпуска заполнен до того, как ляжет тег, или каждое изменение уже включено в опубликованный раздел -
site/content/docs/developer-guide.mdxточно описывает текущую структуру артефактов -
site/content/docs/reference/artifact-schema.mdxсоответствует полям frontmatter, фактически присутствующим в артефактах -
site/content/docs/reference/settings-reference.mdxсоответствует фактической конфигурации хуков вsettings.json -
README.mdсогласован с деревом на диске
8. Переносимость (при совместном использовании с другими)
- Все пути в командах хуков не зависят от среды или используют раскрытие
~ - Команды хуков используют форму exec и избегают строк команд, специфичных для конкретной оболочки
- Ни в одном артефакте нет жёстко прописанных путей
C:\Users\usernameили/home/username -
settings.jsonиспользует одну таблицу охвата событий хуков и канонический путь к модулю диспетчеризации
9. Согласование версий
-
versionв CLAUDE.md является наивысшей среди всех артефактов в дереве (или, по соглашению, равна версии самого недавно повышенного артефакта) -
versionкаждого артефакта совпадает с заявленным semver (MAJOR.MINOR.PATCH) - CHANGELOG.md содержит ровно запись о выпуске для целевой версии перед тегированием
- Поле
updatedкаждого артефакта соответствует дате его последнего изменяющего поведение редактирования или позже - Ни один артефакт не несёт
versionниже версии, на которой его в последний раз изменяли (без регрессий) -
src/apothem/skills/plan-suite/SKILL.mdиsrc/apothem/skills/plan-suite/master-template.mdзакреплены на одной и той же линии версии шаблона
Утверждение
| Категория проверки | Статус | Примечания |
|---|---|---|
| Валидность YAML | ||
| Полнота frontmatter | ||
| Безопасность | ||
| Целостность перекрёстных ссылок | ||
| Покрытие предписаний | ||
| Функциональные дымовые тесты | ||
| Актуальность документации | ||
| Переносимость | ||
| Согласование версий |
Развёртывание одобрено: ___________________ Дата: ___________________ Развёрнутая версия экосистемы: ___________________
Руководство по циклу релиза
Полный рабочий процесс релиза от локальных шлюзов через подписанный GitHub Release до публикации в npm.
Руководство по восстановлению релиза
Процедуры восстановления для релиза, который дал сбой на полпути в рамках аддитивной модели релизов, — поэтапно, без перезаписи опубликованной истории.