Agent skill

add-teams

Add Microsoft Teams channel integration via Chat SDK.

NanoCo30,389★ · +78/wk · 1 repos on radarProfile →
claude-codeMIT
Install
npx skills add nanocoai/nanoclaw --skill add-teams --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 3
SKILL.md size: 28 KB
Bundled scripts: none
Path: .claude/skills/add-teams/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 30,426 · +37 this week
Language: TypeScript
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

Review
written from the skill's own SKILL.md · Aug 5, 2026

What it does

Adds Microsoft Teams channel support by bringing in the Teams adapter and its tests from a canonical branch, registers the adapter into the core barrel, installs a pinned Teams CLI package, and provides a guided, multi-step workflow to create, register, and wire a Teams bot so the agent can receive messages.

How it works

  1. Copy the Teams adapter and its registration test from the channels branch into src/channels/ (files: src/channels/teams.ts, src/channels/teams-registration.test.ts) and overwrite existing ones.
  2. Append a self-registration import to the channel barrel by editing src/channels/index.ts with: import './teams.js'; (only if not already present).
  3. Install the adapter package with a pinned version via @chat-adapter/teams@4.29.0 in a dependency directive nc:dep.
  4. Build and run tests to verify the createChatSdkBridge(...) core call is guarded and the dependency is installed, then run the integration test src/channels/teams-registration.test.ts via pnpm exec vitest run.
  5. Provision credentials and set up a Teams bot using a sequence of interactive prompts and commands embedded as nc: directives, including:
  • Checking for existing credentials in .env.
  • Providing a public URL (https endpoint) for /webhook/teams.
  • Naming the app (bot) for Entra app registration and Teams app.
  • Installing the Teams CLI globally with npm install -g @microsoft/teams.cli@3.0.2.
  • Signing in to Microsoft 365 via the Teams CLI and persisting the session.
  • Creating the bot with a Teams app, registering the Entra app, and uploading the app package.
  • Storing credentials in .env with specific variables (TEAMS_APP_ID, TEAMS_APP_PASSWORD, TEAMS_APP_TENANT_ID, TEAMS_APP_TYPE).
  • Updating app icons to custom assets and wiring the bot to a Teams user (owner) via prompts and guarded steps.
  • Installing the app in Teams using the provided install link and confirming the wiring target.
  • Creating a 1:1 Bot Framework conversation and enumerating the owner for proper message routing.

When to use it

Use when you want to enable Microsoft Teams channel integration for NanoClaw, using the Teams adapter from the canonical channels branch, and when you are prepared to go through the Teams bot registration and wiring workflow described in the credentials section.

What it can touch

The skill touches the following via explicit commands:

  • src/channels/teams.ts and src/channels/teams-registration.test.ts (copied from channels branch)
  • src/channels/index.ts (appending import)
  • @chat-adapter/teams@4.29.0 (dependency)
  • Build and test commands pnpm run build and pnpm exec vitest run src/channels/teams-registration.test.ts
  • Several nc: directive blocks for credential provisioning and Teams CLI interactions

Caveats

End-to-end delivery requires a real Teams workspace and a bot registered in Microsoft Entra; the final delivery is manual via a Teams workspace after installation. The credential flow assumes a single-tenant bot and specific environment details (public URL, webhook port 3000). The skill instructs idempotent steps, so re-running is safe.

From the SKILL.md

# Add Microsoft Teams Channel Adds Microsoft Teams support via the Chat SDK bridge — interactive chat in team channels, group chats, and direct messages. NanoClaw doesn't ship channels in trunk — this skill copies the Teams adapter in from the `channels` branch. The mechanical steps under **Apply** carry `nc:` directive fences: an agent reads the prose and applies them, and a parser can apply them deterministically from the same document. Every directive is idempotent, so the whole skill is safe to re-run; anything a parser can't apply falls back to the prose beside it. Teams has no "paste a token" shortcut — a bot has to exist in Microsoft's cloud before it can receive a message. The Microsoft Teams CLI collapses that into one sign-in and one create command: it registers the Entra app, generates the client secret, registers a Teams-managed bot (through the Teams Developer Portal — **no Azure subscription needed**), uploads the app package, and hands back an install link. The old ~7-step Azure portal walk survives only as a fallback in [Alternatives](#alternatives) for tenants where the Developer Portal is blocked. ## Apply ### 1. Copy the adapter and its registration test Fetch th

What's inside
Steps it walks through
  1. Apply
  2. 1. Copy the adapter and its registration test
  3. 2. Register the adapter
  4. 3. Install the adapter package
  5. 4. Build and validate
  6. Credentials
  7. Check for existing credentials
  8. Public URL
  9. App name
  10. Install the Teams CLI
  11. Sign in to Microsoft 365
  12. Create the bot
  13. Store the credentials
  14. Set the app icons
Ships with 2 files
  • REMOVE.md
  • apply-fixtures.json
More from nanoclaw
All skills →
About this skill
What does the add-teams skill do?

Add Microsoft Teams channel integration via Chat SDK.

How do I install it?

Run `npx skills add nanocoai/nanoclaw --skill add-teams --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From nanocoai/nanoclaw, a repository with 30,426 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going