openspec-apply-change
Implement tasks from an OpenSpec change. Use when the user wants to start implementing,…
UI checks in the 1C thin client through QA MCP (`1c-qa`, `qa_*` / `ui_*`): session, observe → act → assert, platform behaviour, unknown outcomes, journal and verdicts. Main UI route when connected and TOOL_QA allows it; the web client is the fallback.
$ npx -y skills add comol/ai_rules_1c --skill 1c-qa-testing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/1c-qa-testingContext preview
The summary Claude sees to decide when to auto-load this skill.
UI checks in the 1C thin client through QA MCP (`1c-qa`, `qa_*` / `ui_*`): session, observe → act → assert, platform behaviour, unknown outcomes, journal and verdicts. Main UI route when connected and TOOL_QA allows it; the web client is the fallback.
name: 1c-qa-testing description: "UI checks in the 1C thin client through QA MCP (`1c-qa`, `qa_*` / `ui_*`): session, observe → act → assert, platform behaviour, unknown outcomes, journal and verdicts. Main UI route when connected and TOOL_QA allows it; the web client is the fallback." argument-hint: "<feature or scenario to check>"
QA MCP (connection `1c-qa`) is the 1C test manager: it connects to a 1C test client (`/TestClient`) and drives its forms through the platform testing model — windows, fields, tables, commands, messages. It reads structured state, not pixels, so it is the main route for checking behaviour in the 1C interface. The web client (`content/rules/ui-testing-tools.md`) is the fallback.
All of these hold:
Otherwise use the web fallback of `ui-testing-tools.md`, or report the check unrun with the reason. `TOOL_QA=required` with the server missing blocks the check; the web client does not replace it.
**Before the first action load `content/rules/qa-testclient.md`.** It owns what the server does not do: starting and stopping the test client, visible or hidden window, screenshots, Windows-MCP, and confirming data through `1c-data-mcp`. Tool argument names come from the exposed schemas; `qa_playbook` returns the sequence for the current executor.
When a check needs metadata, form structure, impact, error source or live data, load the matching entry in [context-sources.md](docs/context-sources.md). Use indexes only when they cover the configuration loaded into the tested infobase; confirm element names in the live window.
1. `qa_status` — the executor decides who starts 1C:
| `executor` | What it is | Test client | |---|---|---| | `native` | The container is the test manager and speaks the test-client protocol; no 1C platform inside | The agent starts it by `qa-testclient.md`; the server only connects | | `platform` | Windows manager next to the platform | `qa_start` starts it itself |
2. Start or find the test client (`qa-testclient.md`), then `qa_start(connection="<session name>")`; `port=` overrides the port of `MCP_QA_TESTCLIENT`. No Windows account is needed: the test client accepts the channel's Windows authentication from any identity (8.3.27.2130); the 1C sign-in happens when the client starts. 3. `qa_status` again: executor, link, target. A `test client is already connected to another manager` answer means another agent owns the client — a conflict to resolve, not a client to close. 4. At the end: `qa_stop`. In `native` it only disconnects; the client is closed by the tool that started it (`qa-testclient.md`). A new MCP session or a restarted client needs a new `qa_start`; `save_as` aliases and `ui_here` pins do not survive it.
After `/update1cbase`, `/deploy-and-test` or `/restore-testbase` the update ends the sessions of the infobase: a client started before it is stale. Start a fresh client, `qa_start`, and read the main window before the first step.
1. Read before acting: `ui_active_window`, then `ui_window_tree(detail="lite")` or `ui_inspect`. Use the names and paths they return; never invent element names. 2. One purposeful action: `ui_open`, `ui_click`, `ui_set` / `ui_input`, `ui_field`, `ui_table`, `ui_list`, `ui_command`, `ui_dialog`, `ui_form`. 3. Read the result: `ui_window_changes`, `ui_wait` (form, element or closing), `ui_messages`, `ui_errors`. 4. Assert on read values: `ui_get_text`, `ui_find`, table rows from `ui_table` / `ui_list`. A command accepted is not an effect observed. 5. Re-read the window after navigation, a closed form or anything that invalidates the tree; earlier snapshots and `ui_here` pins are stale then.
The first form may still be loading right after the client starts: repeat read-only reads within a bounded wait.
Before list navigation, field entry, table editing, save/post or dialog actions, read the matching recipe and its pitfalls in [interaction-recipes.md](docs/interaction-recipes.md). Read-only window inspection needs no recipe. Two failed attempts by one method require a fresh window read, then another method or an explicit unverified result; never vary arguments blindly.
Before asserting changed field values, navigating table rows/
Repo: comol/ai_rules_1c
Implement tasks from an OpenSpec change. Use when the user wants to start implementing,…
Archive a completed OpenSpec change in the experimental workflow. Use when the user wants to…
Enter OpenSpec explore mode - a thinking partner for exploring ideas, investigating problems,…
Propose a new OpenSpec change with all artifacts generated in one step. Use when the user…
Sync delta specs from an OpenSpec change to main specs. Use when the user wants to update…
Update an OpenSpec change by revising its existing planning artifacts and keeping them…