
Getting Started
- 1 installs
- Updated August 3, 2026
- agents-store/claude-plugins
getting-started is a Claude Code skill that scaffolds and runs a developer's first Microsoft Teams bot in TypeScript, from CLI scaffold to a working echo bot reachable in Teams.
About
getting-started is a Claude Code skill that walks a developer from an empty directory to a working Microsoft Teams bot answering messages in TypeScript. It covers scaffolding with teams project new, choosing a template, reading the entry point, exposing an HTTPS endpoint via devtunnel or ngrok, running with npm run dev, and sideloading into Teams. It also lists common first-run errors and their fixes.
- Scaffolds a first Microsoft Teams bot in TypeScript from CLI to a working echo bot in ~10 minutes
- Covers template choice (echo/ai/graph/tab), entry point, HTTPS tunnel, run, and sideload
- Lists common first-run errors and their fixes
Getting Started by the numbers
- 1 all-time installs (skills.sh)
- Ranked #14,098 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
getting-started capabilities & compatibility
- Capabilities
- project scaffold · bot setup · teams integration
- Works with
- teams
- Use cases
- api development
What getting-started says it does
Walks a developer from an empty directory to a working Teams bot answering messages, in roughly 10 minutes.
teams project new typescript demo-bot --template echo
npx skills add https://github.com/agents-store/claude-plugins --skill getting-startedAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| Last updated | August 3, 2026 |
| Repository | agents-store/claude-plugins ↗ |
What it does
Scaffolding and running a first Microsoft Teams bot in TypeScript from CLI to a working echo bot.
Who is it for?
Developers scaffolding and running their first Microsoft Teams bot in TypeScript
Skip if: Deep production bot infrastructure setup (deferred to a separate deployment skill)
When should I use this skill?
The user wants to scaffold their first Teams app or bot, asks how to start a Teams bot in TypeScript, or runs a fresh `teams project new` template.
What you get
A working Teams echo bot answering messages from a Teams client in roughly 10 minutes.
- A running Teams echo bot answering messages
By the numbers
- 4 project templates: echo, ai, graph, tab
- 6-step getting-started walkthrough
Files
Getting Started — your first Teams app in TypeScript
Walks a developer from an empty directory to a working Teams bot answering messages, in roughly 10 minutes. All steps assume the setup skill has already been completed (Node 18+, @microsoft/teams.cli@preview installed, signed in via teams auth login).
1. Scaffold the project
Pick a template that matches the goal:
| Template | What you get | Use when |
|---|---|---|
echo (default) | Bot that echoes user messages | Bots from scratch — pick this for learning |
ai | Bot with ChatPrompt + OpenAIChatModel wired up | LLM-powered assistants |
graph | Bot with SSO + api.graph calls | Apps that read M365 data |
tab | Static-hosted React tab | Embedded web UI (no bot loop) |
teams project new typescript demo-bot --template echo
cd demo-bot
npm installThe CLI creates:
demo-bot/
├── src/
│ └── index.ts # App entry point + handlers
├── appPackage/
│ ├── manifest.json # Teams app manifest (consumed by sideload)
│ └── color.png / outline.png # icons
├── .env # BOT_ID, BOT_PASSWORD placeholders
├── package.json # npm scripts: dev, build, start
└── tsconfig.json2. Read the entry point
src/index.ts after --template echo:
import { App } from '@microsoft/teams.apps';
import { DevtoolsPlugin } from '@microsoft/teams.dev';
const app = new App({
plugins: [new DevtoolsPlugin()],
});
app.on('message', async ({ send, activity }) => {
await send(`You said: ${activity.text}`);
});
(async () => {
await app.start(+(process.env.PORT ?? 3978));
})();Key facts:
Appis the only required import. Plugins (DevtoolsPlugin,McpPlugin, etc.) are optional extras.app.on('message', ...)is the universal message handler. The handler context exposessend,activity,log,stream,api, andnext.- Default port is
3978. The DevTools plugin runs a second server on3979.
3. Expose a public HTTPS endpoint
Teams requires HTTPS to reach the bot. Two options:
# Option A: Microsoft devtunnel
devtunnel host -p 3978 --allow-anonymous
# Copies a https://<id>.devtunnels.ms URL — save it.
# Option B: ngrok
ngrok http 3978
# Copies a https://<id>.ngrok.io URL — save it.Update the bot endpoint registered with Teams to point at the tunnel:
teams app update <teamsAppId> --endpoint "https://<tunnel-host>/api/messages"Get <teamsAppId> from teams app list. If you have not yet registered a bot, follow deployment → references/bot-infra-setup.md.
4. Run
npm run devYou should see two servers come up:
Bot listening on http://localhost:3978DevTools available at http://localhost:3979/devtools
Open the DevTools URL in a browser to inspect activities as they arrive. See the devtools skill for the UI walkthrough.
5. Sideload into Teams
1. Open the Teams Developer Portal. 2. Find your app (auto-registered by the CLI on teams project new). 3. Click Preview in Teams → confirm sideload. 4. Open a 1:1 chat with the bot and send a message — it should echo back.
If the bot does not reply, jump to troubleshoot.
6. Iterate
- Add new handlers in
src/index.ts—app.on('install.add', ...),app.on('dialog.submit.<id>', ...),app.on('message.ext.query', ...). Seesdk-patternsfor the full routing table. - Send Adaptive Cards instead of plain text — see
adaptive-cards. - Add an AI loop — see
ai-agents. - Add SSO / Graph — see
authentication+graph-integration.
Common first-run errors
- No reply in Teams — the endpoint registered with the app does not match the tunnel URL. Re-run
teams app update --endpoint. - `401 Unauthorized` in server logs —
BOT_IDandBOT_PASSWORDin.envare wrong or missing. Re-rundeployment/references/bot-infra-setup.md. - `Cannot find module '@microsoft/teams.apps'` —
npm installwas not run inside the project directory. - DevTools shows no activity — the tunnel is down or pointing to the wrong port. Restart
devtunnel host -p 3978and re-update the endpoint.