Borrowing it
Nothing to install: this file belongs to EvotecIT/DesktopManager. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/EvotecIT/DesktopManager/v2-speedygonzales/.agents/skills/desktopmanager-operator/SKILL.mdgit clone --depth 1 https://github.com/EvotecIT/DesktopManagerWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/evotecit/desktopmanager/desktopmanager-operator)<a href="https://agentmods.dev/skills/evotecit/desktopmanager/desktopmanager-operator"><img src="https://agentmods.dev/badge/skills/evotecit/desktopmanager/desktopmanager-operator/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/evotecit/desktopmanager/desktopmanager-operator"><img src="https://agentmods.dev/badge/skills/evotecit/desktopmanager/desktopmanager-operator.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00089 | $0.03863 |
| Opus 5.5 | $0.00036 | $0.01545 |
| Sonnet 5.5 | $0.00018 | $0.00773 |
| Haiku 4.5 | $0.00009 | $0.00386 |
Grade A, and why
desktopmanager-operator scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 244 lines — stays where its author put it; the contents beside it link to each section on GitHub.
DesktopManager Operator
Use this skill to operate the Windows desktop through DesktopManager.
Golden Path
- Prefer MCP first:
desktopmanager mcp serve- Add
--allow-mutationsonly when the session really needs desktop or saved-state changes. - Add
--allow-process <pattern>or--deny-process <pattern>when the session should stay scoped to specific desktop apps. - Add
--allow-foreground-inputonly for sacrificial or tightly controlled sessions that may need focused fallback on zero-handle UIA text or key actions. - Add
--dry-runwhen you want to preview mutating MCP calls without changing the desktop.
- Add
- Start with inspection, not mutation.
- Read resources first:
desktop://windows/activedesktop://windows/visibledesktop://monitors - Use
get_active_windowwhen focus matters. - Use
window_existsoractive_window_matcheswhen you need an explicit assertion first. - Use
screenshot_desktoporscreenshot_windowwhen visual confirmation is needed. - Use
get_window_geometrywhen you need exact outer-window and client-area bounds before a coordinate-based action. - When more than one window matches, switch to an exact handle before mutating anything.
- Read resources first:
- Launch and wait when the target app is not ready yet.
- Use
launch_processto start the app. - Prefer
launch_and_wait_for_windowwhen the next step depends on a real launched window instead of a best-effort process start. - If launch correlation matters, set a short launch-time window wait instead of assuming the first matching app window is the new one.
- If you know the expected launched window, pass a title or class filter and require a real match.
- Use
wait_for_windowbefore moving, focusing, or capturing it.
- Use
- Inspect controls before interacting.
- Use
list_window_controlsto discover control handles, classes, text, automation ids, control types, and control bounds. - Use
diagnose_window_controlswhen a modern app is not exposing the controls you expected. It will show whether Win32 or UIA discovery produced anything, whether foreground preparation helped, and what each probed UIA root returned.
- Use
diagnose_window_controlscan also take a saved control target name, so reusable target profiles and ad-hoc selectors share the same diagnostic path.diagnose_window_controlscan also include a read-only action probe, which is the safest way to verify repeated UIA action caching without mutating the app.- The control diagnostics payload now includes elapsed times, so you can compare cold versus warm-cache behavior directly instead of inferring it only from cache flags.
- Use UIA-oriented selectors when modern apps do not expose useful child-window controls.
- Use
control_existsorwait_for_controlwhen the control can appear asynchronously or when you want an explicit precondition before clicking. - Use
assert_control_valuewhen the workflow depends on the field content itself, not merely the presence of a matching control. - When available, prefer value, enabled, or focusable checks over brittle text-only guesses.
- If UIA discovery is flaky on a background window, retry with the shared foreground hint before inventing wrapper-specific workarounds.
- If the app still stays structurally opaque, switch to the shared coordinate-based fallback: capture the window, inspect its geometry, then use
click_window_point,drag_window_points, orscroll_window_point. - When the same visual region matters across runs, save it as a named target area and reuse it from
screenshot_windowwithtargetNameorscreenshot target. - Prefer ratio-based client-area targeting when the same workflow must survive different window sizes.
- If you will reuse the same fallback point more than once, save it as a named target instead of repeating raw ratios or pixels.
- Use
type_window_textfor whole-window entry. - Use
send_window_keysfor whole-window Enter, Escape, or accelerator follow-up actions when the window is reliable but a modern control is not. - Use
click_control,set_control_text, orsend_control_keysfor control-level work. - For classic handle-backed controls, prefer
set_control_textorsend_control_keysover foreground-dependent hacks because they now route directly to the control. - For zero-handle UIA controls in modern apps, foreground-based text or key fallback exists in the shared library too, but treat it as an explicit opt-in for sacrificial or tightly controlled windows.
- When you do opt into foreground text fallback, the shared library revalidates the exact focused target and emits Unicode input directly without changing the clipboard.
- Prefer named state over one-off moves.
- Use
list_named_layoutsbefore manually moving windows. - Use
apply_named_layoutorrestore_saved_snapshotwhen the desired setup already exists. - Use
assert_window_layoutwhen the next step depends on the saved layout actually being satisfied, not just available.
- Use
- Make the smallest safe change.
- Prefer
focus_window,snap_window, orminimize_windows. - Save the current state before larger changes:
save_current_layoutsave_current_snapshot
- Prefer
- Explain what changed after mutating actions.
- Use CLI only as fallback or verification.
- When a mutation matters, ask for evidence.
- Mutating MCP tools now accept
captureBefore,captureAfter, andartifactDirectory. - Their structured results include
success,elapsedMilliseconds,safetyMode, optional target name/kind, best-effort before/after screenshots, and artifact warnings. - Prefer
captureAfterby default and addcaptureBeforewhen you need a stronger audit trail. - Remember that the MCP server is now read-only by default, so a failed mutating tool call may be a policy block rather than a selector failure.
- Mutating MCP tools now accept
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 244 lines · 89 tokens per session scan A 7254907ddf75
desktopmanager-operator is a skill published in the GitHub repository EvotecIT/DesktopManager (107 stars, last pushed yesterday), licensed MIT. It adds 89 tokens to every session and 3,863 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
desktopmanager-operator compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| desktopmanager-operatorEvotecIT/DesktopManager | Skill | 107 | yesterday | MIT | A | 89 | Codex |
| dotnet-command-exec-auditjinyimeng01/net-code-audit-skill-master | Skill | 7 | 6mo ago | MulanPSL-2.0 | A | 79 | Codex |
| agui-dotnet-streaming-chatag-ui-protocol/ag-ui | Skill | 17k | yesterday | MIT | A | 223 | Claude Code |
| azure-mgmt-apicenter-dotnetmicrosoft/skills | Skill | 3.2k | yesterday | MIT | A | 97 | Claude Code |
| migrate-xunit-to-xunit-v3dotnet/skills | Skill | 5.8k | yesterday | MIT | A | 149 | Claude Code |
| template-instantiationdotnet/skills | Skill | 5.8k | yesterday | MIT | A | 168 | Claude Code |
| template-validationdotnet/skills | Skill | 5.8k | yesterday | MIT | A | 131 | Claude Code |