$npx -y skills add Arman-Kudaibergenov/1c-ai-development-kit --skill write-planЭтот скилл MUST быть вызван когда есть design.md и нужно разбить доработку на атомарные задачи (2-5 мин) с точными путями файлов и критериями проверки в tasks.md. SHOULD также вызывать как промежуточный шаг между brainstorm и subagent-dev. Do NOT использовать для обсуждения идеи
| 1 | # /write-plan — Детальный план реализации |
| 2 | |
| 3 | Превращает согласованный дизайн в исполняемый список задач для субагентов или последовательного выполнения. |
| 4 | |
| 5 | ## Вход |
| 6 | |
| 7 | Аргумент `$ARGUMENTS` — одно из: |
| 8 | - Путь к design.md: `openspec/changes/my-feature/design.md` |
| 9 | - Название фичи: `my-feature` (ищет `openspec/changes/my-feature/design.md`) |
| 10 | - Ничего — ищет единственный активный change в `openspec/changes/` |
| 11 | |
| 12 | ## Выход |
| 13 | |
| 14 | `openspec/changes/<feature>/tasks.md` — исполняемый чеклист задач. |
| 15 | |
| 16 | --- |
| 17 | |
| 18 | ## Процесс |
| 19 | |
| 20 | ### Шаг 1 — Загрузка контекста |
| 21 | |
| 22 | ``` |
| 23 | rlm_route_context(query="project architecture patterns 1C metadata") |
| 24 | ``` |
| 25 | |
| 26 | Прочитай: |
| 27 | - `openspec/changes/<feature>/design.md` — согласованный дизайн |
| 28 | - `openspec/project.md` — если есть, соглашения проекта |
| 29 | - Связанные XML/BSL файлы из design.md через Grep/Glob |
| 30 | |
| 31 | ### Шаг 2 — Декомпозиция на задачи |
| 32 | |
| 33 | **Правила декомпозиции:** |
| 34 | - Каждая задача = 2-5 минут работы субагента |
| 35 | - Одна задача — одна атомарная операция (создать объект / написать модуль / добавить форму) |
| 36 | - Зависимости явные: «Задача 3 требует завершения Задачи 1» |
| 37 | - Порядок: сначала метаданные → потом BSL → потом формы → потом интеграции → валидация |
| 38 | |
| 39 | **Типовые категории задач для 1С:** |
| 40 | |
| 41 | | Категория | Примеры задач | |
| 42 | |-----------|---------------| |
| 43 | | Метаданные | Создать справочник, добавить реквизит, создать регистр | |
| 44 | | Модули | Написать ОбщийМодуль, ObjectModule, ManagerModule | |
| 45 | | Формы | Создать форму, добавить элементы, написать модуль формы | |
| 46 | | Роли | Создать роль, настроить права | |
| 47 | | Подсистемы | Добавить объекты в подсистему | |
| 48 | | Интеграции | Подписки на события, регистрация в БСП | |
| 49 | | Валидация | Проверить синтаксис, обновить БД | |
| 50 | |
| 51 | ### Шаг 3 — Написание tasks.md |
| 52 | |
| 53 | Сохрани в `openspec/changes/<feature>/tasks.md`. |
| 54 | |
| 55 | #### Формат заголовка |
| 56 | |
| 57 | ```markdown |
| 58 | # <Название фичи> — План реализации |
| 59 | |
| 60 | > **Для субагента:** используй `/subagent-dev openspec/changes/<feature>/tasks.md` |
| 61 | > для выполнения задач по одной с ревью между ними. |
| 62 | |
| 63 | **Цель:** <одно предложение — что строим> |
| 64 | |
| 65 | **Дизайн:** `openspec/changes/<feature>/design.md` |
| 66 | |
| 67 | **Порядок выполнения:** последовательно, если не указано иное |
| 68 | |
| 69 | --- |
| 70 | ``` |
| 71 | |
| 72 | #### Формат каждой задачи |
| 73 | |
| 74 | ```markdown |
| 75 | ## Задача N: <Глагол + существительное> |
| 76 | |
| 77 | **Статус:** `[ ]` |
| 78 | |
| 79 | **Зависимости:** Задача X (или «нет») |
| 80 | |
| 81 | **Что делаем:** |
| 82 | <1-3 предложения — суть задачи> |
| 83 | |
| 84 | **Файлы:** |
| 85 | - Создать: `src/Catalogs/МойСправочник/` |
| 86 | - Изменить: `src/CommonModules/МойМодуль/Module.bsl` |
| 87 | - Скилл: `/meta-compile` или `/form-compile` и т.д. |
| 88 | |
| 89 | **Шаги:** |
| 90 | 1. <конкретное действие — не «написать код», а «добавить реквизит Статус типа Перечисление.СтатусыЗаказа»> |
| 91 | 2. <следующий шаг> |
| 92 | 3. ... |
| 93 | |
| 94 | **Проверка:** |
| 95 | - [ ] <критерий 1 — конкретный и проверяемый> |
| 96 | - [ ] <критерий 2> |
| 97 | - [ ] Синтаксис BSL проверен через `1c-syntax-checker` |
| 98 | |
| 99 | **Коммит:** `feat: <краткое описание>` |
| 100 | ``` |
| 101 | |
| 102 | ### Шаг 4 — Финальная задача: валидация |
| 103 | |
| 104 | Последняя задача в плане всегда: |
| 105 | |
| 106 | ```markdown |
| 107 | ## Задача N: Финальная валидация |
| 108 | |
| 109 | **Статус:** `[ ]` |
| 110 | |
| 111 | **Зависимости:** все предыдущие задачи |
| 112 | |
| 113 | **Шаги:** |
| 114 | 1. Запустить `/cf-validate` или `/epf-validate` (по типу объекта) |
| 115 | 2. Если нужно обновление БД: `/db-update` |
| 116 | 4. Проверить критерии приёмки из design.md |
| 117 | |
| 118 | **Проверка:** |
| 119 | - [ ] Конфигурация валидна |
| 120 | - [ ] Все критерии из design.md выполнены |
| 121 | ``` |
| 122 | |
| 123 | ### Шаг 5 — Предложение режима выполнения |
| 124 | |
| 125 | После сохранения tasks.md предложи два варианта: |
| 126 | |
| 127 | ``` |
| 128 | План сохранён: openspec/changes/<feature>/tasks.md |
| 129 | Задач: N |
| 130 | |
| 131 | Как выполнять? |
| 132 | |
| 133 | 1. /subagent-dev openspec/changes/<feature>/tasks.md |
| 134 | — Субагенты на каждую задачу + ревью между задачами |
| 135 | — Лучше для сложных доработок (3+ задачи, несколько модулей) |
| 136 | |
| 137 | 2. /openspec-apply <feature> |
| 138 | — Последовательное выполнение в текущей сессии |
| 139 | — Лучше для простых задач (1-3 задачи, один объект) |
| 140 | ``` |
| 141 | |
| 142 | **Не запускать автоматически** — пользователь выбирает сам. |
| 143 | |
| 144 | --- |
| 145 | |
| 146 | ## Правила качества плана |
| 147 | |
| 148 | - **Точные пути** — не `src/modules/`, а `src/CommonModules/УправлениеЗаказами/Module.bsl` |
| 149 | - **Точные скиллы** — указывай какой скилл использовать для каждой задачи |
| 150 | - **Проверяемые критерии** — не «код работает», а «форма открывается, список заполняется» |
| 151 | - **YAGNI** — не планировать то, чего нет в design.md |
| 152 | - **Без лишних коммитов** — один коммит на задачу, не на каждый файл |
| 153 | - **BSL всегда через checker** — каждая задача с BSL кодом включает проверку синтаксиса |
| 154 | |
| 155 | ## Анти-паттерны |
| 156 | |
| 157 | - ❌ Задача «Реализовать весь модуль» — слишком большая, разбить |
| 158 | - ❌ Проверка «проверить что всё работает» — непроверяемо, конкретизировать |
| 159 | - ❌ Задачи без указания файлов |
| 160 | - ❌ Пропустить задачу финально |