Claude Skill MartBrowse skillsWhat is a Skill?
Back to list

Microsoft Teams Channel Integration (add-teams)

Automates the full path of wiring a NanoClaw bot into Microsoft Teams channels, group chats and DMs.

AutomationAdvanced30,47112,865AI score 7/10Last updated: Aug 9, 2026

What it does

Adds the Microsoft Teams channel adapter to a NanoClaw install: pulls the adapter and its registration test from the channels branch, appends the self-registration import to the channel barrel, installs @chat-adapter/teams at a pinned version, then builds and runs the integration test.

The credentials flow drives the Microsoft Teams CLI (installed globally via npm): sign in to Microsoft 365, register the Entra app, generate the client secret, register a Teams-managed bot, upload the app package and return an install link — no Azure subscription required. Values land in .env with set-if-absent semantics, and the skill proactively opens the bot↔owner 1:1 conversation so the assistant messages the human first.

Every nc: directive is idempotent, so the whole skill is safe to re-run. A manual Azure Portal fallback covers tenants where the Developer Portal is blocked, and the troubleshooting section handles sideloading policy, AUTH_REQUIRED, 401 pairing mistakes and tunnel URL changes.

Who it's for

  • Self-hosters running NanoClaw who want their assistant inside a corporate Teams tenant
  • Anyone who'd rather run one CLI command than the classic seven-step Azure portal walk
  • Users with a Microsoft 365 Business/EDU/developer tenant and a public HTTPS tunnel (Cloudflare Tunnel, reverse-proxied VPS)

Free personal Teams accounts cannot sideload custom apps and won't work.

Examples

  1. Team channel assistant: install the bot into a channel, @-mention it for threaded answers, then add RSC permissions so it reads all channel messages without a mention.
  2. Personal DM assistant: right after install the bot DMs the owner first, so there's no manual bootstrap step.
  3. Tunnel URL rotation: when your Cloudflare URL changes, run teams app update <app-id> --endpoint https://new-domain/webhook/teams instead of re-running the whole skill.

· · · Install guide · · ·

Install in the Claude app (no terminal)
  1. Download the ZIP with the button below.
  2. In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
  3. Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
Download ZIP
Install in Claude Code

Let Claude do it — paste this into Claude Code

Install the skill I found on Claude Skill Mart.
Copy the .claude/skills/add-teams folder from the GitHub repo nanocoai/nanoclaw into my ~/.claude/skills/add-teams/.
When it's done, tell me in one line what this skill can do.

Install with a command instead

git clone https://github.com/nanocoai/nanoclaw.git && mkdir -p ~/.claude/skills && cp -r nanoclaw/.claude/skills/add-teams ~/.claude/skills/

This is a third-party skill. Check the source repository before installing.

  1. Open a terminal and clone the repo: git clone https://github.com/nanocoai/nanoclaw.git
  2. Create the skills folder: mkdir -p ~/.claude/skills
  3. Copy the skill: cp -r nanoclaw/.claude/skills/add-teams ~/.claude/skills/
    • If you already work inside the NanoClaw checkout, the skill is picked up automatically and no copy is needed.
  4. Prerequisites: a Microsoft 365 Business/EDU/developer account allowed to upload custom apps, plus Node.js/npm and pnpm.
  5. Start an HTTPS tunnel first: cloudflared tunnel --url http://localhost:3000 and copy the printed https://... origin.
  6. Run Claude Code from the NanoClaw project root and ask: "Use the add-teams skill to add the Teams channel" (or pick Teams during /setup).
  7. Provide the tunnel URL and a bot name, then sign in to Microsoft 365 via browser or device code.
  8. Open the returned install link to add the app in Teams; after the service restarts, check for the bot's first DM.
  9. If anything fails, consult the SKILL.md Troubleshooting section (sideloading blocked, AUTH_REQUIRED, 401 pairing, tunnel changes).