agentleFS
alothaloth/PowerSkills/skills/workiq/SKILL.md

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

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
  1. Very specific:

    Use workiq for the strong, cloud-side path.

    line 26
  2. Distinctive:

    If Work IQ is not installed yet, this skill can bootstrap it:

    line 38
  3. Very specific:

    Every action returns the standard PowerSkills envelope:

    line 108

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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?

Aspectpowerskills workiqpowerskills outlook
BackendMicrosoft Graph via Work IQ CLILocal Outlook COM
ReachMail + Calendar + Teams + SharePoint + OneDrive + PeopleMail + Calendar only
Outlook client requiredNoYes (must be running)
ElevationWorks from admin or user shellNon-admin only (COM integrity)
Tenant setupRequires user consent (some tenants need admin consent)None
Output shapeStructured Graph entities + deep-linksCOM 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 install action)
  • Microsoft 365 work account signed in on the machine (Windows Account Manager / SSO)
  • Work IQ CLI (workiq) on PATH - the install action 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]
ActionParamsDescription
checkReport install state: installed, version, path, eula_accepted
install[--scope user|machine]Install Work IQ globally via npm (user scope by default)
accept-eulaAccept Work IQ EULA (required once before any query)
versionShow 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
helpShow 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 printed
  • exit_code - Work IQ's own exit code
  • command - 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 mcp command runs over stdio. This skill does not spin up an HTTP MCP server; if you want MCP integration, register workiq mcp in your host's MCP config directly.
  • .cmd vs .exe. On Windows, calling shims from Node causes spawn EINVAL. This skill resolves the real workiq.exe under %APPDATA%\npm\node_modules\@microsoft\workiq\bin\win-x64\workiq.exe when possible, and falls back to whatever is on PATH.
  • First-run consent. The first ask may 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 ask fails with a consent error, share the message with your IT admin.
  • Deep-links can be long. ask output often contains multi-hundred-character deep-link URLs. The wrapper leaves them intact so the agent can follow them.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.