<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>UI Automata Blog</title>
        <link>https://automata.visioncortex.org/blog</link>
        <description>UI Automata Blog</description>
        <lastBuildDate>Sat, 04 Apr 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[Windows Desktop Automation for AI Agents]]></title>
            <link>https://automata.visioncortex.org/blog/introducing-ui-automata</link>
            <guid>https://automata.visioncortex.org/blog/introducing-ui-automata</guid>
            <pubDate>Sat, 04 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Browser automation for AI agents is a solved problem; the Windows desktop is not. That's why we built UI Automata.]]></description>
            <content:encoded><![CDATA[<p>Browser automation for AI agents is a solved problem; the Windows desktop is not. That's why we built UI Automata.</p><video controls="" width="100%" style="border-radius:8px;margin-bottom:2rem"><source src="/video/Automata Demo.mp4" type="video/mp4"></video><p>In the demo above, Claude installs Python and Git on a fresh Windows machine. For Python, it opens the Windows Store, searches, picks Python 3.13 over 3.12, clicks Get, and waits for installation to complete. For Git, it navigates to the official website in Edge, downloads the installer, asks for a UAC confirmation, runs the installer silently, then launches Git Bash and verifies the installation works, falling back to vision to read the terminal output where UIA has no coverage.</p><p>It showcases how an AI agent can move across desktop apps, browsers, and terminals to handle complex tasks.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-windows-desktop-automation-is-hard">Why Windows Desktop Automation Is Hard<a href="#why-windows-desktop-automation-is-hard" class="hash-link" aria-label="Direct link to Why Windows Desktop Automation Is Hard" title="Direct link to Why Windows Desktop Automation Is Hard">​</a></h2><p>The Windows desktop is genuinely difficult to automate programmatically. Unlike the web (where the DOM is structured and designed to be read by code), the Windows desktop is a patchwork of UI frameworks built over decades: Win32, MFC, WPF, UWP, WinUI 3, embedded web views, custom renderers. Each one exposes its internals differently. Dialogs pop up unexpectedly. Apps behave differently across OS versions, display scaling, and language packs. There is no single standard to rely on.</p><p>Vision-based computer use is a compelling answer to this complexity. Rather than trying to understand every framework, you just look at the screen. For tasks that require genuine visual reasoning it remains the right tool.</p><p>But for automation at any scale, it carries real costs. Each step is a round-trip to an inference API. Pixel coordinates shift when the window moves or the display resolution changes. And a sequence of screenshots is not an auditable record: when something goes wrong, there is no structured trace to diagnose.</p><p>UI Automata takes a complementary approach: use the semantic layer that is already there.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="automata-workflow-shell-scripting-for-windows-gui">Automata Workflow: Shell Scripting for Windows GUI<a href="#automata-workflow-shell-scripting-for-windows-gui" class="hash-link" aria-label="Direct link to Automata Workflow: Shell Scripting for Windows GUI" title="Direct link to Automata Workflow: Shell Scripting for Windows GUI">​</a></h2><video controls="" width="100%" style="border-radius:8px;margin-bottom:2rem"><source src="/video/notepad-demo.mp4" type="video/mp4"></video><p>Think of a workflow YAML file as the shell script for the Windows desktop. Where a shell script says "run this command, check the exit code, pipe the output to the next step", a workflow YAML says "click this button, wait for this dialog, extract this value."</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> click the Save menu item</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Click</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=menu item][name=Save]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> DialogPresent</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">timeout</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> 10s</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Every step has three parts: an <strong>action</strong> (what to do), an <strong>expect</strong> (what state the UI should be in afterwards), and optionally a <strong>recovery</strong> (what to do if something unexpected happens). The engine executes the action, then watches the UI until the expected state appears. If it does not appear in time, it checks recovery handlers before failing cleanly.</p><p>No sleeps. No guessing. No silent failures.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="selectors-css-for-windows-ui">Selectors: CSS for Windows UI<a href="#selectors-css-for-windows-ui" class="hash-link" aria-label="Direct link to Selectors: CSS for Windows UI" title="Direct link to Selectors: CSS for Windows UI">​</a></h2><p>If the workflow YAML is the shell script, selectors are the file paths. They are how you point to the exact UI element you want to act on.</p><p>The Windows UI element tree is messy: a typical app window has hundreds of nested elements, many with no name or identical-looking labels. A single property is rarely enough to pin down the right one. We built a CSS-like selector language that lets you combine every available signal into a precise address:</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token operator" style="color:rgb(0, 0, 0)">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">role</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">button</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">name</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">Save</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain">                    </span><span class="token comment" style="color:rgb(0, 128, 0)"># role AND name</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token operator" style="color:rgb(0, 0, 0)">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token builtin" style="color:rgb(0, 112, 193)">id</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">TabListView</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(0, 0, 0)">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">role</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">tab item</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain">first    </span><span class="token comment" style="color:rgb(0, 128, 0)"># first tab in a specific list</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token operator" style="color:rgb(0, 0, 0)">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">role</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">button</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">name</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">Settings</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain">parent         </span><span class="token comment" style="color:rgb(0, 128, 0)"># the container holding this button</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token operator" style="color:rgb(0, 0, 0)">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">role</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">dialog</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">name</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token string" style="color:rgb(163, 21, 21)">'Confirm Save As'</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token operator" style="color:rgb(0, 0, 0)">&gt;&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">role</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">button</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">name</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">Yes</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain">  </span><span class="token comment" style="color:rgb(0, 128, 0)"># button inside a specific dialog</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Crucially, selectors target semantic properties (what an element <em>is</em>) not pixel coordinates (where it happens to be <em>drawn</em>). They survive window resizes, display scaling changes, theme changes, and most app updates. A selector that worked last week works today.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-shadow-dom-react-in-reverse">The Shadow DOM: React in Reverse<a href="#the-shadow-dom-react-in-reverse" class="hash-link" aria-label="Direct link to The Shadow DOM: React in Reverse" title="Direct link to The Shadow DOM: React in Reverse">​</a></h2><p>React builds a virtual DOM to avoid expensive real DOM queries. UI Automata does the same for Windows UIA, but in reverse: instead of pushing changes down, it caches what it reads.</p><p>Querying Windows UI Automation naively is slow: every element lookup is a cross-process round-trip, like making a network request just to read a variable. A 20-step workflow that re-queries from scratch on every step spends most of its time waiting, not working.</p><p>UI Automata solves this with what we call the <strong>shadow DOM</strong>: a cached map of the live UI. The engine resolves each element once and holds onto it. Subsequent steps that reference the same element are nearly instant.</p><p>The shadow DOM also solves identity. On first access, the engine locks the OS-level window handle (HWND). Subsequent resolutions bypass the selector entirely and go directly to that handle, so title changes, focus shifts, and other windows opening mid-flow cannot cause drift. Staleness is detected on every element access via a liveness check, not on a timer. When a cached element goes stale, the engine tries to re-resolve from its cached parent before falling back to a full tree traversal, so a single button refresh is a narrow subtree scan, not a full window walk.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="cross-framework-coverage">Cross-Framework Coverage<a href="#cross-framework-coverage" class="hash-link" aria-label="Direct link to Cross-Framework Coverage" title="Direct link to Cross-Framework Coverage">​</a></h2><video controls="" width="100%" style="border-radius:8px;margin-bottom:1.5rem"><source src="/video/combined-demo.mp4" type="video/mp4"></video><p>Windows applications are not a single thing. A modern machine might run a Win32 app from 1998 alongside a WinUI 3 app from last year, a legacy MFC tool, and a web browser, all at once.</p><p>UI Automata covers all of them: Win32, MFC, WPF, UWP, WinUI 3, and web browsers via the Chrome DevTools Protocol, giving full access to page structure alongside native UI.</p><p>For applications with little UIA support, the <code>vision</code> MCP tool provides OCR and layout recognition; vision and structured automation complement each other in the same agent loop.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="built-for-ai-agents">Built for AI Agents<a href="#built-for-ai-agents" class="hash-link" aria-label="Direct link to Built for AI Agents" title="Direct link to Built for AI Agents">​</a></h2><p>UI Automata is not a scripting framework repurposed for agents. It is designed from the ground up as the interface between an agent and the Windows desktop.</p><p>Every step carries an <code>intent</code> field: a plain-English description of what it is trying to do. The engine logs every step with its outcome, giving the agent a full structured trace to read and reason about. When something goes wrong, the trace tells the agent exactly what state the UI was in at the moment of failure.</p><p>The MCP interface gives an agent everything it needs:</p><ul><li><code>desktop</code>: inspect live element trees and test selectors against any window</li><li><code>app</code>: list installed applications and launch them</li><li><code>browser</code>: CDP page inspection and navigation</li><li><code>workflow</code>: run a workflow file, receive structured output</li><li><code>vision</code>: OCR and layout for windows that lack UIA support</li><li>Schema and linter: validate workflow files before execution, so agents catch errors without running</li></ul><p>An agent can explore an unfamiliar UI, author steps interactively, run them immediately, and promote working steps into a reusable workflow file. The entire loop (explore, script, run, verify) happens in a conversation. No human needed to laboriously demonstrate every step.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="industrial-grade-applications">Industrial-Grade Applications<a href="#industrial-grade-applications" class="hash-link" aria-label="Direct link to Industrial-Grade Applications" title="Direct link to Industrial-Grade Applications">​</a></h2><video controls="" width="100%" style="border-radius:8px;margin-bottom:2rem"><source src="/video/mastercam-demo.mp4" type="video/mp4"></video><p>Professional desktop software (CAD tools, ERP systems, simulation suites) is where most automation approaches hit a wall. These apps have deeply nested UI structures, lists where off-screen items are invisible to standard queries, and toolbars where dozens of buttons look identical to anything but their internal ID.</p><p>UI Automata handles these because it was designed with them in mind. The <code>Invoke</code> action activates elements directly through the accessibility interface, bypassing the need for a visible bounding box entirely. The <code>:parent</code> and <code>:ancestor</code> navigators let you locate a container by identifying a landmark element inside it: the pattern you need when the row you want to click has no unique label of its own.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-we-are-releasing-today">What We Are Releasing Today<a href="#what-we-are-releasing-today" class="hash-link" aria-label="Direct link to What We Are Releasing Today" title="Direct link to What We Are Releasing Today">​</a></h2><p>We are releasing the initial build of UI Automata today, including:</p><ul><li>The workflow engine and YAML format</li><li>The MCP server (<code>automata-agent</code>) for Claude Code and Claude Desktop</li><li><code>ui-inspector</code> and other CLI tools for interactive UI exploration</li><li>The <a href="/docs/workflow-library/overview/">workflow library</a>: reusable workflows for common Windows applications</li><li>Comprehensive documentation at <a href="/docs/introduction/what-is-ui-automata/">automata.visioncortex.org</a></li><li>Source code at <a href="https://github.com/visioncortex/ui-automata" target="_blank" rel="noopener noreferrer">visioncortex/ui-automata</a></li></ul><p>Try it, break it, and tell us what you run into. We are building the workflow library based on what people actually need. Open an issue or start a discussion on GitHub.</p>]]></content:encoded>
            <category>news</category>
        </item>
        <item>
            <title><![CDATA[Getting Started with UI Automata]]></title>
            <link>https://automata.visioncortex.org/blog/getting-started</link>
            <guid>https://automata.visioncortex.org/blog/getting-started</guid>
            <pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[In this walkthrough we will go from zero to a working automated workflow: one that opens Notepad, types a message, saves the file, and verifies the result.]]></description>
            <content:encoded><![CDATA[<p>In this walkthrough we will go from zero to a working automated workflow: one that opens Notepad, types a message, saves the file, and verifies the result.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites">​</a></h2><ul><li>Windows 10 or Windows 11 (64-bit)</li><li>Claude Code or Claude Desktop (or any MCP-capable client)</li><li>PowerShell</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1--install">Step 1 — Install<a href="#step-1--install" class="hash-link" aria-label="Direct link to Step 1 — Install" title="Direct link to Step 1 — Install">​</a></h2><p>One PowerShell command installs everything: the workflow engine, the MCP server, and the workflow library.</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">PowerShell -ExecutionPolicy Bypass -Command "iwr https://raw.githubusercontent.com/visioncortex/ui-automata/refs/heads/main/install/install-windows.ps1 | iex"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The installer places binaries in <code>C:\Users\&lt;you&gt;\.ui-automata\</code> and adds that directory to your <code>PATH</code>. Open a new PowerShell window and run the self-test to confirm everything is in place:</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">automata-agent --self-test</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Then run the bundled Notepad demo to confirm the workflow engine works end-to-end:</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="windows-11">Windows 11<a href="#windows-11" class="hash-link" aria-label="Direct link to Windows 11" title="Direct link to Windows 11">​</a></h4><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">ui-workflow $env:USERPROFILE\.ui-automata\workflows\win11\notepad\notepad_demo.yml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="windows-10">Windows 10<a href="#windows-10" class="hash-link" aria-label="Direct link to Windows 10" title="Direct link to Windows 10">​</a></h4><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">ui-workflow $env:USERPROFILE\.ui-automata\workflows\win10\notepad\notepad_demo.yml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>You should see Notepad open, some text typed, and the workflow complete successfully.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-2--connect-mcp">Step 2 — Connect MCP<a href="#step-2--connect-mcp" class="hash-link" aria-label="Direct link to Step 2 — Connect MCP" title="Direct link to Step 2 — Connect MCP">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="claude-code">Claude Code<a href="#claude-code" class="hash-link" aria-label="Direct link to Claude Code" title="Direct link to Claude Code">​</a></h3><p>Launch the MCP server from PowerShell (keep this window open while you work):</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">automata-agent</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>It scans ports 3001–4000 for a free one and prints a ready-to-paste config block:</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">automata</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">agent started</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">host </span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(9, 134, 88)">127.0</span><span class="token number" style="color:rgb(9, 134, 88)">.0</span><span class="token number" style="color:rgb(9, 134, 88)">.1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">port </span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token number" style="color:rgb(9, 134, 88)">3001</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">MCP config </span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">paste into </span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">mcp</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">json</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> keep this window </span><span class="token builtin" style="color:rgb(0, 112, 193)">open</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token string" style="color:rgb(163, 21, 21)">"mcpServers"</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token string" style="color:rgb(163, 21, 21)">"ui-automata"</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token string" style="color:rgb(163, 21, 21)">"type"</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"http"</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token string" style="color:rgb(163, 21, 21)">"url"</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"http://127.0.0.1:3001/mcp"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Copy the config block from your terminal (the port may differ) and paste it into your <code>.mcp.json</code>. Then run <code>/mcp</code> in Claude Code and click <strong>Reconnect</strong> next to the ui-automata server. If the tools still don't appear, run <strong>Developer: Reload Window</strong> from the VS Code command palette (<code>Ctrl+Shift+P</code>) and reconnect again.</p><p><img loading="lazy" alt="Claude Code connected" src="/assets/images/claude-code-wsl-7c19f9187605050689cc3952f2594b20.png" width="1440" height="900" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="claude-desktop">Claude Desktop<a href="#claude-desktop" class="hash-link" aria-label="Direct link to Claude Desktop" title="Direct link to Claude Desktop">​</a></h3><p>Claude Desktop uses stdio instead of HTTP. Add the following to your <code>claude_desktop_config.json</code>, replacing <code>&lt;you&gt;</code> with your Windows username:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token property">"mcpServers"</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token property">"ui-automata"</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token property">"command"</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"C:\\Users\\&lt;you&gt;\\.ui-automata\\automata-agent.exe"</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token property">"args"</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token string" style="color:rgb(163, 21, 21)">"--stdio"</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Claude Desktop launches <code>automata-agent</code> automatically. After editing the config, fully quit Claude (right-click the tray icon and choose <strong>Quit</strong> — closing the window is not enough) and relaunch it. You should see <code>ui-automata</code> listed under <strong>Settings → Connectors</strong>.</p><p><img loading="lazy" alt="Claude Desktop Connector" src="/assets/images/claude-desktop-mcp-e48a7fce035ed3dfa96b2edb757d1da5.png" width="912" height="980" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="verify-the-connection">Verify the connection<a href="#verify-the-connection" class="hash-link" aria-label="Direct link to Verify the connection" title="Direct link to Verify the connection">​</a></h3><p>Ask Claude: <em>"list the ui-automata tools available to you"</em>. It should respond with the full tool list.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-3--explore-the-ui">Step 3 — Explore the UI<a href="#step-3--explore-the-ui" class="hash-link" aria-label="Direct link to Step 3 — Explore the UI" title="Direct link to Step 3 — Explore the UI">​</a></h2><p>Before writing a workflow, you need to know the element tree of the application you want to automate. UI Automata ships <code>ui-inspector</code> for this.</p><video controls="" width="100%" style="border-radius:8px;margin-bottom:1.5rem"><source src="/video/ui-inspector-demo.mp4" type="video/mp4"></video><p>Run it from PowerShell:</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">ui-inspector</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Move the mouse over any element in any window. The inspector highlights the element under the cursor and prints its full ancestor chain to the terminal:</p><div class="language-python codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-python codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">desktop</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"Desktop 1"</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">class</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token comment" style="color:rgb(0, 128, 0)">#32768 id=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">   └─ </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">window</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"Untitled - Notepad"</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">class</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">Notepad </span><span class="token builtin" style="color:rgb(0, 112, 193)">id</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      └─ </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">pane</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">""</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">class</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">NotepadTextBox </span><span class="token builtin" style="color:rgb(0, 112, 193)">id</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">         └─ </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">document</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"Text editor"</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(0, 0, 255)">class</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">RichEditD2DPT </span><span class="token builtin" style="color:rgb(0, 112, 193)">id</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> value</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain"> enabled</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">true rect</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token number" style="color:rgb(9, 134, 88)">0</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token number" style="color:rgb(9, 134, 88)">0</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token number" style="color:rgb(9, 134, 88)">400</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token number" style="color:rgb(9, 134, 88)">200</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Every line shows the element's role, name, class, AutomationId, value, and bounding rect — exactly what you need to write a selector. Press <code>Ctrl-C</code> to exit.</p><p>To find window handles and process names, use <code>list-windows</code>:</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">list-windows</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>To test a selector before committing it to a workflow, ask Claude to run <code>desktop find_elements</code> against the window. It will return every match with its role, name, bounds, and full ancestor chain.</p><p>You can also dump the full UIA element tree for a window by its HWND.</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">element-tree 0x1234ab</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-4--your-first-workflow">Step 4 — Your First Workflow<a href="#step-4--your-first-workflow" class="hash-link" aria-label="Direct link to Step 4 — Your First Workflow" title="Direct link to Step 4 — Your First Workflow">​</a></h2><p>With the element tree in hand, writing the workflow is straightforward. Here is a minimal example that opens Notepad, types a line, and saves the file:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="windows-11-1">Windows 11<a href="#windows-11-1" class="hash-link" aria-label="Direct link to Windows 11" title="Direct link to Windows 11">​</a></h3><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token comment" style="color:rgb(0, 128, 0)"># yaml-language-server: $schema=https://raw.githubusercontent.com/visioncortex/ui-automata/main/workflow-schema.json</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad_hello</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Open Notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> type a message</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> and save the file.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">defaults</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">timeout</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> 5s</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">launch</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">exe</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad.exe</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">wait</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> new_window</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">anchors</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Root</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">process</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"[name~=Notepad]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">editor</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Stable</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">parent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=document][name='Text editor']"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">saveas_dialog</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Ephemeral</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">parent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt; [role=dialog][name^=Save]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">phases</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> type_text</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">mount</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> editor</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain">  </span><span class="token comment" style="color:rgb(0, 128, 0)"># mounted before steps run</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">steps</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> type text into editor</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> TypeText</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> editor</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">text</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"Hello Automata"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> ElementHasText</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> editor</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">pattern</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">            </span><span class="token key atrule">contains</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"Hello Automata"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> save_file</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">mount</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">saveas_dialog</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">unmount</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">saveas_dialog</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">steps</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> activate keyboard shortcut for Save As</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> PressKey</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">key</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"ctrl+shift+s"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> DialogPresent</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> type filename in Save As dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> SetValue</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> saveas_dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=edit][name='File name:']"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">value</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"hello-world"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> ElementHasText</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> saveas_dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=edit][name='File name:']"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">pattern</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">            </span><span class="token key atrule">contains</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"hello-world"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> click Save button</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Invoke</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> saveas_dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=button][name=Save]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> DialogAbsent</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="windows-10-1">Windows 10<a href="#windows-10-1" class="hash-link" aria-label="Direct link to Windows 10" title="Direct link to Windows 10">​</a></h3><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token comment" style="color:rgb(0, 128, 0)"># yaml-language-server: $schema=https://raw.githubusercontent.com/visioncortex/ui-automata/main/workflow-schema.json</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad_hello</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">description</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Open Notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> type a message</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> and save the file.</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">defaults</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">timeout</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> 5s</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">launch</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">exe</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad.exe</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">wait</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> new_pid</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">anchors</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Root</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"[name~=Notepad]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">editor</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Stable</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">parent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=edit][name='Text Editor']"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token key atrule">saveas_dialog</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Ephemeral</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">parent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=dialog][name='Save As']"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token key atrule">phases</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> type_text</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">mount</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> editor</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">steps</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> type text into editor</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> TypeText</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> editor</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">text</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"Hello Automata"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> ElementHasText</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> editor</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">pattern</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">            </span><span class="token key atrule">contains</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"Hello Automata"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">  </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">name</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> save_file</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">mount</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">saveas_dialog</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">unmount</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">saveas_dialog</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">    </span><span class="token key atrule">steps</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> activate keyboard shortcut for Save As</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> PressKey</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"*"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">key</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"ctrl+shift+s"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> DialogPresent</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> type filename in Save As dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> SetValue</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> saveas_dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=combo box][name='File name:'] &gt; [role=edit]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">value</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"hello-world"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> ElementHasText</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> saveas_dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=combo box][name='File name:'] &gt; [role=edit]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">pattern</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">            </span><span class="token key atrule">contains</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"hello-world"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">      </span><span class="token punctuation" style="color:rgb(4, 81, 165)">-</span><span class="token plain"> </span><span class="token key atrule">intent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> click Save button</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">action</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> Invoke</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> saveas_dialog</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">selector</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">"&gt;&gt; [role=button][name=Save]"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">        </span><span class="token key atrule">expect</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">type</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> DialogAbsent</span><br></span><span class="token-line" style="color:#000000"><span class="token plain">          </span><span class="token key atrule">scope</span><span class="token punctuation" style="color:rgb(4, 81, 165)">:</span><span class="token plain"> notepad</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Save this as <code>notepad_hello.yml</code> and run it:</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">ui-workflow notepad_hello.yml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="reading-the-logs">Reading the logs<a href="#reading-the-logs" class="hash-link" aria-label="Direct link to Reading the logs" title="Direct link to Reading the logs">​</a></h3><p>After each run, a detailed structured log is saved to:</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token plain">$env:USERPROFILE\.ui-automata\logs\notepad_hello\20260403T152954.log</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#000000;--prism-background-color:#ffffff"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#000000"><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">54</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">074Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> log → </span><span class="token constant" style="color:rgb(129, 31, 63)">C</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain">\</span><span class="token maybe-class-name">Users</span><span class="token plain">\chris\</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token property-access">ui</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">automata\logs\notepad_hello\20260403T152954</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token property-access">log</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">54</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">568Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> launched </span><span class="token string" style="color:rgb(163, 21, 21)">'notepad.exe'</span><span class="token plain"> pid</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token number" style="color:rgb(9, 134, 88)">20828</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">54</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">568Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> launch</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> waiting </span><span class="token keyword control-flow" style="color:rgb(0, 0, 255)">for</span><span class="token plain"> notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token property-access">exe</span><span class="token plain"> </span><span class="token function" style="color:rgb(0, 0, 255)">window</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">strategy</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token maybe-class-name">NewWindow</span><span class="token punctuation" style="color:rgb(4, 81, 165)">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">5s</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">55</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">450Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> phase</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> type_text</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">55</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">904Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> resolved anchor </span><span class="token string" style="color:rgb(163, 21, 21)">'notepad'</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">59</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">756Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> action → </span><span class="token maybe-class-name">Ok</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">59</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">797Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> poll</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:rgb(0, 0, 255)">ElementHasText</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">saveas_dialog</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">role</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">edit</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">name</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token maybe-class-name">File</span><span class="token plain"> name</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> → </span><span class="token boolean">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">59</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">797Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> step </span><span class="token number" style="color:rgb(9, 134, 88)">2</span><span class="token operator" style="color:rgb(0, 0, 0)">/</span><span class="token number" style="color:rgb(9, 134, 88)">3</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> ok</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">59</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">797Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> step </span><span class="token number" style="color:rgb(9, 134, 88)">3</span><span class="token operator" style="color:rgb(0, 0, 0)">/</span><span class="token number" style="color:rgb(9, 134, 88)">3</span><span class="token plain"> </span><span class="token string" style="color:rgb(163, 21, 21)">'click Save button'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">29</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">59</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">797Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> action</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:rgb(0, 0, 255)">Click</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">saveas_dialog</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">role</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token plain">button</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token plain">name</span><span class="token operator" style="color:rgb(0, 0, 0)">=</span><span class="token maybe-class-name">Save</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">00</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">917Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> action → </span><span class="token maybe-class-name">Ok</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">01</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">459Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> poll</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token function maybe-class-name" style="color:rgb(0, 0, 255)">DialogAbsent</span><span class="token punctuation" style="color:rgb(4, 81, 165)">(</span><span class="token plain">notepad</span><span class="token punctuation" style="color:rgb(4, 81, 165)">)</span><span class="token plain"> → </span><span class="token boolean">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">01</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">459Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> step </span><span class="token number" style="color:rgb(9, 134, 88)">3</span><span class="token operator" style="color:rgb(0, 0, 0)">/</span><span class="token number" style="color:rgb(9, 134, 88)">3</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> ok</span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">01</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">460Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> unmounted node </span><span class="token number" style="color:rgb(9, 134, 88)">3</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:rgb(0, 0, 255)">for</span><span class="token plain"> anchor </span><span class="token string" style="color:rgb(163, 21, 21)">'saveas_dialog'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">01</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">460Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> cleanup depth </span><span class="token number" style="color:rgb(9, 134, 88)">0</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> removed node </span><span class="token number" style="color:rgb(9, 134, 88)">1</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:rgb(0, 0, 255)">for</span><span class="token plain"> key </span><span class="token string" style="color:rgb(163, 21, 21)">'notepad'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">01</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">460Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">DEBUG</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> cleanup depth </span><span class="token number" style="color:rgb(9, 134, 88)">0</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> removed node </span><span class="token number" style="color:rgb(9, 134, 88)">2</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:rgb(0, 0, 255)">for</span><span class="token plain"> key </span><span class="token string" style="color:rgb(163, 21, 21)">'editor'</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">01</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">460Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> outputs</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">{</span><span class="token punctuation" style="color:rgb(4, 81, 165)">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#000000"><span class="token plain"></span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token number" style="color:rgb(9, 134, 88)">2026</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token number" style="color:rgb(9, 134, 88)">04</span><span class="token operator" style="color:rgb(0, 0, 0)">-</span><span class="token plain">03T14</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">30</span><span class="token operator" style="color:rgb(0, 0, 0)">:</span><span class="token number" style="color:rgb(9, 134, 88)">01</span><span class="token punctuation" style="color:rgb(4, 81, 165)">.</span><span class="token plain">460Z</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(4, 81, 165)">[</span><span class="token constant" style="color:rgb(129, 31, 63)">INFO</span><span class="token punctuation" style="color:rgb(4, 81, 165)">]</span><span class="token plain"> completed successfully</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Open it to inspect exactly what happened on every step — actions taken, conditions evaluated, recovery handlers triggered, and the final UI state at the point of failure.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="before-starting-a-task-with-claude">Before Starting a Task with Claude<a href="#before-starting-a-task-with-claude" class="hash-link" aria-label="Direct link to Before Starting a Task with Claude" title="Direct link to Before Starting a Task with Claude">​</a></h2><p>Ask Claude to read the library context before starting any automation task:</p><blockquote><p>Read the CLAUDE.md and AGENT.md from the ui-automata resource list before we start.</p></blockquote><h2 class="anchor anchorWithStickyNavbar_LWe7" id="where-to-go-next">Where to Go Next<a href="#where-to-go-next" class="hash-link" aria-label="Direct link to Where to Go Next" title="Direct link to Where to Go Next">​</a></h2><ul><li><a href="/docs/core-concepts/workflow-engine/">Core Concepts</a> — how the engine works, anchors, selectors, conditions, and recovery</li><li><a href="/docs/writing-workflows/exploring-unknown-ui/">Writing Workflows</a> — hands-on guides for common authoring tasks</li><li><a href="/docs/workflow-library/overview/">Workflow Library</a> — ready-to-use workflows for Notepad, Explorer, Windows Settings, Word, and more</li></ul>]]></content:encoded>
            <category>tutorial</category>
        </item>
    </channel>
</rss>