mcpbeat

Slack To Teams

microsoft/slack-to-teams

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).

This is a copy. The original lives at microsoft/work-iq-slack-to-teams.

2k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
50 d ago
last touched
this folder, not the whole repository

Install

one command, takes just this skill from the repository
npx skills add https://github.com/microsoft/skills --skill slack-to-teams

The instruction itself

20 sections, as written by the author

Slack to Teams Expert System

A routed expert system with 100+ micro-expert files for migrating Slack bots to Teams and building cross-platform bots.

> Parent skill: For ATK CLI setup and routing, see ../SKILL.md. For local testing, see ../test-playground/test-playground.md or ../test-teams/test-teams.md. For cloud deploy, see ../provision-deploy/provision-deploy.md. For troubleshooting, see ../troubleshoot/troubleshoot.md.

When to Use

  • Building a new Slack bot, Teams bot, or dual-platform bot
  • Adding Teams support to an existing Slack bot (or vice versa)
  • Migrating a bot between platforms
  • Deploying a bot to Azure or AWS
  • Configuring AI model providers for a bot
  • Converting UI between Block Kit and Adaptive Cards
  • Bridging identity, events, files, or transport between platforms
  • Making a Teams bot project compatible with Microsoft Agents Toolkit (m365agents.yml, env/, appPackage placeholders)

Procedure

Step 1: Determine project type

Assess whether the developer has an existing codebase or is starting fresh.

  • New project → go to New Project Flow
  • Existing project → go to Existing Project Flow

New Project Flow

1a: Platform selection

Ask the developer which platform(s) to support:

  • Slack + Teams (dual-platform)
  • Slack only
  • Teams only
1b: Load the expert system
  • Read experts/index.md — the root router.
  • Execute the pre-task interview defined in that file.
  • Route based on platform choice:
  • Slack + Teams → Read experts/bridge/index.md. Load cross-platform-advisor.
  • Slack only → Read experts/slack/index.md.
  • Teams only → Read experts/teams/index.md.
1c: Architecture setup
  • Read cross-platform-architecture (even for single-platform — establishes patterns for adding a second platform later).
  • Let the domain router and advisor take over.
  • Write a PLAN.md in the target project root with platform, features, experts loaded.
1d: Implementation

Follow the advisor's or domain router's output. Implement feature by feature:

  • Pick the next feature from the prioritized list.
  • Load the expert(s) specified for that feature.
  • Implement using the expert's patterns and rules.
  • Verify against the expert's pitfalls section.

Existing Project Flow

2a: Analyze the project

Run these four sub-analyses in parallel:

Detect language — Scan for package.json+tsconfig.json (TypeScript), pom.xml/build.gradle (Java), *.csproj/*.sln (C#), go.mod (Go), requirements.txt/pyproject.toml (Python), Gemfile (Ruby), Cargo.toml (Rust).

Detect current platform — Scan dependencies for SDK indicators:

  • Slack: @slack/bolt, @slack/web-api, slack_bolt, app.message, app.command, ack()
  • Teams: @microsoft/teams-ai, botbuilder, TeamsActivityHandler, app.turn, Adaptive Cards

Detect features — Scan for slash commands, Block Kit/Adaptive Cards, action handlers, OAuth, file upload/download, scheduling, threading, AI/LLM calls, proactive messages.

Detect architecture — Scan for web framework (Express, Fastify, etc.), hosting target (Azure, AWS, Docker), cloud provider, architecture pattern (single bot, dual-bot, monolith).

2b: Language gate

Classify the detected language into SDK tiers:

| Tier | Languages | Guidance |

|---|---|---|

| 1: Full SDK | TypeScript / JavaScript | Full expert system available |

| 2: Adapt | Python | Both SDKs exist — adapt TS patterns. Load bolt-python, teams-python, python-cross-platform |

| 3: Split SDK | Java, C# | One platform has SDK, other needs REST. Load bolt-java or teams-dotnet + rest-only |

| 4: No SDK | Go, Ruby, Rust | REST-only for both. Load rest-only |

2c: Expert coverage gap analysis
  • Read experts/analyzer.md.
  • Execute the analyzer workflow: scan manifests, dependencies, source files.
  • Cross-reference detected tech against existing experts.
  • Present gap analysis — covered vs uncovered technologies.
2d: Build missing experts (if needed)
  • Read experts/builder.md.
  • For each gap: analyze project usage → read package source → draft expert → validate → wire into routing.
  • Use experts/_expert-ts.md as the template.
2e: Load the expert system
  • Read experts/index.md — the root router.
  • Execute the pre-task interview, pre-filling with analysis results from 2a.
  • Route based on detected platform and task intent:
  • Has Slack, wants Teams → Bridge domain
  • Has Teams, wants Slack → Bridge domain
  • Has both → Route by task (bridge refinement, deploy, models, etc.)
  • Has neither → Ask which platform(s) to target
  • Load cross-platform-advisor if bridging. Feed analysis results into Phase 1.
2f: Architecture and implementation
  • Read cross-platform-architecture.
  • Write a PLAN.md with analysis results, routing decisions, and feature migration order.
  • Implement feature by feature using the advisor's prioritized list.

Agents Toolkit Compatibility

For ATK-compatible project structure (m365agents.yml, env/ files, appPackage), see the parent skill:

  • Parent SKILL.md — ATK CLI setup, sub-skill routing, workflow chains
  • manifest-and-yaml.md — Project files, YAML config, env vars, .localConfigs flow
  • commands.md — Package, validate, share, collaborate, environment management
  • templates.md — All templates with language support

For Teams manifest schema and packaging, see runtime.manifest-ts.

Error Recovery

If the expert system fails to cover a topic:

  • Read experts/fallback.md.
  • Phase 1: Re-scan all domain routers for missed experts.
  • Phase 2: Web-search for remaining knowledge gaps.
  • Consider creating a new expert using experts/builder.md.

Expert Domains

| Domain | Index | Description |

|---|---|---|

| Slack | experts/slack/index.md | Bolt framework, events, OAuth, commands, UI, CLI |

| Teams | experts/teams/index.md | Teams AI SDK, Adaptive Cards, Graph, MCP, A2A, deploy |

| Bridge | experts/bridge/index.md | 27 cross-platform conversion experts (the core differentiator) |

| Deploy | experts/deploy/index.md | Azure & AWS deployment walkthroughs |

| Models | experts/models/index.md | AI model providers (OpenAI, Anthropic, Bedrock, etc.) |

| Convert | experts/convert/index.md | Language conversion to TypeScript |

| Security | experts/security/index.md | Input validation, secrets management |

Platform Comparison Docs

Reference guides for side-by-side platform comparison:

  • UI Components — Block Kit vs Adaptive Cards
  • Messaging & Commands
  • Identity & Auth
  • Interactive Responses
  • Files & Links
  • Middleware & Handlers
  • Infrastructure
  • Advanced Features
  • Feature Gaps
  • Workflow Scenarios — Message-native workflow patterns (triggers, state, logic, AI, visibility) for Teams bots

How to use it

Copy the folder

Take microsoft/slack-to-teams from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.