m
Mars AI Operator Модуль 1 CLAUDE.md
~55 мин · hands-on
Mars AI Operator · Модуль 1 · агентский кодинг

Контракт с агентом. CLAUDE.md как твоя постоянная подпись.

CLAUDE.md — sening doimiy imzong

Первый модуль курса для менторов Mars. Не про чат с AI — про agentic coding tool: Claude Code в терминале, MarsCode (наш fork), и почему один markdown-файл в проекте меняет всё.

Длительность
55 мин
Формат
Текст + терминал
Prereq
База терминала
После
Модуль 4

2024 против 2026. Другая категория инструмента.

2024 vs 2026 — boshqacha asbob
2024 · чат

Открываешь ChatGPT. Копируешь функцию. «Почини баг». Получаешь код. Вставляешь в редактор. Не работает. Копируешь ошибку обратно. Так пять раз. Контекст живёт в твоей голове, не у модели.

2026 · агент

В папке проекта пишешь claude. Агент сам читает 7 файлов, находит баг, чинит, запускает тесты. Ты смотришь diff и говоришь «merge».

Это разные категории. Чат — собеседник. Агент — исполнитель с инструментами. И у исполнителя должен быть контракт. Этот контракт называется CLAUDE.md.

В этом модуле — что такое agentic coding tool, чем он отличается от чата, и как написать свой первый CLAUDE.md (на user-уровне и в проекте Mars), чтобы перестать каждую сессию объяснять агенту, кто ты и для кого пишешь код.

После этого модуля ты

Mental model. Что такое agentic coding tool.

Agent loop · surfaces · MarsCode

Anthropic определяет это одной фразой:

Verbatim · code.claude.com/docs/en/overview «Claude Code is an agentic coding tool that reads your codebase, edits files, runs commands, and integrates with your development tools. Available in your terminal, IDE, desktop app, and browser.»

Главное отличие от чата — loop of tool calls, а не одна реплика. Ты пишешь задачу. Модель решает: «сначала прочитаю файл». Вызывает инструмент Read. Получает содержимое. Думает дальше. Решает: «теперь правлю». Вызывает Edit. Затем Bash для тестов. И так пока задача не закроется или не упрётся в вопрос к тебе.

┌──────────────┐ │ Ты: задача │ └──────┬───────┘ ▼ ┌──────────────┐ ┌──────────────┐ │ Claude │─────▶│ Read file │ │ (модель) │ └──────┬───────┘ └──────▲───────┘ │ │ ▼ │ ┌──────────────┐ │◀────────────│ результат │ │ └──────────────┘ │ ├──▶ Edit file ──▶ результат ──┐ │ │ ├──▶ Bash (тест) ──▶ результат ──┤ │ │ └──▶ Read again ──▶ результат ──┘ ▼ ┌──────────────┐ │ Ответ тебе │ │ (diff/итог) │ └──────────────┘
↔ прокрути, если не помещается

Каждая стрелка вниз — это новый вызов модели. На больших задачах их десятки. Ты видишь это как полупрозрачный поток в TUI: Reading src/auth.py, Editing tests/test_login.py, Running pytest.

Surfaces — где живёт агент

Claude Code не привязан к одному окну. Это одна и та же конфигурация (CLAUDE.md, settings, MCP) в нескольких surface'ах. Выбираешь под задачу, не под привычку.

Surface
Когда удобно
Установка
Terminal
Live coding с детьми на проекторе, скрипты, репы Mars. Дефолт для курса.
curl install
VS Code
Inline diffs, @-mentions, plan review прямо в редакторе
extension
Desktop app
Несколько сессий рядом, визуальный diff, фоновые задачи
.dmg / .exe
Web
claude.ai/code — без установки, для быстрой проверки
браузер
JetBrains
PyCharm / IntelliJ — если уже там работаешь
plugin
Ключевая идея для ментора Один ~/.claude/CLAUDE.md работает во всех surface'ах. Один ./CLAUDE.md в репе — тоже. Меняешь поверхность, контракт остаётся.

MarsCode — наш fork

Mars держит свой агент — MarsCode, fork of sst/opencode. OpenAI-совместимый API, ходит через Mars Token Factory — наш LLM-прокси с кошельком в Mars coins. Зачем fork: Anthropic-only стек дорог при массовом раскате на учеников, MarsCode роутится на дешёвые модели через token-factory. Менторам выдаём баланс.

В MVP-курса учим на Claude Code (baseline, документация Anthropic покрывает 100%). MarsCode — упоминание сейчас, переключение в Модуле 5 (когда строим свои Skills и хочется сэкономить).

Codex (OpenAI), Antigravity (Google) — параллели той же категории. Не учим в курсе, но менторы должны слышать названия. Если ученик спросит «а что про Codex» — это тот же tool use loop, другой вендор.

Demo. Без CLAUDE.md и с ним.

Bir xil so'rov — ikkita natija

Кейс: ментор Зухра, точка Yunusobod, группа Python 7-9 лет, 6 детей. Открывает Claude Code в репе со стартер-проектами. Просит одно и то же. Сначала без контракта, потом — с ним.

Спрогнозируй сначала Перед тем как смотреть Сценарий B — запиши на бумажке: что именно изменится в выводе агента, если у него будет project CLAUDE.md? Сколько вопросов он задаст? В каком стиле напишет код? Запиши свою гипотезу — потом сверим с реальностью.
A · без CLAUDE.md
$ cd ~/mars-lessons/python-7-9 && claude# агент стартует с чистого листа

> помоги добавить ещё одну игру
  про математику для моих учеников

Claude: Я готов помочь. Пара
вопросов, чтобы понять контекст:

  1. Какой возраст учеников?
  2. На каком языке объяснения
     в комментариях?
  3. Какие библиотеки разрешены?
  4. Насколько подробно
     комментировать?
  5. ООП можно или процедурный
     стиль?

# 3 минуты пинг-понга на каждой сессии.
Без контракта — каждый раз заново. Зухра в неделю открывает Claude 8-10 раз. Это 30 минут на одно «привет, я снова я».
B · с CLAUDE.md
$ cd ~/mars-lessons/python-7-9 && claude# агент читает ./CLAUDE.md автоматом

> помоги добавить ещё одну игру
  про математику для моих учеников

Claude: Сделаю стартер
«Угадай число» в стиле проекта:

  • pygame + random, без f-strings
  • переменные русско-латиницей
  • комментарий на каждые 2 строки
  • короткий заголовок «Что эта
    программа делает»

  Прочитал 01-circle.py для стиля.
  Создаю 06-guess-number.py.

Edit: 06-guess-number.py (+38)
Bash: python3 -m py_compile ✓

# 40 секунд до результата.
С контрактом — агент сразу в духе проекта. Никаких уточнений, потому что они уже записаны в файле.

Project CLAUDE.md для группы Python 7-9 лет

Вот файл, который лежит в репе Зухры. Скопируй как стартер — это один из трёх готовых шаблонов pre-build:

./CLAUDE.md · mars-lessons/python-7-9# Mars IT School — Python для группы 7-9 лет
# точка Yunusobod, ментор Зухра

## Кто читает этот код
- Дети 7-9 лет, четверо первый раз видят программирование.
- Язык объяснений: русский. Узбекская латиница допустима
  в именах переменных, если это помогает (`tugma` вместо `button`).
- Терминология: не использовать "функция", "класс", "цикл"
  без объяснения через бытовую аналогию в комментарии.

## Конвенции кода
- **Каждая строка комментируется на русском.** Это не код для прода,
  это код для урока.
- Имена переменных — простые слова или транслит (`schyot`, не `score_counter`).
- Только `pygame` и `random`. Не использовать f-strings,
  list comprehensions, dataclasses.
- Файл всегда начинается с короткого комментария
  «Что эта программа делает» в 1 строку.

## Workflow
- Каждый файл должен запускаться через `python3 file.py` без аргументов.
- Перед коммитом — `python3 -m py_compile file.py` (проверка синтаксиса).
- Не редактировать `.solutions/` — там готовые решения для следующих групп.
Принцип Файл — это «всё, что я бы повторил агенту, если бы у него была амнезия». Возраст детей, язык, конвенции, запреты. Каждое правило конкретное: не «пиши понятно», а «комментарий каждые 2 строки на русском».

Другой ментор — другой контракт

Тот же шаблон «кто читает / конвенции / workflow» — но другая аудитория. Тимур, точка Чиланзар, второй год Python, готовит олимпиадников 12-14. Сравни с Зухриным:

./CLAUDE.md · mars-lessons/python-olymp-12-14# Mars IT School — Python олимп для группы 12-14
# точка Чиланзар, ментор Тимур

## Кто читает этот код
- Дети 12-14, второй год Python, готовятся к Республиканской
  олимпиаде по информатике.
- Язык объяснений: русский. Имена переменных — английские
  (олимпиада на английском, нет смысла учить иначе).
- Знают: функции, циклы, словари, генераторы.
  НЕ знают: классы, dataclasses, async.

## Конвенции кода
- Полная типизация: `def solve(n: int) -> list[int]:` — учим
  читать сигнатуры.
- Сложные алгоритмы — обязательно `doctest` или `assert`
  с примером из условия задачи.
- Решение должно проходить tests в `./tests/` (`pytest`).
- Каждый файл начинается с docstring: задача, ограничения,
  сложность по времени/памяти.
- НЕ использовать сторонних библиотек кроме `math`, `collections`,
  `itertools`, `heapq`, `bisect` — олимпиадный набор.

## Workflow
- Перед коммитом — `pytest -q` (всё зелёное).
- Решения в `./solutions/`, тесты в `./tests/`.

У Зухры — запрет на типизацию и list comprehensions, у Тимура — обязательная типизация. Один шаблон, два разных контракта. Третий шаблон — Шахзод, Sergeli, React/TypeScript 15-17 — лежит рядом в файле starters.md. Возьми один как образец и подгони под свою группу.

Иерархия. Managed, user, project, local.

To'rt qatlam · qaysi qaysisini bosadi

CLAUDE.md живёт в нескольких местах. Каждый уровень — свой scope. Грузятся в порядке «от широкого к узкому» и конкатенируются в контекст. Более узкий scope дополняет предыдущий, а при конфликте обычно побеждает — потому что он появляется в контексте последним и модель видит его как более актуальное.

Managedполитика орг.
/Library/Application Support/ClaudeCode/CLAUDE.md (macOS), /etc/claude-code/CLAUDE.md (Linux). Ставит IT/DevOps. Применяется ко всем. Для Mars MVP — пусто, тут пока ничего.
Userо тебе
~/.claude/CLAUDE.md · твои личные предпочтения для всех проектов. Язык работы, как ты любишь чтобы агент с тобой говорил, что делаешь чаще всего.
Projectо проекте
./CLAUDE.md или ./.claude/CLAUDE.md · командная договорённость. Лежит в git. Возраст детей, конвенции стека, запреты на библиотеки. Самое важное для ментора.
Localтолько ты
./CLAUDE.local.md · личные заметки по конкретному проекту. В .gitignore. Sandbox-URL, тестовые данные, личные напоминания.
Пример приоритета В ~/.claude/CLAUDE.md написано «отвечай по-английски». В ./CLAUDE.md проекта — «отвечай по-русски, объясняем детям». Project ближе → обычно побеждает русский — он последний в контексте. Anthropic честно предупреждает: при конфликтующих инструкциях Claude может выбрать произвольно, гарантии strict compliance нет. Если важно — пишите non-conflicting правила.

@-import: подтягиваем другие файлы

CLAUDE.md умеет включать другие файлы через синтаксис @path. Глубина рекурсии — до 4 уровней. Удобно когда нужно подтянуть README, package.json, конвенции из другого репозитория или личные предпочтения из home.

./CLAUDE.md · фрагмент# Project overview
See @README.md for context and @package.json for npm scripts.

# Git workflow
- следуй @docs/git-instructions.md
- мои личные предпочтения: @~/.claude/my-mars-preferences.md

AGENTS.md — общий файл для разных агентов

Claude Code читает CLAUDE.md, не AGENTS.md. Но AGENTS.md — это формат для разных AI-агентов (на 2026 — Cursor, opencode, MarsCode и др., нужна перепроверка): одним файлом можно конфигурировать несколько инструментов. Если в репе уже есть AGENTS.md, делаем тонкий CLAUDE.md поверх через import:

./CLAUDE.md · поверх AGENTS.md@AGENTS.md

## Claude-specific
- Use plan mode for changes under `src/billing/`.

Тогда Claude читает AGENTS.md как часть своего контракта плюс добавляет свои нюансы. Для Mars: пока MarsCode-fork в активной работе — писать AGENTS.md и делать CLAUDE.md → @AGENTS.md, чтобы оба инструмента смотрели в один файл.

Альтернатива — симлинк (ln -s AGENTS.md CLAUDE.md). Работает, но на Windows требует Developer Mode. Import надёжнее.

Auto memory — что Claude пишет сам

Дополнительно агент сам ведёт заметки в ~/.claude/projects/<project>/memory/MEMORY.md. Build commands, debug insights, паттерны которые он заметил при работе с тобой. Грузятся первые 200 строк (или 25KB) автоматически каждую сессию.

Это дополнение, не замена CLAUDE.md. CLAUDE.md — то, что ты хочешь чтобы агент всегда знал. Auto memory — то, что он сам узнал по ходу работы и решил запомнить. Команда /memory показывает оба и даёт открыть на редактирование.

Упражнение. Попробуй сегодня, 30 минут.

Bugun o'zing qil — 30 daqiqa

Четыре части. Сделай руками в терминале, не читай как теорию. После этого у тебя будет рабочая user+project пара CLAUDE.md и проверенный /memory.

01
Установка и проверка

На Mac/Linux: curl -fsSL https://claude.ai/install.sh | bash. На Windows PowerShell: irm https://claude.ai/install.ps1 | iex. Проверить: claude --version. Первый запуск попросит логин.

~ 5 мин
02
User-level: ~/.claude/CLAUDE.md

Создай файл, скопируй шаблон ниже и подгони под себя. Это то, что Claude знает про тебя в любом проекте.

~/.claude/CLAUDE.md# О себе
Я ментор Mars IT School, точка <X>,
веду <стек> для возраста <Y>.
Язык работы: русский. Английский для технических терминов.

# Стиль работы с агентом
- Объясняй мне план до того как редактировать файлы
  (используй plan mode когда уместно)
- Если не уверен в API/библиотеке — спрашивай, не выдумывай
- Когда пишешь код, который пойдёт детям —
  короткие строки, простые имена, комментарии на русском
- Перед коммитом всегда покажи git diff, не коммить сам

# Что я обычно делаю
- Готовлю стартер-проекты к занятиям
- Проверяю код учеников
- Пишу внутренние скрипты для Mars
~ 10 мин
03
Project-level: ./CLAUDE.md в одной репе

Выбери одну учебную репу. Возьми один из трёх готовых шаблонов в starters.md (Зухра-Python-7-9, Тимур-Python-олимп-12-14, Шахзод-React-15-17) как образец — copy-paste и подгони под свою группу. Минимум три секции: «кто читает этот код», «конвенции», «workflow». Размер — до 200 строк, иначе адекватность падает.

Альтернатива — команда /init в репе: Claude Code сам пройдётся по коду и сгенерирует первичный CLAUDE.md (а если в репе уже есть AGENTS.md — учтёт его содержимое).

~ 15 мин
04
Тест через /memory

Запусти claude в той же папке. В сессии набери /memory — должен увидеть оба файла в списке. Если user-файл не появился — проверь путь (он именно ~/.claude/CLAUDE.md, не ~/.claude/Claude.md).

Дай простой запрос: «добавь функцию приветствия». Убедись, что агент пишет в духе CLAUDE.md (язык, стиль, запреты). Если нет — сделай /memory, открой файлы, посмотри что туда попало.

~ 5 мин
Частая ошибка Сделать CLAUDE.md на 500 строк «на всякий случай». Не работает. Anthropic документация прямо говорит: цель — до 200 строк, иначе модель хуже следует инструкциям. Если разрастается — выноси частное в .claude/rules/ (path-scoped) или в Agent Skill (Модуль 5).

Quiz. Проверь, что зашло.

O'zingni tekshir · 3 ta savol
Прежде чем проверять знания · 30 секунд 1) Что в этом модуле было самое неожиданное для тебя?
2) Где у тебя противоречит привычка из ChatGPT (или другого чата)?
Подумай вслух или запиши — это закрепляет лучше любого quiz'а.
Вопрос 01 · сценарий

В твоём ~/.claude/CLAUDE.md написано «пиши на английском». В ./CLAUDE.md учебной репы — «пиши на русском, объясняем детям». Запускаешь claude в этой папке и просишь добавить функцию. На каком языке агент напишет комментарии?

aНа английском — user-уровень более широкий и имеет приоритет.
bНа русском — project ближе к рабочей папке и появляется в контексте последним.
cСпросит явно, какой язык выбрать в этой репе.
b. Файлы грузятся от широкого к узкому: managed → user → project → local — и конкатенируются в context. Project добавляется после user, поэтому при конфликте обычно побеждает то, что ближе к месту запуска. Anthropic честно говорит: это не enforced правило, при противоречивых инструкциях Claude может выбрать произвольно. Поэтому лучше держать правила non-conflicting.
Вопрос 02 · сценарий

Две недели назад ты сделал в учебной репе ./CLAUDE.md с правилом «не использовать f-strings». Открываешь репу заново, набираешь claude. Какой файл с твоими конвенциями загрузится автоматически в начале сессии?

aНикакой — нужно вручную написать «прочитай CLAUDE.md» в первом сообщении.
bТолько ~/.claude/CLAUDE.md — project-файл подтягивается по запросу.
cОба: ~/.claude/CLAUDE.md и ./CLAUDE.md — они конкатенируются в стартовый контекст сессии.
c. В этом весь смысл «контракта»: ты пишешь файл один раз, дальше Claude Code при каждом запуске обходит дерево от корня вверх и подтягивает CLAUDE.md / CLAUDE.local.md. Команда /memory в сессии показывает, что именно загрузилось — это первый чек если кажется, что агент «забыл» твои правила.
Вопрос 03 · сценарий

В репе Mars уже лежит AGENTS.md — там общие конвенции для MarsCode и Cursor. Ты хочешь добавить одну строчку специально для Claude Code: «используй plan mode перед правками в src/billing/». Что делать?

aСкопировать весь AGENTS.md в новый CLAUDE.md и дописать строку — Claude Code не умеет читать AGENTS.md.
bСоздать тонкий CLAUDE.md с первой строкой @AGENTS.md и Claude-specific правилом ниже — оба инструмента смотрят в один источник.
cПереименовать AGENTS.md в CLAUDE.md и забыть про другие агенты — стандарт у нас один.
b. Claude Code действительно читает только CLAUDE.md, но синтаксис @AGENTS.md подтягивает содержимое импортом — без дублирования. Вариант (a) работает, но создаёт две копии одних и тех же правил, которые быстро разъезжаются. Вариант (c) ломает MarsCode и Cursor, которые ищут именно AGENTS.md. Альтернатива импорту — симлинк ln -s AGENTS.md CLAUDE.md, но на Windows для этого нужен Developer Mode.
Чит-лист Все slash-команды Claude Code на одной страничке — для печати и быстрого референса: _lib/claude-code-cheatsheet.md.

Что дальше. Модуль 4 — context engineering.

Keyingisi — kontekstni boshqarish

У тебя теперь есть постоянная подпись — агент в любом проекте Mars знает, кто ты и для кого пишешь. Следующий обязательный модуль — четвёртый (модули 2-3 идут после фидбэка): про working memory и context engineering. Что такое /compact, почему agent «тупеет» к вечеру долгой сессии, как пользоваться sub-agent'ами как способом изоляции контекста. Это модуль, ради которого курс существует.

Модули 2-3 (Delegation × NTP, Description × Knowledge) и Модуль 5 (свои Sub-agents и Agent Skills) — после пилотного фидбэка от первых менторов.

Как модуль в целом?