Install the "deployment-e2e-testing" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/deployment-e2e-testing into .claude/skills/deployment-e2e-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deployment-e2e-testing", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add microsoft/aspire --skill deployment-e2e-testing -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "deployment-e2e-testing" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/deployment-e2e-testing into .agents/skills/deployment-e2e-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deployment-e2e-testing", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add microsoft/aspire --skill deployment-e2e-testing -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "deployment-e2e-testing" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/deployment-e2e-testing into .cursor/skills/deployment-e2e-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deployment-e2e-testing", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add microsoft/aspire --skill deployment-e2e-testing -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "deployment-e2e-testing" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/deployment-e2e-testing into .gemini/skills/deployment-e2e-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deployment-e2e-testing", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add microsoft/aspire --skill deployment-e2e-testing -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "deployment-e2e-testing" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/deployment-e2e-testing into .github/skills/deployment-e2e-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deployment-e2e-testing", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add microsoft/aspire --skill deployment-e2e-testing -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "deployment-e2e-testing" agent skill from https://github.com/microsoft/aspire/tree/main/.agents/skills/deployment-e2e-testing into .opencode/skills/deployment-e2e-testing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deployment-e2e-testing", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
deployment-e2e-testing
GitHub stars
6.3k
Token cost
~3.2k tokens
SKILL.md length
656 words
Files
1
Skills in repo
22
Repo updated
First seen
Licence
MIT
At a glance
Guide for writing Aspire deployment end-to-end tests. An agent skill from microsoft/aspire.
Works in 7 steps: Validates Azure authentication (skip if… → Generates a unique resource group name → Creates a project using aspire new → …
Tasks that involve End-to-end testing
SKILL.md covers Overview, Relationship to CLI E2E Tests, Key Components and Test Structure, plus 14 more sections
Calls az, git and dotnet; reaches dashboard.azurecontainerapps.io and webfrontend.azurecontainerapps.io
What it does
Deployment E2E Testing is an agent skill from microsoft/aspire, published by the product's own GitHub organization. Guide for writing Aspire deployment end-to-end tests. Use this when asked to create, modify, or debug deployment E2E tests that deploy to Azure.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Testing & QA, covering End-to-end testing and Deployment. It works with Microsoft Azure. The repository describes itself as: Aspire is the tool for code-first, extensible, observable dev and deploy. The licence is MIT.
When your agent uses it
Tasks that involve End-to-end testing
Tasks that involve Deployment
Example prompts
“/deployment-e2e-testing”
Workflow steps
7 steps, taken from the first numbered list in SKILL.md.
1Validates Azure authentication (skip if not available locally)
2Generates a unique resource group name
3Creates a project using aspire new
4Deploys using aspire deploy
5Verifies deployed endpoints work
6Reports results to GitHub step summary
7Cleans up Azure resources
What it can do on your machine
Read from SKILL.md and the folder at commit 809a672. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Runs code
Shell commands in SKILL.md call:
az
git
dotnet
From the folder's file list and the shell code blocks in SKILL.md.
Network
Hosts in commands or code, which the agent is likely to contact:
dashboard.azurecontainerapps.io
webfrontend.azurecontainerapps.io
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Deployment E2E Testing loads about 3.2k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 656 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~42
When it runs· the whole SKILL.md, loaded when a task matches
~3.2k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check passed
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
Download SKILL.mdSave it as .claude/skills/deployment-e2e-testing/SKILL.md (or your agent's skills folder).
name
deployment-e2e-testing
description
Guide for writing Aspire deployment end-to-end tests. Use this when asked to create, modify, or debug deployment E2E tests that deploy to Azure.
Aspire Deployment End-to-End Testing
This skill provides patterns and practices for writing end-to-end tests that deploy Aspire applications to real Azure infrastructure.
Overview
Deployment E2E tests extend the CLI E2E testing patterns with actual Azure deployments. They use the Hex1b terminal automation library to drive the Aspire CLI and verify that deployed applications work correctly.
Location: tests/Aspire.Deployment.EndToEnd.Tests/
Supported Platforms: Linux only (Hex1b requirement).
Prerequisites:
Azure subscription with appropriate permissions
OIDC authentication (CI) or Azure CLI authentication (local)
Relationship to CLI E2E Tests
Deployment tests build on the CLI E2E testing skill. Before working with deployment tests, familiarize yourself with:
Downloads and installs the Aspire CLI from a PR build artifact
InstallAspireCliReleaseAsync(counter)
Installs the latest released Aspire CLI
SourceAspireCliEnvironmentAsync(counter)
Adds ~/.aspire/bin to PATH so the aspire command is available
These extend Hex1bTerminalAutomator and are used alongside the shared Hex1bAutomatorTestHelpers methods (WaitForSuccessPromptAsync, AspireNewAsync, etc.) documented in the CLI E2E Testing Skill.
Azure Authentication
In CI (GitHub Actions)
Tests use OIDC (Workload Identity Federation) for authentication:
The test code automatically detects CI and uses DefaultAzureCredential which picks up the OIDC session.
Local Development
Authenticate with Azure CLI before running tests:
bash
# Login to Azure
az login
# Set your subscription
az account set --subscription "your-subscription-id"
# Set environment variable
export ASPIRE_DEPLOYMENT_TEST_SUBSCRIPTION="your-subscription-id"
# Run tests
dotnet test tests/Aspire.Deployment.EndToEnd.Tests/
Authentication Helpers
csharp
// Check if auth is available
if (!AzureAuthenticationHelpers.IsAzureAuthAvailable())
{
Assert.Skip("Azure auth not available");
}
// Get subscription ID
var subscriptionId = AzureAuthenticationHelpers.GetSubscriptionId();
// Generate unique resource group name
var rgName = AzureAuthenticationHelpers.GenerateResourceGroupName("my-test");
// Result: "aspire-e2e-my-test-20240115-abc12345"
// Check auth type
if (AzureAuthenticationHelpers.IsOidcConfigured())
{
// Using OIDC (CI)
}
else
{
// Using Azure CLI (local)
}
Resource Group Naming
Resource groups are named with a consistent pattern for easy identification and cleanup:
{prefix}-{testname}-{date}-{runid}
Example: aspire-e2e-aca-starter-20240115-12345678
Components:
prefix: From ASPIRE_DEPLOYMENT_TEST_RG_PREFIX (default: aspire-e2e)
testname: Sanitized test name (lowercase, alphanumeric, hyphens)
date: UTC date in YYYYMMDD format
runid: GitHub run ID or random GUID suffix
Show full SKILL.md (247 more words)Show less
Reporting Results
GitHub Step Summary
Tests automatically write to the GitHub step summary:
var recordingPath = DeploymentE2ETestHelpers.GetTestResultsRecordingPath(nameof(MyTest));
// CI: $GITHUB_WORKSPACE/testresults/recordings/MyTest.cast
// Local: /tmp/aspire-deployment-e2e/recordings/MyTest.cast
Cleanup
Always cleanup Azure resources in a finally block:
csharp
private static async Task CleanupResourceGroupAsync(string resourceGroupName)
{
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "az",
Arguments = $"group delete --name {resourceGroupName} --yes --no-wait",
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false
}
};
process.Start();
await process.WaitForExitAsync();
if (process.ExitCode != 0)
{
var error = await process.StandardError.ReadToEndAsync();
throw new InvalidOperationException($"Cleanup failed: {error}");
}
}
Workflow Triggers
Deployment tests are triggered by:
Nightly schedule (03:00 UTC) - Runs on main
Manual dispatch - Via GitHub Actions UI
Push to deploy-test/* - For rapid iteration
Iterating on Tests
To iterate quickly during development:
bash
# Create a protected branch
git checkout -b deploy-test/my-feature
# Make changes
# ...
# Push to trigger workflow
git push origin deploy-test/my-feature
Environment Variables
Variable
Required
Description
ASPIRE_DEPLOYMENT_TEST_SUBSCRIPTION
Yes
Azure subscription ID
ASPIRE_DEPLOYMENT_TEST_RG_PREFIX
No
Resource group prefix (default: aspire-e2e)
AZURE_DEPLOYMENT_TEST_TENANT_ID
CI
Azure AD tenant ID (GitHub secret)
AZURE_DEPLOYMENT_TEST_CLIENT_ID
CI
OIDC app client ID (GitHub secret)
AZURE_DEPLOYMENT_TEST_SUBSCRIPTION_ID
CI
Azure subscription ID (GitHub secret)
DO: Always Validate Prerequisites
csharp
var subscriptionId = AzureAuthenticationHelpers.TryGetSubscriptionId();
if (string.IsNullOrEmpty(subscriptionId))
{
Assert.Skip("Subscription not configured");
}
if (!AzureAuthenticationHelpers.IsAzureAuthAvailable())
{
Assert.Skip("Azure auth not available");
}
DO: Generate Unique Resource Groups
csharp
var rgName = AzureAuthenticationHelpers.GenerateResourceGroupName("my-test");
DO: Report to GitHub Summary
csharp
DeploymentReporter.ReportDeploymentSuccess(...);
// or
DeploymentReporter.ReportDeploymentFailure(...);
// DON'T
var subscriptionId = "12345-abcde-...";
// DO
var subscriptionId = AzureAuthenticationHelpers.GetSubscriptionId();
DON'T: Skip Cleanup on Failure
csharp
// DON'T - cleanup might not run
await DeployAsync();
await CleanupAsync(); // Skipped if deploy throws!
// DO - always cleanup
try
{
await DeployAsync();
}
finally
{
await CleanupAsync(); // Always runs
}
Troubleshooting
Authentication Failures
Local: Ensure Azure CLI is authenticated:
bash
az login
az account show
CI: Check OIDC configuration:
AZURE_CLIENT_ID secret is set
AZURE_TENANT_ID secret is set
Workload Identity Federation is configured in Azure AD
Deployment Timeouts
Deployments can take 15-30+ minutes. If tests timeout:
Check the asciinema recording for where it stopped
Increase timeout in WaitUntil calls
Check Azure portal for deployment status
Orphaned Resources
Find and cleanup orphaned test resources:
bash
# List all test resource groups
az group list --query "[?starts_with(name, 'aspire-e2e')]" -o table
# Delete specific resource group
az group delete --name aspire-e2e-xxx --yes
Tenant Rotation
The test tenant rotates every ~90 days. When rotation occurs:
Create new App Registration in new tenant
Configure Workload Identity Federation for the deployment-testing environment
Grant Owner role on subscription (constrained - cannot create other Owner identities)
Deployment E2E Testing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
Deployment E2E Testing compared with similar skills
A skill your agent uses for AVM Terraform validation, provider-mocked unit tests, real-Azure integration tests, E2E example tests, PowerShell hooks, OIDC, policy checks, and Avm.Authoring CI behavior.
A skill your agent uses when asked to trigger or inspect Aspire internal Azure DevOps builds, source-index runs, or release validation on dnceng/internal; push to the internal mirror; download build…
Backports a merged PR to a release branch by triggering the /backport bot, waiting for the bot-created PR, and filling in the shiproom template (Customer Impact, Testing, Risk, Regression?).
Guide for writing Aspire deployment end-to-end tests. An agent skill from microsoft/aspire. Deployment E2E Testing is an agent skill from microsoft/aspire, published by the product's own GitHub organization. Guide for writing Aspire deployment end-to-end tests.
When should I use Deployment E2E Testing?
Deployment E2E Testing fits situations like: tasks that involve End-to-end testing; tasks that involve Deployment.
How do I install Deployment E2E Testing in Claude Code?
Run `npx skills add microsoft/aspire --skill deployment-e2e-testing -a claude-code`. Or copy the skill folder (.agents/skills/deployment-e2e-testing in microsoft/aspire) into .claude/skills/deployment-e2e-testing in your project. Claude Code loads it when a task matches its description.
How do I install Deployment E2E Testing in Codex?
Run `npx skills add microsoft/aspire --skill deployment-e2e-testing -a codex`. Or copy the skill folder (.agents/skills/deployment-e2e-testing in microsoft/aspire) into .agents/skills/deployment-e2e-testing in your project. Codex loads it when a task matches its description.
Can I use Deployment E2E Testing in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microsoft/aspire --skill deployment-e2e-testing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deployment-e2e-testing, .gemini/skills/deployment-e2e-testing, .github/skills/deployment-e2e-testing and .opencode/skills/deployment-e2e-testing in your project.
What does Deployment E2E Testing need to run?
Going by SKILL.md and its folder, Deployment E2E Testing needs the command-line tools its instructions call (az, git and dotnet).
Does Deployment E2E Testing access the network?
SKILL.md names 2 domains. In commands or code: dashboard.azurecontainerapps.io and webfrontend.azurecontainerapps.io; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Is Deployment E2E Testing safe to install?
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
What licence does Deployment E2E Testing use?
Deployment E2E Testing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Deployment E2E Testing use?
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Deployment E2E Testing?
Skills that share tags, products or a category with Deployment E2E Testing: Avm Tf Testing (Azure/terraform-azurerm-avm-ptn-alz, 135 stars), Azure Deployment (EmeaAppGbb/spec2cloud, 100 stars), E2E Deploy Rhdh (redhat-developer/rhdh, 172 stars) and Deploy Diagnostics (EmeaAppGbb/spec2cloud, 100 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Deployment E2E Testing?
microsoft (a GitHub organization, an official publisher) maintains it in microsoft/aspire, which has 6,348 GitHub stars. The repository holds 22 skills in this directory. The repository was last updated on October 7, 2026.
Source: microsoft/aspire on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.