Skip to content

Latest commit

 

History

History
43 lines (25 loc) · 6.06 KB

File metadata and controls

43 lines (25 loc) · 6.06 KB

Additional rules

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, Node pino/winston, Go slog, Rust tracing, JVM logback) с 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 / Cookie headers, 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 хранит историю, восстановить можно.