Начать задачу по этому проекту с правильного яруса входа — определить класс задачи, прочитать ровно то, что ей нужно, описать область, если база о ней молчит, спроектировать правку до первой строки и собрать «что придётся тронуть» одним вызовом инструмента. Использовать в начале любой работы с кодом этого репозитория: анализ, объяснение, багфикс, рефактор, новая функциональность, удаление.
Installs into .claude/skills of the current project.
Sponsors
SSkills DirectorySkills Directory
Know which skills are safe — weekly.
SSkills DirectorySkills Directory
Is that skill safe to install?
Are you the author of Task?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/igor-lx-task)
---
name: task
description: Начать задачу по этому проекту с правильного яруса входа — определить класс задачи, прочитать ровно то, что ей нужно, описать область, если база о ней молчит, спроектировать правку до первой строки и собрать «что придётся тронуть» одним вызовом инструмента. Использовать в начале любой работы с кодом этого репозитория: анализ, объяснение, багфикс, рефактор, новая функциональность, удаление.
user-invocable: true
---
# Начало задачи: ярус входа
Полный вход в проект — тысячи строк доктрины; сколько именно у этого
проекта, записано в фактах, раздел «Цена ярусов входа». Для рефактора слоя
это дёшево, для вопроса про одну константу — абсурдно. Этот скилл задаёт, что
читать под конкретную задачу, и не даёт ни занизить ярус, ни завысить.
Что читать под каждый класс, записано в доктрине — `.claude/rules/loop.md`,
раздел «Соразмерность: что читать под задачу». Здесь эта таблица **не
пересказывается**: прежде скилл держал свою копию, и она разошлась с
доктриной — у объяснения узла копия велела читать «сам файл и его тест», а
доктрина — всю очерченную область и документы. Здесь — порядок и команды,
которыми строка таблицы исполняется.
## Шаг 1. Определи класс задачи
Класс определяется **по тому, что будет в ответе**, а не по глаголу, которым
попросили. Признак: в ответе есть хотя бы одно утверждение о том, как код себя
ведёт, что означает или верно ли сделан. При наличии такого утверждения класс —
не A, независимо от формулировки просьбы.
| Класс | Признак |
| --- | --- |
| **A. Расположение** | ответ — «где лежит», «что уже решено», без утверждений о поведении |
| **B. Объяснение узла** | ответ описывает поведение одного файла или хука |
| **C. Багфикс** | место известно, поведение меняется точечно |
| **D. Рефактор** | код переезжает, поведение обязано остаться прежним |
| **E. Новое** | появляется файл, ветка, проп или модуль |
| **F. Удаление** | уходит узел, возможность, проп или экспорт |
Род задачи — вторая ось, и она про судьбу найденного: у работы есть дифф
кода — новое, правка, рефактор, удаление, тест — чинить, в том числе место,
записанное пунктом долга перехода; диффа кода нет — назвать и предложить
(`loop.md`, «чинить или назвать»).
## Шаг 2. Прочитай строку своего класса — командами
| Класс | Команды |
| --- | --- |
| **A** | раздел «Проект на одной странице» в `.context/00-map.md`, затем нужный раздел карты |
| **B** | `node .claude/tools/graph.mjs brief <путь>` — и **всё, что он очертил**, целиком и дословно: сам файл, то, чем он пользуется, то, что пользуется им, тесты области, дверь папки и документ по её имени |
| **C** | то же плюс `node .claude/tools/graph.mjs plan <путь>` и записи `07-invariants.md`, `09-decisions.md` по области |
| **D** | полный вход (`CLAUDE.md`, `01-facts.md`) плюс `plan`, `blast` и `levels` по узлу |
| **E** | полный вход плюс `.context/10-idioms.md`, раздел «Как заводится новый узел» в `.claude/rules/code.md`, `plan` и `levels` по точке встраивания и `brief` по каждому предполагаемому импорту |
| **F** | полный вход плюс `plan`, `blast` и `levels` по удаляемому и раздел «Как убирается узел» в `.claude/rules/code.md` |
Ярус занижать нельзя: если по ходу выяснилось, что задача шире выбранного
класса, недостающее дочитывается и это называется в отчёте. Завышать тоже
нельзя: прочитанное сверх необходимого результата не даёт, и завышение
называется в отчёте так же.
## Шаг 3. База молчит об области — сначала описать область
Инструменты знания отвечают из базы. Досье печатает «записей нет», «долг базы
про этот файл» либо прогон — баннер «знание о проекте не собрано»: значит
область базе неизвестна, и работа по ней пойдёт вслепую. Переход, который
собрал бы знание целиком, зовёт разработчик; до него — первым делом
петля, шаг 4: описать прочитанную область в базе (карта, состояние, порядок,
связи, сценарий, тесты) и документации, а задачу делать после.
Найдено работой на стенде: задачи, сделанные до заполнения базы, проверили
только механику — досье и план отвечали из пустоты, и всё, что база должна
была остановить, не останавливалось ничем.
## Шаг 4. C, D, E, F — проект правки до первой строки
```
node .claude/tools/graph.mjs plan <путь>
```
Отдаёт сразу: радиус прямой и транзитивный, парную копию (её правят в той же
правке), тесты, обязанные покраснеть, и те, что гоняют узел через другие,
записи базы под обновление, документы, публичную поверхность. Это заменяет
связку `brief` + `blast` + чтение карты руками.
```
node .claude/tools/graph.mjs levels <путь>
```
Отдаёт факты узла, слоя и приложения, среди которых правке жить: что узел
делает по карте, его поверхность, состояние, слой и направление рёбер, циклы,
источники истины и их писатели. Правка, безупречная в строках, ломает именно
это — второй источник у факта, вторая ответственность у узла, ребро против
слоёв, — и заметить это до письма дешевле, чем после.
Замер читается **планкой**, а не к сведению: радиус судит `I1`, потребителей —
`I2`, общий ресурс — `C6-бис`, изменённое поведение соседа — `J9-тер`, второй
источник истины — `A6`, ребро между слоями — `A5`. Имена, уходящие наружу через
вход пакета, — изменение контракта: это развилка разработчика, и ставится она
вопросом до правки. Не сошлось — перепроектировать сейчас: замысел правится
дешевле написанного.
Проект правки называется в отчёте первым пунктом работы: что меняется, где,
какие тесты обязаны покраснеть, какие записи и документы уйдут в правку.
## Шаг 5. Помни, чем работа закончится
- правка кода — тесты в том же заходе, J1 «Тест обязан уметь падать» на
каждом (сломай, убедись, что краснеет именно он);
- **свод по планке — режим `bar`** на конечном виде правки, до прогона
(на задаче чтения — `bar <путь>`, адрес-папка — вся папка): модель
предмета по уровням, сперва чтение — страницы `bar-read`: критерии с формами,
код предмета, срезы соседей, слово каждой страницы в протокол, — затем
свидетели — фраза каждой единицы по коду одним
предложением и ответ по каждому объявлению, — затем исход по каждому
живому критерию: признак, видимый текстом, называют номером строки; ядро узла по
каждой тронутой единице переноса, ядро слоя по каждому слою, соседей
области одной строкой, — база и документация по каждому файлу области, итог
по каждому предмету, печать. Область та же, что прочитана, и найденное в ней
на правке чинится; новое состояние и новый файл сверяют с каталогом
проекта, а потребителей правленого за областью называет радиус — о
совместимости отвечают с опорой на него. Не сошлось — переделать. В
отчёте — отпечаток печати, итог по уровням и каждая находка;
- **попутные находки** — что попалось по дороге в коде, тестах, базе, правилах
или в инструменте, на работе с диффом кода чинится этим же заходом и
называется в отчёте отдельно; на задаче чтения — называется и предлагается.
Чинится **класс**, а не пример: правка под один случай оставляет остальные
случаи того же класса без изменений. Машинной проверки у этого пункта нет:
находку, которую не записали, не обнаруживает ни одна сверка;
- **БД** (`.context/**`, «что и где» для следующей сессии) и **документация**
(«почему» для человека) правятся вместе с кодом и подтверждаются **порознь,
пофайлово, в протоколе свода** — таблица «База и документация»: `правлено` с
адресом либо `не требуется` с причиной. Пустая клетка не даёт печати, а
печати нет — нет и закрытия. Кодом здесь считается всё: модули, тесты,
стили. **Прибавилась возможность, видная снаружи, — строка в витрине**,
словами продукта, а не кода;
- **`node .claude/tools/graph.mjs tested`** перед отчётом: он и спросит про тесты
тронутых файлов, про записи базы и соседей, про документацию, про публичную
поверхность и про то, задета ли область смоука;
- **мутационный прогон по новым и изменённым файлам**, если правился код:
узел закрывается в том контексте, в котором писались его тесты, и печать
свода на правке файла, до которого доходят тесты, без свежего замера
«чисто» по `J10` не ставит. Долг и готовую команду показывает
`node .claude/tools/graph.mjs mutated`;
- **`npm run check`** — весь обязательный набор одной цепочкой: типы, линт,
формат, тесты, сверка базы;
- **`/code-review` на правку узла до коммита** — прогон с кодом возврата ноль
означает «поведение не сломано», а не «узел устроен верно»;
- **`/run`, если правка видна на экране** — ни база, ни тесты, ни смоук не
отвечают, как это выглядит и ощущается;
- широкое сметание («найди все места, где…») — агентом `Explore`, чтобы выдача
не оседала в основном контексте. Решает разработчик, но **предлагаешь ты**:
форма опознаётся по трём условиям сразу — десятки файлов, на выходе нужен
список, а не дословный текст, и где смотреть заранее неизвестно. Не выполнено
одно — обычный поиск дешевле, и предлагать нечего;
- `commit`, `push`, `deploy` — только по прямой команде.
## Правило остановки
Поиск и сверка прекращаются, когда следующий шаг перестал менять ответ. Третий
источник подряд повторяет известное, уточнение меняет формулировку, но не
решение, — значит хватит. Продолжать после этого не тщательность, а работа,
результат которой выбрасывается.