name: slack-to-teams description: "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)."
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.mdin 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.mdwith 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