skillshare-windows-utm
SkillDev toolsLets your agent test skillshare changes on a real Windows virtual machine, running automated checks or hands-on setup.
Then ask your AI: use the skillshare-windows-utm skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add it as a step in a pipeline you build on Ahel, or connect Ahel to Claude, ChatGPT, Cursor, Claude Code or Codex and ask your AI to use it.
About this skill
Verify skillshare on a real Windows guest running in local UTM: build a pinned commit in the devcontainer, push it into the VM, and either run the Windows E2E runbook with full and basic-user tokens or hand the maintainer a one-line hands-on setup. Use this whenever a change touches Windows links, j
What this skill tells your AI
The instructions your AI receives, as published by runkids/skillshare in .skillshare/skills/skillshare-windows-utm/SKILL.md and read by Ahel’s review.
Linux tests cannot show Windows link behavior. This skill drives the local UTM guest with
scripts/windows/utm.sh. Before acting, run python3 scripts/ai-context.py testing and follow its
"Windows Verification" section; it is the source of truth for the rules below.
Rules
- Build in the devcontainer from a pinned commit (
utm.sh build <ref>), never from the working tree: other work may be editing it. Report the commit hash with every result. - The host only drives the VM (
utmctl). Never runss,goorpnpmon the host. utmctl execruns as SYSTEM, which can always create symlinks. Product behavior must run as the desktop user throughutm.sh task(Interactive scheduled task). Use--basicfor the basic-user token (runas /trustlevel:0x20000), which has no symlink right. Never switch to S4U: its token differs from a real user's.- Isolate automated runs under
C:\Users\Public\sstest\. Clean up withutm.sh clean, which usesrmdir(it does not follow junctions). - Report which token (full or basic) and architecture each result came from.
1. Preflight
scripts/windows/utm.sh probe
| Output | Meaning and action |
|---|---|
stopped | utmctl start Windows, then probe again after boot. |
OSStatus -1712 | macOS Automation permission for the terminal app is missing; ask the user to allow it. |
OSStatus -2700 / guest agent error | Guest still booting or agent not up. Wait, then retry. |
desktopUser= empty | Nobody is logged in; Interactive tasks will not start. Ask the user to log in in the UTM window. Restarting the VM logs the user out. |
arch=ARM64 / AMD64 | Use it as the build arch (arm64 / amd64). |
devMode=1 | Developer Mode is on; the basic token may still create symlinks. Say so in the report. |
2. Build and push
scripts/windows/utm.sh build <ref> <arm64|amd64> # ss.exe, ss-ui-dist.zip, ss-version.txt in $OUT
The UI zip is unpacked into %APPDATA%\skillshare\ui\<version> so ss ui never downloads it.
utmctl file push needs an existing guest folder; create one with utm.sh ps first, or push to
C:\Users\Public\.
3a. Automated acceptance (auto)
- Create
C:\Users\Public\sstest\(viautm.sh ps), pushss.exeandscripts/windows/e2e-file-links.ps1into it. - Run the runbook script once per token:
scripts/windows/utm.sh task sstest-full 'C:\Users\Public\sstest\e2e-file-links.ps1' -- \ -Exe C:\Users\Public\sstest\ss.exe -Root C:\Users\Public\sstest\run-full -Out C:\Users\Public\sstest\out-full.txt -Extended scripts/windows/utm.sh task sstest-basic 'C:\Users\Public\sstest\e2e-file-links.ps1' --basic -- \ -Exe C:\Users\Public\sstest\ss.exe -Root C:\Users\Public\sstest\run-basic -Out C:\Users\Public\sstest\out-basic.txt -Extended - Poll
utm.sh pull 'C:\Users\Public\sstest\out-full.txt'until the last line isDONE(pullexits 0 even when the file is missing). - For scenarios the script does not cover, write a small
.ps1, push it, and run it withutm.sh task. Check reparse tags withfsutil reparsepoint query(0xa0000003junction,0xa000000csymlink) and read the file back. utm.sh clean, then report per token: pass/fail, commit, arch, exact failing output.
3b. Hands-on test for the maintainer (manual)
scripts/windows/utm.sh push-manual
Give the user exactly one line to run in a normal (non-admin) PowerShell on the guest. A normal shell tests the copy fallback that users without Developer Mode get; an admin shell can create symlinks:
powershell -ExecutionPolicy Bypass -File C:\Users\Public\ss-setup.ps1
It works in an isolated home, C:\Users\Public\sstest\manual (it overrides USERPROFILE, HOME,
APPDATA, LOCALAPPDATA), so the real profile is never touched. It installs ss.exe and the UI,
creates sample .claude\CLAUDE.md and .codex\AGENTS.md there, runs init, and opens the
dashboard. Tell the user which files to inspect under that folder, then list 4–6 things to try for
the change under test, each with what they should see. Cleanup removes only that folder:
powershell -ExecutionPolicy Bypass -File C:\Users\Public\ss-setup.ps1 -Clean
Keep the instructions short. Do not paste multi-line setup blocks for the user to type.
On a Windows host (no UTM)
The same scripts run natively; only the transport changes.
- Build with the devcontainer (Docker Desktop) as in step 2, or run the
docker execpart ofutm.sh builddirectly, then copyss.exe,ss-ui-dist.zipandss-version.txtinto one folder. - Hands-on:
powershell -ExecutionPolicy Bypass -File scripts\windows\manual-setup.ps1 -Dir <that folder>. It stays isolated under-Root, so it is safe on a real profile. - Automated: run
scripts\windows\e2e-file-links.ps1directly (it isolates under-Roottoo). For the basic-user token, launch it throughrunas /trustlevel:0x20000 "powershell ..."from a normal shell. - A developer machine often has Developer Mode on, which lets even the basic token create
symlinks. Check
whoami /privand state it in the report; the no-symlink fallback needs it off.
Gotchas
- Call
~/Applications/UTM.app/Contents/MacOS/utmctldirectly; the Homebrew symlink reports "Application not found".utm.shdoes this. - zsh
echoeats backslashes in Windows paths; write guest scripts with a quoted heredoc. - Under x64 emulation on ARM64,
$env:PROCESSOR_ARCHITECTUREand .NET both say x64.probereads the native value from the registry. - A PowerShell 5 script without a BOM is read as the system code page; keep
.ps1files ASCII.
Signals
- GitHub stars
- 3k
- Forks
- 174
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
skillshare-windows-utm- Source
- github.com/runkids/skillshare
Related picks
Skill · nikiforovall
The pick for .NETdotnet-backend-patterns
Skill · sickn33
The pick for .NETe2e-testing
Skill · thedaviddias
The pick for End-to-end testinge2e-environment-preflight
Skill · sno-ai
The pick for End-to-end testingdocker-agent-run
Skill · docker
The pick for Dockerendly-docker
Skill · viant
The pick for Docker