[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HDM2RMF6Q15YHYTS7G9SWZ":3,"skill-same:01M6HDM2RMF6Q15YHYTS7G9SWZ":98},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6HDM2RMF6Q15YHYTS7G9SWZ","aspire-terminals",null,"**WORKFLOW SKILL** - Author and automate Aspire terminals. USE FOR: WithTerminal, withTerminal, TerminalService, TerminalLaunchOptions, docked terminals, terminal prompts, PromptTerminalAsync, TerminalPlacement, AspireTerminalKey, WithRepl, withRepl, aspire terminal ps\u002Fattach\u002Ftape play, VHS tapes for Aspire, or terminal screen\u002Finput automation. DO NOT USE FOR: generic shell commands, ordinary AppHost resource wiring (aspireify), start\u002Fstop\u002Fwait (aspire-orchestration), logs\u002Ftraces or browser telemetry (aspire-monitoring), deployment (aspire-deployment), or nonterminal Interaction Service prompts (aspireify). INVOKES: Aspire docs\u002FAPI lookup, AppHost edits, Aspire terminal CLI; aspire-orchestration for lifecycle validation. FOR SINGLE OPERATIONS: Choose the terminal owner and lifetime first, then read the matching reference.","microsoft\u002Faspire-skills","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M699Z09A17E8C731AGNTAEVR",94,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-terminals\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"aspire terminals","aspire","api","workflow skill","input","screen","interaction","commands","attach","read","choose","cli","start","monitoring","logs","browser","aspireify","workflow","orchestration","terminal","2026-11-10 10:12:30",false,"---\nname: aspire-terminals\ndescription: >-\n  **WORKFLOW SKILL** - Author and automate Aspire terminals.\n  USE FOR: WithTerminal, withTerminal, TerminalService, TerminalLaunchOptions,\n  docked terminals, terminal prompts, PromptTerminalAsync, TerminalPlacement,\n  AspireTerminalKey, WithRepl, withRepl, aspire terminal ps\u002Fattach\u002Ftape play,\n  VHS tapes for Aspire, or terminal screen\u002Finput automation.\n  DO NOT USE FOR: generic shell commands, ordinary AppHost resource wiring\n  (aspireify), start\u002Fstop\u002Fwait (aspire-orchestration), logs\u002Ftraces or browser\n  telemetry (aspire-monitoring), deployment (aspire-deployment), or nonterminal\n  Interaction Service prompts (aspireify).\n  INVOKES: Aspire docs\u002FAPI lookup, AppHost edits, Aspire terminal CLI;\n  aspire-orchestration for lifecycle validation.\n  FOR SINGLE OPERATIONS: Choose the terminal owner and lifetime first, then read\n  the matching reference.\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"0.0.5\"\n---\n\n# Aspire Terminals\n\nTeach an agent to use the right terminal, not to replace every process with a shell.\nHonor a project-local `.agents\u002Fskills\u002Faspire-terminals\u002FSKILL.md` when present;\nretain the safety and ownership rules below.\n\n## Required reference lookup\n\nBefore answering **or** editing, open the reference for the requested surface,\nincluding for read-only questions. This overview is not enough to write correct\nterminal code or tape syntax.\n\n- Resource PTYs or REPLs: read [resource terminals](references\u002Fresource-terminals.md).\n- Dock, prompts, cancellation or headless tools: read\n  [AppHost terminals](references\u002Fapphost-terminals.md).\n- Any tape question: read [tapes](references\u002Ftapes.md) and\n  [automation and CLI](references\u002Fautomation-and-cli.md). Use the actual syntax and\n  output contracts there, not pseudo-VHS or memory of upstream VHS behavior.\n- Include the applicable package\u002Fbuild capability boundary in recommendations.\n  Source availability and installed-package availability are different facts.\n\n## Choose the model before writing code\n\n| Intent | Pattern | Owner and lifetime |\n|--------|---------|--------------------|\n| Make an existing orchestrated executable, project or container interactive | `WithTerminal()` \u002F `withTerminal()` | Resource process and replicas; resource lifecycle owns stop\u002Frestart |\n| Open an auxiliary shell\u002Ftool that remains available after its command returns | `TerminalService` + `TerminalPlacement.Dock` | AppHost-owned; closing its tab or stopping AppHost disposes it |\n| Guide a person through a focused setup\u002Fauthentication operation | `TerminalService` + `Dialog` + `PromptTerminalAsync` | Caller owns the terminal; prompt borrows it; explicit completion\u002Fcancellation |\n| Drive a terminal-only tool without a dashboard interaction | `TerminalService` + `None` | Caller owns and disposes the headless process |\n| Open an authenticated database\u002Fcache client | Integration `WithRepl()` \u002F `withRepl()` | Built-in command opens a dock terminal; prefer over custom container exec |\n\n`WithTerminal` changes **the resource's actual process execution**. It is not an\non-demand side shell. `TerminalService` launches a separate AppHost-owned process;\nit does not implicitly enter a container or become a modeled resource.\n\n### Lifecycle checklist for recommendations\n\nWhen comparing terminal models, explicitly state cleanup for each model you\nrecommend, including headless alternatives:\n\n- **Dock:** survives the opening command; do not scope the handle with `await using`\n  in that command. Closing the tab or AppHost shutdown disposes it.\n- **Dialog and None:** the caller disposes both, normally with `await using`.\n  Headless placement does not transfer cleanup responsibility to the service.\n- **Prompt completion is not terminal disposal:** successful `Work` closes the\n  prompt, but the caller still disposes its terminal. Without `Work`, process exit\n  does not close the prompt; explicit completion\u002Fcancellation is required.\n\n## Capability check\n\n1. Locate the exact AppHost and inspect its SDK, hosting and integration package\n   versions. Do not upgrade the project just to make an example compile.\n2. Use `aspire docs search terminal --non-interactive`, then\n   `aspire docs api search \u003CAPI> --language csharp|typescript --non-interactive`.\n   If docs lag a preview, inspect that exact package's public API\u002Fsource. A newer\n   CLI alone does not add hosting APIs to an older AppHost.\n3. `WithTerminal`\u002Fparameterless TS `withTerminal` exist in Aspire 13.5.\n   `TerminalService`, terminal prompts, headless automation, tape playback and the\n   six integration REPLs below are in the inspected **13.6 development source**.\n   Verify the installed build contains them; do not promise all previews do.\n4. Direct C# terminal APIs are experimental (`ASPIRETERMINAL001`): narrowly pair\n   `#pragma warning disable ASPIRETERMINAL001` with `#pragma warning restore\n   ASPIRETERMINAL001`. The examined integration `WithRepl` methods themselves\n   do not require this suppression.\n5. General `TerminalService` and terminal-prompt APIs are **not exported to\n   TypeScript** in this baseline. Do not invent TS equivalents or edit generated\n   `.aspire\u002Fmodules\u002F`. Supported TS entry points are `withTerminal()` and the\n   applicable integration's `withRepl()`.\n6. Check `aspire --version` and `aspire terminal --help` for the installed CLI.\n   Aspire 13.5 keeps terminal commands behind a feature flag; enable them only\n   for that CLI line with\n   `aspire config set features.terminalCommandsEnabled true --non-interactive`.\n   Newer CLIs no longer require or support that flag. If a command remains\n   absent, treat it as unavailable rather than guessing alternative syntax.\n\nThe references are qualified against Aspire `release\u002F13.6` commit\n`34db30a7d3733229da64a403dfc4e4e4d7a1a43b` (terminal code also present in main\n`22bee5e1266b7b66ff53008957dde86efb370c79`), compared with shipped `v13.5.0`.\nTerminal-command availability guidance also reflects the subsequent\n[feature-flag removal](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire\u002Fpull\u002F20525).\nRecheck capabilities against the user's actual build.\n\n## Authoring workflow\n\n1. Identify which process needs the PTY and whether it should remain visible,\n   block a focused workflow, or run headlessly. Ask if the lifetime is unclear.\n2. Read [resource terminals](references\u002Fresource-terminals.md) for `WithTerminal`\n   and built-in REPLs; read [AppHost terminals](references\u002Fapphost-terminals.md)\n   for complete dock, manual prompt, automated prompt and headless recipes.\n3. Keep terminal-specific edits separate from unrelated resource\u002Fdependency changes.\n   Use `aspireify` for new general resource wiring and `aspire-init` if no AppHost\n   exists. Do not turn a terminal request into a migration or version upgrade.\n4. Resolve actual executable paths, working directories and OS shell choices.\n   Use argument lists, not concatenated untrusted shell input. Children inherit\n   the AppHost environment; add only the necessary overrides.\n5. Guard AppHost-owned terminal commands with `builder.ExecutionContext.IsRunMode`.\n   Do not launch tools at model-construction time or during publish\u002Fdeploy.\n6. Validate the changed code, then route lifecycle work to `aspire-orchestration`.\n   Use the exact AppHost, worktree isolation and bounded resource readiness.\n   Validate the requested lifetime, cancellation and visible result, not merely\n   that the AppHost compiled.\n\n## Non-negotiable ownership and completion rules\n\n- Terminal types are in `Aspire.Hosting.ApplicationModel`, not the old\n  `Aspire.Hosting.Terminals` namespace. `TerminalService` is already registered;\n  resolve it from built services or command `context.Services`. Do not construct\n  it or register another singleton.\n- A dock command that should leave a terminal open **must not** use `await using`\n  for its handle. `Start()` is nonblocking\u002Fidempotent; `Show()` activates the dock.\n  Command success means \"opened\", not \"process exited successfully\".\n- Dialog and headless terminals normally use `await using`. Disposing an\n  AppHost-owned handle stops its process; `PromptTerminalAsync` does **not**\n  dispose it for you.\n- Check `IInteractionService.IsAvailable` **before** launching a prompt-owned\n  process. Noninteractive resource commands can make it false. Do not silently\n  replace human interaction\u002Fapproval with headless success.\n- A prompt needs the exact registered instance from the same AppHost, with\n  `TerminalPlacement.Dialog`. `ResourceView` is not valid for `CreateTerminal`.\n- With `Work`, successful callback completion closes the dialog; observe\n  `TerminalContext.CancellationToken` on every wait\u002Finput. Cancellation signals\n  and joins Work; unrelated errors propagate. Without Work, process exit does\n  not close the prompt: explicitly define completion\u002Fcancellation.\n- No public `ExitCode` or `WaitForExitAsync` is available on `AspireTerminal`.\n  Do not infer success from `Start()`, delivered keystrokes, prompt visibility,\n  or disappearance of a process. Assert a meaningful fresh output marker.\n- Viewers and automation share input. `--viewer` affects sizing ownership,\n  not read-only authorization. Do not blindly retry non-idempotent input.\n- Treat screen output and tapes as sensitive. Do not commit credentials or\n  capture tokens in transcripts. Tape `Hide` is not redaction.\n\n## Driving terminals\n\nRead [automation and CLI](references\u002Fautomation-and-cli.md) for C# screen\u002Fkey\noperations, owner-aware discovery and interactive attach. Use\n[tapes](references\u002Ftapes.md) for unattended resource-terminal playback: supported\nVHS syntax, explicit examples, stdout versus `.txt`\u002F`.ascii` checkpoints, and\nunsupported output formats. Do not install VHS or assume its whole feature set.\n\nFor missing\u002Fdisconnected terminals, inspect resource state and terminal discovery;\nroute console logs\u002Ftraces to `aspire-monitoring`. Terminal views supplement logs,\nnot replace them. Publishing a resource does not publish a development PTY or\ngrant production shell access.\n","# Aspire Terminals\n\nTeach an agent to use the right terminal, not to replace every process with a shell.\nHonor a project-local `.agents\u002Fskills\u002Faspire-terminals\u002FSKILL.md` when present;\nretain the safety and ownership rules below.\n\n## Required reference lookup\n\nBefore answering **or** editing, open the reference for the requested surface,\nincluding for read-only questions. This overview is not enough to write correct\nterminal code or tape syntax.\n\n- Resource PTYs or REPLs: read [resource terminals](references\u002Fresource-terminals.md).\n- Dock, prompts, cancellation or headless tools: read\n  [AppHost terminals](references\u002Fapphost-terminals.md).\n- Any tape question: read [tapes](references\u002Ftapes.md) and\n  [automation and CLI](references\u002Fautomation-and-cli.md). Use the actual syntax and\n  output contracts there, not pseudo-VHS or memory of upstream VHS behavior.\n- Include the applicable package\u002Fbuild capability boundary in recommendations.\n  Source availability and installed-package availability are different facts.\n\n## Choose the model before writing code\n\n| Intent | Pattern | Owner and lifetime |\n|--------|---------|--------------------|\n| Make an existing orchestrated executable, project or container interactive | `WithTerminal()` \u002F `withTerminal()` | Resource process and replicas; resource lifecycle owns stop\u002Frestart |\n| Open an auxiliary shell\u002Ftool that remains available after its command returns | `TerminalService` + `TerminalPlacement.Dock` | AppHost-owned; closing its tab or stopping AppHost disposes it |\n| Guide a person through a focused setup\u002Fauthentication operation | `TerminalService` + `Dialog` + `PromptTerminalAsync` | Caller owns the terminal; prompt borrows it; explicit completion\u002Fcancellation |\n| Drive a terminal-only tool without a dashboard interaction | `TerminalService` + `None` | Caller owns and disposes the headless process |\n| Open an authenticated database\u002Fcache client | Integration `WithRepl()` \u002F `withRepl()` | Built-in command opens a dock terminal; prefer over custom container exec |\n\n`WithTerminal` changes **the resource's actual process execution**. It is not an\non-demand side shell. `TerminalService` launches a separate AppHost-owned process;\nit does not implicitly enter a container or become a modeled resource.\n\n### Lifecycle checklist for recommendations\n\nWhen comparing terminal models, explicitly state cleanup for each model you\nrecommend, including headless alternatives:\n\n- **Dock:** survives the opening command; do not scope the handle with `await using`\n  in that command. Closing the tab or AppHost shutdown disposes it.\n- **Dialog and None:** the caller disposes both, normally with `await using`.\n  Headless placement does not transfer cleanup responsibility to the service.\n- **Prompt completion is not terminal disposal:** successful `Work` closes the\n  prompt, but the caller still disposes its terminal. Without `Work`, process exit\n  does not close the prompt; explicit completion\u002Fcancellation is required.\n\n## Capability check\n\n1. Locate the exact AppHost and inspect its SDK, hosting and integration package\n   versions. Do not upgrade the project just to make an example compile.\n2. Use `aspire docs search terminal --non-interactive`, then\n   `aspire docs api search \u003CAPI> --language csharp|typescript --non-interactive`.\n   If docs lag a preview, inspect that exact package's public API\u002Fsource. A newer\n   CLI alone does not add hosting APIs to an older AppHost.\n3. `WithTerminal`\u002Fparameterless TS `withTerminal` exist in Aspire 13.5.\n   `TerminalService`, terminal prompts, headless automation, tape playback and the\n   six integration REPLs below are in the inspected **13.6 development source**.\n   Verify the installed build contains them; do not promise all previews do.\n4. Direct C# terminal APIs are experimental (`ASPIRETERMINAL001`): narrowly pair\n   `#pragma warning disable ASPIRETERMINAL001` with `#pragma warning restore\n   ASPIRETERMINAL001`. The examined integration `WithRepl` methods themselves\n   do not require this suppression.\n5. General `TerminalService` and terminal-prompt APIs are **not exported to\n   TypeScript** in this baseline. Do not invent TS equivalents or edit generated\n   `.aspire\u002Fmodules\u002F`. Supported TS entry points are `withTerminal()` and the\n   applicable integration's `withRepl()`.\n6. Check `aspire --version` and `aspire terminal --help` for the installed CLI.\n   Aspire 13.5 keeps terminal commands behind a feature flag; enable them only\n   for that CLI line with\n   `aspire config set features.terminalCommandsEnabled true --non-interactive`.\n   Newer CLIs no longer require or support that flag. If a command remains\n   absent, treat it as unavailable rather than guessing alternative syntax.\n\nThe references are qualified against Aspire `release\u002F13.6` commit\n`34db30a7d3733229da64a403dfc4e4e4d7a1a43b` (terminal code also present in main\n`22bee5e1266b7b66ff53008957dde86efb370c79`), compared with shipped `v13.5.0`.\nTerminal-command availability guidance also reflects the subsequent\n[feature-flag removal](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire\u002Fpull\u002F20525).\nRecheck capabilities against the user's actual build.\n\n## Authoring workflow\n\n1. Identify which process needs the PTY and whether it should remain visible,\n   block a focused workflow, or run headlessly. Ask if the lifetime is unclear.\n2. Read [resource terminals](references\u002Fresource-terminals.md) for `WithTerminal`\n   and built-in REPLs; read [AppHost terminals](references\u002Fapphost-terminals.md)\n   for complete dock, manual prompt, automated prompt and headless recipes.\n3. Keep terminal-specific edits separate from unrelated resource\u002Fdependency changes.\n   Use `aspireify` for new general resource wiring and `aspire-init` if no AppHost\n   exists. Do not turn a terminal request into a migration or version upgrade.\n4. Resolve actual executable paths, working directories and OS shell choices.\n   Use argument lists, not concatenated untrusted shell input. Children inherit\n   the AppHost environment; add only the necessary overrides.\n5. Guard AppHost-owned terminal commands with `builder.ExecutionContext.IsRunMode`.\n   Do not launch tools at model-construction time or during publish\u002Fdeploy.\n6. Validate the changed code, then route lifecycle work to `aspire-orchestration`.\n   Use the exact AppHost, worktree isolation and bounded resource readiness.\n   Validate the requested lifetime, cancellation and visible result, not merely\n   that the AppHost compiled.\n\n## Non-negotiable ownership and completion rules\n\n- Terminal types are in `Aspire.Hosting.ApplicationModel`, not the old\n  `Aspire.Hosting.Terminals` namespace. `TerminalService` is already registered;\n  resolve it from built services or command `context.Services`. Do not construct\n  it or register another singleton.\n- A dock command that should leave a terminal open **must not** use `await using`\n  for its handle. `Start()` is nonblocking\u002Fidempotent; `Show()` activates the dock.\n  Command success means \"opened\", not \"process exited successfully\".\n- Dialog and headless terminals normally use `await using`. Disposing an\n  AppHost-owned handle stops its process; `PromptTerminalAsync` does **not**\n  dispose it for you.\n- Check `IInteractionService.IsAvailable` **before** launching a prompt-owned\n  process. Noninteractive resource commands can make it false. Do not silently\n  replace human interaction\u002Fapproval with headless success.\n- A prompt needs the exact registered instance from the same AppHost, with\n  `TerminalPlacement.Dialog`. `ResourceView` is not valid for `CreateTerminal`.\n- With `Work`, successful callback completion closes the dialog; observe\n  `TerminalContext.CancellationToken` on every wait\u002Finput. Cancellation signals\n  and joins Work; unrelated errors propagate. Without Work, process exit does\n  not close the prompt: explicitly define completion\u002Fcancellation.\n- No public `ExitCode` or `WaitForExitAsync` is available on `AspireTerminal`.\n  Do not infer success from `Start()`, delivered keystrokes, prompt visibility,\n  or disappearance of a process. Assert a meaningful fresh output marker.\n- Viewers and automation share input. `--viewer` affects sizing ownership,\n  not read-only authorization. Do not blindly retry non-idempotent input.\n- Treat screen output and tapes as sensitive. Do not commit credentials or\n  capture tokens in transcripts. Tape `Hide` is not redaction.\n\n## Driving terminals\n\nRead [automation and CLI](references\u002Fautomation-and-cli.md) for C# screen\u002Fkey\noperations, owner-aware discovery and interactive attach. Use\n[tapes](references\u002Ftapes.md) for unattended resource-terminal playback: supported\nVHS syntax, explicit examples, stdout versus `.txt`\u002F`.ascii` checkpoints, and\nunsupported output formats. Do not install VHS or assume its whole feature set.\n\nFor missing\u002Fdisconnected terminals, inspect resource state and terminal discovery;\nroute console logs\u002Ftraces to `aspire-monitoring`. Terminal views supplement logs,\nnot replace them. Publishing a resource does not publish a development PTY or\ngrant production shell access.\n",{"name":5,"license":15,"metadata":54,"description":7},{"author":12,"version":55},"0.0.5","main","1117facb04b403dd2fc15f048bc0e63fc67c502f","opencode\u002Fv1\u002Faspire-terminals",12,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills","https:\u002F\u002Faspire.dev\u002Fget-started\u002Faspire-skills\u002F","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-13 01:53:59",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add microsoft\u002Faspire-skills --skill aspire-terminals",{"tool":72,"command":73},"bunx","bunx skills add microsoft\u002Faspire-skills --skill aspire-terminals",{"tool":75,"command":76},"pnpm","pnpm dlx skills add microsoft\u002Faspire-skills --skill aspire-terminals","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-terminals\u002FSKILL.md",true,[80,86,90,94],{"path":81,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fapphost-terminals.md","REFERENCE","参考文档",10230,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-terminals\u002Freferences\u002Fapphost-terminals.md",{"path":87,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fautomation-and-cli.md",5624,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-terminals\u002Freferences\u002Fautomation-and-cli.md",{"path":91,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fresource-terminals.md",5116,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-terminals\u002Freferences\u002Fresource-terminals.md",{"path":95,"resourceType":82,"resourceTypeDesc":83,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Ftapes.md",8443,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-terminals\u002Freferences\u002Ftapes.md",[99,106,130,151,170,188],{"skillNo":100,"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":101,"categories":102,"keywords":105,"publishedAt":49},"01M6HDNG43XGF64N14PV9VGGKB","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fskills\u002Faspire-terminals\u002FSKILL.md",[103,104],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[30,29,40,48,47,46,45,44,43,42,41,31,39,38,37,36,35,34,33,32],{"skillNo":107,"name":45,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":116,"publishedAt":49},"01M6HDMDCMMBTXTWKBVGJM0615","**WORKFLOW SKILL** - Wire Aspire AppHosts or repair TypeScript AppHost toolchains. Scans the repo, proposes a resource graph, edits C#, file-based C#, or TypeScript AppHosts, wires ServiceDefaults + OTel, validates with `aspire start`, then stops. USE FOR: wire\u002Fscaffold AppHost, add Postgres\u002FRedis\u002FRabbit\u002FMongo, connect frontend to API, after `aspire init`, AddNextJsApp, AddViteApp, WithBrowserLogs, Interaction Service, command arguments, apphost.cs, apphost.mts, unified withEnvironment, .aspire\u002Fmodules refusal, config\u002Fsecrets, TS dependency restore, pnpm\u002Fyarn\u002Fbun, or Yarn Classic. DO NOT USE FOR: skeleton drop (aspire-init), lifecycle-only start\u002Fstop\u002Fwait\u002Frestart or `aspire update --migrate` (aspire-orchestration), publish\u002Fdeploy\u002Fdestroy (aspire-deployment), logs\u002Ftraces (aspire-monitoring), terminal authoring or automation (aspire-terminals). INVOKES: aspire CLI, AppHost source edits, ServiceDefaults wiring. FOR SINGLE OPERATIONS: Run `aspire add PACKAGE` directly for a one-off integration.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspireify\u002FSKILL.md",[111,114,115],{"categoryNo":112,"categoryName":113,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[45,117,48,118,119,120,121,122,123,43,42,41,124,125,126,127,75,128,35,129],"frontend","typescript","config","connect","run","update","yarn","migrate","command","modules","stop","authoring","wait",{"skillNo":131,"name":30,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":139,"publishedAt":49},"01M6HDM7MR6SFZHAM32RNM2MKB","**WORKFLOW SKILL** - Aspire router. Detects AppHosts, enforces guardrails, and selects the right sub-skill. USE FOR: Aspire AppHost, Aspire CLI, distributed app, cloud-native .NET, aspire start\u002Fstop\u002Fresource\u002Fdeploy\u002Fdestroy\u002Fpublish\u002Finit\u002Fnew\u002Fadd\u002Fwait\u002Fdescribe\u002Fps\u002Flogs\u002Fotel, aspire agent init, WithBrowserLogs, WithTerminal, TerminalService, terminal prompts, WithRepl, tapes, Interaction Service, apphost.mts, TS package managers, Yarn Classic, custom resource commands, .aspire\u002Fmodules recovery, ProjectResource to DotnetProjectResource migration, or Playwright URL discovery. DO NOT USE FOR: non-Aspire projects or ordinary build\u002Ftest tasks. INVOKES: aspire-init, aspireify, aspire-project-v2-migration, aspire-orchestration, aspire-deployment, aspire-monitoring, aspire-terminals. FOR SINGLE OPERATIONS: Route directly to the matching sub-skill.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire\u002FSKILL.md",[135,138],{"categoryNo":136,"categoryName":137,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[30,47,46,140,45,141,43,42,142,143,144,145,126,146,147,148,35,32,149,150],"init","tasks","publish","Guardrails","projects","router","route","project","app","URL","managers",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":158,"publishedAt":49},"01M6HDKY1PNCDYBC317440ZHZ0","aspire-project-v2-migration","**WORKFLOW SKILL** - Safely migrates eligible Aspire 13.6+ AppHosts from legacy ProjectResource APIs to experimental DotnetProjectResource APIs after a per-resource assessment and explicit approval of exact edits. USE FOR: assess or migrate existing AddProject, addProject, AddCSharpApp, addCSharpApp, or AddBlazorGateway resources to Project v2; migrate ProjectResource to DotnetProjectResource; clean up the resulting obsolete AppHost ProjectReference edges. DO NOT USE FOR: upgrading Aspire versions, creating\u002Fwiring a new AppHost, Azure Functions migration, generic source modernization, ordinary C# resource wiring or adding a new AddProject resource (use aspireify), publishing, or build\u002Flifecycle diagnostics. INVOKES: Aspire docs\u002FAPI lookup, aspire add\u002Frestore\u002Fstart\u002Fwait, AppHost and package edits. FOR SINGLE OPERATIONS: Assess first; never edit from a generic migration request alone.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-project-v2-migration\u002FSKILL.md",[157],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[30,159,160,147,46,45,161,162,163,41,31,124,164,165,166,167,129,32,168,169],"aspire project v2 migration","migration","diagnostics","modernization","assessment","edit","never","up","clean","resources","source",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":178,"publishedAt":49},"01M6HDKQX187B70G2MK589KWC7","aspire-orchestration","**WORKFLOW SKILL** — Manage Aspire lifecycle in VS Code or the CLI. WHEN: \"start or stop my Aspire app\", \"aspire_apphost_start\", \"aspire_apphost_stop\", \"notEditorOwned\", \"ambiguousSession\", \"aspire start\", \"aspire stop\", \"aspire wait\", resource restart, file-lock errors (MSB3491 or CS2012), port conflicts, git worktrees, \"--isolated\", \"aspire update --self\", \"aspire update --migrate\", \"aspire describe --include-hidden\", \"aspire stop --force\", \"aspire stop --force --volumes\", integration discovery, default watch, or hot reload. INVOKES: VS Code lifecycle tools first when exposed; Aspire CLI for readiness, inspection, resource operations, isolated worktree starts, and allowed fallbacks. DO NOT USE FOR: deploy\u002Fpublish\u002Fdestroy (aspire-deployment), logs\u002Ftraces\u002Fmetrics (aspire-monitoring), terminal authoring\u002Fattach\u002Ftapes (aspire-terminals), or AppHost code and resource wiring (aspireify). FOR SINGLE OPERATIONS: Load the matching editor tool first; follow exact-target, worktree-isolation, and stop-result rules.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-orchestration\u002FSKILL.md",[176,177],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[47,30,179,46,45,180,43,42,142,124,181,182,183,37,184,148,32,185,186,187],"aspire orchestration","code","git worktrees","default","conflicts","self","port","errors","lock",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":195,"publishedAt":49},"01M6HDKJBBZFF7EWMF0CK0Y2BD","aspire-monitoring","**ANALYSIS SKILL** - Observe Aspire apps: logs, traces, metrics, resource state, telemetry export, browser telemetry, and the standalone dashboard. Routes between local Aspire CLI, AKS workload diagnostics, and deployed Azure resource health. USE FOR: aspire logs, aspire otel logs, aspire otel traces, aspire otel spans, aspire describe, aspire ps, aspire export, aspire dashboard run, describe --include-hidden, browser logs in dashboard, DevTunnel URLs, WithBrowserLogs, App Insights query, AKS pod logs, container app logs. DO NOT USE FOR: start\u002Fstop\u002Fwait (use aspire-orchestration), deploy\u002Fpublish\u002Fdestroy (use aspire-deployment), AppHost code edits like WithBrowserLogs() (use aspireify), Azure provisioning (use azure-prepare), terminal authoring\u002Finput\u002Ftapes (use aspire-terminals). INVOKES: aspire CLI, azure-diagnostics (deployed Azure), kubectl + Container Insights. FOR SINGLE OPERATIONS: Run the aspire CLI command directly for quick log or describe lookups.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Faspire-skills\u002Fblob\u002Fmain\u002Fopencode\u002Fv1\u002Faspire-monitoring\u002FSKILL.md",[194],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[30,196,42,47,45,180,44,43,142,197,198,199,200,201,202,148,203,204,205,206],"aspire monitoring","analysis","log","observe","workload diagnostics","query","local","apps","quick","insights","standalone"]