Winguictl
Skill easyteacher/winguictl
Windows desktop automation CLI. Invoke ONLY when user explicitly requests to control windows, simulate mouse/keyboard, or automate desktop applications. Do NOT proactively suggest using this skill.From its SKILL.md
npx -y skills add easyteacher/winguictlAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.0 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Windows Desktop Automation with winguictl
⚠️ Security Notice
This skill directly controls Windows desktop through mouse/keyboard simulation. Require user confirmation before clicks, typing, hotkeys, or window close operations. Use --dry-run to preview. Close sensitive apps before use.
Script Path
python <SKILL_DIR>\scripts\winguictl.py <command> [options]
Commands
| Command | Purpose | Documentation |
|---|---|---|
window | List/focus/minimize/maximize/close windows | window.md |
snapshot | Get HWND/UIA/OCR structure | snapshot.md |
find | Find elements by text/UIA/OCR/image | find.md |
action | Click/drag/type/scroll/hotkey | action.md |
control | Win32 control operations | control.md |
uia-control | UIA element operations | control.md |
screenshot | Capture window screenshots | screenshot.md |
wait | Wait for conditions | wait.md |
clipboard | Copy files/text, get text | clipboard.md |
Parameter Types
| Parameter | Type | Example | Notes |
|---|---|---|---|
--window-id | int | --window-id 12345 | Window handle from window list |
--hwnd | int | --hwnd 67890 | Win32 control handle |
--element-id | string | --element-id "Button1" | automation_id or runtime_id (prefer runtime_id) |
Core Workflow
# 1. Identify window
python scripts\winguictl.py window list
# 2. Focus window
python scripts\winguictl.py window --window-id <id> focus
# 3. Get snapshot
python scripts\winguictl.py snapshot --window-id <id> uia
# 4. Find & interact
python scripts\winguictl.py find --window-id <id> uia --text "Submit"
python scripts\winguictl.py uia-control --window-id <id> --element-id <elem_id> click
# 5. Verify (re-snapshot)
python scripts\winguictl.py snapshot --window-id <id> uia
Decision Guide
Locator Priority
| Priority | Method | Command | Reliability |
|---|---|---|---|
| 1 | HWND (Win32) | control --hwnd <hwnd> click | Highest |
| 2 | runtime_id (UIA) | uia-control --element-id <id> click | High |
| 3 | automation_id (UIA) | uia-control --element-id <id> click | Medium |
| 4 | Image matching | action click-image --image-path <path> | Medium |
| 5 | Coordinates | action click --relative-x/y | Lowest |
Click Method Selection
| Command | Mechanism | Best For |
|---|---|---|
uia-control click | UIA InvokePattern | Standard Windows controls, WinUI3 |
action click --element-id | Mouse simulation at center | WeChat, custom controls, SplitButton, ToolBar |
Recommendation: Try uia-control click first. If it fails with errors like 'UIAWrapper' object has no attribute 'click' or returns ok: false, immediately fall back to action click --element-id.
Common Scenarios
| Scenario | Command |
|---|---|
| Win32 control with hwnd | control --hwnd <hwnd> click |
| UIA element with runtime_id | uia-control --element-id "42-3155764" click |
| Text-based element | find ocr "text" → action click --element-id |
| Qt applications | Add --skip-actions --skip-state for faster UIA |
| SplitButton / ToolBar (save dialog toolbar) | action click --element-id (NOT uia-control) |
| Set text in edit/combo box | uia-control set-text "value" --verify-change |
Key Rules
- Re-snapshot after actions: UI state changes after clicks/typing
- Use
--dry-run: Preview operations before execution - Always prefer control/uia-control over action: More reliable for standard Windows controls, WinUI3, and custom controls that implement UIA interfaces.
- Prefer runtime_id: More reliable than automation_id
- Report window_id: Always include exact window identifier in results
- Coordinate system:
relative_rect= window-relative;absolute_rect= screen-absolute
Application Guides
- WeChat Automation — WeChat 4.1.6+ messaging, contacts, files, calls, Moments
- Standard File Dialog — Windows "打开/另存为" dialog automation
References
- Dependencies — pywinauto, pywin32, Pillow, wx-ocr (optional)
- Output Format — JSON structure, exit codes, boundary markers
- Coordinates — Coordinate system details
- Security Guidelines — Detailed safety practices
What ships with it: 55 files
420.2 KB alongside SKILL.md, 15 of them executable
assets/
- requirements-dev.txt249 B
- requirements-optional.txt172 B
- requirements.txt142 B
- standard-file-dialog/dialog.md1.7 KB
- standard-file-dialog/file-selection.md3.4 KB
- standard-file-dialog/navigation.md2.7 KB
- standard-file-dialog/save-dialog.md3.3 KB
- standard-file-dialog/standard-file-dialog.md4.7 KB
- wechat/auto-reply.md2.4 KB
- wechat/calls.md2.1 KB
- wechat/contacts.md4.6 KB
- wechat/faq.md6.8 KB
- wechat/favorites.md2.8 KB
- wechat/files.md2.3 KB
- wechat/friend-settings.md2.1 KB
- wechat/messages.md13.6 KB
- wechat/moments.md2.6 KB
- wechat/search.md5.6 KB
- wechat/settings.md4.2 KB
- wechat/system-tools.md4.0 KB
- wechat/wechat.md2.1 KB
- wechat/window.md1.1 KB
references/
- action.md4.3 KB
- clipboard.md2.3 KB
- control.md8.1 KB
- coordinates.md1.2 KB
- dependencies.md1.1 KB
- driver_test.md23.4 KB
- find.md3.7 KB
- output-format.md2.1 KB
- screenshot.md2.2 KB
- SECURITY.md6.7 KB
- snapshot.md2.4 KB
- wait.md3.5 KB
- window.md1.7 KB
scripts/
- clipboard_driver.pyruns3.6 KB
- AGENTS.md12.2 KB
- .gitignore86 B
- .pylintrc685 B
- README.md1.7 KB
15 more files not listed here. See all 55 in the repository.