plugins/workiq-productivity/skills/org-chart/SKILL.md
Display a beautifully formatted ASCII org chart for any person in the organization — showing their manager, peers, and direct reports in a visual tree.
npx skillsauth add microsoft/work-iq org-chartInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Render a visual ASCII org chart for any person in the organization. Shows the target person in context — their manager above, their peers alongside, and their direct reports below — in a clear tree layout that fits the terminal.
workiq-ask (
question: "What is my profile information including display name, email, job title, and department?"
)
Extract displayName, email, and jobTitle.
If the user says "my org chart" or "me", the target is the current user from Step 1.
Otherwise, look up the named person:
workiq-ask (
question: "Look up the person named <name or email> in the company directory. Return their display name, email, job title, department, and office location."
)
If the response indicates multiple matches, present the options and ask the user to pick.
3a. Get the target's manager and direct reports:
workiq-ask (
question: "Who is <target name>'s manager? Include their display name, email, job title, and department."
)
workiq-ask (
question: "Who are <target name>'s direct reports? For each person include their display name, email, job title, and department."
)
3b. Walk the full management chain to the root:
After getting the target's manager, recursively ask about each manager's manager until you reach the top of the org:
workiq-ask (
question: "Who is <current manager name>'s manager? Include their display name, email, job title, and department."
)
Continue until ask indicates there is no manager (meaning you've reached the org root).
Store the entire chain as an ordered list: [target, manager, manager's manager, …, org root].
Important performance note: Each iteration depends on the previous result, so these calls must be sequential. However, the first manager call (3a) and the direct reports call can run in parallel.
Alternative — full chain in one call: You can attempt to retrieve the entire chain at once:
workiq-ask (
question: "What is the full management chain for <target name> all the way up to the CEO? List each person in order from their direct manager to the top, including name, title, and email for each."
)
If the response is complete, skip the recursive loop. If it is truncated or incomplete, fall back to the step-by-step approach above.
Filter out non‑primary accounts from the direct reports list:
Categorize each direct report by role type for grouping:
| Pattern in jobTitle | Category | Icon | |---|---|---| | Contains "Manager" or "Lead" | 👔 Manager | Shown with count of their reports if known | | Contains "Principal" or "Senior" or "Staff" | 🔧 Senior IC | | | Everything else | 💻 IC | |
Use these abbreviations to keep boxes compact:
| Full Title | Short | |---|---| | Principal Software Engineer | Prin SWE | | Senior Software Engineer | Sr SWE | | Software Engineer | SWE | | Software Engineering Manager | SW Eng Mgr | | Principal Software Engineering Manager | Prin SW Eng Mgr | | Partner Group Software Engineering Manager | Partner Grp SW Eng Mgr | | Vice President of Engineering | VP Eng | | Group Engineering Manager | Grp Eng Mgr | | Program Manager | PM | | Senior Program Manager | Sr PM | | Principal Program Manager | Prin PM |
For titles not in this list, abbreviate by removing common words ("of", "the") and shortening ("Software" → "SW", "Engineering" → "Eng", "Manager" → "Mgr").
🏛️ ORG CHART
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
👤 Firstname1 Lastname1 (CEO)
│
👤 Firstname2 Lastname2 (EVP, Products)
│
👤 Firstname3 Lastname3 (CVP, Collaboration)
│
┌──────────────────────────────┐
│ Firstname4 Lastname4 │
│ VP Eng │
│ [email protected] │
└──────────────┬───────────────┘
│
┌──────────────┴──────────────┐
│ ⭐ Firstname5 Lastname5 │
│ Engineering Manager │
│ [email protected] │
└──────────────┬──────────────┘
│
┌────────────┬────────────┼────────────┐
│ │ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ First6 │ │ First7 │ │ First8 │ │ First9 │
│ Sr SWE │ │ SWE II │ │ SWE │ │ QA Eng │
└─────────┘ └─────────┘ └─────────┘ └─────────┘
👔 Managers (0) · 🔧 Senior ICs (1) · 💻 ICs (3)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Firstname5 Lastname5 has 4 direct reports
Chain: CEO → Firstname2 Lastname2 → Firstname3 Lastname3 → Firstname4 Lastname4 → ⭐ Firstname5 Lastname5
📧 [email protected]
The ancestors above the direct manager use a compact single‑line format: 👤 Name (Abbreviated Title) connected by │ lines. This keeps the chart readable even with deep hierarchies. Only the direct manager and the target get full box treatment.
When there are more than 6 direct reports, switch to a compact list layout below the tree:
🏛️ ORG CHART
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
👤 Firstname1 Lastname1 (CEO)
│
👤 Firstname2 Lastname2 (EVP)
│
┌─────────────────────────────┐
│ Firstname7 Lastname7 │
│ VP Eng │
└──────────────┬──────────────┘
│
┌──────────────┴──────────────┐
│ ⭐ Firstname8 Lastname8 │
│ Partner Grp SW Eng Mgr │
└──────────────┬──────────────┘
│
┌──────┬──────┬────┴────┬──────┬──────┬──────┐
│ │ │ │ │ │ │
👔 MANAGERS (3)
# Name Title Email
1 Firstname10 Lastname10 Prin SW Eng Mgr [email protected]
2 Firstname11 Lastname11 Prin SW Eng Mgr [email protected]
3 Firstname12 Lastname12 SW Eng Mgr [email protected]
🔧 SENIOR ICs (4)
# Name Title Email
4 Firstname13 Lastname13 Prin SWE [email protected]
5 Firstname14 Lastname14 Prin SWE [email protected]
6 Firstname15 Lastname15 Prin SWE [email protected]
7 Firstname16 Lastname16 Prin SW Eng Mgr [email protected]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Firstname8 Lastname8 has 7 direct reports
Chain: CEO → Firstname2 Lastname2 → Firstname7 Lastname7 → ⭐ Firstname8 Lastname8
📧 [email protected]
Always end with a summary that includes the full reporting chain:
📊 {Name} reports to {Manager Name} ({Manager Title}) and has {N} direct reports — {M} managers, {K} ICs.
Chain: {Org Root} → … → {Manager} → ⭐ {Name}
| Parameter | Required | Default | Description | |-----------|----------|---------|-------------| | Person | No | Current user ("me") | Name, email, or "me" for the target person | | Depth Down | No | 1 level | How many levels of direct reports to show below the target |
Note: The upward chain always walks to the org root — there is no depth limit going up.
| MCP Server | Tool | Purpose |
|---|---|---|
| workiq (Local WorkIQ CLI) | ask | User identity, person lookup, manager chain traversal, and direct reports retrieval |
User: Show me my org chart
Result: Fetches your identity via ask, walks the full management chain to the CEO, and renders a tree with your manager above and all your direct reports below — grouped by managers, senior ICs, and ICs.
User: Draw the org chart for Firstname8 Lastname8
Result: Resolves Firstname8 via ask, fetches their manager and direct reports in parallel, walks the chain up to the org root, and renders a wide org chart with a compact list layout (since they have 7 direct reports).
User: Show the org chart for Firstname5
Result: ask returns multiple matches (e.g., Firstname5 Lastname5, Firstname5 Lastname17, Firstname5 Lastname18). Claude prompts:
I found multiple people named Firstname5. Which one did you mean?
1. Firstname5 Lastname5 — Engineering Manager, Platform Team
2. Firstname5 Lastname17 — Senior Software Engineer, Security
3. Firstname5 Lastname18 — Program Manager, Growth
Once the user selects, the full org chart is rendered for the chosen person.
If ask returns no result for the given name or email:
When ask indicates there is no manager for a person, treat that person as the org root — this is expected behavior and not an error. Render them at the top of the chain without a manager box.
If ask indicates the person has no direct reports, render the chart without the branch lines below the target. Include a note:
📊 Firstname5 Lastname5 has 0 direct reports.
If ask returns multiple matches for a name, narrow the prompt:
If ask is not accessible or returns a connection error:
If the management chain exceeds 10 levels, stop recursing and display a truncation indicator at the top:
👤 … (chain truncated above 10 levels)
│
👤 {deepest fetched ancestor}
This prevents excessive sequential ask calls for unusually deep org structures.
tools
WorkIQ - Microsoft 365 tool surface for agents. Use for any workplace question or write action where data lives in M365. Supports semantic `ask` plus structured tools (`fetch`, create/update/delete, actions, functions, path/schema discovery) for mail, meetings/calendar, documents/files, Teams chats/channels, OneDrive/SharePoint, and people. Read triggers, "what did [person] say", priorities/top of mind, meeting decisions/action items, summarize thread/chat, find emails/docs, list meetings/messages/files/channels, project status/updates, "what changed since". Write triggers, send/reply/forward email, create/update/accept/decline meetings, mark read, delete drafts/items, send/post/reply/react in Teams, set presence, upload/download via web URL. Discovery triggers, available endpoints/paths, fields, required/updatable properties, request body, operation parameters, schema/data model. When in doubt about workplace context, try WorkIQ first. Prefer `ask` for synthesis; use entity tools for exact reads/writes.
tools
WorkIQ - Microsoft 365 tool surface for agents. Use for any workplace question or write action where data lives in M365. Supports semantic `ask` plus structured tools (`fetch`, create/update/delete, actions, functions, path/schema discovery) for mail, meetings/calendar, documents/files, Teams chats/channels, OneDrive/SharePoint, and people. Read triggers, "what did [person] say", priorities/top of mind, meeting decisions/action items, summarize thread/chat, find emails/docs, list meetings/messages/files/channels, project status/updates, "what changed since". Write triggers, send/reply/forward email, create/update/accept/decline meetings, mark read, delete drafts/items, send/post/reply/react in Teams, set presence, upload/download via web URL. Discovery triggers, available endpoints/paths, fields, required/updatable properties, request body, operation parameters, schema/data model. When in doubt about workplace context, try WorkIQ first. Prefer `ask` for synthesis; use entity tools for exact reads/writes.
tools
Browse and discover SharePoint sites, lists, document libraries, and file contents — navigate your SharePoint world without leaving the CLI.
tools
Search for tasks across all your Planner plans by keyword, assignee, status, or priority — unified cross‑plan task discovery in one view.