Skip to content

Guide · Agent skill

How to use the Microsoft Teams Channel Setup agent skill (add-teams)

Updated · written with AI from the project's own documentation and checked against our catalogue data

The add-teams skill is a step-by-step setup guide that lets an AI agent connect Microsoft Teams to the NanoClaw assistant as a messaging channel. It is written for developers who self-host NanoClaw and want the assistant available inside a Microsoft 365 organisation. After this guide you will know what the skill does, how to install it, how to ask an agent to run it, and what you need in place before it works.

Microsoft Teams Channel Setupnanocoai/nanoclaw · MIT

Quick start

  1. 1Install the skill. Download the ZIP and unzip it into ~/.claude/skills/ or a project's .claude/skills/ folder, or upload it under Settings → Capabilities → Skills.
  2. 2Check your requirements. Confirm you have a Microsoft 365 tenant with sideloading rights, Node.js and pnpm, and a public HTTPS tunnel to port 3000.
  3. 3Ask the agent to add Teams. Request the change in plain language, such as asking it to add Microsoft Teams to your NanoClaw assistant.
  4. 4Let the agent apply the code steps. The agent copies the adapter, registers it, installs the pinned package, and runs the build and test.
  5. 5Provide the public URL and bot name. Enter your tunnel's https:// origin and a bot name when prompted. The CLI creates the app, bot and install link.
  6. 6Sign in and install the app. Sign in to Microsoft 365 with the Teams CLI, then install the app into Teams using the link returned by setup.

What is an agent skill and what does add-teams do?

An agent skill is a folder containing a SKILL.md file, which gives an AI agent a set of instructions for a specific task. The agent reads the instructions and carries out the steps on your machine, asking you for input where the skill requires it.

The add-teams skill adds Microsoft Teams support to NanoClaw via the Chat SDK bridge. It enables interactive chat in team channels, group chats and direct messages. NanoClaw does not ship channels in its main branch, so the skill copies the Teams adapter in from the project's channels branch.

  • Copies src/channels/teams.ts and its registration test into src/channels/
  • Adds the import './teams.js'; line to src/channels/index.ts
  • Installs @chat-adapter/teams pinned to version 4.41.1
  • Runs a build and one integration test
  • Walks you through creating a Teams bot with the Microsoft Teams CLI and saving credentials to .env

Install the add-teams skill

Download the ZIP from the skill page on this site, then unzip it into one of two locations. Use ~/.claude/skills/ to make the skill available across your projects, or use a project's .claude/skills/ folder to limit it to that project.

If you use the Claude apps instead, open Settings, go to Capabilities, and upload the skill under Skills.

  • Personal install: unzip into ~/.claude/skills/
  • Project install: unzip into the project's .claude/skills/ folder
  • Claude apps: Settings → Capabilities → Skills, then upload the ZIP

How do you trigger the skill with a request?

You do not need a special command. Ask the agent in plain language to add Microsoft Teams to NanoClaw, and the agent should match your request to the skill's description, which is 'Add Microsoft Teams channel integration via Chat SDK.'

The skill is safe to re-run. Its steps are idempotent, so if setup was interrupted you can ask again. If credentials already exist in .env, the skill skips the creation steps and moves on to the restart step.

  • "Add Microsoft Teams to my NanoClaw assistant."
  • "Set up the Teams channel for NanoClaw."
  • "Finish my partially configured Teams integration."

What happens during setup?

The agent applies the mechanical steps first: copy the adapter, register it, install the pinned package, then build and test. The build checks the core call and confirms the dependency is installed. The test checks that the channel registry contains teams.

Next comes the credential phase. You install the Teams CLI globally with npm, sign in to Microsoft 365, and provide a public HTTPS URL and a bot name. The CLI then creates the Entra app registration, generates the client secret, registers a Teams-managed bot through the Teams Developer Portal, uploads the app package and returns an install link. The skill states that no Azure subscription is needed for this path.

  • Public URL: the https:// origin of your tunnel, with no trailing path, forwarding to port 3000
  • Bot name: one name used for the Entra app, the bot and the Teams app (letters, digits, spaces, . _ - and up to 30 characters)
  • Sign-in: on a desktop a browser opens; on a headless machine you get a device code to enter at microsoft.com/devicelogin
pnpm run build pnpm exec vitest run src/channels/teams-registration.test.ts

What do you need before you start?

You need a Microsoft 365 account that can create Entra app registrations and upload custom apps (sideloading). Free personal Teams accounts do not qualify, and the setup would fail on them. You also need a public HTTPS tunnel, such as Cloudflare Tunnel, forwarding to local port 3000.

The skill also requires Node.js and pnpm, a global install of @microsoft/teams.cli@3.0.2, and access to the Microsoft Teams Developer Portal. The bot is created single-tenant, so only your own Microsoft 365 tenant can install it.

  • Node.js and pnpm
  • Global npm install of @microsoft/teams.cli@3.0.2
  • @chat-adapter/teams@4.41.1 npm package
  • Microsoft 365 Business, EDU or developer tenant with Entra app registration and sideloading rights
  • A public HTTPS tunnel forwarding to local port 3000
  • Microsoft Teams Developer Portal access
npm install -g @microsoft/teams.cli@3.0.2 --loglevel=error

Safety notes: scripts and network access

This skill runs scripts and uses the network. It runs build and test commands, installs npm packages, and runs the Teams CLI, which signs in to Microsoft 365 and creates cloud resources under your account.

Setup requires a public HTTPS tunnel or webhook, and Microsoft sends messages to it. If you do not want a webhook exposed from your machine, do not use this skill. The skill also notes that the CLI's sign-in cache is stored in a plaintext file when no system keychain is available, and that setup signs the session out at the end.

  • Review the SKILL.md steps before letting the agent run them
  • Expect a public endpoint on your machine while the bot is in use
  • Credentials are written to your local .env file

Tips for a smooth setup

Start your tunnel before the credential step, because the create command needs the URL up front. If your tunnel runs on another machine or in Docker on Linux, the skill says to add WEBHOOK_HOST=0.0.0.0 to .env before the restart step.

If npm reports EACCES during the global install, the skill suggests a user-level Node such as nvm, or setting the npm prefix to ~/.npm-global. If plain teams is not found, use the absolute path from the global npm prefix.

  • Start the tunnel first, for example with cloudflared tunnel --url http://localhost:3000
  • If your tunnel URL changes, the skill says to use teams app update rather than re-running setup
  • Re-running teams app create creates a new app and bot each time
cloudflared tunnel --url http://localhost:3000

What people use it for

  • Letting team members chat with a self-hosted NanoClaw assistant in a Teams channel
  • Messaging the assistant in a direct message from inside your Microsoft 365 organisation
  • Running a group chat with the assistant for a small internal team

Frequently asked questions

How do I install the add-teams skill?

Download the ZIP from the skill page and unzip it into ~/.claude/skills/ for personal use, or into a project's .claude/skills/ folder. In the Claude apps, you can upload the ZIP under Settings → Capabilities → Skills.

Is the add-teams skill free?

The skill is published under the MIT licence. The source does not state any price, and it requires your own Microsoft 365 tenant and a public HTTPS tunnel.

Does the Teams skill work with a free personal Teams account?

No. The skill says free personal Teams accounts do not qualify for sideloading, so setup would fail. You need a Microsoft 365 Business, EDU or developer tenant.

Do I need an Azure subscription for this skill?

The skill says no Azure subscription is needed. The Teams CLI registers the Entra app and bot for you. The manual Azure portal route is kept only as a fallback in the skill's Alternatives section.

Why does the skill need a public HTTPS tunnel?

Microsoft delivers bot messages to an HTTPS endpoint you control, which must reach the webhook server on port 3000 at /webhook/teams. A tunnel such as Cloudflare Tunnel can forward that traffic to your machine.

What should I do if I re-run setup and the credentials already exist?

The skill checks .env for TEAMS_APP_ID or TEAMS_APP_PASSWORD and skips creation if either is present, because re-running teams app create would create a new app. To rotate credentials or fix a partial configuration, use the Troubleshooting section of the skill.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Use add-teams if you self-host NanoClaw and can sideload custom apps in a Microsoft 365 organisation, and you are comfortable exposing a public HTTPS endpoint from your machine. Pick a different setup if you use a free personal Teams account or do not want a webhook receiving messages from Microsoft.

Download the skill