Workiq
Windows PowerShell toolkit for AI agents: Microsoft 365 (mail, calendar, Teams, SharePoint, OneDrive) via Work IQ + Microsoft Graph, Outlook COM, Edge browser (CDP), desktop, and system control - all returning structured JSON.
npx -y skills add aloth/PowerSkills --skill workiqAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Microsoft 365 automation via Work IQ (Graph-backed CLI). Ask natural-language questions against Outlook mail, calendar, Teams messages, SharePoint, OneDrive, and People. Fetch entities by URL, run OpenAPI actions (sendMail, copy, move), call functions (getSchedule, delta, reminderView), list Work IQ agents. Use when needing tenant-side M365 data without depending on a running Outlook desktop client. Includes install/check helpers so the skill covers first-time setup.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
6.6 KB, as published. Nobody here has run it
PowerSkills - Work IQ
Microsoft 365 automation through the official Work IQ CLI. Talks straight to Graph via silent SSO, so it reaches mail, calendar, Teams, SharePoint, OneDrive, and People without needing a running Outlook desktop client.
Why not just use outlook?
| Aspect | powerskills workiq | powerskills outlook |
|---|---|---|
| Backend | Microsoft Graph via Work IQ CLI | Local Outlook COM |
| Reach | Mail + Calendar + Teams + SharePoint + OneDrive + People | Mail + Calendar only |
| Outlook client required | No | Yes (must be running) |
| Elevation | Works from admin or user shell | Non-admin only (COM integrity) |
| Tenant setup | Requires user consent (some tenants need admin consent) | None |
| Output shape | Structured Graph entities + deep-links | COM properties |
Use workiq for the strong, cloud-side path. Keep outlook for offline or COM-only situations.
Requirements
- Windows 10 or 11
- PowerShell 5.1 or later
- Node.js and npm (for
installaction) - Microsoft 365 work account signed in on the machine (Windows Account Manager / SSO)
- Work IQ CLI (
workiq) onPATH- theinstallaction handles this
Setup in one command
If Work IQ is not installed yet, this skill can bootstrap it:
.\powerskills.ps1 workiq install
.\powerskills.ps1 workiq accept-eula
.\powerskills.ps1 workiq check
install runs npm install -g @microsoft/workiq. accept-eula records EULA acceptance. check reports version, EULA state, and whether the CLI is reachable on PATH.
Actions
.\powerskills.ps1 workiq <action> [--params]
| Action | Params | Description |
|---|---|---|
check | Report install state: installed, version, path, eula_accepted | |
install | [--scope user|machine] | Install Work IQ globally via npm (user scope by default) |
accept-eula | Accept Work IQ EULA (required once before any query) | |
version | Show Work IQ CLI version | |
ask | --question "text" [--agent name] [--timeout 120] | Natural-language query against a Work IQ agent |
agents | [--get-card name] | List Work IQ agents, or return one agent card |
fetch | --url <graph-path> | Fetch a Work IQ entity by path (e.g. /me, /me/messages) |
search-paths | --filter <regex> [--backend graph-v1|sharepoint-rest|dataverse] | Discover Graph paths by regex (helps build fetch/call-function URLs) |
get-schema | --path <api-path> [--method get|post|patch|delete] [--api-version v1.0|beta] | Return the OpenAPI schema for a given path |
call-function | --url <path-with-query> | Call a read-only Graph function (e.g. /me/calendar/getSchedule?...). Include the query string in --url. |
do-action | --url <path> [--body <json>] | POST a Graph action (e.g. /me/sendMail) |
create | --url <collection> --body <json> | POST a new entity (e.g. /me/messages) |
update | --url <entity> --body <json> | PATCH an existing entity (e.g. /me/events/{id}) |
delete | --url <entity> | DELETE an entity |
debug | --conversation <id> | Create a Work IQ debug share link for a conversation |
raw | --args "arg1 arg2 ..." | Escape hatch: run any raw workiq sub-command |
help | Show this file |
Examples
# One-time setup
.\powerskills.ps1 workiq install
.\powerskills.ps1 workiq accept-eula
.\powerskills.ps1 workiq check
# Natural language against your inbox / calendar / Teams
.\powerskills.ps1 workiq ask --question "What's on my calendar tomorrow?"
.\powerskills.ps1 workiq ask --question "Summarize unread emails from the last 24h and prioritize"
.\powerskills.ps1 workiq ask --question "Show Teams messages from #engineering in the last 3 hours"
# List agents available in this tenant
.\powerskills.ps1 workiq agents
# Discover Graph paths and fetch entities
.\powerskills.ps1 workiq search-paths --filter "calendar"
.\powerskills.ps1 workiq fetch --url "/me/messages?$top=5"
.\powerskills.ps1 workiq get-schema --path "/me/calendar/events"
# Call a Graph function (query string lives in --url)
.\powerskills.ps1 workiq call-function --url "/me/calendar/getSchedule?startDateTime=2026-07-02T00:00:00&endDateTime=2026-07-02T23:59:59"
# Send a mail via Graph action
.\powerskills.ps1 workiq do-action --url "/me/sendMail" `
--body '{"message":{"subject":"Hi","body":{"contentType":"Text","content":"Test"},"toRecipients":[{"emailAddress":{"address":"[email protected]"}}]}}'
# Escape hatch for anything the wrapper does not surface yet
.\powerskills.ps1 workiq raw --args "policy list"
Output
Every action returns the standard PowerSkills envelope:
{
"status": "success",
"exit_code": 0,
"data": { ... },
"timestamp": "2026-07-01T18:00:00+02:00"
}
For actions that surface raw Work IQ output (ask, raw, fetch), data contains:
stdout- the text Work IQ returned (ANSI codes are stripped)stderr- any warnings Work IQ printedexit_code- Work IQ's own exit codecommand- the exact argv that was executed (for debugging)
Structured actions (check, version, agents) return parsed fields.
Notes and quirks
- stdio transport only. Work IQ's
mcpcommand runs over stdio. This skill does not spin up an HTTP MCP server; if you want MCP integration, registerworkiq mcpin your host's MCP config directly. .cmdvs.exe. On Windows, calling shims from Node causesspawn EINVAL. This skill resolves the realworkiq.exeunder%APPDATA%\npm\node_modules\@microsoft\workiq\bin\win-x64\workiq.exewhen possible, and falls back to whatever is onPATH.- First-run consent. The first
askmay pop a browser window for consent. After that, silent SSO takes over. - Tenant policy. Some enterprise tenants require an admin to consent to Work IQ before users can use it. If
askfails with a consent error, share the message with your IT admin. - Deep-links can be long.
askoutput often contains multi-hundred-character deep-link URLs. The wrapper leaves them intact so the agent can follow them.