Aspire TypeScript AppHost Generator
Use this skill when the user wants to create a TypeScript AppHost (apphost.mts) from an existing C# example AppHost and add/update the corresponding integration test.
Prompting rule
- Ask for the integration only when this skill is actively running and only if the user did not provide it.
- Do not ask for integration selection before this skill is invoked.
Goal
For one integration, produce:
- A TypeScript AppHost example beside the existing C# AppHost example.
- A test in the integration's
tests/CommunityToolkit.Aspire.Hosting.<Integration>.Testsproject that usesTypeScriptAppHostTest.Run(...).
Workflow
Resolve the integration
- If the user already specified an integration, use it.
- Otherwise, prompt for it at runtime.
Locate the source AppHost and test project
- Source C# example path pattern:
examples/<example>/CommunityToolkit.Aspire.Hosting.<Integration>.AppHost/Program.cs
- Target TypeScript example path pattern:
examples/<example>/CommunityToolkit.Aspire.Hosting.<Integration>.AppHost.TypeScript/
- Test project path:
tests/CommunityToolkit.Aspire.Hosting.<Integration>.Tests/
- Source C# example path pattern:
Create or update the TypeScript AppHost folder
- Required files:
apphost.mtsaspire.config.jsonpackage.jsontsconfig.jsoneslint.config.mjspackage-lock.json
- Keep template/config conventions aligned with existing TypeScript AppHost examples in this repo.
- Use TypeScript API method names generated for Aspire exports (for overloads, use the exported TypeScript name, not guessed C# casing).
- Required files:
Translate C# AppHost logic to TypeScript
- Preserve resource naming and behavior where practical.
- Use TypeScript Aspire methods and options shapes.
- Keep path handling and package mapping valid for the example location.
Add the integration TypeScript AppHost test
- Add
TypeScriptAppHostTests.csin the integration test project if missing. - Use:
TypeScriptAppHostTest.Run(...)appHostProject=CommunityToolkit.Aspire.Hosting.<Integration>.AppHost.TypeScriptfolder namepackageName= integration package nameexampleName= example folder namewaitForResources= resources required to verify startup in Aspire
- Follow existing test style and attributes (
[RequiresDocker]when applicable).
- Add
Validate changes
- Run the relevant test project to ensure the TypeScript AppHost compiles and starts via the shared validation flow.
Guardrails
- Do not edit generated
.aspire/modules/files. - Do not change unrelated examples or tests.
- Keep all changes scoped to the selected integration plus the skill files.