Auto-loaded alongside skills/workflow-rules/SKILL.md by the SessionStart hook. For workflow additions that don't fit the three-phase structure — one-off preferences, tool-specific rules, side notes.
Editing this plugin: when modifying any file in the main-skill plugin repo, ALWAYS bump version in .claude-plugin/plugin.json (patch increment by default) before committing. Without a bump, claude plugin update on consumer machines won't refresh the cached content.
Отвечай пользователю по-русски, включая короткие апдейты между тулами и финальные саммари. Код, идентификаторы, команды, имена файлов и цитаты из логов/доков — как есть, не переводи. Если пользователь пишет на другом языке — отвечай на его языке.
Кратко, по делу, жёстко на исполнение. Одно правило — заголовок + 1–3 строки. Без преамбул «почему это важно», без буллет-листов на 8 пунктов, без дублирования системного промпта. Глаголы в повелительном: «делай X», «не делай Y». Если не умещается в абзац — режь, пока не уместится.
Применяется к ТВОИМ правкам SKILL.md / CLAUDE.md / rules/*.md / AGENTS.md. Перед коммитом перечитай свой diff и для каждой добавленной секции > 5 строк выкинь треть. Если пользователь спросил «не раздул ли?» — правило уже провалено.
Перед запуском долгоживущего процесса (dev-server, watcher, туннель, npm run dev / next dev / vite, tail -f, ngrok) проверь, не запущен ли уже — свои bg-bash через Monitor / BashOutput по id, чужие через pgrep -fa <pattern> или lsof -i :<port>. Живой и отвечает → переиспользуй. Зомби (<defunct>, порт занят но не отвечает, логи застряли) → убей (kill, при упорстве -9) и запусти свежий. Один процесс на одну роль.
Если не на 100% уверен в поведении кода (внешний API, async-цепочки, нетривиальное состояние, парсинг чужих форматов, редкие ветки) — ставь постоянное structured-logging, чтобы трейс уже лежал в файле к моменту, когда пользователь сообщит о баге.
- Стандартный logger языка/фреймворка (Python
logging, Nodepino/winston, Goslog, Rusttracing, JVMlogback) с file appender + ротацией. Не самописный. - Ротация обязательна — по размеру (10MB × 5) или по времени (daily × 7), с капом на суммарный объём.
- Уровни по смыслу:
debug(детальный трейс),info(бизнес-события),warn(отклонения),error(сбой с контекстом). Прод-дефолтinfo;debugвключается черезLOG_LEVEL, не правкой кода. - Структурированный формат (JSON / key=value), грепаемый:
logger.info("user.login", extra={"user_id": uid}), неprint(f"user {uid} ..."). - Секреты НИКОГДА в логах. Запрещено: пароли, токены, API-ключи,
Authorization/Cookieheaders, session id, приватные ключи, PII (email, phone, карта). Перед логированием объекта — redactor по regex ключей (*token*,*secret*,*password*,*api[_-]?key*,authorization,cookie) →[REDACTED]. URL — маскируйtoken=/key=в query. Если структура непредсказуема — логируй имена полей и типы, не значения. - Путь к лог-файлу из env/конфига, директория в
.gitignore(logs/). - Логгер не должен падать — fallback на stderr, приложение живёт.
Отладка начинается с tail logs/app.log, а не с добавления print-ов post-factum.
Меняешь поведение, контракт, CLI, конфиг, env или любой user-facing surface — обнови существующие доки (README, CLAUDE.md, /docs/*, docstrings) в том же коммите. Перед завершением — grep по старому названию/флагу. Новых NOTES.md/SUMMARY.md не плодить.
Что стало не нужно — выпиливай полностью: код, файлы, доки, хуки, зависимости, env-переменные, фиче-флаги, секции CLAUDE.md/README. Не оставляй // removed, TODO-надгробия, закомментированные блоки, deprecated shim-ы «на всякий случай», устаревшие примеры в доках. Сомневаешься, используется ли символ/файл — grep по репо; нет ссылок → удаляй. Git хранит историю, восстановить можно.