# Project CLAUDE.md — три стартера для Mars

Готовые шаблоны `./CLAUDE.md` под разные группы Mars IT School. Copy-paste в корень репозитория, подгони под свою точку / своих учеников. Дальше Claude Code (или MarsCode) подтянет файл автоматически при `claude` в этой папке.

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

Размер — до 200 строк суммарно. Разрастается → выноси частное в `.claude/rules/` (path-scoped) или в Agent Skill (Модуль 5).

---

## 1. Зухра · Python 7-9 лет (Yunusobod)

Первый год, дети первый раз видят код. Pygame + базовый Python без «взрослого» синтаксиса.

```markdown
# 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. Тимур · Python олимп 12-14 (Чиланзар)

Второй год, готовка к Республиканской олимпиаде по информатике. Полная типизация, doctest, олимпиадный набор библиотек.

```markdown
# 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/`.
- Условия задач в `./problems/<topic>/<name>.md` — не редактировать,
  это копия с CodeForces / e-olymp.
```

---

## 3. Шахзод · React/TypeScript 15-17 (Sergeli)

Проектный год, делают портфолио-сайты. TypeScript strict, Tailwind only, no inline styles.

```markdown
# Mars IT School — React/TS проектный год для группы 15-17
# точка Sergeli, ментор Шахзод

## Кто читает этот код
- Старшие школьники 15-17, делают портфолио-проекты для поступления.
- Язык объяснений: русский, технические термины — английские
  (`state`, `props`, `hook` — без перевода).
- Знают: HTML/CSS, JS базово, React хуки `useState`/`useEffect`.
  НЕ знают: контекст, reducers, server components, suspense.

## Конвенции кода
- TypeScript strict — без `any`. Если тип неизвестен — `unknown`
  и narrowing.
- Только функциональные компоненты + hooks. Class components
  не используем.
- Tailwind utility classes для всех стилей. **Никаких** inline `style={...}`
  и отдельных `.css` файлов кроме `globals.css`.
- File naming: `kebab-case` для файлов (`user-card.tsx`),
  `PascalCase` для компонентов (`UserCard`).
- Компонент в одном файле, экспорт default. Хуки — отдельный файл
  `use-xxx.ts`.

## Workflow
- `npm run dev` для разработки, `npm run typecheck` перед коммитом
  (всё зелёное).
- `npm run build` должен проходить без warnings.
- Не коммитить `node_modules/`, `.env.local`, `dist/`.
- Папки: `src/components/`, `src/hooks/`, `src/pages/`, `src/lib/`.
```

---

## Как использовать

1. Скопируй блок под свою группу.
2. Создай файл `CLAUDE.md` в корне учебной репозитория.
3. Подгони под свою точку / своё имя / специфику группы.
4. Запусти `claude` в этой папке → проверь через `/memory`, что файл загрузился.
5. Дай тестовый запрос («добавь функцию приветствия» / «реши простую задачу») — убедись, что агент следует конвенциям.

Если разрастается за 200 строк — выноси частное в `.claude/rules/<topic>.md` (path-scoped правила) или в Agent Skill (это Модуль 5 курса).
