plugins/workiq-productivity/skills/channel-audit/SKILL.md
Audit Teams channels across your teams — identify inactive channels, low‑engagement conversations, channels with no recent posts, and recommend cleanup actions.
npx skillsauth add microsoft/work-iq channel-auditInstall 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.
Audit all Microsoft Teams channels across your teams to assess activity levels and engagement health. Identifies inactive channels, stale conversations, and low‑engagement spaces — then presents a prioritized audit report with recommended cleanup actions such as archiving, merging, or reviving channels.
workiq-ask_work_iq (
question: "What is my profile information including display name, email, and time zone?"
)
Extract displayName, email, and timeZone for date calculations.
List every team and their channels:
workiq-ask_work_iq (
question: "List all Microsoft Teams teams I belong to. For each team, list all channels including the channel name, description, type (standard, private, shared), and creation date."
)
Build an inventory of every channel:
If the response is too large or truncated, query teams individually:
workiq-ask_work_iq (
question: "List all channels in the '<team name>' team including channel name, description, type, and creation date."
)
For each channel (or batch of channels within a team), pull recent messages to measure activity:
workiq-ask_work_iq (
question: "Show me the 10 most recent messages in the '<channel name>' channel of the '<team name>' team. For each message include the sender, date, content summary, reply count, and whether it was from a bot or connector."
)
For each channel, calculate:
For each channel (especially those flagged as low‑activity):
workiq-ask_work_iq (
question: "How many members are in the '<channel name>' channel of the '<team name>' team? List the member count."
)
Record:
Categorize each channel based on activity metrics:
🟢 Active — Messages within the last 7 days, multiple authors, replies present
🟡 Slow — Last message 7–30 days ago, limited authors
🟠 Stale — Last message 30–90 days ago, very few participants
🔴 Dead — No messages in 90+ days
⚪ Bot‑Only — Recent messages, but only from automated bots or connectors
Compare channel names and descriptions across teams to find potential duplicates:
🔍 CHANNEL AUDIT REPORT
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📅 Audit date: {date}
👤 Audited by: {displayName}
🏢 Teams scanned: {N} · 📢 Channels audited: {N}
📊 HEALTH OVERVIEW
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🟢 Active: {N} channels ({percentage}%)
🟡 Slow: {N} channels ({percentage}%)
🟠 Stale: {N} channels ({percentage}%)
🔴 Dead: {N} channels ({percentage}%)
⚪ Bot‑only: {N} channels ({percentage}%)
🔴 DEAD CHANNELS — Recommend Archive ({count})
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{Team} › #{Channel}
📅 Last post: {date} ({N} days ago)
👥 Members: {N} · 💬 Last author: {name}
💡 Action: Archive
{Team} › #{Channel}
📅 Last post: {date} ({N} days ago)
👥 Members: {N} · 💬 Last author: {name}
💡 Action: Archive
🟠 STALE CHANNELS — Monitor / Consider Archiving ({count})
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{Team} › #{Channel}
📅 Last post: {date} ({N} days ago)
👥 Members: {N} · 📝 Active posters: {N} ({ratio}%)
💡 Action: Notify owner, review purpose
🟡 SLOW CHANNELS — Watch List ({count})
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{Team} › #{Channel}
📅 Last post: {date} ({N} days ago)
👥 Members: {N} · 📝 Active posters: {N}
⚪ BOT‑ONLY CHANNELS ({count})
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{Team} › #{Channel}
🤖 Only automated posts detected
💡 Action: Review if bot output is still needed
🔄 POTENTIAL DUPLICATES
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
• {Team1} › #{Channel A} ↔ {Team2} › #{Channel B}
Reason: Similar names, overlapping members
💡 Action: Consider merging
🟢 HEALTHY CHANNELS ({count})
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{Team} › #{Channel} — {N} posts last 7d, {N} authors
{Team} › #{Channel} — {N} posts last 7d, {N} authors
📋 RECOMMENDED ACTIONS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 🗑️ Archive {N} dead channels
2. 📧 Notify owners of {N} stale channels
3. 🔄 Review {N} potential duplicate pairs
4. 🤖 Review {N} bot‑only channels
| Parameter | Required | Default | Description | |-----------|----------|---------|-------------| | Teams | No | All user's teams | Specific teams to audit | | Inactive Threshold | No | 30 days | Days without posts to flag as stale | | Dead Threshold | No | 90 days | Days without posts to flag as dead | | Include Healthy | No | true | Show healthy channels in the report | | Include General | No | false | Include default "General" channels | | Sort By | No | Last activity | Sort order: "last-activity", "member-count", "team" |
| MCP Server | Tool | Purpose |
|---|---|---|
| workiq (Local WorkIQ CLI) | ask_work_iq | User identity, team/channel discovery, message activity retrieval, and membership data |
Full workspace audit
"Audit all my Teams channels and tell me which ones I should clean up."
Scans every team the user belongs to, classifies all channels by health status, detects bot-only and duplicate channels, and produces a complete prioritized report with archive and merge recommendations.
Single-team audit with narrow threshold
"Do a channel health check for the Engineering team — flag anything with no posts in the last 2 weeks."
Scopes the audit to the Engineering team only and applies a custom inactive threshold of 14 days instead of the default 30, surfacing slow channels that would otherwise be missed.
Dead channels only, ready for archiving
"Show me only the dead channels across all teams — nothing healthy, just what we should archive."
Runs a full scan but filters the output to dead channels (90+ days without posts), listing each with member count, last author, and a direct archive recommendation — ideal for a quick cleanup session.
Cannot retrieve user details
ask_work_iq returns an authentication or permission error.Team list is empty or incomplete
ask_work_iq returns no teams or only a subset of expected teams.Channel message retrieval fails for one or more channels
ask_work_iq returns an error or no data for private or shared channels where the user lacks membership.⚠️ Access Restricted. Request channel membership or ask a channel owner to run the audit.No messages returned but channel exists
Member list unavailable
ask_work_iq cannot retrieve membership data for a private channel due to permission restrictions.Large workspace timeouts
ask_work_iq calls and take significant time.tools
Sub-skill of microsoft-365-agents-toolkit. Routed expert system with 100+ micro-expert files for migrating Slack bots to Teams, cross-platform bridging, and dual-platform bot development. USE FOR: migrating Slack bot to Teams, adding Teams support to Slack bot, building dual-platform bots, converting Block Kit to Adaptive Cards, identity/OAuth bridging, deploying bots to Azure or AWS, configuring AI model providers. DO NOT USE FOR: general web development, non-bot projects, standalone Teams development without Slack (use parent skill instead).
tools
Build, test, and deploy code-based Teams apps using the M365 Agents Toolkit CLI. USE FOR: Custom Engine Agents (CEA), Teams bots, tabs, message extensions, Agents Playground local testing, Azure provision/deploy, Slack-to-Teams migration, cross-platform bot development, Block Kit to Adaptive Cards conversion, AI model integration (OpenAI/Azure/Anthropic/Bedrock). DO NOT USE FOR: declarative agents — use the `declarative-agent-developer` skill instead. Triggers: "build a teams bot", "custom engine agent", "CEA", "teams agent", "tab app", "message extension", "test with agents playground", "provision to azure", "deploy to azure", "migrate slack bot", "slack to teams", "convert block kit", "add azure openai to my bot"
tools
--- name: workiq-preview description: Preview build of WorkIQ — the full Microsoft 365 tool surface: agentic semantic queries via ask_work_iq PLUS direct, structured reads and writes for emails, meetings, calendar, documents, Teams messages, OneDrive/SharePoint files, and people. USE THIS SKILL for ANY workplace question or write action where the data lives in Microsoft 365. Read triggers, "what did [person] say", "what are [person]'s priorities", "top of mind from [person]", "what was discussed
development
Query Microsoft 365 Copilot for workplace intelligence - emails, meetings, documents, Teams messages, and people information. USE THIS SKILL for ANY workplace-related question where the answer likely exists in Microsoft 365 data. This includes questions about what someone said, shared, or communicated; meetings, emails, messages, or documents; priorities, decisions, or context from colleagues; organizational knowledge; project status; team activities; or any information that would be in Outlook, Teams, SharePoint, OneDrive, or Calendar. When in doubt about workplace context, try WorkIQ first. Trigger phrases include "what did [person] say", "what are [person]'s priorities", "top of mind from [person]", "what was discussed", "find emails about", "what meetings", "what documents", "who is working on", "what's the status of", "any updates on", etc.