меньшиков.ai

Четыре настройки, после которых
Claude Code перестаёт быть чатом

Те самые четыре из ролика: память проекта, хуки, свои навыки и подключения MCP. Ты ставишь их один раз, а дальше твой проект поднимается сам и нужный инструмент включается под задачу. Про каждую настройку ниже: что делает, куда положить файл, как проверить, что завелось. Куски готовы к копированию, а все четыре файла лежат в архиве.

7 навыковнаписал сам под свои задачи
4 событияна которых среда поднимается без меня
20 минутпоставить все четыре с нуля
Скачать четыре файла · 8 КБ шаблон памяти, блок хуков, папка навыка и конфиг подключений
Настройка 1 — память проекта
файл CLAUDE.md

Клод читает его сам, до первого вопроса

CLAUDE.md — обычный текстовый файл в папке проекта. Клод открывает его в начале каждой сессии. Пока файла нет, ты каждое утро пересказываешь заново: что за проект, где что лежит, чего делать нельзя.

Мест два:

~/.claude/CLAUDE.md          — читается в любой папке
<папка проекта>/CLAUDE.md    — читается, когда работаешь в этой папке

Каркас, который у меня прижился: четыре раздела, не длиннее 120 строк.

## Что делаем
проект одним абзацем + чего в нём НЕ делаем

## Где что лежит
таблица «нужно → файл»: Клод открывает файл по строке, а не ищет по всей папке

## Инструменты
что уже стоит, с командой запуска; и чем не пользуемся, чтобы не предложил снова

## Правила, которые уже стоили ошибок
по строке после каждой ошибки, с датой

Последний раздел самый ценный и самый неудобный: он заводится не заранее, а после того, как ошибка уже случилась. У меня туда попало «оригинальные фото в генерацию не брать» и ещё десяток строк, каждая из которых стоила вечера.

грабля, на которой я потерял три месяца

Проектный файл сам не загружается

Проектный CLAUDE.md подхватывается, только когда Клод запущен из папки проекта. Я работаю из домашней папки, и три месяца проектные файлы не читались вовсе: Клод отвечал общими словами и додумывал за меня.

Лечится таблицей в глобальном файле — по теме разговора видно, что открыть первым:

## Маршрутизатор проектов
| Тема разговора | Что открыть первым |
|---|---|
| товары, поставщики, объявления | ~/Projects/<магазин>/CLAUDE.md |
| ролики, тексты, публикации     | ~/Projects/<контент>/CLAUDE.md |

Проверка: начни новую сессию и спроси «что ты знаешь про этот проект?». Отвечает словами из файла — память подключена.

Настройка 2 — хуки
команды, которые он запускает сам

Среда поднимается до первого вопроса

Хук — команда, которую Клод выполняет в момент события, без напоминания. У меня на старте сессии запускается скрипт: печатает, что было в работе вчера, какая задача текущая и какие ворота нельзя проскочить. Вывод попадает Клоду в контекст, поэтому сессия начинается с дела, а не с «прочитай вот эти файлы».

четыре события и когда какое

Куда что вешать

SessionStart — старт сессии. Сюда идёт подъём среды: что в работе, последние коммиты, текущая задача.

UserPromptSubmit — перед каждым твоим сообщением. Сюда идут правила, которые Клод обязан помнить всегда, а не только когда вспомнил сам.

Stop — Клод закончил ответ. Здесь стоит звук: слышно, что можно вернуться к экрану.

Notification — Клод ждёт разрешения. Звук другой, и по нему слышно, что он застрял.

готовый блок

Вставить в ~/.claude/settings.json

Файла нет или он пустой — скопируй целиком. Свои настройки уже есть — вставь только "hooks".

{
  "hooks": {
    "SessionStart": [
      { "hooks": [ {
        "type": "command",
        "command": "echo '=== СРЕДА ПОДНЯТА ==='; [ -f NOW.md ] && { echo '-- что в работе --'; head -20 NOW.md; }; git log --oneline -3 2>/dev/null; exit 0",
        "timeout": 10,
        "statusMessage": "Поднимаю среду проекта"
      } ] }
    ],
    "UserPromptSubmit": [
      { "hooks": [ { "type": "command", "command": "cat ~/.claude/pravila.md 2>/dev/null; exit 0" } ] }
    ],
    "Stop": [
      { "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Glass.aiff", "async": true } ] }
    ],
    "Notification": [
      { "hooks": [ { "type": "command", "command": "afplay /System/Library/Sounds/Funk.aiff", "async": true } ] }
    ]
  }
}

Что доделать под себя: завести в проекте NOW.md и писать туда, на чём остановился; создать ~/.claude/pravila.md и положить туда три-пять своих правил. Обоих файлов нет — хуки промолчат и ничего не сломают. Звуки afplay работают на макбуке, на Linux их место занимает paplay.

exit 0 в конце команды стоит не зря. Без него хук возвращает код ошибки, когда файла нет или папка не под гитом, и Клод рисует предупреждение на каждом старте.

Ещё одна причина вести NOW.md: сама история разговоров у Claude Code короткая. Файлы сессий лежат в ~/.claude/projects/, и при каждом запуске он стирает те, что старше 30 дней, — молча и без корзины, вернуть их нельзя. Нужно дольше — в тот же ~/.claude/settings.json добавь строку "cleanupPeriodDays": 3650, — на том же уровне, что и "hooks", первой строкой после открывающей {, с запятой в конце. Удаление остановится, но только для того, что ещё не стёрто. Проверено 02.09.2026. Перезапусти сессию — предупреждения об ошибке в settings.json нет, а /hooks по-прежнему показывает хуки.

Проверка: команда /hooks внутри сессии показывает, что Клод прочитал. Перезапусти сессию — сверху появится строка === СРЕДА ПОДНЯТА ===.

Настройка 3 — свои навыки
папка с инструкцией

Включается сама, когда задача подошла

Навык — папка, внутри которой лежит SKILL.md. Клод держит перед глазами только описание из шапки, а тело открывает, когда навык понадобился. Поэтому навыков может быть много: в контексте каждый занимает одну строку.

~/.claude/skills/<имя>/SKILL.md          — во всех проектах
<проект>/.claude/skills/<имя>/SKILL.md   — только в этом

Обязателен один файл, SKILL.md. Рядом с ним кладётся что угодно: списки, скрипты, шаблоны. У моего навыка на тексты рядом лежит список клише на 39 килобайт — Клод открывает его в момент проверки текста и не носит с собой всё остальное время.

шапка — две строки, от которых зависит всё

Пример SKILL.md

---
name: proverka-ssylok
description: Проверка всех ссылок в файле или на странице — какие открываются,
  какие отвечают ошибкой, куда ведёт редирект. Применять перед публикацией
  страницы, поста, письма. Триггеры: «проверь ссылки», «битые ссылки», а также
  сам факт «сейчас уйдёт наружу текст со ссылками».
---

# Проверка ссылок

Битая ссылка в опубликованном тексте стоит дороже минуты проверки.

## Порядок
1. Собрать ссылки из файла — markdown, html и голые адреса в тексте.
2. Проверить каждую: curl -sS -o /dev/null -w '%{http_code}' -I --max-time 10
3. Разложить: 200 — живая · 301 — поставить конечный адрес · 404 — чинить.

## Границы
Ссылки за паролем отвечают 403, и это норма. Правки вносит человек, не навык.

🚨 description — единственное, что Клод видит всегда, и по нему он решает, включать навык или нет. Там должен стоять не пересказ, а условия срабатывания: какие слова и какая ситуация. Тело — порядок шагов и границы: чего навык не делает.

Проверка: спроси «какие навыки у тебя есть?» — новый должен быть в списке. Дальше дай ему подходящую задачу и смотри, включится ли сам.

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

Настройка 4 — подключения MCP
розетки к чужим программам

Он жмёт кнопки сам, а не пишет инструкцию

MCP по-русски — способ отдать Клоду чужую программу как набор своих команд. Разница видна сразу. Без подключения он выдаёт инструкцию: какое меню в редакторе искать и какую кнопку там жать. С подключением он ставит объект на сцену сам, и объект появляется в окне.

У меня подключены четыре: игровой редактор Roblox Studio, генератор картинок и видео, сервис субтитров и сервис ИИ-аватара. Ролики и игра собираются в них же, только команды к ним идут из сессии.

claude mcp list   # в терминале: список серверов и живы ли они
/mcp              # внутри сессии: то же плюс кнопка входа
конфиг проекта

Файл .mcp.json в корне

Подключения бывают на весь компьютер и на один проект. Проектные живут файлом .mcp.json рядом с кодом:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest"]
    },
    "server-po-http": {
      "type": "http",
      "url": "https://адрес-сервиса/mcp"
    }
  }
}

Первая запись — программа на твоём компьютере, Клод запускает её сам: эта водит браузер, открывает страницы и снимает экраны. Вторая — сервис в интернете. При первом запуске Клод спросит разрешение: подключения из файла проекта молча не включаются.

🚨 Ключам в .mcp.json не место: файл уезжает в репозиторий вместе с кодом. Сервисы с авторизацией подключаются командой claude mcp add — она кладёт доступ отдельно от проекта. Устройство одно: имя сервера, два дефиса, дальше то, чем он запускается.

# программа на твоём компьютере (stdio, по умолчанию)
claude mcp add playwright -- npx -y @playwright/mcp@latest

# сервис в интернете: вместо команды запуска — адрес
claude mcp add --transport http notion https://mcp.notion.com/mcp

# ключ — флагом -e до двух дефисов, в файл проекта не попадёт
# (имя переменной и команду бери из README сервера)
claude mcp add my-server -e API_KEY=xxx -- npx my-mcp-server

# снять лишний
claude mcp remove playwright

--scope задаёт, где подключение живёт: local — эта папка (по умолчанию), project — запись в .mcp.json, user — все твои проекты. Сервера нет в claude mcp list — чаще всего добавил в одной папке, а смотришь из другой.

Всё, что начинается с claude, — команды терминала: нужен Claude Code, установленный в терминале, а не только окно чата в редакторе. Проверка: в сессии набери /mcp — новый сервер в списке, рядом статус и его инструменты. Проверено 02.09.2026.

частый вопрос

Чем MCP отличается от прямого обращения к API

Один и тот же сервис можно звать двумя путями, и выбор решается тем, где идёт работа.

MCP — когда ты в сессии и смотришь на результат. Клод сам выбирает нужную команду из списка и жмёт её. Нужна живая сессия и вход внутри неё.

Прямой API — когда процесс идёт без тебя. У скрипта по расписанию, бота и воркера сессии Клода нет, они ходят в сервис своим ключом.

Сервис субтитров в сессии я зову через MCP, а в ночной сборке ролика — обычным запросом к API. Развилка одна. Делаешь сам и смотришь на результат — MCP. Должно работать, пока ты спишь — API.

Честно о границах. Ни одна из четырёх не делает работу за тебя. CLAUDE.md помогает, когда в проекте есть что описывать: у разовой задачи описывать нечего. Хук на старте бесполезен, если некуда писать, на чём остановился. Навык — это записанный порядок работы, и пока порядка в голове нет, записывать нечего. MCP упирается в то, есть ли у нужной программы сервер: у Roblox Studio есть, у большинства настольных программ нет.
Что дальше

Это кусок курса.

🎁 Первый вечер — бесплатно Программа курса →