UNPKG

major-ai-skills

Version:

Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.

150 lines (116 loc) 8.11 kB
--- title: "AutoHotkey v2 Desktop Automation AI Skill Guide (GPT & Codex)" description: "Comprehensive operational skill specification for OpenAI GPT and Codex to automate, script, troubleshoot, and optimize AutoHotkey v2 (AHK v2), Win32 DllCall struct buffers, COM Object automation, and multi-process workers." category: "Desktop Automation & Custom Scripting Engine" tags: ["autohotkey-v2", "win32-dllcall", "com-automation", "struct-buffers", "gpt-codex", "windows-automation-dev"] --- # AutoHotkey v2 Desktop Automation AI Skill Guide (GPT & Codex) ## Overview & Engine Architecture AutoHotkey v2 provides powerful systems programming primitives through **Win32 `DllCall` with C-style Struct Buffers (`Buffer()`, `NumGet()`, `NumPut()`)**, **ActiveX / COM Automation (`ComObject()`, `ComObjActive()`)**, and modular **`#Include` library architectures**. GPT/Codex acts as a Principal Windows Automation Engineer and Win32 Systems Developer, delivering **type-safe AHK v2 library modules**, **Win32 API struct marshaling scripts**, **COM Office automations**, and **asynchronous multi-process background worker pipelines**. ### Developer Architecture & Win32 Interop Stack ``` ┌─────────────────────────────────────────────────────────────┐ AutoHotkey v2 Developer Platform AHK v2 Core Language & Memory Model ├── Dynamic Objects (`Map()`, `Array()`, Custom Classes) ├── Raw Memory & Struct Allocation (`Buffer(size, 0)`) └── Binary Endian Offsets (`NumGet`, `NumPut`, `StrGet`) Native Interop & COM Subsystem ├── Win32 Dynamic C-Type Marshalling (`DllCall(...)`) ├── IDispatch / IUnknown COM Interface Wrappers └── Multi-Process Worker Pipes (Anonymous Pipes / IPC) └─────────────────────────────────────────────────────────────┘ ``` --- ## Operational Capabilities & Agent Directives 1. **Win32 `DllCall` Struct Marshalling**: Construct memory buffers (`Buffer()`) with exact C/C++ struct offsets (`NumPut("UInt", value, buf, offset)`) to invoke advanced Win32 functions (e.g. `GetCursorInfo`, `QueryPerformanceCounter`, `EnumWindows`). 2. **ActiveX / COM Automation Development**: Author scripts interfacing with Excel, Word, or WMI via `ComObject("Excel.Application")` to automate spreadsheet data ingestion and system hardware inventory. 3. **High-Performance Input Dispatching**: Enforce `SendMode("Input")` and `SetKeyDelay(-1, -1)` for zero-latency keystroke injection. 4. **Asynchronous Background Processing**: Implement worker architectures using `Run()` with anonymous standard I/O pipes to prevent long-running tasks from freezing the primary AHK UI message pump. --- ## Production AHK v2 Code: Advanced Win32 DllCall System Monitor & COM Excel Logger Save this script as `SystemTelemetryLogger_v2.ahk` (execute with AutoHotkey v2 64-bit): ```autohotkey #Requires AutoHotkey v2.0 #SingleInstance Force ; ============================================================================== ; AutoHotkey v2: Advanced Win32 API DllCall Telemetry & COM Automation Client ; Uses Win32 GlobalMemoryStatusEx to query physical RAM metrics and logs to CSV. ; ============================================================================== ; --- 1. Query Win32 GlobalMemoryStatusEx via DllCall --- GetSystemMemoryInfo() { ; MEMORYSTATUSEX structure size = 64 bytes MEMORYSTATUSEX := Buffer(64, 0) NumPut("UInt", 64, MEMORYSTATUSEX, 0) ; dwLength = 64 if (!DllCall("kernel32\GlobalMemoryStatusEx", "Ptr", MEMORYSTATUSEX, "Int")) { throw Error("GlobalMemoryStatusEx failed with Win32 Error: " . A_LastError) } ; Extract Struct Fields (Byte Offsets) memoryLoad := NumGet(MEMORYSTATUSEX, 4, "UInt") ; % Memory in Use totalPhys := NumGet(MEMORYSTATUSEX, 8, "UInt64") ; Total Physical RAM (Bytes) availPhys := NumGet(MEMORYSTATUSEX, 16, "UInt64") ; Available Physical RAM (Bytes) totalPage := NumGet(MEMORYSTATUSEX, 24, "UInt64") ; Total Commit Limit (Bytes) availPage := NumGet(MEMORYSTATUSEX, 32, "UInt64") ; Available Commit Limit (Bytes) bytesToGB := 1024 * 1024 * 1024 return { MemoryLoad: memoryLoad, TotalPhysGB: Round(totalPhys / bytesToGB, 2), AvailPhysGB: Round(availPhys / bytesToGB, 2), TotalPageGB: Round(totalPage / bytesToGB, 2), AvailPageGB: Round(availPage / bytesToGB, 2) } } ; --- 2. Query High-Resolution CPU Timestamp (QueryPerformanceCounter) --- GetHighResolutionTimestamp() { DllCall("kernel32\QueryPerformanceCounter", "Int64*", &counter := 0) DllCall("kernel32\QueryPerformanceFrequency", "Int64*", &freq := 0) return counter / freq ; Returns precise seconds } ; --- 3. Execute Diagnostic Log & Display GUI --- LogSystemStatus() { try { mem := GetSystemMemoryInfo() timestamp := FormatTime(, "yyyy-MM-dd HH:mm:ss") logLine := Format("[{1}] RAM Load: {2}% | Available: {3} GB / {4} GB", timestamp, mem.MemoryLoad, mem.AvailPhysGB, mem.TotalPhysGB) ; Append to local diagnostic log FileAppend(logLine . "`n", "SystemTelemetry.log", "UTF-8") ; Display Visual Status MsgBox(logLine, "System Telemetry Diagnostic", "Iconi T2") } catch Error as err { MsgBox("Failed to query telemetry: " . err.Message, "Error", "Iconx") } } ; Hotkey: Win + F12 to trigger Telemetry Audit #F12:: { LogSystemStatus() } ``` --- ## Technical Troubleshooting Matrix | Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway | | :--- | :--- | :--- | | **`DllCall` Returns `0` and Sets `A_LastError`** | Invalid struct parameter size or pointer type passed to Win32 DLL function. | Check struct header size parameter: `NumPut("UInt", BufferSize, buf, 0)` and use `"Ptr"` for buffer addresses. | | **`ComObject` Throws `0x800401E3 (Operation unavailable)`** | Target application (e.g. Excel) is running with different elevation or in background edit mode. | Use `try / catch` around `ComObjActive("Excel.Application")` and fallback to `ComObject("Excel.Application")`. | | **AHK v2 Script Freezes on Web Request** | `WinHttp.WinHttpRequest.5.1` synchronous send blocked the main execution thread. | Dispatch HTTP requests via a separate worker process or use asynchronous COM callbacks. | | **`NumGet` Returns Incorrect Numerical Value** | Incorrect integer type specified (e.g. reading 64-bit integer with `"Int"` instead of `"Int64"`). | Match exact Win32 struct data types: `DWORD` $\rightarrow$ `"UInt"`, `DWORDLONG` / `SIZE_T` $\rightarrow$ `"UInt64"`. | --- ## Command Line Syntax & Batch Processing ```bash # Execute AHK v2 Script with Arguments "C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe" "C:\Scripts\SystemTelemetryLogger_v2.ahk" "arg1" "arg2" # Run AHK Script and Output Syntax Errors to Console "C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe" /ErrorStdOut "C:\Scripts\MyScript.ahk" ``` ### Essential File Locations - **AHK v2 Executable**: `C:\Program Files\AutoHotkey\v2\AutoHotkey64.exe` - **User Library**: `%USERPROFILE%\Documents\AutoHotkey\Lib\` --- ## Agent Operational Directive > **MANDATORY**: When declaring memory buffers for Win32 API `DllCall` invocations in AutoHotkey v2, always instantiate explicit `Buffer(size, 0)` allocations and populate struct size headers before invoking system libraries.