From plugin-windows-mcp
This skill should be used when the user asks to "run a PowerShell command", "execute a shell command", "list processes", "kill a process", "modify the registry", "send a notification", "check system info", "manage Windows services", "automate system tasks", or needs to perform system-level operations on Windows using Shell, Process, Registry, or Notification tools.
How this skill is triggered — by the user, by Claude, or both
Slash command
/plugin-windows-mcp:system-operationsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill covers four system-level tools: Shell (PowerShell execution), Process (process management), Registry (Windows Registry operations), and Notification (toast notifications).
This skill covers four system-level tools: Shell (PowerShell execution), Process (process management), Registry (Windows Registry operations), and Notification (toast notifications).
Execute PowerShell commands directly on the system.
Key parameter: command (string — the PowerShell command to run)
Returns: stdout, stderr, and exit code.
Prefer Shell when:
Use GUI tools when:
File operations:
Get-ChildItem -Path "C:\Users" -Recurse -Filter "*.txt"
Copy-Item "source.txt" "destination.txt"
New-Item -ItemType Directory -Path "C:\NewFolder"
Remove-Item "file.txt" -Force
System information:
Get-ComputerInfo | Select-Object WindowsProductName, OsVersion
Get-WmiObject -Class Win32_Processor | Select-Object Name, NumberOfCores
Get-CimInstance -ClassName Win32_LogicalDisk | Select-Object DeviceID, FreeSpace, Size
[System.Environment]::OSVersion
Network:
Test-NetConnection -ComputerName "google.com" -Port 443
Get-NetIPAddress | Where-Object AddressFamily -eq "IPv4"
Invoke-WebRequest -Uri "https://example.com" -OutFile "page.html"
Software management:
Get-Package | Where-Object Name -like "*Python*"
winget list
winget install "App.Name"
Services:
Get-Service | Where-Object Status -eq "Running"
Restart-Service -Name "ServiceName"
Get-Service -Name "wuauserv" | Select-Object Status, StartType
-Force or -Confirm:$false flagsSelect-Object and Where-Object to filter large result setsList running processes or terminate them by name or PID.
Process(action="list")
Returns all running processes with their PID, name, CPU, and memory usage.
Use cases:
Process(action="kill", name="notepad")
Process(action="kill", pid=1234)
Best practices:
name for well-known single-instance appspid when multiple instances exist and only one should be terminatedProcess(list) after killing to confirm terminationCommon termination targets:
Read, write, delete, or list Windows Registry keys and values.
Registry(action="read", path="HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer", name="ShellState")
Registry(action="write", path="HKCU\\Software\\MyApp", name="Setting", value="enabled", type="REG_SZ")
Registry(action="list", path="HKCU\\Software\\Microsoft")
Registry(action="delete", path="HKCU\\Software\\MyApp", name="OldSetting")
reg export via Shell before changes| Path | Purpose |
|---|---|
HKCU\Software\Microsoft\Windows\CurrentVersion\Run | User startup programs |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run | System startup programs |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer | Explorer settings |
HKCU\Control Panel\Desktop | Desktop settings (wallpaper, etc.) |
HKLM\SYSTEM\CurrentControlSet\Services | Windows services |
Send Windows toast notifications to alert the user.
Parameters: title (required), message (required)
Notification(title="Task Complete", message="The file export has finished successfully.")
When to use:
Best practices:
Shell("Get-Service -Name 'wuauserv'") -> check status
Shell("Restart-Service -Name 'wuauserv' -Force") -> restart
Shell("Get-Service -Name 'wuauserv'") -> verify running
Notification(title="Service Restarted", message="Windows Update service has been restarted.")
Process(list) -> find the hung process
Process(kill, name="myapp")
Wait(1)
App(launch "MyApp") -> Wait(2)
Screenshot -> verify app is running
Shell("Get-CimInstance Win32_Processor | Select-Object LoadPercentage")
Shell("Get-CimInstance Win32_LogicalDisk | Select-Object DeviceID, @{N='FreeGB';E={[math]::Round($_.FreeSpace/1GB,2)}}")
Shell("Get-Process | Sort-Object WorkingSet64 -Descending | Select-Object -First 5 Name, @{N='MemMB';E={[math]::Round($_.WorkingSet64/1MB,1)}}")
For advanced PowerShell patterns and system administration techniques:
references/powershell-patterns.md — Common PowerShell one-liners, service management, and system administration patternsnpx claudepluginhub mustafaakben/plugin-windows-mcp --plugin plugin-windows-mcpWindows 11 disk cleanup and health playbook using native tooling (Storage Sense, DISM, cleanmgr) with a drift-protected HTML UI and Task Scheduler alerting. For full/slow PCs, BSODs, or commit-memory pressure.
Diagnoses and fixes Windows workstation issues: slow boot, failing drives, BSOD crashes, startup bloat, and event log forensics.
Guides Windows PowerShell usage with critical rules: correct operator syntax, null safety, ASCII-only scripts, Join-Path, JSON depth, and error handling patterns.