framework_eng/skills/tool-usage/platform-data/xml-generation/form-dsl/SKILL.md
JSON DSL for generating 1С managed forms with UI elements, attributes, and commands. Use for form compile and editing forms through xml-generation (edit commands).
npx skillsauth add steelmorgan/1c-agent-based-dev-framework form-dslInstall 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.
xml-gen form compile [--format designer|edt] <input.json> <output.xml>
# Generate a form from object metadata
xml-gen form compile --from-object [--preset erp-standard] [--object <path>] <output.xml>
xml-gen form info <Form.xml>
Editing existing forms (add-attribute, add-element, move-element, etc.) — see xml-generation §3 Edit commands
--from-object ModeGenerates Form.xml from the object's XML description. Coverage: Catalog (item/folder/list/choice), Document (item/list/choice), InformationRegister (record/list), AccumulationRegister (list), ChartOfCharacteristicTypes, ExchangePlan, ChartOfAccounts, DataProcessor/Report (template).
Purpose is determined by the folder name: ФормаСписка→list, ФормаВыбора→choice, ФормаГруппы→folder, ФормаЗаписи→record, otherwise item.
The erp-standard preset is built in and overridden by file <project-root>/presets/skills/form/erp-standard.json.
Guardrails: ValueStorage attributes are skipped; FormDataStructure/Collection/Tree in an attribute → FromObjectException.
Minimal form: {"attributes": [], "elements": []}
{"name": "ИмяРеквизита", "type": "тип", "title": "Заголовок"}
Types: string, string(N), number, number(D,F), boolean, date, uuid, CatalogRef.Name, DocumentRef.Name, ValueTable
Prohibited runtime types: FormDataStructure, FormDataCollection, FormDataTree do not exist in the XML schema and cause an XDTO error when loading (compiler: IllegalArgumentException; validator: FORM-114 ERROR). Use CatalogObject.X / DocumentObject.X / DataProcessorObject.X, ValueTable, ValueTree.
| DSL type | XML type | Description |
|----------|---------|----------|
| input | InputField | Input field |
| group | UsualGroup | Group ("group": "Vertical"/"Horizontal", children) |
| table | Table | Table (dataPath, columns) |
| button | Button | Button (commandName) |
| label | LabelDecoration | Label decoration |
| checkbox | CheckBoxField | Checkbox field |
| pages | Pages | Container for pages |
| page | Page | Page (only inside pages) |
{"name": "Сохранить", "action": "Save", "title": "Сохранить"}
{"events": {"onCreateAtServer": "ПриСозданииНаСервере", "onOpen": "ПриОткрытии"}}
The DSL specifies only the procedure name; set the compiler directive in the module manually: onCreateAtServer → &НаСервере, onOpen/onClose/beforeClose → &НаКлиенте. Mixing contexts = compilation error or server objects being unavailable.
UUID, ID, ContextMenu, ExtendedTooltip are created automatically.
// ❌ dataPath does not match the attribute → the element will not display data
{"attributes": [{"name": "Наименование", "type": "string(100)"}],
"elements": [{"type": "input", "name": "Поле1", "dataPath": "Поле1"}]}
// ✅ dataPath = attribute name (or the path to a tabular section field: Товары.Номенклатура)
{"elements": [{"type": "input", "name": "Наименование", "dataPath": "Наименование"}]}
// ❌ page without a pages parent — the platform will not load the form
{"elements": [{"type": "page", "name": "Страница1", "children": [...]}]}
// ✅ pages as a container
{"elements": [{"type": "pages", "name": "Страницы", "children": [{"type": "page", ...}]}]}
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.