[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698QJEA384YPM8R9CPZ1YFD":3,"skill-same:01M698QJEA384YPM8R9CPZ1YFD":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":45,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M698QJEA384YPM8R9CPZ1YFD","openclaw-testing",null,"Choose proportional OpenClaw Windows node tests, builds, packaging checks, and runtime proof, then diagnose failures without weakening required gates.","openclaw\u002Fopenclaw-windows-node","openclaw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252820863?v=4","01M698P3FSAZ6B4R928ZF19KPT","01M698Q6SND6RHZDPP8ZM0NSP7",2197,"MIT","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-testing\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[23,9,24,25,26,27,28,29,30,31,32,33,34],"openclaw testing","testing","windows","diagnose","runtime","packaging","choose","tests","runtime proof","gates","node","proof","2026-11-10 10:12:30",false,"---\nname: openclaw-testing\ndescription: Choose proportional OpenClaw Windows node tests, builds, packaging checks, and runtime proof, then diagnose failures without weakening required gates.\n---\n\n# OpenClaw Windows testing\n\nUse this skill to select and interpret validation for this repository. It covers\nthe Windows node, Companion WinUI app, setup engine, Gateway protocols, WSL\nintegration, packaging, installers, and release artifacts.\n\nIt does not authorize app launches, WSL or package changes, remote hosts, CI\ndispatch, publication, or cleanup. Use [test-audit](..\u002Ftest-audit\u002FSKILL.md) when\nwriting or reviewing tests, [proof validation](..\u002Fopenclaw-proof-validation\u002FSKILL.md)\nfor runtime evidence, [Crabbox](..\u002Fcrabbox\u002FSKILL.md) for authorized remote\nWindows execution, and\n[native Gateway from source](..\u002Fnative-gateway-from-source\u002FSKILL.md) for native\nGateway registration or compatibility work.\n\n## Start with the changed contract\n\n1. Record the repository path, branch, full HEAD, intended base and SHA,\n   ahead\u002Fbehind counts, and dirty-file count.\n2. Identify the production owner and its existing tests. Read the applicable\n   architecture guide from [AGENTS.md](..\u002F..\u002F..\u002FAGENTS.md#architecture-context-for-new-agents).\n3. Include staged, unstaged, and relevant untracked paths. A committed-diff-only\n   plan is incomplete for local work.\n4. Use the classifier as a read-only starting point, then add behavioral proof\n   that path classification cannot infer:\n\n```powershell\n.\\scripts\\Get-CiChangeClassification.ps1 -EventName pull_request `\n  -ChangedPaths 'src\\OpenClaw.Connection\\GatewayConnectionManager.cs' -Human\n```\n\nFor a committed comparison, pass known `-BaseSha` and `-HeadSha` values instead\nof `-ChangedPaths`. The classifier selects hosted lanes and the mandatory local\ncode-change closeout. Its proof-pool output is a candidate inventory, not\nauthorization or completed evidence.\n\nIf the source tree changes while validation is running, the affected result is\nstale. Rebuild and rerun against the new exact tree.\n\n## Use the proportional ladder\n\nChoose the [execution target](..\u002F..\u002F..\u002Fdocs\u002FTEST_COVERAGE.md#choose-the-local-execution-target)\nbefore any authorized runtime proof. Fixture-covered app behavior stays on the\ndeterministic fixture. Isolated test builds that need a real native Gateway\ndefault to the [task-owned build and named-patch workflow](..\u002Fnative-gateway-from-source\u002FSKILL.md#prepare-an-isolated-test-build),\nincluding single-instance tests. Build Companion in its own worktree, prepare a\nunique patch with a task-owned work root, and select it explicitly with isolated\napp data. The launcher's `-Isolated` switch alone does not isolate a Gateway\nbuild or allocate a unique instance. Use separate VMs for OS\u002Fclean-image\nisolation or missing host capabilities; keep required real WSL\u002FMXC proof.\n\nStart at the smallest boundary that can fail for the intended regression. Move\nup when the change crosses another owner, transport, persistence boundary,\narchitecture, or distribution format. Code changes still end with the required\ncloseout even when focused tests pass.\n\n### 1. Documentation and skill checks\n\nFor ordinary documentation-only changes:\n\n```powershell\n.\\scripts\\validate-docs.ps1\ngit diff --check\n```\n\nFor changes under `.agents\\skills`, also run:\n\n```powershell\n.\\scripts\\validate-agent-skills.ps1\n.\\scripts\\test-agent-skills-validator.ps1\n```\n\nDo not launch the app or claim runtime behavior from documentation validation.\nThe shipped `winnode` skill is an exception: changes to its command contract\nalso require the CLI\u002Fcore tests named in\n[AGENTS.md](..\u002F..\u002F..\u002FAGENTS.md#ui-mcp-and-pr-proof).\n\n### 2. Focused owner tests\n\nUse `dotnet test \u003Cproject> --filter '\u003Cexpression>'` for a class or behavior,\nthen run relevant siblings when shared setup or lifecycle could be involved.\n\n| Owner or risk | Focused project |\n|---|---|\n| Shared models, Gateway client, MCP, capabilities, approvals, A2UI security | `tests\\OpenClaw.Shared.Tests\\OpenClaw.Shared.Tests.csproj` |\n| Gateway registry, credentials, connection state, pairing, protocol signatures | `tests\\OpenClaw.Connection.Tests\\OpenClaw.Connection.Tests.csproj` |\n| Tray state, settings, onboarding helpers, localization, installer source contracts | `tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj` |\n| Setup pipeline, WSL install policy, rollback, setup-code and provider workflow | `tests\\OpenClaw.SetupEngine.Tests\\OpenClaw.SetupEngine.Tests.csproj` |\n| `winnode` parsing, JSON output, command descriptions and uninstall flow | `tests\\OpenClaw.WinNode.Cli.Tests\\OpenClaw.WinNode.Cli.Tests.csproj` |\n| Native WinUI, Reactor, A2UI rendering and accessibility | `tests\\OpenClaw.Tray.UITests\\OpenClaw.Tray.UITests.csproj` |\n| Functional UI surfaces | `tests\\OpenClawTray.FunctionalUI.Tests\\OpenClawTray.FunctionalUI.Tests.csproj` |\n| Real-process tray and local MCP | `tests\\OpenClaw.Tray.IntegrationTests\\OpenClaw.Tray.IntegrationTests.csproj` |\n| Gateway-mediated setup, recovery, pairing and invocation | `tests\\OpenClaw.E2ETests\\OpenClaw.E2ETests.csproj` |\n\nExamples:\n\n```powershell\ndotnet test .\\tests\\OpenClaw.Connection.Tests\\OpenClaw.Connection.Tests.csproj `\n  --filter 'FullyQualifiedName~PairingFlowTests'\n\ndotnet test .\\tests\\OpenClaw.SetupEngine.Tests\\OpenClaw.SetupEngine.Tests.csproj `\n  --filter 'FullyQualifiedName~GatewayWizardRestartRecoveryPolicyTests'\n\n$env:OPENCLAW_RUN_INTEGRATION = '1'\ntry {\n  dotnet build .\\src\\OpenClaw.Tray.WinUI\\OpenClaw.Tray.WinUI.csproj `\n    -c Debug -r win-x64\n  dotnet test .\\tests\\OpenClaw.Tray.IntegrationTests\\OpenClaw.Tray.IntegrationTests.csproj `\n    -r win-x64\n} finally {\n  Remove-Item Env:\\OPENCLAW_RUN_INTEGRATION -ErrorAction SilentlyContinue\n}\n```\n\nUse temporary settings directories or set `OPENCLAW_TRAY_DATA_DIR` before the\ntest process starts. For real tray\u002Fsetup proof, also isolate\n`OPENCLAW_TRAY_APPDATA_DIR` and `OPENCLAW_TRAY_LOCALAPPDATA_DIR`. Do not let\ntests read or mutate the normal user profile. Tray Integration launches a real\napp process, so it requires runtime authority even though its profile is\nisolated. It locates existing tray build output rather than receiving the app\nthrough a project reference, so rebuild the app from the current tree first.\n\n### 3. Required local closeout for code\n\nEvery code change and every agent code-change closeout requires:\n\n```powershell\n$env:OPENCLAW_REPO_ROOT = (Get-Location).Path\n.\\build.ps1\ndotnet test .\\tests\\OpenClaw.Shared.Tests\\OpenClaw.Shared.Tests.csproj --no-restore\ndotnet test .\\tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj --no-restore\n```\n\nIn a fresh worktree, build each test project first or omit `--no-restore` on the\nfirst run. A quick successful exit with no executed tests is not a pass. Inspect\nthe test totals or TRX.\n\nAdd the affected owner project even when it is not one of the two required\nsuites. For `winnode`, MCP output, or command-reference changes:\n\n```powershell\ndotnet test .\\tests\\OpenClaw.WinNode.Cli.Tests\\OpenClaw.WinNode.Cli.Tests.csproj --no-restore\n```\n\nSettings-profile, app-identity, or sandbox-containment changes also need the\nDevBuild variant used by CI:\n\n```powershell\ndotnet test .\\tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj `\n  -c Debug -r win-x64 --no-restore -p:DevBuild=true `\n  --filter 'FullyQualifiedName~SettingsManagerIsolationTests|FullyQualifiedName~AppRefactorContractTests.SandboxPage_'\n```\n\n### 4. WinUI and application-boundary proof\n\nUse [WinApp CLI](..\u002F..\u002F..\u002Fdocs\u002FWINAPP_CLI.md) as a first-choice companion to\nthe existing harness: discover selectors and state with `ui`, diagnose native\ncrashes with `run --debug-output`, and measure layout with `perf`. Prefer\nbounded condition waits and explicit outcomes over sleeps or command-exit-only\nchecks. Keep native keyboard\u002FIME\u002Ffocus tests, Axe scans, pixel proof and all\nexisting assertions; UIA invocation cannot replace a keyboard regression.\nSandbox helps with authorized disposable app\u002Finstaller experiments, not\nWSL\u002FMXC or signed-release acceptance. Check installed help\u002Fschema and the\nguide's identity, desktop ownership, capture and DevTools limitations first.\nFor clean-machine dependencies and installer\u002Funinstaller differences, prefer\nour [sandbox-mcp \u002F sbx tools](https:\u002F\u002Fgithub.com\u002Fshanselman\u002Fsandbox-mcp), which\ndo not implicitly provision app runtimes. Use the\n[tool-choice matrix](..\u002F..\u002F..\u002Fdocs\u002FWINAPP_CLI.md#choose-winapp-sandbox-or-sandbox-mcp)\nbefore starting a guest; WinApp's runtime-prepared loop and a clean baseline\nanswer different questions. One Sandbox has one lifecycle owner.\n\nPure view models and projections belong in focused unit tests. Mounted controls,\nWindows App SDK behavior, accessibility, keyboard input, and visible rendering\nneed the UI suite or an interactive proof host.\n\nRun the inventory-owned `windows-winui-interactive` accessibility proof command\nwith the repository wrapper:\n\n```powershell\n.\\scripts\\run-proof-tests.ps1 `\n  -Project 'tests\\OpenClaw.Tray.UITests\\OpenClaw.Tray.UITests.csproj' `\n  -Filter 'Category=Accessibility' `\n  -ResultName 'winui-accessibility' `\n  -RuntimeIdentifier win-x64\n```\n\nThis proof launches the real app, requires runtime authority and an available\nWindows desktop, and emits inventory-bound evidence. CI runs the same\naccessibility category through its own prebuilt test-lane command.\n\nFor deterministic real-app chat and navigation behavior, build the exact app and\nuse the fixture on an authorized exclusive interactive desktop. The complete\nfixture UI selection includes owned foreground wheel input, explicitly enabled\nwith `-NativeInputProof`; its exact opt-in, foreground and injected-event guards\nremain mandatory. Runtime regressions require both Debug and production-shaped,\nnon-Dev Release runs:\n\n```powershell\n.\\build.ps1\n$debugApp = '.\\src\\OpenClaw.Tray.WinUI\\bin\\Debug\\net10.0-windows10.0.22621.0\\win-x64\\OpenClaw.Tray.WinUI.exe'\n.\\scripts\\test-gateway-fixture.ps1 -AppPath $debugApp -NativeInputProof\n\n.\\build.ps1 -Project WinUI -Configuration Release\n$releaseApp = '.\\src\\OpenClaw.Tray.WinUI\\bin\\Release\\net10.0-windows10.0.22621.0\\win-x64\\OpenClaw.Tray.WinUI.exe'\n.\\scripts\\test-gateway-fixture.ps1 `\n  -AppPath $releaseApp -Configuration Release -Screenshots -NativeInputProof\n```\n\nUse `win-arm64` on a native ARM64 host. The fixture proves the real app,\nGateway client, chat stack, history loader, local MCP, and mounted native UI\nagainst synthetic loopback data. It does not prove live pairing, providers,\nnode command execution, WSL, native Gateway\u002FMXC, installation, or update.\n\nFor current-head visual, permission, native-input, or diagnostic claims, use the\n`windows-winui-interactive` proof pool and the proof-validation skill. A state\nsnapshot or UI Automation result alone does not prove unclipped rendered pixels.\n\n### 5. WSL, pairing, protocol, and node invocation\n\nConnection and pairing changes need focused `OpenClaw.Connection.Tests` plus the\nappropriate real boundary. Setup, bootstrap, WSL lifecycle, revocation, and\nnetwork recovery use the E2E project. Local E2E creates a run-scoped WSL distro\nand run-specific startup registrations, so it requires runtime authority and\nshould run only when explicitly needed:\n\n```powershell\n$env:OPENCLAW_RUN_E2E = '1'\ntry {\n  dotnet build .\\src\\OpenClaw.Tray.WinUI\\OpenClaw.Tray.WinUI.csproj `\n    -c Debug -r win-x64\n  dotnet test .\\tests\\OpenClaw.E2ETests\\OpenClaw.E2ETests.csproj -r win-x64 `\n    --filter 'FullyQualifiedName~OpenClaw.E2ETests.Setup.SetupAndConnectTests'\n} finally {\n  Remove-Item Env:\\OPENCLAW_RUN_E2E -ErrorAction SilentlyContinue\n}\n```\n\nUse `RevocationAndRecoveryTests` or `NetworkRecoveryTests` in the filter when\nthat is the changed contract. These lanes install and exercise the npm-latest\nWSL Gateway path. They locate existing tray build output rather than receiving\nthe app through a project reference, so rebuild it from the current tree first.\nThey are not native MSIX Gateway proof.\n\nFor app-owned WSL installation diagnostics, the non-mutating preflight is:\n\n```powershell\n.\\scripts\\validate-wsl-gateway.ps1 -Scenario PreflightOnly\n```\n\n`UpstreamInstall` launches the tray, installs or reuses the shared product\n`OpenClawGateway` distro, and stops matching WSL keepalive processes. Its WSL\nstate is not isolated by the run-specific AppData directories. It requires\nexplicit runtime authority and an owned disposable host. `FreshMachine` and\n`Recreate` additionally unregister `OpenClawGateway`, require\n`-ConfirmDestructiveClean`, and require explicit destructive authority.\n\nChanges to MXC sandboxing, `system.run`, approvals, Windows command execution,\nor setup\u002Fconnect behavior affecting MXC require:\n\n```powershell\n.\\scripts\\validate-mxc-e2e.ps1\n```\n\nThe script fails skipped MXC proofs by default. `-AllowSkip` documents an\nincapable host only and is not merge validation for MXC-related work.\n\nEvery new Windows node command also needs live local MCP discovery and invocation\nthrough `winnode`, plus the real Gateway path when the command is\nGateway-mediated. Follow\n[Windows node testing](..\u002F..\u002F..\u002Fdocs\u002FWINDOWS_NODE_TESTING.md) and the\n[proof skill](..\u002Fopenclaw-proof-validation\u002FSKILL.md).\n\n### 6. Build, architecture, packaging, and installer proof\n\n`.\\build.ps1` is the normal repository build. Use its project switches for a\nsmaller development loop, but do not substitute a partial build for required\ncloseout.\n\nArchitecture rules:\n\n- `dotnet build ... -r win-arm64` on x64 is cross-compile sanity only.\n- Native ARM64 launch, WebView2, runtime loading, UI, and installer behavior\n  require the `windows-11-arm64` proof pool.\n- Release publish validates both architectures. x64 performs native dependency\n  load probes. ARM64 release jobs, including the native `windows-11-arm`\n  publish, pass `-SkipNativeLoadProbe`; they prove payload presence and\n  signatures, not native ARM64 dependency loading or app behavior.\n\nExact development packaging entrypoints:\n\n```powershell\n# Fast local Inno iteration\n.\\scripts\\build-inno-local.ps1 -Arch x64 -Fast\n\n# Both release-shaped Inno architectures\n.\\scripts\\build-inno-local.ps1 -Arch All\n\n# Side-by-side locally signed Dev MSIX\n.\\scripts\\setup-dev-msix-cert.ps1\n.\\build.ps1 -Project WinUI -Msix Dev\n\n# Unsigned Store submission packages for x64 and ARM64\n.\\build.ps1 -Project WinUI -Msix Store\n```\n\nCertificate trust and package installation change machine state. Run them only\nwith that authority, and remove a task-created development certificate when the\ntest is complete:\n\n```powershell\n.\\scripts\\setup-dev-msix-cert.ps1 -Remove\n```\n\nFor source and artifact contract changes, use the matching checks instead of an\nunrelated app smoke:\n\n| Change | Exact check |\n|---|---|\n| Inno source or Pascal Script | `.\\scripts\\Test-InstallerScriptCompiles.ps1 -RequireCompiler` |\n| Installer source contract | `.\\scripts\\run-proof-tests.ps1 -Project 'tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj' -Filter 'FullyQualifiedName~InstallerIssAssertionTests' -ResultName 'installer-source'` |\n| Store bundle construction | `.\\scripts\\test-msix-bundle.ps1` |\n| MSIX version allocation | `.\\scripts\\test-msix-versioning.ps1` |\n| MSIX artifact shape | `.\\scripts\\test-msix-ci-artifacts.ps1` |\n| Dev MSIX release asset | `.\\scripts\\test-dev-msix-release.ps1` |\n| Migration test package | `.\\scripts\\test-migration-test-msix.ps1` |\n| Store submission authorization | `.\\scripts\\test-microsoft-store-submission.ps1` |\n| Inno-to-Store helper behavior | `.\\scripts\\test-store-migration-test-script.ps1` |\n\nSource checks do not prove clean install, upgrade, repair, uninstall, signature\nreputation, Store ingestion, package-private storage, or preservation. Use\n`windows-clean-installer-upgrade` for exact signed installer\u002Fupdate artifacts,\n`windows-11-sac-on` for enforcing Smart App Control, and the disposable\n[Store migration procedure](..\u002F..\u002F..\u002Fdocs\u002FSTORE_MIGRATION_TESTING.md) for real\nInno-to-Store acceptance.\n\nRepository validation tooling has its own executable contracts:\n\n| Change | Exact checks |\n|---|---|\n| Proof-pool inventory or scheduling | `.\\scripts\\validate-proof-pools.ps1`; `.\\scripts\\test-proof-pool-validator.ps1`; `.\\scripts\\test-validate-docs-proof-pool-flow.ps1` |\n| Result admission, wrappers, or evidence summaries | `.\\scripts\\test-proof-evidence.ps1` |\n| Agent readiness reporting | `.\\scripts\\test-agent-readiness.ps1` |\n| Change classifier | `.\\scripts\\test-ci-change-classifier.ps1` |\n| CI Gate result admission | `.\\scripts\\test-ci-gate-results.ps1` |\n| Workflow contracts | `.\\scripts\\test-ci-workflow-contract.ps1` |\n| Native Gateway source-build safety | `.\\scripts\\test-native-gateway-source-build.ps1` |\n| npm Gateway channel selection | `.\\scripts\\test-gateway-npm-release.ps1` |\n| Packaged Gateway provenance | `.\\scripts\\test-gateway-packaged-release.ps1` |\n| MSIX preview source selection | `.\\scripts\\test-msix-preview-source-version.ps1` |\n| Daily alpha version selection | `.\\scripts\\test-daily-alpha-version.ps1` |\n| Alpha promotion policy and versioning | `.\\scripts\\test-alpha-promotion.ps1`; `.\\scripts\\test-alpha-promotion-versioning.ps1` |\n| Release branch and stable correction versioning | `.\\scripts\\test-release-branch-versioning.ps1`; `.\\scripts\\test-stable-correction-release-validator.ps1` |\n\nThe documentation gate runs the proof-pool schema and parent-flow checks, not\nthe full malformed-contract matrix. Run the named focused checks for the\ncontract being changed.\n\n### 7. Release and cross-repository compatibility\n\n`.github\\workflows\\ci.yml` is the source of truth for hosted lanes. It separates:\n\n- fast documentation, skill, classifier, packaging-contract, and release-policy checks\n- core, tray\u002Fsetup\u002Fintegration, and UI\u002Faccessibility test jobs\n- WSL setup, revocation, and network E2E shards\n- x64 release publish smoke and native ARM64 release publish\n- per-architecture Dev\u002FStore MSIX builds and the Store bundle\n- signed x64\u002FARM64 portable and Inno release assets\n- the fail-closed CI Gate\n\nPackaging, installer, project, workflow, dependency, classifier, or unknown-path\nchanges select full pull-request validation and x64 release smoke. Pushes to\n`main` and tags also require ARM64 release publishing.\n\nThe reusable `.github\\workflows\\release-candidate-e2e.yml` proves one exact\nOpenClaw package candidate against an exact Windows-node app and immutable test\nharness. Only the recorded outcome `passed`, backed by the passing selected test,\nproves setup, connect, and safe `system.which` invocation through the real WSL\nGateway. An explicitly allowed `protocol_mismatch` outcome may make the workflow\ngreen, but it records incompatibility during fixture initialization and is not\nbehavioral proof. Neither outcome proves the native packaged Gateway. Preserve\ncandidate, app, workflow, artifact, and digest identities when interpreting it.\n\nRelease acceptance can exceed merge validation. Signed installer reputation,\nStore migration, real distribution, native Gateway lifecycle, native ARM64, and\ncross-architecture upgrade claims remain blocked until their named proof pools\nor release gates run against the exact candidate artifacts. Validation never\ngrants permission to reserve versions, sign, publish, submit to the Store, or\ndispatch workflows.\n\n## Failure policy\n\n- Treat a failure as a defect until evidence identifies product, test fixture,\n  shared state, ordering, infrastructure, credentials, host capability, or stale\n  source.\n- Reproduce with the smallest owner test or the same CI shard\u002Ffilter. Fix the\n  cause, rerun the focused failure, then rerun every required closeout command\n  affected by the fix.\n- Do not make a failure green with retries, longer arbitrary sleeps, weaker\n  assertions, broader mocks, hidden skips, baseline expansion, or a different\n  provider or architecture.\n- A passing replay is not a proven fix. Add or identify a regression that fails\n  for the original defect when feasible.\n- Check actual executed test counts and fresh reports. Zero tests, missing or\n  stale TRX, all-skipped selections, and skipped custom proof are failures.\n- Stop only a verified task-owned process for file locks. Do not terminate\n  another session's tray, Gateway, WSL distro, service, or installer.\n- Diagnose missing prerequisites with\n  `.\\scripts\\setup-dev.ps1 -CheckOnly`. Installation requires authority.\n- Keep opt-in environment variables scoped to the test and restore or remove\n  them afterward. In particular, unset `OPENCLAW_RUN_INTEGRATION`,\n  `OPENCLAW_RUN_E2E`, and `OPENCLAW_RUN_MXC_E2E` when finished.\n- Report exact commands, pass\u002Ffail and executed\u002Fskipped counts, source identity,\n  architecture, runtime or artifact identity, and every unrun or blocked proof\n  boundary. Do not turn fixture, local MCP, WSL, unsigned package, or\n  cross-compile evidence into a broader claim.\n\n## Source and maintenance\n\nWindows-owned adaptation of the MIT-licensed upstream\n[OpenClaw testing skill](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002F050ea4d27043627e2b2b84b993dae6c341343238\u002F.agents\u002Fskills\u002Fopenclaw-testing\u002FSKILL.md).\nWindows retains mandatory local code closeout, .NET and WinUI suite ownership,\nWSL\u002Fnative Gateway separation, package identities, x64\u002FARM64 gates, named proof\npools, and repository publication boundaries.\n","# OpenClaw Windows testing\n\nUse this skill to select and interpret validation for this repository. It covers\nthe Windows node, Companion WinUI app, setup engine, Gateway protocols, WSL\nintegration, packaging, installers, and release artifacts.\n\nIt does not authorize app launches, WSL or package changes, remote hosts, CI\ndispatch, publication, or cleanup. Use [test-audit](..\u002Ftest-audit\u002FSKILL.md) when\nwriting or reviewing tests, [proof validation](..\u002Fopenclaw-proof-validation\u002FSKILL.md)\nfor runtime evidence, [Crabbox](..\u002Fcrabbox\u002FSKILL.md) for authorized remote\nWindows execution, and\n[native Gateway from source](..\u002Fnative-gateway-from-source\u002FSKILL.md) for native\nGateway registration or compatibility work.\n\n## Start with the changed contract\n\n1. Record the repository path, branch, full HEAD, intended base and SHA,\n   ahead\u002Fbehind counts, and dirty-file count.\n2. Identify the production owner and its existing tests. Read the applicable\n   architecture guide from [AGENTS.md](..\u002F..\u002F..\u002FAGENTS.md#architecture-context-for-new-agents).\n3. Include staged, unstaged, and relevant untracked paths. A committed-diff-only\n   plan is incomplete for local work.\n4. Use the classifier as a read-only starting point, then add behavioral proof\n   that path classification cannot infer:\n\n```powershell\n.\\scripts\\Get-CiChangeClassification.ps1 -EventName pull_request `\n  -ChangedPaths 'src\\OpenClaw.Connection\\GatewayConnectionManager.cs' -Human\n```\n\nFor a committed comparison, pass known `-BaseSha` and `-HeadSha` values instead\nof `-ChangedPaths`. The classifier selects hosted lanes and the mandatory local\ncode-change closeout. Its proof-pool output is a candidate inventory, not\nauthorization or completed evidence.\n\nIf the source tree changes while validation is running, the affected result is\nstale. Rebuild and rerun against the new exact tree.\n\n## Use the proportional ladder\n\nChoose the [execution target](..\u002F..\u002F..\u002Fdocs\u002FTEST_COVERAGE.md#choose-the-local-execution-target)\nbefore any authorized runtime proof. Fixture-covered app behavior stays on the\ndeterministic fixture. Isolated test builds that need a real native Gateway\ndefault to the [task-owned build and named-patch workflow](..\u002Fnative-gateway-from-source\u002FSKILL.md#prepare-an-isolated-test-build),\nincluding single-instance tests. Build Companion in its own worktree, prepare a\nunique patch with a task-owned work root, and select it explicitly with isolated\napp data. The launcher's `-Isolated` switch alone does not isolate a Gateway\nbuild or allocate a unique instance. Use separate VMs for OS\u002Fclean-image\nisolation or missing host capabilities; keep required real WSL\u002FMXC proof.\n\nStart at the smallest boundary that can fail for the intended regression. Move\nup when the change crosses another owner, transport, persistence boundary,\narchitecture, or distribution format. Code changes still end with the required\ncloseout even when focused tests pass.\n\n### 1. Documentation and skill checks\n\nFor ordinary documentation-only changes:\n\n```powershell\n.\\scripts\\validate-docs.ps1\ngit diff --check\n```\n\nFor changes under `.agents\\skills`, also run:\n\n```powershell\n.\\scripts\\validate-agent-skills.ps1\n.\\scripts\\test-agent-skills-validator.ps1\n```\n\nDo not launch the app or claim runtime behavior from documentation validation.\nThe shipped `winnode` skill is an exception: changes to its command contract\nalso require the CLI\u002Fcore tests named in\n[AGENTS.md](..\u002F..\u002F..\u002FAGENTS.md#ui-mcp-and-pr-proof).\n\n### 2. Focused owner tests\n\nUse `dotnet test \u003Cproject> --filter '\u003Cexpression>'` for a class or behavior,\nthen run relevant siblings when shared setup or lifecycle could be involved.\n\n| Owner or risk | Focused project |\n|---|---|\n| Shared models, Gateway client, MCP, capabilities, approvals, A2UI security | `tests\\OpenClaw.Shared.Tests\\OpenClaw.Shared.Tests.csproj` |\n| Gateway registry, credentials, connection state, pairing, protocol signatures | `tests\\OpenClaw.Connection.Tests\\OpenClaw.Connection.Tests.csproj` |\n| Tray state, settings, onboarding helpers, localization, installer source contracts | `tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj` |\n| Setup pipeline, WSL install policy, rollback, setup-code and provider workflow | `tests\\OpenClaw.SetupEngine.Tests\\OpenClaw.SetupEngine.Tests.csproj` |\n| `winnode` parsing, JSON output, command descriptions and uninstall flow | `tests\\OpenClaw.WinNode.Cli.Tests\\OpenClaw.WinNode.Cli.Tests.csproj` |\n| Native WinUI, Reactor, A2UI rendering and accessibility | `tests\\OpenClaw.Tray.UITests\\OpenClaw.Tray.UITests.csproj` |\n| Functional UI surfaces | `tests\\OpenClawTray.FunctionalUI.Tests\\OpenClawTray.FunctionalUI.Tests.csproj` |\n| Real-process tray and local MCP | `tests\\OpenClaw.Tray.IntegrationTests\\OpenClaw.Tray.IntegrationTests.csproj` |\n| Gateway-mediated setup, recovery, pairing and invocation | `tests\\OpenClaw.E2ETests\\OpenClaw.E2ETests.csproj` |\n\nExamples:\n\n```powershell\ndotnet test .\\tests\\OpenClaw.Connection.Tests\\OpenClaw.Connection.Tests.csproj `\n  --filter 'FullyQualifiedName~PairingFlowTests'\n\ndotnet test .\\tests\\OpenClaw.SetupEngine.Tests\\OpenClaw.SetupEngine.Tests.csproj `\n  --filter 'FullyQualifiedName~GatewayWizardRestartRecoveryPolicyTests'\n\n$env:OPENCLAW_RUN_INTEGRATION = '1'\ntry {\n  dotnet build .\\src\\OpenClaw.Tray.WinUI\\OpenClaw.Tray.WinUI.csproj `\n    -c Debug -r win-x64\n  dotnet test .\\tests\\OpenClaw.Tray.IntegrationTests\\OpenClaw.Tray.IntegrationTests.csproj `\n    -r win-x64\n} finally {\n  Remove-Item Env:\\OPENCLAW_RUN_INTEGRATION -ErrorAction SilentlyContinue\n}\n```\n\nUse temporary settings directories or set `OPENCLAW_TRAY_DATA_DIR` before the\ntest process starts. For real tray\u002Fsetup proof, also isolate\n`OPENCLAW_TRAY_APPDATA_DIR` and `OPENCLAW_TRAY_LOCALAPPDATA_DIR`. Do not let\ntests read or mutate the normal user profile. Tray Integration launches a real\napp process, so it requires runtime authority even though its profile is\nisolated. It locates existing tray build output rather than receiving the app\nthrough a project reference, so rebuild the app from the current tree first.\n\n### 3. Required local closeout for code\n\nEvery code change and every agent code-change closeout requires:\n\n```powershell\n$env:OPENCLAW_REPO_ROOT = (Get-Location).Path\n.\\build.ps1\ndotnet test .\\tests\\OpenClaw.Shared.Tests\\OpenClaw.Shared.Tests.csproj --no-restore\ndotnet test .\\tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj --no-restore\n```\n\nIn a fresh worktree, build each test project first or omit `--no-restore` on the\nfirst run. A quick successful exit with no executed tests is not a pass. Inspect\nthe test totals or TRX.\n\nAdd the affected owner project even when it is not one of the two required\nsuites. For `winnode`, MCP output, or command-reference changes:\n\n```powershell\ndotnet test .\\tests\\OpenClaw.WinNode.Cli.Tests\\OpenClaw.WinNode.Cli.Tests.csproj --no-restore\n```\n\nSettings-profile, app-identity, or sandbox-containment changes also need the\nDevBuild variant used by CI:\n\n```powershell\ndotnet test .\\tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj `\n  -c Debug -r win-x64 --no-restore -p:DevBuild=true `\n  --filter 'FullyQualifiedName~SettingsManagerIsolationTests|FullyQualifiedName~AppRefactorContractTests.SandboxPage_'\n```\n\n### 4. WinUI and application-boundary proof\n\nUse [WinApp CLI](..\u002F..\u002F..\u002Fdocs\u002FWINAPP_CLI.md) as a first-choice companion to\nthe existing harness: discover selectors and state with `ui`, diagnose native\ncrashes with `run --debug-output`, and measure layout with `perf`. Prefer\nbounded condition waits and explicit outcomes over sleeps or command-exit-only\nchecks. Keep native keyboard\u002FIME\u002Ffocus tests, Axe scans, pixel proof and all\nexisting assertions; UIA invocation cannot replace a keyboard regression.\nSandbox helps with authorized disposable app\u002Finstaller experiments, not\nWSL\u002FMXC or signed-release acceptance. Check installed help\u002Fschema and the\nguide's identity, desktop ownership, capture and DevTools limitations first.\nFor clean-machine dependencies and installer\u002Funinstaller differences, prefer\nour [sandbox-mcp \u002F sbx tools](https:\u002F\u002Fgithub.com\u002Fshanselman\u002Fsandbox-mcp), which\ndo not implicitly provision app runtimes. Use the\n[tool-choice matrix](..\u002F..\u002F..\u002Fdocs\u002FWINAPP_CLI.md#choose-winapp-sandbox-or-sandbox-mcp)\nbefore starting a guest; WinApp's runtime-prepared loop and a clean baseline\nanswer different questions. One Sandbox has one lifecycle owner.\n\nPure view models and projections belong in focused unit tests. Mounted controls,\nWindows App SDK behavior, accessibility, keyboard input, and visible rendering\nneed the UI suite or an interactive proof host.\n\nRun the inventory-owned `windows-winui-interactive` accessibility proof command\nwith the repository wrapper:\n\n```powershell\n.\\scripts\\run-proof-tests.ps1 `\n  -Project 'tests\\OpenClaw.Tray.UITests\\OpenClaw.Tray.UITests.csproj' `\n  -Filter 'Category=Accessibility' `\n  -ResultName 'winui-accessibility' `\n  -RuntimeIdentifier win-x64\n```\n\nThis proof launches the real app, requires runtime authority and an available\nWindows desktop, and emits inventory-bound evidence. CI runs the same\naccessibility category through its own prebuilt test-lane command.\n\nFor deterministic real-app chat and navigation behavior, build the exact app and\nuse the fixture on an authorized exclusive interactive desktop. The complete\nfixture UI selection includes owned foreground wheel input, explicitly enabled\nwith `-NativeInputProof`; its exact opt-in, foreground and injected-event guards\nremain mandatory. Runtime regressions require both Debug and production-shaped,\nnon-Dev Release runs:\n\n```powershell\n.\\build.ps1\n$debugApp = '.\\src\\OpenClaw.Tray.WinUI\\bin\\Debug\\net10.0-windows10.0.22621.0\\win-x64\\OpenClaw.Tray.WinUI.exe'\n.\\scripts\\test-gateway-fixture.ps1 -AppPath $debugApp -NativeInputProof\n\n.\\build.ps1 -Project WinUI -Configuration Release\n$releaseApp = '.\\src\\OpenClaw.Tray.WinUI\\bin\\Release\\net10.0-windows10.0.22621.0\\win-x64\\OpenClaw.Tray.WinUI.exe'\n.\\scripts\\test-gateway-fixture.ps1 `\n  -AppPath $releaseApp -Configuration Release -Screenshots -NativeInputProof\n```\n\nUse `win-arm64` on a native ARM64 host. The fixture proves the real app,\nGateway client, chat stack, history loader, local MCP, and mounted native UI\nagainst synthetic loopback data. It does not prove live pairing, providers,\nnode command execution, WSL, native Gateway\u002FMXC, installation, or update.\n\nFor current-head visual, permission, native-input, or diagnostic claims, use the\n`windows-winui-interactive` proof pool and the proof-validation skill. A state\nsnapshot or UI Automation result alone does not prove unclipped rendered pixels.\n\n### 5. WSL, pairing, protocol, and node invocation\n\nConnection and pairing changes need focused `OpenClaw.Connection.Tests` plus the\nappropriate real boundary. Setup, bootstrap, WSL lifecycle, revocation, and\nnetwork recovery use the E2E project. Local E2E creates a run-scoped WSL distro\nand run-specific startup registrations, so it requires runtime authority and\nshould run only when explicitly needed:\n\n```powershell\n$env:OPENCLAW_RUN_E2E = '1'\ntry {\n  dotnet build .\\src\\OpenClaw.Tray.WinUI\\OpenClaw.Tray.WinUI.csproj `\n    -c Debug -r win-x64\n  dotnet test .\\tests\\OpenClaw.E2ETests\\OpenClaw.E2ETests.csproj -r win-x64 `\n    --filter 'FullyQualifiedName~OpenClaw.E2ETests.Setup.SetupAndConnectTests'\n} finally {\n  Remove-Item Env:\\OPENCLAW_RUN_E2E -ErrorAction SilentlyContinue\n}\n```\n\nUse `RevocationAndRecoveryTests` or `NetworkRecoveryTests` in the filter when\nthat is the changed contract. These lanes install and exercise the npm-latest\nWSL Gateway path. They locate existing tray build output rather than receiving\nthe app through a project reference, so rebuild it from the current tree first.\nThey are not native MSIX Gateway proof.\n\nFor app-owned WSL installation diagnostics, the non-mutating preflight is:\n\n```powershell\n.\\scripts\\validate-wsl-gateway.ps1 -Scenario PreflightOnly\n```\n\n`UpstreamInstall` launches the tray, installs or reuses the shared product\n`OpenClawGateway` distro, and stops matching WSL keepalive processes. Its WSL\nstate is not isolated by the run-specific AppData directories. It requires\nexplicit runtime authority and an owned disposable host. `FreshMachine` and\n`Recreate` additionally unregister `OpenClawGateway`, require\n`-ConfirmDestructiveClean`, and require explicit destructive authority.\n\nChanges to MXC sandboxing, `system.run`, approvals, Windows command execution,\nor setup\u002Fconnect behavior affecting MXC require:\n\n```powershell\n.\\scripts\\validate-mxc-e2e.ps1\n```\n\nThe script fails skipped MXC proofs by default. `-AllowSkip` documents an\nincapable host only and is not merge validation for MXC-related work.\n\nEvery new Windows node command also needs live local MCP discovery and invocation\nthrough `winnode`, plus the real Gateway path when the command is\nGateway-mediated. Follow\n[Windows node testing](..\u002F..\u002F..\u002Fdocs\u002FWINDOWS_NODE_TESTING.md) and the\n[proof skill](..\u002Fopenclaw-proof-validation\u002FSKILL.md).\n\n### 6. Build, architecture, packaging, and installer proof\n\n`.\\build.ps1` is the normal repository build. Use its project switches for a\nsmaller development loop, but do not substitute a partial build for required\ncloseout.\n\nArchitecture rules:\n\n- `dotnet build ... -r win-arm64` on x64 is cross-compile sanity only.\n- Native ARM64 launch, WebView2, runtime loading, UI, and installer behavior\n  require the `windows-11-arm64` proof pool.\n- Release publish validates both architectures. x64 performs native dependency\n  load probes. ARM64 release jobs, including the native `windows-11-arm`\n  publish, pass `-SkipNativeLoadProbe`; they prove payload presence and\n  signatures, not native ARM64 dependency loading or app behavior.\n\nExact development packaging entrypoints:\n\n```powershell\n# Fast local Inno iteration\n.\\scripts\\build-inno-local.ps1 -Arch x64 -Fast\n\n# Both release-shaped Inno architectures\n.\\scripts\\build-inno-local.ps1 -Arch All\n\n# Side-by-side locally signed Dev MSIX\n.\\scripts\\setup-dev-msix-cert.ps1\n.\\build.ps1 -Project WinUI -Msix Dev\n\n# Unsigned Store submission packages for x64 and ARM64\n.\\build.ps1 -Project WinUI -Msix Store\n```\n\nCertificate trust and package installation change machine state. Run them only\nwith that authority, and remove a task-created development certificate when the\ntest is complete:\n\n```powershell\n.\\scripts\\setup-dev-msix-cert.ps1 -Remove\n```\n\nFor source and artifact contract changes, use the matching checks instead of an\nunrelated app smoke:\n\n| Change | Exact check |\n|---|---|\n| Inno source or Pascal Script | `.\\scripts\\Test-InstallerScriptCompiles.ps1 -RequireCompiler` |\n| Installer source contract | `.\\scripts\\run-proof-tests.ps1 -Project 'tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj' -Filter 'FullyQualifiedName~InstallerIssAssertionTests' -ResultName 'installer-source'` |\n| Store bundle construction | `.\\scripts\\test-msix-bundle.ps1` |\n| MSIX version allocation | `.\\scripts\\test-msix-versioning.ps1` |\n| MSIX artifact shape | `.\\scripts\\test-msix-ci-artifacts.ps1` |\n| Dev MSIX release asset | `.\\scripts\\test-dev-msix-release.ps1` |\n| Migration test package | `.\\scripts\\test-migration-test-msix.ps1` |\n| Store submission authorization | `.\\scripts\\test-microsoft-store-submission.ps1` |\n| Inno-to-Store helper behavior | `.\\scripts\\test-store-migration-test-script.ps1` |\n\nSource checks do not prove clean install, upgrade, repair, uninstall, signature\nreputation, Store ingestion, package-private storage, or preservation. Use\n`windows-clean-installer-upgrade` for exact signed installer\u002Fupdate artifacts,\n`windows-11-sac-on` for enforcing Smart App Control, and the disposable\n[Store migration procedure](..\u002F..\u002F..\u002Fdocs\u002FSTORE_MIGRATION_TESTING.md) for real\nInno-to-Store acceptance.\n\nRepository validation tooling has its own executable contracts:\n\n| Change | Exact checks |\n|---|---|\n| Proof-pool inventory or scheduling | `.\\scripts\\validate-proof-pools.ps1`; `.\\scripts\\test-proof-pool-validator.ps1`; `.\\scripts\\test-validate-docs-proof-pool-flow.ps1` |\n| Result admission, wrappers, or evidence summaries | `.\\scripts\\test-proof-evidence.ps1` |\n| Agent readiness reporting | `.\\scripts\\test-agent-readiness.ps1` |\n| Change classifier | `.\\scripts\\test-ci-change-classifier.ps1` |\n| CI Gate result admission | `.\\scripts\\test-ci-gate-results.ps1` |\n| Workflow contracts | `.\\scripts\\test-ci-workflow-contract.ps1` |\n| Native Gateway source-build safety | `.\\scripts\\test-native-gateway-source-build.ps1` |\n| npm Gateway channel selection | `.\\scripts\\test-gateway-npm-release.ps1` |\n| Packaged Gateway provenance | `.\\scripts\\test-gateway-packaged-release.ps1` |\n| MSIX preview source selection | `.\\scripts\\test-msix-preview-source-version.ps1` |\n| Daily alpha version selection | `.\\scripts\\test-daily-alpha-version.ps1` |\n| Alpha promotion policy and versioning | `.\\scripts\\test-alpha-promotion.ps1`; `.\\scripts\\test-alpha-promotion-versioning.ps1` |\n| Release branch and stable correction versioning | `.\\scripts\\test-release-branch-versioning.ps1`; `.\\scripts\\test-stable-correction-release-validator.ps1` |\n\nThe documentation gate runs the proof-pool schema and parent-flow checks, not\nthe full malformed-contract matrix. Run the named focused checks for the\ncontract being changed.\n\n### 7. Release and cross-repository compatibility\n\n`.github\\workflows\\ci.yml` is the source of truth for hosted lanes. It separates:\n\n- fast documentation, skill, classifier, packaging-contract, and release-policy checks\n- core, tray\u002Fsetup\u002Fintegration, and UI\u002Faccessibility test jobs\n- WSL setup, revocation, and network E2E shards\n- x64 release publish smoke and native ARM64 release publish\n- per-architecture Dev\u002FStore MSIX builds and the Store bundle\n- signed x64\u002FARM64 portable and Inno release assets\n- the fail-closed CI Gate\n\nPackaging, installer, project, workflow, dependency, classifier, or unknown-path\nchanges select full pull-request validation and x64 release smoke. Pushes to\n`main` and tags also require ARM64 release publishing.\n\nThe reusable `.github\\workflows\\release-candidate-e2e.yml` proves one exact\nOpenClaw package candidate against an exact Windows-node app and immutable test\nharness. Only the recorded outcome `passed`, backed by the passing selected test,\nproves setup, connect, and safe `system.which` invocation through the real WSL\nGateway. An explicitly allowed `protocol_mismatch` outcome may make the workflow\ngreen, but it records incompatibility during fixture initialization and is not\nbehavioral proof. Neither outcome proves the native packaged Gateway. Preserve\ncandidate, app, workflow, artifact, and digest identities when interpreting it.\n\nRelease acceptance can exceed merge validation. Signed installer reputation,\nStore migration, real distribution, native Gateway lifecycle, native ARM64, and\ncross-architecture upgrade claims remain blocked until their named proof pools\nor release gates run against the exact candidate artifacts. Validation never\ngrants permission to reserve versions, sign, publish, submit to the Store, or\ndispatch workflows.\n\n## Failure policy\n\n- Treat a failure as a defect until evidence identifies product, test fixture,\n  shared state, ordering, infrastructure, credentials, host capability, or stale\n  source.\n- Reproduce with the smallest owner test or the same CI shard\u002Ffilter. Fix the\n  cause, rerun the focused failure, then rerun every required closeout command\n  affected by the fix.\n- Do not make a failure green with retries, longer arbitrary sleeps, weaker\n  assertions, broader mocks, hidden skips, baseline expansion, or a different\n  provider or architecture.\n- A passing replay is not a proven fix. Add or identify a regression that fails\n  for the original defect when feasible.\n- Check actual executed test counts and fresh reports. Zero tests, missing or\n  stale TRX, all-skipped selections, and skipped custom proof are failures.\n- Stop only a verified task-owned process for file locks. Do not terminate\n  another session's tray, Gateway, WSL distro, service, or installer.\n- Diagnose missing prerequisites with\n  `.\\scripts\\setup-dev.ps1 -CheckOnly`. Installation requires authority.\n- Keep opt-in environment variables scoped to the test and restore or remove\n  them afterward. In particular, unset `OPENCLAW_RUN_INTEGRATION`,\n  `OPENCLAW_RUN_E2E`, and `OPENCLAW_RUN_MXC_E2E` when finished.\n- Report exact commands, pass\u002Ffail and executed\u002Fskipped counts, source identity,\n  architecture, runtime or artifact identity, and every unrun or blocked proof\n  boundary. Do not turn fixture, local MCP, WSL, unsigned package, or\n  cross-compile evidence into a broader claim.\n\n## Source and maintenance\n\nWindows-owned adaptation of the MIT-licensed upstream\n[OpenClaw testing skill](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002F050ea4d27043627e2b2b84b993dae6c341343238\u002F.agents\u002Fskills\u002Fopenclaw-testing\u002FSKILL.md).\nWindows retains mandatory local code closeout, .NET and WinUI suite ownership,\nWSL\u002Fnative Gateway separation, package identities, x64\u002FARM64 gates, named proof\npools, and repository publication boundaries.\n",{"name":5,"description":7},"main","a6ff6a164b20835bd5d77200c9134578dd7ce0c6",".agents\u002Fskills\u002Fopenclaw-testing",346,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node","https:\u002F\u002Fopenclaw.ai","https:\u002F\u002Fgithub.com\u002Fopenclaw","Your personal, open source AI assistant.","2026-11-12 02:11:46",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add openclaw\u002Fopenclaw-windows-node --skill openclaw-testing",{"tool":55,"command":56},"bunx","bunx skills add openclaw\u002Fopenclaw-windows-node --skill openclaw-testing",{"tool":58,"command":59},"pnpm","pnpm dlx skills add openclaw\u002Fopenclaw-windows-node --skill openclaw-testing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-testing\u002FSKILL.md",true,[],[64,89,106,124,145,171],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":35},"01M6KZCXK5PCYWWW5FCVDYPAXK","retrigger-flaky-ci","Triage failed CI on a pull request or the active branch, decide whether the failures come from its changes, and rerun only failures that are unrelated. Use when asked to retrigger, rerun, or kick CI on a PR with failing checks.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fretrigger-flaky-ci\u002FSKILL.md",[],[71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88],"ci","retrigger flaky ci","pull","with","branch","unrelated","changes","pr","pull request","active","request","decide","only","triage","use","rerun","failing","when",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":35},"01M698QMQN5TQES4R7ZPTYAZF5","technical-documentation","Write, review, or restructure Windows node documentation and agent instructions using current source, task-focused explanations, and explicit fact preservation.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftechnical-documentation\u002FSKILL.md",[],[96,97,98,99,25,100,101,102,103,33,104,105],"technical documentation","technical","documentation","agent instructions","task","review","instructions","write","preservation","source",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":35},"01M698QKPXJ8ZG34MYHPPCAT4T","pr-simplify","Simplify your own Windows-node change to its smallest complete fix while preserving distinct regressions, platform contracts, and required proof. Use after implementation before PR preparation, after large repairs, or when asked to shrink a change or remove slop.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr-simplify\u002FSKILL.md",[],[113,78,114,25,115,116,117,118,119,85,88,120,33,121,122,34,123],"pr simplify","simplify","platform","slop","remove","complete","fix","change","preparation","implementation","contracts",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":133,"publishedAt":35},"01M698QH7JVVA09769ER9P2TKY","openclaw-proof-validation","Plan and collect OpenClaw Windows validation\u002Fproof: tests, rubber-duck review, UI evidence, MCP output, and gateway runtime proof.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-proof-validation\u002FSKILL.md",[130],{"categoryNo":131,"categoryName":132,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[134,9,135,34,136,137,25,138,27,139,30,31,101,140,141,142,143,144],"openclaw proof validation","validation","MCP","gateway","evidence","collect","output","plan","ui evidence","ui","duck",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":156,"publishedAt":35},"01M698QFXW9PDK8YZ467MBW5P1","openclaw-debugging","Debug OpenClaw Windows Companion, setup, Gateway connection, node capabilities, packaged permissions, updates, installers, and system.run by selecting the failing boundary and proof path before changing code.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-debugging\u002FSKILL.md",[151],{"categoryNo":152,"categoryName":153,"taxonomyType":154,"taxonomyTypeDesc":155},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[157,9,158,87,159,160,161,162,163,33,164,165,137,25,166,167,168,169,34,170],"openclaw debugging","debugging","updates","code","capabilities","permissions","run","companion","path","system","debug","boundary","connection","setup",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":178,"publishedAt":35},"01M698QEPAAXVVCFQCZMEWMW6H","native-gateway-from-source","Run side-by-side named Gateway patches as the default for local and future cloud native-Gateway E2E on capable Windows clients. Build from npm latest, a published packaging release with -GatewayChannel Packaged, or explicit sources; select the patch with OPENCLAW_NATIVE_GATEWAY_DEV_PATCH and remove only owned instances.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fnative-gateway-from-source\u002FSKILL.md",[177],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[179,137,180,105,9,181,25,182,183,184,117,185,28,186,187,188,83,189,190,191,74],"native gateway from source","native","instances","sources","as","for","select","default","local","dev","e2e","cloud native","patch"]