[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69B7RZSV5G2KJMDSDFYT2E4":3,"skill-same:01M69B7RZSV5G2KJMDSDFYT2E4":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":39,"ownerHtmlUrl":40,"ownerBlogUrl":41,"ownerDescription":42,"updatedAt":43,"install":44,"resources":56},"01M69B7RZSV5G2KJMDSDFYT2E4","bf-to-agents-sdk-typescript-migration",null,"Assess and migrate JavaScript or TypeScript bots from BotBuilder\u002FBot Framework SDK to Microsoft 365 Agents SDK with AgentApplication. Use to produce a migration report and plan before editing code, map BotBuilder packages and APIs, identify unsupported features, and implement only the supported plan items selected by the user.","microsoft\u002FAgents","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69B7CR81D1HSNV69XDT8KAR",1107,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-for-js\u002Fskills\u002Fbf-to-agents-sdk-typescript-migration\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,9,27],"typescript","agents sdk","sdk","agents sdk typescript","bf to agents sdk typescript migration","bot","implement","javascript","packages","2026-11-10 10:12:30",false,"---\nname: bf-to-agents-sdk-typescript-migration\ndescription: Assess and migrate JavaScript or TypeScript bots from BotBuilder\u002FBot Framework SDK to Microsoft 365 Agents SDK with AgentApplication. Use to produce a migration report and plan before editing code, map BotBuilder packages and APIs, identify unsupported features, and implement only the supported plan items selected by the user.\ndisable-model-invocation: true\n---\n\n# BotBuilderJS to Agents SDK migration\n\nTarget `AgentApplication` and preserve observable behavior. Always assess and report before editing. Use [migration-map.md](.\u002Freferences\u002Fmigration-map.md) as the primary reference; search it for each detected package, class, method, property, or handler.\n\n## Workflow\n\n1. Inspect the bot's packages, imports, entry points, handlers, state, middleware, hosting, authentication, tests, and deployment files.\n2. Inventory every Bot Framework symbol and behavior. Classify each item with the migration map:\n   - **Direct**: replace the package or API while preserving the design.\n   - **Rewrite**: implement the supported `AgentApplication` pattern.\n   - **Decision**: verified SDK-supported choices exist, but the user must select one.\n   - **Unsupported**: no verified stable Agents SDK for JavaScript equivalent exists.\n3. Produce the migration plan in the format below. Do not edit project code during this assessment phase.\n4. Stop and ask which numbered **Direct** and **Rewrite** items to implement and which **Decision** choices to make. Exclude **Unsupported** items from implementation.\n5. After explicit selection, confirm the assessed files, dependencies, and scope have not changed. If they changed, refresh the plan and obtain a new selection. Otherwise, implement only the selected items and update the lockfile.\n6. Run the project's build\u002Ftype-check, lint, and tests. Start the service and exercise the message endpoint and affected custom, invoke, storage, and proactive paths when possible.\n7. Report migrated items, decisions still required, unsupported behavior left unchanged, and validation results.\n\nIf multiple bots are present and scope is unclear, ask which bot to assess before step 2.\n\n## Rules\n\n- Do not invent an SDK API, shim, placeholder, or unrelated replacement to make the migration appear complete. Mark behavior without a verified stable target as **Unsupported**.\n- Treat the migration map as candidate mappings. Verify every **Direct** and **Rewrite** target against declarations for the exact stable package version planned for the project. Repository-main code and official samples may identify candidates but do not prove stable availability; repo-only or `@next` functionality is **Decision**, and functionality with no verified package target is **Unsupported**.\n- Leave **Unsupported** code and its dependencies unchanged. Discuss a replacement only as a separate modernization decision, never as an Agents SDK migration mapping.\n- Implement a **Decision** item only after the user selects a verified SDK-supported option.\n- Preserve exports, module system, endpoint paths, middleware order, route precedence, invoke responses, state keys, storage identifiers, OAuth connection names, and Teams command IDs unless the user approves a change.\n- `AgentApplication` selects the first matching route. Put specific routes before catch-alls and merge behavior that previously chained through `next()`.\n- Remove a Bot Framework dependency only when no retained import or runtime use remains. **Unsupported** code and dependencies always remain unchanged within this skill. **Decision** code keeps its dependency until the user selects a verified supported migration; deletion or isolation is a separate task outside this skill.\n- Prefer compatible stable package versions and preserve the package manager. Classify functionality available only in `@next` as **Decision** and ask before using it.\n- Keep production authentication enabled and never expose secrets.\n- Change only what is necessary to install, build, test, and run the selected migration items.\n\n## Migration plan format\n\n```md\n## Summary\nDirect: N · Rewrite: N · Decision: N · Unsupported: N\n\n## Migration plan\n| ID | Status | Source | Target or required choice | Files | Notes |\n|---|---|---|---|---|---|\n| M1 | Direct\u002FRewrite\u002FDecision\u002FUnsupported | `package: symbol` | `package: symbol`, supported choice, or `No stable SDK equivalent` | affected files | brief behavior constraint |\n\n## Validation plan\n- `command or runtime path`: behavior to verify\n```\n\nFor every **Unsupported** row, state the affected behavior and why it cannot be migrated. End with: `Which Direct\u002FRewrite IDs should I implement? Unsupported items will remain unchanged.`\n\n## Sources\n\n- https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fmicrosoft-365\u002Fagents-sdk\u002Fbf-migration-nodejs\n- https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents-for-js\n- https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Ftree\u002Fmain\u002Fsamples\u002Fnodejs\n- Node.js version: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents-for-js\u002Fblob\u002Fmain\u002Fpackage.json\n","# BotBuilderJS to Agents SDK migration\n\nTarget `AgentApplication` and preserve observable behavior. Always assess and report before editing. Use [migration-map.md](.\u002Freferences\u002Fmigration-map.md) as the primary reference; search it for each detected package, class, method, property, or handler.\n\n## Workflow\n\n1. Inspect the bot's packages, imports, entry points, handlers, state, middleware, hosting, authentication, tests, and deployment files.\n2. Inventory every Bot Framework symbol and behavior. Classify each item with the migration map:\n   - **Direct**: replace the package or API while preserving the design.\n   - **Rewrite**: implement the supported `AgentApplication` pattern.\n   - **Decision**: verified SDK-supported choices exist, but the user must select one.\n   - **Unsupported**: no verified stable Agents SDK for JavaScript equivalent exists.\n3. Produce the migration plan in the format below. Do not edit project code during this assessment phase.\n4. Stop and ask which numbered **Direct** and **Rewrite** items to implement and which **Decision** choices to make. Exclude **Unsupported** items from implementation.\n5. After explicit selection, confirm the assessed files, dependencies, and scope have not changed. If they changed, refresh the plan and obtain a new selection. Otherwise, implement only the selected items and update the lockfile.\n6. Run the project's build\u002Ftype-check, lint, and tests. Start the service and exercise the message endpoint and affected custom, invoke, storage, and proactive paths when possible.\n7. Report migrated items, decisions still required, unsupported behavior left unchanged, and validation results.\n\nIf multiple bots are present and scope is unclear, ask which bot to assess before step 2.\n\n## Rules\n\n- Do not invent an SDK API, shim, placeholder, or unrelated replacement to make the migration appear complete. Mark behavior without a verified stable target as **Unsupported**.\n- Treat the migration map as candidate mappings. Verify every **Direct** and **Rewrite** target against declarations for the exact stable package version planned for the project. Repository-main code and official samples may identify candidates but do not prove stable availability; repo-only or `@next` functionality is **Decision**, and functionality with no verified package target is **Unsupported**.\n- Leave **Unsupported** code and its dependencies unchanged. Discuss a replacement only as a separate modernization decision, never as an Agents SDK migration mapping.\n- Implement a **Decision** item only after the user selects a verified SDK-supported option.\n- Preserve exports, module system, endpoint paths, middleware order, route precedence, invoke responses, state keys, storage identifiers, OAuth connection names, and Teams command IDs unless the user approves a change.\n- `AgentApplication` selects the first matching route. Put specific routes before catch-alls and merge behavior that previously chained through `next()`.\n- Remove a Bot Framework dependency only when no retained import or runtime use remains. **Unsupported** code and dependencies always remain unchanged within this skill. **Decision** code keeps its dependency until the user selects a verified supported migration; deletion or isolation is a separate task outside this skill.\n- Prefer compatible stable package versions and preserve the package manager. Classify functionality available only in `@next` as **Decision** and ask before using it.\n- Keep production authentication enabled and never expose secrets.\n- Change only what is necessary to install, build, test, and run the selected migration items.\n\n## Migration plan format\n\n```md\n## Summary\nDirect: N · Rewrite: N · Decision: N · Unsupported: N\n\n## Migration plan\n| ID | Status | Source | Target or required choice | Files | Notes |\n|---|---|---|---|---|---|\n| M1 | Direct\u002FRewrite\u002FDecision\u002FUnsupported | `package: symbol` | `package: symbol`, supported choice, or `No stable SDK equivalent` | affected files | brief behavior constraint |\n\n## Validation plan\n- `command or runtime path`: behavior to verify\n```\n\nFor every **Unsupported** row, state the affected behavior and why it cannot be migrated. End with: `Which Direct\u002FRewrite IDs should I implement? Unsupported items will remain unchanged.`\n\n## Sources\n\n- https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fmicrosoft-365\u002Fagents-sdk\u002Fbf-migration-nodejs\n- https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents-for-js\n- https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Ftree\u002Fmain\u002Fsamples\u002Fnodejs\n- Node.js version: https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents-for-js\u002Fblob\u002Fmain\u002Fpackage.json\n",{"name":5,"description":7,"disable-model-invocation":33},true,"main","8171bc7e0ca3b8defd578a6bb317367c2901983f","agent-plugins\u002Fagents-for-js\u002Fskills\u002Fbf-to-agents-sdk-typescript-migration",347,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents","https:\u002F\u002Faka.ms\u002Fagentsdkdocs","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 12:49:01",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":33},[46,49,52],{"tool":47,"command":48},"npx","npx skills add microsoft\u002FAgents --skill bf-to-agents-sdk-typescript-migration",{"tool":50,"command":51},"bunx","bunx skills add microsoft\u002FAgents --skill bf-to-agents-sdk-typescript-migration",{"tool":53,"command":54},"pnpm","pnpm dlx skills add microsoft\u002FAgents --skill bf-to-agents-sdk-typescript-migration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-for-js\u002Fskills\u002Fbf-to-agents-sdk-typescript-migration\u002FSKILL.md",[57],{"path":58,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":61,"sourceHtmlUrl":62},"references\u002Fmigration-map.md","REFERENCE","参考文档",14135,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-for-js\u002Fskills\u002Fbf-to-agents-sdk-typescript-migration\u002Freferences\u002Fmigration-map.md",[64,82,98,113,126,135],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":28},"01M6PJCYCYJQDX318SQN3EBF0E","sync-teams-samples-to-agents-sdk","CI instructions for a bounded Teams SDK to Agents SDK sample synchronization using the selected language profile.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fautomation\u002Fteams-sample-sync\u002Fskills\u002Fsync-teams-samples-to-agents-sdk\u002FSKILL.md",[],[20,21,71,72,73,74,75,76,77,78,79,80,81],"sync","teams","sync teams samples to agents sdk","ci","synchronization","instructions","profile","language","sample","for","bounded",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":28},"01M6PJCFNGCX555YERYQ459JFE","teams-sdk-to-agents-sdk-typescript-migration","Migrate a JavaScript or TypeScript application using the Microsoft Teams SDK App runtime to Microsoft 365 Agents SDK while preserving its Teams behaviors. Use for Teams SDK migrations, including automated sample synchronization; use the separate Bot Framework migration skill for botbuilder applications.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-for-js\u002Fskills\u002Fteams-sdk-to-agents-sdk-typescript-migration\u002FSKILL.md",[],[72,19,20,21,22,89,90,91,92,93,94,79,95,96,75,97,80,24,26,9],"migration","teams sdk to agents sdk typescript migration","microsoft teams","applications","app","runtime","migrations","use","migrate",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":109,"publishedAt":28},"01M69B8QV24JVPXH25EH77X0SZ","teams-app-manifest","Create or audit a Microsoft Teams app manifest for an existing Microsoft 365 Agents SDK application by mapping declared intent and source-code evidence to released manifest capabilities. Use when manifest.json is missing, incomplete, or must be checked against implemented Teams features. Does not configure Microsoft Entra, Azure Bot, Developer Portal, or deployment unless separately requested.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-sdk-common\u002Fskills\u002Fteams-app-manifest\u002FSKILL.md",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[72,110,21,24,20,9,111,112],"teams app manifest","azure","deployment",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":28},"01M69B8MN62NBY93YTJAQG2Y81","agents-sdk-provision","Use when provisioning Azure resources for a Microsoft Agents SDK application — including creating an Azure Bot Service resource, setting up Entra app registrations, configuring identity credentials (UserManagedIdentity, FederatedCredentials, or ClientSecret), adding a Teams channel, running Bicep deployments for SSO, or setting up OAuth user sign-in connections via az CLI. Trigger even if the user doesn't say \"provision\" — use on requests like \"set up my bot on Azure\", \"deploy my bot\", \"configure Azure for my bot\", or \"get Teams SSO working.\" Applies to all languages (dotnet, Node.js, Python).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-sdk-common\u002Fskills\u002Fagents-sdk-provision\u002FSKILL.md",[],[20,21,120,24,121,122,9,123,124,125,111,72],"agents sdk provision","cli","python","dotnet","identity","deploy",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":28},"01M69B8HFZ45NQGWQQD483TWPB","agents-sdk-to-prod","Assess, create, harden, deploy, or review production readiness of Python Microsoft 365 Agents SDK agents and their direct hosting\u002Foperations files. Use only for Agents SDK scenarios, not unrelated application hardening.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-for-python\u002Fskills\u002Fagents-sdk-to-prod\u002FSKILL.md",[],[133,21,20,9,122,134,125],"agents sdk to prod","review",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":149,"publishedAt":28},"01M69B8ENJGC9NPQBZAYAN4706","agents-sdk-python-otel","Use when adding, configuring, validating, or troubleshooting OpenTelemetry observability for a Microsoft 365 Agents SDK application in Python. Trigger when the user mentions OpenTelemetry, OTel, telemetry, traces, metrics, logs, OTLP, Aspire Dashboard, Application Insights, Azure Monitor, distributed tracing, custom tracers or meters, span sampling, or observing microsoft_agents SDK signals.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FAgents\u002Fblob\u002Fmain\u002Fagent-plugins\u002Fagents-for-python\u002Fskills\u002Fagents-sdk-python-otel\u002FSKILL.md",[141,146],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000013","分析与可视化","SCENARIO","使用场景",{"categoryNo":147,"categoryName":148,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000033","数据分析师",[20,122,150,21,151,152,111,153,9,154,155,156,157],"otel","agents sdk python otel","aspire","telemetry","dashboard","distributed","aspire dashboard","monitor"]