vanessa-authoring

$npx mdskill add SteelMorgan/1c-agent-based-dev-framework/vanessa-authoring

Creates and updates Vanessa Automation feature scenarios from project requirements, focusing on authoring rather than execution.

  • Helps write or refine scenario tests based on real project specifications and business cases.
  • Integrates with Vanessa Automation libraries and project scenarios, using vanessa-scenario-policy for requirements.
  • Follows a structured algorithm to define user context, find steps, and draft smoke scenarios.
  • Presents results as Gherkin-formatted feature files with context, steps, and tags for clarity.

SKILL.md

.github/skills/vanessa-authoringView on GitHub ↗
---
name: vanessa-authoring
description: Создание и доработка feature-сценариев Vanessa Automation по реальным требованиям проекта. Используй, когда нужно написать или обновить сценарный тест, а не просто запустить его.
---

# Авторинг сценариев Vanessa Automation

## Алгоритм написания

1. Определи источник требования — спецификация или бизнес-кейс (`vanessa-scenario-policy`).
2. Определи **под каким пользователем** выполняется сценарий (см. «Пользовательский контекст»).
3. Найди подходящие шаги: сначала в библиотеке Vanessa, затем в сценариях проекта.
4. Напиши один smoke-сценарий: открыть → одно действие → одно наблюдаемое следствие.
5. Если шага нет — пометь `# unknown_step_candidate`, не изобретай BSL-шаг.
6. Передай сценарий в `vanessa-run` для прогона.

---

## Анатомия feature-файла

```gherkin
# language: ru
# encoding: utf-8

@тег-фичи
Функциональность: Краткое название

Как <роль пользователя>
Я хочу <что сделать>
Чтобы <бизнес-польза>

Контекст:
    Дано Я запускаю тест-клиент для пользователя "Логин" с паролем "Пароль" или подключаю уже существующий

Сценарий: Название сценария
    Когда <действие>
    И    <следующее действие>
    Тогда <ожидаемый результат>
```

- `Контекст:` выполняется **перед каждым** сценарием файла.
- Ключевые слова шагов: `Дано`, `Когда`, `Тогда`, `И`, `Затем` — взаимозаменяемы синтаксически.
- Строки — в апострофах или кавычках; спецсимволы: `\'`, `\"`, `\\`.
- `Структура сценария:` + `Примеры:` — запускает сценарий по каждой строке таблицы параметров.
- `@tree` в заголовке — включает Turbo Gherkin: отступы Tab задают дерево шагов (пробелы недопустимы!).
- `@exportscenarios` — делает сценарий доступным как подсценарий из другого feature-файла.

---

## Пользовательский контекст

**MUST:** каждый сценарий выполняется под конкретным бизнес-пользователем, а не под admin/AgentAI.
Исключение — только если проверяемая функция доступна исключительно администратору.

**Как определить пользователя:**
1. Указан в описании задачи → использовать его.
2. Не указан → **спросить у человека** до написания сценария.

**Один пользователь** (в секции `Контекст:`):
```gherkin
Дано Я запускаю тест-клиент для пользователя "SalesManager" с паролем "123" или подключаю уже существующий
```

**Несколько пользователей** (в теле сценария — именованные TestClient):
```gherkin
И я подключаю TestClient "Менеджер" логин "SalesManager" пароль "123"
И я подключаю TestClient "Руководитель" логин "Director" пароль "456"

И я активизирую TestClient "Менеджер"
# ... шаги от имени менеджера ...

И я активизирую TestClient "Руководитель"
# ... шаги от имени руководителя ...

И я закрываю TestClient "Менеджер"
И я закрываю TestClient "Руководитель"
```

> Пароль — plain text в feature-файле. Тестовые пользователи должны иметь простой или пустой пароль (`пароль ""`).

---

## Поиск шагов

Библиотека: `/opt/onescript/2.0.0/lib/add/features/libraries/`

| Категория | Файл библиотеки |
|-----------|-----------------|
| Интерфейс, поля, кнопки, закладки | `UITestRunner/РаботаСИнтерфейсом.feature` |
| Таблицы (ТЧ) | `UITestRunner/РаботаСТаблицами.feature` |
| Состояние элементов формы | `UITestRunner/СостояниеЭлементаФормы.feature` |
| Флаги / переключатели | `UITestRunner/РаботаСФлагами.feature` |
| Сообщения пользователю | `UITestRunner/РаботаСОкномСообщений.feature` |
| Данные в БД, справочники | `Данные/ЗапросыКБД.feature` |
| Один / несколько TestClient | `UITestRunner/ОткрытьTestClient.feature`, `UITestRunner/ПодключениеНесколькихКлиентовТестирования.feature` |
| Условия, переменные | `Условие/Условие.feature` |
| Пауза | `Пауза/СделатьПаузу.feature` |

Шпаргалка частых шагов с синтаксисом → `references/steps-cheatsheet.md`.

**Полная библиотека:** `references/steps.json` (1116 шагов). **Не читай целиком** — используй `grep` для поиска по ключевым словам из задачи. Структура каждой записи:
- `ИмяШага` — пример вызова с параметрами
- `ОписаниеШага` — что делает шаг
- `ПолныйТипШага` — категория (UI, Прочее, Файлы, Переменные и т.д.)

---

## Теги

| Тег | Смысл |
|-----|-------|
| `@draft` / `@Draft@` | Исключить из прогона при запуске каталога |
| `@manual-data` | Сценарий зависит от данных, созданных вручную |
| `@regression` | Регрессионный тест |
| `@ui` | UI-тест через TestClient |
| `@tree` | Turbo Gherkin: отступы Tab = вложенность (пробелы запрещены) |
| `@exportscenarios` | Сценарий вызывается как подсценарий из другого файла |
| `@IgnoreOnXxx` | Системный: пропустить в указанном окружении |

---

## Антипаттерны

| Антипаттерн | Последствие |
|-------------|-------------|
| Сценарий под admin без обоснования | Не проверяет реальные права пользователя |
| Шаг проверяет внутреннюю деталь (вызов метода, прямой запрос в БД) | Хрупкий: нет наблюдаемого UI-поведения |
| Изобретённый шаг вместо поиска в библиотеке | Не резолвится при запуске |
| Длинный сценарий (7+ действий) | Сложно локализовать падение |
| Подготовка данных смешана с проверкой | Нарушает Given/Then разделение |

---
depends_on:
  - framework/rules/vanessa-scenario-policy.mdc
  - framework/rules/vanessa-test-isolation-policy.mdc
  - framework/rules/vanessa-tests-location.mdc
  - framework/rules/vanessa-run-loop.mdc
  - framework/skills/tool-usage/vanessa/vanessa-run/SKILL.md
  - framework/skills/tool-usage/vanessa/vanessa-diagnostics/SKILL.md
  - framework/skills/tool-usage/forms/form-element-mapping/SKILL.md
requires:
  - tools
---

More from SteelMorgan/1c-agent-based-dev-framework

SkillDescription
1c-ai-agent-cliCLI 1C BSL Agent Framework — tools/install.py (clone, install). Используй при клонировании репозитория, установке компонентов в проект, настройке IDE (Cursor, Claude Code, Windsurf, VS Code+Continue).
agent-debugПаттерн отладочных сообщений для 1С BSL. Используй, когда стандартная диагностика (event-log, скриншоты) не даёт понять фактическое поведение системы — нужно вставить временные точки логирования в код, запустить тест и проанализировать записи ЖР.
agent-developmentCreate custom subagents for specialized AI tasks. Use when the user wants to create a new type of subagent, set up task-specific agents, configure code reviewers, debuggers, or domain-specific assistants with custom prompts.
agent-development-ext>
agent-git-workflowStandardizes git workflow for the AI agent in the sandbox devcontainer: work in agent/<task>-<yyyymmdd>, integrate via agent, never push to main/master, open PRs via GitHub CLI. Use when the user asks to create branches, push changes, open PRs, or follow this sandbox repo setup.
auto-skill-bootstrapDeterministic helper to inventory existing project skills, detect missing capability coverage, search skills.sh via Skills CLI, and (optionally) install missing skills under a trust policy. Uses skills-manifest.json + state.json to stay idempotent across changing requirements.
code-navigationНавигация по коду (Code Navigation). Навык учит агента **эффективно перемещаться по BSL-коду** с помощью LSP (Language Server Protocol).
config-operationsОперации с конфигурацией 1С (CF) — init, info, edit, validate. Используй при создании конфигурации, анализе структуры, изменении свойств и ChildObjects, валидации Configuration.xml.
epf-buildСобрать EPF/ERF из XML-исходников. Используй после внесения временных диагностических правок в разобранную обработку.
epf-dumpРазобрать EPF/ERF в XML-исходники. Используй, когда нужно быстро получить исходный код внешней обработки или отчета для анализа и временной модификации.