powerskills-workiq
Skill49 starsChanged 8 months agoMITView on GitHub
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.
- Installs packages
In this repository5 other files it gives its agents.
- powerskillsSkill
- powerskills-browserSkill
- powerskills-desktopSkill
- powerskills-outlookSkill
- powerskills-systemSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 26
Use workiq for the strong, cloud-side path.
- Distinctive: line 38
If Work IQ is not installed yet, this skill can bootstrap it:
- Very specific: line 108
Every action returns the standard PowerSkills envelope:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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 checkinstall 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":"someone@example.com"}}]}}'
# 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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

