Те самые четыре из ролика: память проекта, хуки, свои навыки и подключения MCP. Ты ставишь их один раз, а дальше твой проект поднимается сам и нужный инструмент включается под задачу. Про каждую настройку ниже: что делает, куда положить файл, как проверить, что завелось. Куски готовы к копированию, а все четыре файла лежат в архиве.
CLAUDE.md — обычный текстовый файл в папке проекта.
Клод открывает его в начале каждой сессии. Пока файла нет, ты каждое утро пересказываешь
заново: что за проект, где что лежит, чего делать нельзя.
Мест два:
~/.claude/CLAUDE.md — читается в любой папке <папка проекта>/CLAUDE.md — читается, когда работаешь в этой папке
Каркас, который у меня прижился: четыре раздела, не длиннее 120 строк.
## Что делаем проект одним абзацем + чего в нём НЕ делаем ## Где что лежит таблица «нужно → файл»: Клод открывает файл по строке, а не ищет по всей папке ## Инструменты что уже стоит, с командой запуска; и чем не пользуемся, чтобы не предложил снова ## Правила, которые уже стоили ошибок по строке после каждой ошибки, с датой
Последний раздел самый ценный и самый неудобный: он заводится не заранее, а после того, как ошибка уже случилась. У меня туда попало «оригинальные фото в генерацию не брать» и ещё десяток строк, каждая из которых стоила вечера.
Проектный CLAUDE.md подхватывается, только когда Клод
запущен из папки проекта. Я работаю из домашней папки, и три месяца проектные файлы
не читались вовсе: Клод отвечал общими словами и додумывал за меня.
Лечится таблицей в глобальном файле — по теме разговора видно, что открыть первым:
## Маршрутизатор проектов | Тема разговора | Что открыть первым | |---|---| | товары, поставщики, объявления | ~/Projects/<магазин>/CLAUDE.md | | ролики, тексты, публикации | ~/Projects/<контент>/CLAUDE.md |
Проверка: начни новую сессию и спроси «что ты знаешь про этот проект?». Отвечает словами из файла — память подключена.
Хук — команда, которую Клод выполняет в момент события, без напоминания. У меня на старте сессии запускается скрипт: печатает, что было в работе вчера, какая задача текущая и какие ворота нельзя проскочить. Вывод попадает Клоду в контекст, поэтому сессия начинается с дела, а не с «прочитай вот эти файлы».
SessionStart — старт сессии. Сюда идёт подъём среды:
что в работе, последние коммиты, текущая задача.
UserPromptSubmit — перед каждым твоим сообщением.
Сюда идут правила, которые Клод обязан помнить всегда, а не только когда вспомнил сам.
Stop — Клод закончил ответ. Здесь стоит звук: слышно,
что можно вернуться к экрану.
Notification — Клод ждёт разрешения. Звук другой,
и по нему слышно, что он застрял.
Файла нет или он пустой — скопируй целиком. Свои настройки уже есть — вставь
только "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 внутри сессии показывает,
что Клод прочитал. Перезапусти сессию — сверху появится строка
=== СРЕДА ПОДНЯТА ===.
Навык — папка, внутри которой лежит SKILL.md. Клод держит
перед глазами только описание из шапки, а тело открывает, когда навык понадобился.
Поэтому навыков может быть много: в контексте каждый занимает одну строку.
~/.claude/skills/<имя>/SKILL.md — во всех проектах <проект>/.claude/skills/<имя>/SKILL.md — только в этом
Обязателен один файл, SKILL.md. Рядом с ним кладётся
что угодно: списки, скрипты, шаблоны. У моего навыка на тексты рядом лежит список
клише на 39 килобайт — Клод открывает его в момент проверки текста и не носит
с собой всё остальное время.
---
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 — единственное, что Клод видит всегда,
и по нему он решает, включать навык или нет. Там должен стоять не пересказ, а условия
срабатывания: какие слова и какая ситуация. Тело — порядок шагов и границы:
чего навык не делает.
Проверка: спроси «какие навыки у тебя есть?» — новый должен быть в списке. Дальше дай ему подходящую задачу и смотри, включится ли сам.
Этот навык лежит в архиве целиком — он простой, по нему видно устройство. Семь других я написал под свои задачи: один сверяет тексты с чёрным списком клише, другой собирает вертикальный ролик кодом, третий поднимает работу по слову «поехали».
MCP по-русски — способ отдать Клоду чужую программу как набор своих команд. Разница видна сразу. Без подключения он выдаёт инструкцию: какое меню в редакторе искать и какую кнопку там жать. С подключением он ставит объект на сцену сам, и объект появляется в окне.
У меня подключены четыре: игровой редактор Roblox Studio, генератор картинок и видео, сервис субтитров и сервис ИИ-аватара. Ролики и игра собираются в них же, только команды к ним идут из сессии.
claude mcp list # в терминале: список серверов и живы ли они /mcp # внутри сессии: то же плюс кнопка входа
Подключения бывают на весь компьютер и на один проект. Проектные живут файлом
.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.
CLAUDE.md помогает, когда в проекте есть что описывать:
у разовой задачи описывать нечего. Хук на старте бесполезен, если некуда писать,
на чём остановился. Навык — это записанный порядок работы, и пока порядка в голове
нет, записывать нечего. MCP упирается в то, есть ли у нужной программы сервер:
у Roblox Studio есть, у большинства настольных программ нет.
Это кусок курса.