Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -555,4 +555,4 @@ Remove-Item tools/scripts/artifact_* -Recurse -Force -ErrorAction SilentlyContin

- `tools/scripts/README.md` - Full documentation
- `tools/scripts/Heartbeat.cs` - System monitoring tool for diagnosing hangs
- `.github/skills/cli-e2e-testing/SKILL.md` - CLI E2E test troubleshooting
- `.agents/skills/cli-e2e-testing/SKILL.md` - CLI E2E test troubleshooting
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ External NuGet dependencies (e.g., Hex1b, StackExchange.Redis, Confluent.Kafka)

### Companion Script

A single-file C# app is bundled alongside this skill at `.github/skills/dependency-update/MigratePackage.cs`. It uses the Azure DevOps .NET SDK (`PipelinesHttpClient`) with `Azure.Identity` for authentication. Use it to trigger and monitor pipeline runs — it handles prerequisite checks, pipeline triggering, and polling.
A single-file C# app is bundled alongside this skill at `.agents/skills/dependency-update/MigratePackage.cs`. It uses the Azure DevOps .NET SDK (`PipelinesHttpClient`) with `Azure.Identity` for authentication. Use it to trigger and monitor pipeline runs — it handles prerequisite checks, pipeline triggering, and polling.

## Understanding User Requests

Expand Down Expand Up @@ -135,7 +135,7 @@ Use the `ask_user` tool to confirm which packages and versions to proceed with b
Before triggering pipelines, verify the Azure DevOps tooling is ready:

```bash
dotnet .github/skills/dependency-update/MigratePackage.cs -- --check-prereqs
dotnet .agents/skills/dependency-update/MigratePackage.cs -- --check-prereqs
```

If prerequisites fail, guide the user through setup:
Expand All @@ -158,7 +158,7 @@ az login --tenant 72f988bf-86f1-41af-91ab-2d7cd011db47
Run the companion script for each confirmed package. Process **one package at a time**:

```bash
dotnet .github/skills/dependency-update/MigratePackage.cs -- "<PackageName>" "<PackageVersion>"
dotnet .agents/skills/dependency-update/MigratePackage.cs -- "<PackageName>" "<PackageVersion>"
```

The script will:
Expand All @@ -169,8 +169,8 @@ The script will:

**Example:**
```bash
dotnet .github/skills/dependency-update/MigratePackage.cs -- "Hex1b" "0.49.0"
dotnet .github/skills/dependency-update/MigratePackage.cs -- "Hex1b.McpServer" "0.49.0"
dotnet .agents/skills/dependency-update/MigratePackage.cs -- "Hex1b" "0.49.0"
dotnet .agents/skills/dependency-update/MigratePackage.cs -- "Hex1b.McpServer" "0.49.0"
```

**If a pipeline run fails**, stop and report the failure to the user before proceeding with additional packages. Include the Azure DevOps run URL for investigation.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,13 +282,13 @@ dotnet build tests/<TestProject>.Tests/<TestProject>.Tests.csproj -v:q

### 2.3: Run with run-test-repeatedly script

Use the `run-test-repeatedly.sh` (Linux/macOS) or `run-test-repeatedly.ps1` (Windows) script in `.github/skills/fix-flaky-test/`. It runs the test command repeatedly with process cleanup between iterations.
Use the `run-test-repeatedly.sh` (Linux/macOS) or `run-test-repeatedly.ps1` (Windows) script in `.agents/skills/fix-flaky-test/`. It runs the test command repeatedly with process cleanup between iterations.

**Linux/macOS:**

```bash
# Basic usage — run a single test 20 times (stop on first failure)
./.github/skills/fix-flaky-test/run-test-repeatedly.sh -n 20 -- \
./.agents/skills/fix-flaky-test/run-test-repeatedly.sh -n 20 -- \
dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build \
-- --filter-method "*.<TestMethodName>" \
--filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"
Expand All @@ -298,7 +298,7 @@ Use the `run-test-repeatedly.sh` (Linux/macOS) or `run-test-repeatedly.ps1` (Win

```powershell
# Basic usage — run a single test 20 times (stop on first failure)
./.github/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build `
./.agents/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build `
-- --filter-method "*.<TestMethodName>" `
--filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"
```
Expand All @@ -309,13 +309,13 @@ Use the `run-test-repeatedly.sh` (Linux/macOS) or `run-test-repeatedly.ps1` (Win
dotnet build tests/<TestProject>.Tests/<TestProject>.Tests.csproj -v:q /p:RunQuarantinedTests=true

# Linux/macOS
./.github/skills/fix-flaky-test/run-test-repeatedly.sh -n 20 -- \
./.agents/skills/fix-flaky-test/run-test-repeatedly.sh -n 20 -- \
dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build \
/p:RunQuarantinedTests=true \
-- --filter-method "*.<TestMethodName>"

# Windows (PowerShell)
./.github/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build `
./.agents/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build `
-- --filter-method "*.<TestMethodName>"
```

Expand Down Expand Up @@ -697,11 +697,11 @@ dotnet build tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-restore -

# Quick local check — same iteration count as reproduction
# Linux/macOS:
./.github/skills/fix-flaky-test/run-test-repeatedly.sh -n 20 -- \
./.agents/skills/fix-flaky-test/run-test-repeatedly.sh -n 20 -- \
dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build \
-- --filter-method "*.<TestMethodName>"
# Windows (PowerShell):
# ./.github/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build -- --filter-method "*.<TestMethodName>"
# ./.agents/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/<TestProject>.Tests/<TestProject>.Tests.csproj --no-build -- --filter-method "*.<TestMethodName>"
```

If local verification fails, iterate on the fix before going to CI. This saves ~30 minutes per CI round-trip.
Expand Down Expand Up @@ -895,7 +895,7 @@ gh pr create --repo microsoft/aspire \
> **Note:** This PR intentionally does not close #<issue-number>. The test will remain quarantined until a separate unquarantine process confirms it has been stable (zero failures) for a sufficient period. Once stability is confirmed, the test will be unquarantined and the issue will be closed.

---
*This fix was generated using the [fix-flaky-test skill](https://github.com/microsoft/aspire/blob/main/.github/skills/fix-flaky-test/SKILL.md).*"
*This fix was generated using the [fix-flaky-test skill](https://github.com/microsoft/aspire/blob/main/.agents/skills/fix-flaky-test/SKILL.md).*"
```

**If `gh pr create` fails** (e.g. permissions error, API failure): Do **NOT** delete the branch or undo the work. Instead:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
(direct invocation from a PowerShell prompt).

.EXAMPLE
.github/skills/fix-flaky-test/run-test-repeatedly.ps1 -- dotnet test tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj --no-build -- --filter-method "*.MyTest"
.agents/skills/fix-flaky-test/run-test-repeatedly.ps1 -- dotnet test tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj --no-build -- --filter-method "*.MyTest"

.EXAMPLE
.github/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 50 --run-all -- dotnet test tests/Foo/Foo.csproj -- --filter-method "*.Bar"
.agents/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 50 --run-all -- dotnet test tests/Foo/Foo.csproj -- --filter-method "*.Bar"
#>

# ---------- defaults ----------
Expand Down Expand Up @@ -46,7 +46,7 @@ $i = 0
}
'--help' {
Write-Host @"
Usage: .github/skills/fix-flaky-test/run-test-repeatedly.ps1 [OPTIONS] -- <test command...>
Usage: .agents/skills/fix-flaky-test/run-test-repeatedly.ps1 [OPTIONS] -- <test command...>

Runs <test command> repeatedly to validate flaky test fixes.
Everything after '--' is executed verbatim each iteration.
Expand All @@ -57,8 +57,8 @@ Options:
--help Show this help message

Examples:
.github/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj -- --filter-method "*.MyTest"
.github/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 50 --run-all -- dotnet test tests/Foo/Foo.csproj -- --filter-method "*.Bar"
.agents/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 20 -- dotnet test tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj -- --filter-method "*.MyTest"
.agents/skills/fix-flaky-test/run-test-repeatedly.ps1 -n 50 --run-all -- dotnet test tests/Foo/Foo.csproj -- --filter-method "*.Bar"
"@
exit 0
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ STOP_ON_FAILURE=true
# ---------- usage ----------
usage() {
cat <<'EOF'
Usage: .github/skills/fix-flaky-test/run-test-repeatedly.sh [OPTIONS] -- <test command...>
Usage: .agents/skills/fix-flaky-test/run-test-repeatedly.sh [OPTIONS] -- <test command...>

Runs <test command> repeatedly to validate flaky test fixes.
Everything after '--' is executed verbatim each iteration.
Expand All @@ -23,8 +23,8 @@ Options:
--help Show this help message

Examples:
.github/skills/fix-flaky-test/run-test-repeatedly.sh -- dotnet test tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj --no-build -- --filter-method "*.MyTest"
.github/skills/fix-flaky-test/run-test-repeatedly.sh -n 50 --run-all -- dotnet test tests/Foo/Foo.csproj -- --filter-method "*.Bar"
.agents/skills/fix-flaky-test/run-test-repeatedly.sh -- dotnet test tests/Aspire.Hosting.Tests/Aspire.Hosting.Tests.csproj --no-build -- --filter-method "*.MyTest"
.agents/skills/fix-flaky-test/run-test-repeatedly.sh -n 50 --run-all -- dotnet test tests/Foo/Foo.csproj -- --filter-method "*.Bar"
EOF
exit 0
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ dotnet hex1b terminal attach <id>
Generate this skill file for a repository so AI agents know how to use the CLI.

```bash
# Write skill file to .github/skills/hex1b/SKILL.md
# Write skill file to .agents/skills/hex1b/SKILL.md
dotnet hex1b agent init

# Specify a different repo root
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ The repository uses 5 container registries:

### Companion Script

A single-file C# script is bundled at `.github/skills/update-container-images/UpdateImageTags.cs`. It discovers all `*ImageTags.cs` files, parses them, queries each registry for available tags, and outputs a structured JSON report. **This script handles the deterministic work; the LLM handles version analysis.**
A single-file C# script is bundled at `.agents/skills/update-container-images/UpdateImageTags.cs`. It discovers all `*ImageTags.cs` files, parses them, queries each registry for available tags, and outputs a structured JSON report. **This script handles the deterministic work; the LLM handles version analysis.**

## Understanding User Requests

Expand All @@ -66,7 +66,7 @@ Run the companion script from the repository root to generate a JSON report of a

```bash
cd <repo-root>
dotnet run .github/skills/update-container-images/UpdateImageTags.cs 2>update-tags-stderr.txt 1>update-tags-report.json
dotnet run .agents/skills/update-container-images/UpdateImageTags.cs 2>update-tags-stderr.txt 1>update-tags-report.json
```

Check stderr for any failures:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-docs-check.md
Original file line number Diff line number Diff line change
Expand Up @@ -1173,7 +1173,7 @@ the single best fit:
| `internal_refactor` | The change touches `src/` but introduces no new or changed public types, methods, options, or strings. The PR title and body confirm this is purely internal. |
| `formatting_or_comment_only` | Pure typo fix, formatting, or code-comment-only change with no behavioral effect. |
| `bug_fix_restores_documented_behavior` | A bug fix that brings the implementation back in line with already-documented behavior. The docs already describe the intended behavior — the bug was the discrepancy. |
| `agent_or_skill_content` | Only files under `.agents/` or `.github/skills/` changed (agent / skill content does not ship to `microsoft/aspire.dev`). |
| `agent_or_skill_content` | Only files under `.agents/` changed (agent / skill content does not ship to `microsoft/aspire.dev`). |

If the change does not match exactly one of these categories, draft the
docs PR.
Expand Down
6 changes: 3 additions & 3 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -378,8 +378,8 @@ These switches can be repeated to run tests on multiple classes or methods at on
- Such tests are not run as part of the regular tests workflow (`tests.yml`).
- Instead they are run in the `Quarantine` workflow (`tests-quarantine.yml`).
- A github issue url is used with the attribute
- To **reproduce or fix** a flaky/quarantined test, use the `fix-flaky-test` skill (`.github/skills/fix-flaky-test/SKILL.md`).
- To **quarantine or unquarantine** a test, use the `test-management` skill (`.github/skills/test-management/SKILL.md`).
- To **reproduce or fix** a flaky/quarantined test, use the `fix-flaky-test` skill (`.agents/skills/fix-flaky-test/SKILL.md`).
- To **quarantine or unquarantine** a test, use the `test-management` skill (`.agents/skills/test-management/SKILL.md`).

Example: `[QuarantinedTest("..issue url..")]`

Expand Down Expand Up @@ -510,7 +510,7 @@ For most development tasks, following these instructions should be sufficient to

## Available Skills

The following specialized skills are available in `.github/skills/`:
The following specialized skills are available in `.agents/skills/`:

- **cli-e2e-testing**: Guide for writing Aspire CLI end-to-end tests using Hex1b terminal automation
- **ci-test-failures**: Diagnoses GitHub Actions test failures, extracts failed tests from runs, and creates or updates failing-test issues
Expand Down
8 changes: 4 additions & 4 deletions docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,19 +111,19 @@ The Aspire repository also includes custom Copilot skills that team members and
> [!NOTE]
> AI-based code review and end-to-end testing can help find issues earlier, but they are not a replacement for human review and manual testing. Contributors are still responsible for understanding their changes and verifying the scenarios they affect.

### [`code-review`](/.github/skills/code-review/SKILL.md)
### [`code-review`](/.agents/skills/code-review/SKILL.md)

Reviews a PR for high-confidence problems only, such as bugs, security issues, correctness errors, performance regressions, missing boundary error handling, concurrency or resource issues, flaky test patterns, and repository convention violations. It avoids style nits and duplicate review comments.

### [`pr-testing`](/.github/skills/pr-testing/SKILL.md)
### [`pr-testing`](/.agents/skills/pr-testing/SKILL.md)

Installs the Aspire CLI and packages from a PR's dogfood build, verifies the installed CLI matches the PR head commit, analyzes changed areas, proposes targeted happy-path and negative test scenarios, runs the selected scenarios locally or in the repo container runner, captures evidence, and can produce a PR testing report.

### [`cli-e2e-testing`](/.github/skills/cli-e2e-testing/SKILL.md)
### [`cli-e2e-testing`](/.agents/skills/cli-e2e-testing/SKILL.md)

Guides Aspire CLI end-to-end test authoring and debugging with Hex1b terminal automation. It covers test structure, local `localhive` archive workflows, Docker-based execution, install modes, prompt detection, and asciinema recordings for failures.

### [`ci-test-failures`](/.github/skills/ci-test-failures/SKILL.md)
### [`ci-test-failures`](/.agents/skills/ci-test-failures/SKILL.md)

Guides GitHub Actions test-failure diagnosis. It covers downloading failed job logs and artifacts, extracting failed tests from runs, investigating failures without filing issues, and creating or updating failing-test issues with the repo tooling.

Expand Down
2 changes: 1 addition & 1 deletion eng/testing/github-ci-trigger-patterns.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ eng/test-configuration.json
Aspire-Core.slnf

.github/instructions/**
.github/skills/**
.agents/skills/**

# GitHub workflow files that do not affect the CI build or test process
.github/workflows/apply-test-attributes.yml
Expand Down
2 changes: 1 addition & 1 deletion tests/Aspire.Deployment.EndToEnd.Tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ The following TypeScript publish paths remain type-checked by the polyglot appho

## Writing New Tests

See the [Deployment E2E Testing Skill](../../.github/skills/deployment-e2e-testing/SKILL.md) for detailed patterns and guidance.
See the [Deployment E2E Testing Skill](../../.agents/skills/deployment-e2e-testing/SKILL.md) for detailed patterns and guidance.

Basic test structure:

Expand Down
Loading