# Add Teams

Add Microsoft Teams channel integration via Chat SDK.

- Repository: https://github.com/nanocoai/nanoclaw (31069 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add nanocoai/nanoclaw --skill add-teams -g -a claude-code -y`
Codex: `npx skills add nanocoai/nanoclaw --skill add-teams -g -a codex -y`
Cursor: `npx skills add nanocoai/nanoclaw --skill add-teams -g -a cursor -y`
Gemini CLI: `npx skills add nanocoai/nanoclaw --skill add-teams -g -a gemini-cli -y`

## Description

Add Microsoft Teams channel integration via Chat SDK.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# 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 the `channels` branch and copy the Teams adapter and its registration test
into `src/channels/` (overwrite, the branch is canonical):

```nc:copy from-branch:channels
src/channels/teams.ts
src/channels/teams-registration.test.ts
```

### 2. Register the adapter

Append the self-registration import to the channel barrel (skipped if the line
is already present). This one line is the skill's only reach-in into core:

```nc:append to:src/channels/index.ts
import './teams.js';
```

### 3. Install the adapter package

Pinned to an exact version, the supply-chain policy rejects ranges and `latest`:

```nc:dep
@chat-adapter/teams@4.41.1
```

### 4. Build and validate

The rest: https://github.com/nanocoai/nanoclaw/blob/HEAD/.claude/skills/add-teams/SKILL.md
