English | Русский
Это пошаговое руководство поможет вам создать ваш первый атом спецификации по методологии Atomic Spec.
Для работы с Atomic Spec вам понадобятся всего два инструмента:
- Текстовый редактор — любой, поддерживающий Markdown (VS Code, Sublime Text, vim и т.д.)
- Git — для версионирования атомов и прохождения пайплайна
Никаких специальных фреймворков, генераторов или CLI-утилит не требуется. Методология работает на уровне файлов и соглашений.
Создайте корневой каталог для спецификаций в вашем проекте:
mkdir -p specs/
Рекомендуемая структура:
specs/
domain-a/
SPEC-001.md
SPEC-002.md
domain-b/
SPEC-010.md
Каждый домен получает свой подкаталог. Имя каталога соответствует ограниченному контексту (Bounded Context) вашей предметной области.
Скопируйте файл шаблона атома в нужный каталог:
cp templates/atom-template.md specs/domain-a/SPEC-001.md
Или создайте файл вручную со следующей структурой:
---
id: SPEC-001
type: feature
title: ""
parent: null
children: []
supersedes: null
see-also: []
emits: []
consumes: []
actors: []
tags: []
open-questions: []
status: draft
implementation: none
verification: none
owners:
analyst: ""
developer: ""
tester: ""
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
## Intent
## Domain Rules
## Acceptance Criteria
## Decision Matrix (DMT)
## Constraints
## Open Questions
## Decision LogРоль Аналитика — первая в пайплайне. Вы заполняете следующие секции:
Заполните метаданные в YAML-блоке:
id— уникальный идентификатор (например,SPEC-001)type— тип атома (feature,rule,constraint,event,model)title— краткое название на понятном бизнесу языкеactors— кто участвует в сценарии (например,[Покупатель, Система])emits/consumes— события, которые этот атом порождает или потребляетstatus: draft— начальный статус
Опишите суть атома в 1-3 предложениях. Без технических деталей. Только бизнес-смысл.
## Intent
Покупатель может отменить заказ в течение 30 минут после оформления,
если заказ ещё не передан в доставку. При отмене средства возвращаются
на исходный способ оплаты.Перечислите правила предметной области. Каждое правило имеет уникальный ID и описание последствий нарушения.
## Domain Rules
- **DR-001**: Отмена возможна только в статусе `placed` или `confirmed`.
Нарушение: система отклоняет запрос с ошибкой `ORDER_NOT_CANCELLABLE`.
- **DR-002**: Время на отмену — 30 минут с момента `order.placed`.
Нарушение: система отклоняет запрос с ошибкой `CANCELLATION_WINDOW_EXPIRED`.Напишите минимум один Gherkin-сценарий. Сценарии должны быть технологически нейтральными.
## Acceptance Criteria
**AC-001**: Успешная отмена заказа
Given заказ в статусе "placed" создан 10 минут назад
When Покупатель запрашивает отмену заказа
Then заказ переходит в статус "cancelled"
And средства возвращаются на исходный способ оплаты
**AC-002**: Отмена после истечения окна
Given заказ в статусе "placed" создан 40 минут назад
When Покупатель запрашивает отмену заказа
Then система отклоняет запрос с ошибкой "CANCELLATION_WINDOW_EXPIRED"Укажите нефункциональные требования: производительность, безопасность, идемпотентность и др.
Зафиксируйте открытые вопросы. Блокирующие вопросы должны быть закрыты до прохождения гейта.
Gate A — это контрольная точка между Аналитиком и Разработчиком. Убедитесь, что:
- Intent заполнен (1-3 предложения, без технических деталей)
- Есть минимум одно доменное правило с ID и последствием нарушения
- Написан минимум один Gherkin-сценарий
- Акторы указаны в frontmatter и в AC
- События (emits/consumes) заполнены
- В Intent и Domain Rules нет технических решений
- Все блокирующие Open Questions закрыты
- Указан тип изменения (change type)
- На каждый happy-path есть хотя бы один негативный AC
Создайте PR с веткой spec/SPEC-001 и пройдите ревью.
После прохождения Gate A Разработчик:
- Заполняет секции Tech Spec, Platform API, Implementation Notes
- Пишет код реализации
- Проходит Gate B
После прохождения Gate B Тестировщик:
- Заполняет секции Test Plan, Platform Tests
- Строит Coverage Matrix (AC -> Test Case -> DR)
- Проверяет покрытие всех AC и DR тестами
- Проходит Gate C
После прохождения Gate C атом считается завершённым: status: active, implementation: done, verification: passed.