framework/skills/spec-writing/technical-design-standard/SKILL.md
Стандарт технического дизайна для задач разработки 1С. Задаёт структуру technical-design.md, правила заполнения секций (MUST/SHOULD/MAY), чеклист качества и guidance по уровню детализации. Используется архитектором (Phase 2) и ревьюером (scope=arch).
npx skillsauth add steelmorgan/1c-agent-based-dev-framework technical-design-standardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Технический дизайн (technical-design.md) — мост между спецификацией (ЧТО) и декомпозицией задач (КАК). Фиксирует архитектурные решения, модульную структуру, контракты и сквозные концепции. Расширяет high-level секцию Technical Design из спецификации.
Основа: Google Design Docs, arc42, MADR 4.0, Stripe RFC (Drawbacks), C4 Model.
Технический дизайн MUST быть написан на русском языке — заголовки секций, описания, обоснования, таблицы. Исключение — идентификаторы кода и метаданных (имена модулей, реквизитов, переменных, сигнатуры BSL), а также устоявшиеся термины (ADR, RFC 2119, C4, MUST/SHOULD/MAY).
| Тип задачи | Нужен ТД | Обоснование | |------------|----------|-------------| | Новая функциональность (средняя/сложная) | MUST | Фиксирует архитектуру до начала разработки | | Доработка типовой конфигурации с изменением структуры | MUST | Нужно обосновать выбор подхода (расширение vs конфигурация) | | Интеграция с внешней системой | MUST | Контракты и data flow критичны | | Простое исправление бага | MAY | Только если баг требует архитектурных изменений | | Рефакторинг с изменением модульной структуры | SHOULD | Нужна прозрачность по границам изменений | | Внешняя обработка (EPF) с формой | SHOULD | Структура метаданных и UI требуют проектирования. MUST если EPF включает фоновые операции, права доступа или обмен данными |
# Технический дизайн: [Краткое название]
| Поле | Значение |
|------|----------|
| Спецификация | [SPEC-NNN](ссылка на spec.md) |
| Дата | YYYY-MM-DD |
| Статус | Черновик / Ревью / Утверждён |
| Explorer | [explorer-context.md](ссылка) |
| Декомпозиция | [task-breakdown.json](ссылка) |
| Каталог ADR | [task_dir/adr/](ссылка) |
| § | Секция | Обязательность | Условие | |---|--------|---------------|---------| | 1 | Обзор | MUST | Всегда | | 2 | Стратегия решения | MUST | Всегда | | 3 | Структурные блоки | MUST | Всегда | | 4 | Данные и метаданные | MUST | Всегда | | 5 | Сквозные концепции | SHOULD | MUST если задача затрагивает >2 модулей или меняет сквозное поведение | | 6 | Ключевые решения | MUST | Всегда (минимум 1 решение) | | 7 | Риски и недостатки | MUST | Всегда | | 8 | Допущения и открытые вопросы | SHOULD | MUST если есть неопределённости, блокирующие часть дизайна | | 9 | Миграция и откат | Conditional MUST | MUST если изменяются существующие объекты метаданных или требуется миграция данных | | 10 | Трассируемость | MUST | Всегда |
Правило: если секция неприменима к задаче — указать N/A с краткой причиной. Не удалять секцию.
Что должно быть достигнуто техническим решением. Формулировки через RFC 2119 (MUST/SHOULD/MAY) не нужны — они уже в спецификации. Здесь — технические цели дизайна.
Что дизайн явно НЕ решает. Самая ценная секция для предотвращения scope creep. Каждый non-goal — это осознанное исключение.
Текущее состояние системы (TOGAF Baseline). Какие модули/объекты существуют, как работают сейчас. Ссылка на explorer-context.md как базовый источник — не дублировать, а расширять только там, где нужно для дизайна.
Ограничения, влияющие на архитектуру:
Высокоуровневое описание выбранного подхода (2–3 абзаца):
Это стратегия, не детали. Детали — в §3 и §4.
Система в контексте внешних систем и пользователей. Для интеграционных задач — обязательная диаграмма (текстовая или ASCII).
Для задач внутри одной конфигурации — MAY быть кратким описанием затронутых подсистем.
Затронутые и новые модули, их связи:
| Модуль | Тип | Новый/Существующий | Ответственность |
|--------|-----|--------------------|-----------------|
| ОМ.РаботаСКонтрагентами | Общий модуль | Существующий (модификация) | Валидация, получение данных |
| МодульОбъекта.Контрагенты | Модуль объекта | Существующий (модификация) | Обработчики записи |
Для сложных задач — текстовая схема вызовов между модулями.
Сигнатуры ключевых процедур/функций с контрактами:
// Функция ПроверитьИНН(ИНН: Строка): Булево
//
// Параметры:
// ИНН — Строка(10) или Строка(12), не пустая
// Возврат:
// Истина — если ИНН корректен по алгоритму проверки контрольных разрядов
// Исключение:
// Если ИНН пустая строка — ВызватьИсключение
// Директива: &НаСервереБезКонтекста
Таблица всех затронутых объектов метаданных:
| Объект | Тип | Новый/Сущ. | Изменения | DSL |
|--------|-----|-----------|-----------|-----|
| Справочник.Контрагенты | Справочник | Сущ. | +Реквизит ИНН (Строка 12) | — |
| РС.ИсторияИзменений | Регистр сведений | Новый | Период, Объект, Автор, Описание | — |
| Форма.ФормаЭлемента | Управляемая форма | Новый | Поле ИНН, кнопка Проверить | [form-dsl.json](artifacts/form-dsl.json) |
| Роль.МенеджерПродаж | Роль | Новый | Права на справочник и регистр | [role-dsl.json](artifacts/role-dsl.json) |
Правило по JSON DSL:
task_dir/artifacts/ MUST; inline-фрагмент в дизайне MAY (только ключевые элементы для понимания архитектуры)Как данные движутся через систему для ключевых сценариев:
Пользователь → Форма.Контрагент
→ МодульОбъекта.ПриЗаписи()
→ ОМ.РаботаСКонтрагентами.ПроверитьИНН()
→ РС.ИсторияИзменений.Запись
Для интеграций — data flow между системами с указанием протоколов и форматов. Для каждой интеграционной точки SHOULD указать NFR-контракт: timeout, retry-политика, idempotency, аутентификация, маппинг ошибок.
Сквозные решения, пронизывающие все модули. SHOULD указать решение по каждому применимому аспекту:
| Аспект | Решение | Обоснование | |--------|---------|-------------| | Обработка ошибок | Попытка/Исключение с ЗаписьЖурналаРегистрации | coding-standards правило 18 | | Логирование | ЖР через БСП (ЗаписьЖурналаРегистрации) | ssl-patterns: стандартный механизм | | Права доступа | Роль через xml-gen, RLS не требуется | Данные не содержат разграничения по организациям | | Транзакции | НачатьТранзакцию/Попытка для записи в регистр | coding-standards правило 18 | | Клиент/Сервер | &НаСервереБезКонтекста для бизнес-логики | coding-standards правило 3 | | Использование БСП | ОбщегоНазначения.СообщитьПользователю для валидации | ssl-patterns: проверка заполнения | | Платформенные ограничения | [описать если есть workarounds] | — |
Если все аспекты стандартны и не требуют специальных решений — указать: «Используются стандартные паттерны, см. coding-standards и ssl-patterns. Специальных решений нет.»
Краткая таблица архитектурных решений:
| # | Решение | Варианты | Выбор | Обоснование | ADR |
|---|---------|---------|-------|-------------|-----|
| 1 | Хранение истории | A) ЖР, B) Отдельный регистр | B | Нужны запросы и отчёты по истории | [ADR-001](adr/ADR-001.md) |
| 2 | Валидация ИНН | A) Свой алгоритм, B) Внешний сервис | A | Нет зависимости от сети | — (тривиальное) |
Правило: для каждого неочевидного решения (≥2 альтернативы с разными trade-offs) — отдельный ADR-файл в task_dir/adr/.
Формат ADR (MADR 4.0 lean):
# ADR-NNN: [Название решения]
Status: Accepted
Date: YYYY-MM-DD
## Context
[Почему возник вопрос]
## Decision Drivers
- [Фактор 1]
- [Фактор 2]
## Considered Options
1. [Вариант A] — описание
2. [Вариант B] — описание
## Decision Outcome
Выбран вариант [X].
### Consequences
- Good: [что улучшится]
- Bad: [что ухудшится]
### Confirmation
[Как проверить, что решение реализовано корректно]
Что станет хуже, сложнее, дороже. Если drawbacks пуст — дизайн не проанализирован достаточно.
| # | Риск | Вероятность | Влияние | Mitigation |
|---|------|-------------|---------|------------|
| 1 | Производительность запроса при >100K записей | Средняя | High | Индекс + лимит выборки |
Допущения — принятые при неопределённости. Не блокируют дизайн, но могут повлиять на реализацию:
- Предполагаем, что максимальное кол-во контрагентов < 500K
- БСП версии 3.1+ (иначе нужен fallback для ДлительныеОперации)
Открытые вопросы — оставшиеся без ответа. Не блокируют архитектуру, но требуют уточнения до или во время реализации.
Условие: секция MUST если изменяются существующие объекты метаданных или требуется миграция данных. Иначе — N/A: новые объекты, миграция не требуется.
Матрица связи: требование из спецификации → секция дизайна → задача из декомпозиции.
| Spec Requirement | Design Section | Task IDs |
|------------------|---------------|----------|
| MUST-1: Валидация ИНН | §3.3 Interfaces, §4.1 Metadata | T-001, T-003 |
| MUST-2: История изменений | §4.1 Metadata, §4.2 Data Flow | T-002 |
| SHOULD-1: Отчёт по истории | §4.1 Metadata (SKD) | T-005 |
Правило: каждый MUST из спецификации MUST быть покрыт хотя бы одной секцией дизайна и одной задачей. SHOULD — SHOULD быть покрыт.
Чеклист для ревьюера (scope=arch):
task_iddepends_on валидны и не содержат цикловspec_refs ссылаются на существующие разделы спецификацииtask_type корректен (code/test/migration/docs/analysis/architecture)done_criteria проверяемы и конкретны| Ошибка | Последствие | |--------|------------| | Non-goals пуст | Scope creep | | Drawbacks пуст | Ревьюер не может оценить trade-offs | | JSON DSL полностью inline | Документ раздувается, теряется обзор → DSL в artifacts/ | | Дублирование спецификации | Нарушение single source of truth | | Traceability отсутствует | Невозможно проверить покрытие требований | | Все секции заполнены на простой задаче | Формальный overhead → использовать N/A | | Constraints не указаны | Несовместимый подход (EDT vs Designer, версия БСП) |
Входные: spec-standard. Выходные: task-breakdown-*. Критерии: coding-standards, ssl-patterns. Генерация метаданных: xml-generation.
depends_on:
tools
Diagnostics for Vanessa Automation runs. Use when a feature scenario failed, artifacts were not created, or you need to classify a failure after launch.
tools
Creating and refining Vanessa Automation feature scenarios based on real project requirements. Use when you need to write or update a scenario test, not just run it.
tools
--- name: v8-session-manager description: Use when working with the 1С session manager (v8-session-manager) - launch, configuration, connecting 1С clients, reading session_list, calling proxied MCP-tools from 1С extensions, diagnostics. Triggers: mention of `v8-session-manager`, `session_list`, 1С extension MCP showcase, error “no active sessions” / “session_id required”, connecting a client to the manager via `mcpMode=ws`. provides_capabilities: # Built-in manager tools — always available whi
tools
Use when Codex needs to manage v8-runner on local 1C projects through the CLI: configure v8project.yaml, initialize infobases or EDT workspaces, build sources from Designer or EDT, run syntax checks and tests, dump infobase changes, convert source formats, load or export artifacts, launch 1C clients, or choose safe 1C automation command sequences.