Move repository skills to .agents#17534
Conversation
Move repository skills from .github/skills to .agents/skills and update docs, CI trigger patterns, and CLI scanner defaults to use the standard skill location. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17534Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17534" |
Restore Aspire CLI source, localization, product specs, and related tests so the skill location move only affects repository skill content and guidance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Moves repository-owned Copilot skill content from .github/skills into the shared .agents/skills location, updating the Aspire CLI scanners and repo documentation so agent environments use the new directory consistently.
Changes:
- Update Aspire CLI VS Code + Copilot CLI environment scanners (and their tests) to register
.agents/skillsas the skill base directory for Playwright skill mirroring. - Update docs/README guidance and CI trigger patterns to reference
.agents/skillsinstead of.github/skills. - Add/move multiple skill definitions and companion scripts into
.agents/skills, and label.github/skillsas a legacy skill location in CLI strings.
Show a summary per file
| File | Description |
|---|---|
| tests/Aspire.Deployment.EndToEnd.Tests/README.md | Updates skill documentation link to the new .agents/skills location. |
| tests/Aspire.Cli.Tests/Agents/VsCodeAgentEnvironmentScannerTests.cs | Adjusts expectations for VS Code scanner to register .agents/skills and not .github/skills. |
| tests/Aspire.Cli.Tests/Agents/CopilotCliAgentEnvironmentScannerTests.cs | Adjusts expectations for Copilot CLI scanner to register .agents/skills and not .github/skills. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hant.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hans.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.tr.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ru.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pt-BR.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pl.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ko.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ja.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.it.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.fr.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.es.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.de.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/xlf/AgentCommandStrings.cs.xlf | Updates localized resource for legacy .github/skills display name. |
| src/Aspire.Cli/Resources/AgentCommandStrings.resx | Renames the .github/skills display string to “Legacy …”. |
| src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs | Updates generated designer docstring for the renamed resource value. |
| src/Aspire.Cli/Agents/VsCode/VsCodeAgentEnvironmentScanner.cs | Switches VS Code agent scanner skill base directory to .agents/skills. |
| src/Aspire.Cli/Agents/SkillLocation.cs | Labels .github/skills as a legacy GitHub Copilot skill location in docs. |
| src/Aspire.Cli/Agents/CopilotCli/CopilotCliAgentEnvironmentScanner.cs | Switches Copilot CLI agent scanner skill base directory to .agents/skills. |
| src/Aspire.Cli/Agents/CommonAgentApplicators.cs | Updates parameter docs to reference .agents/skills as the example path. |
| src/Aspire.Cli/Agents/AgentEnvironmentScanContext.cs | Updates docs to reference .agents/skills as the example skill base directory. |
| eng/testing/github-ci-trigger-patterns.txt | Updates CI trigger patterns to watch .agents/skills/**. |
| docs/specs/safe-npm-tool-install.md | Updates Playwright skill mirroring examples to include .agents/skills. |
| docs/contributing.md | Updates contributor-facing skill links to .agents/skills. |
| AGENTS.md | Updates skill references and “Available Skills” section to .agents/skills. |
| .github/workflows/pr-docs-check.md | Updates docs classification guidance to treat .agents/** as agent/skill-only content. |
| .agents/skills/update-container-images/UpdateImageTags.cs | Adds companion script for discovering image tags and querying registries (now under .agents). |
| .agents/skills/update-container-images/SKILL.md | Updates the skill doc to point at the new script location and invocation. |
| .agents/skills/update-container-images/Directory.Packages.props | Disables CPM for file-based scripts in this skill directory. |
| .agents/skills/update-container-images/.editorconfig | Overrides analyzers/settings for standalone tool scripts in this skill directory. |
| .agents/skills/test-management/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/startup-perf/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/reviewing-aspire-architecture/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/pr-testing/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/hex1b/SKILL.md | Updates generated-skill guidance to use .agents/skills. |
| .agents/skills/fix-flaky-test/SKILL.md | Updates helper script paths and links to .agents/skills. |
| .agents/skills/fix-flaky-test/run-test-repeatedly.sh | Updates usage/help text to .agents/skills path. |
| .agents/skills/fix-flaky-test/run-test-repeatedly.ps1 | Updates usage/help text to .agents/skills path. |
| .agents/skills/deployment-e2e-testing/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/dependency-update/SKILL.md | Updates script references to .agents/skills path. |
| .agents/skills/dependency-update/MigratePackage.cs | Adds companion script under .agents/skills to trigger/poll dependency migration pipeline. |
| .agents/skills/dependency-update/Directory.Packages.props | Disables CPM for file-based scripts in this skill directory. |
| .agents/skills/dependency-update/.editorconfig | Overrides analyzers/settings for standalone tool scripts in this skill directory. |
| .agents/skills/dashboard-testing/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/create-pr/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/connection-properties/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/code-review/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/cli-e2e-testing/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/ci-test-failures/SKILL.md | Updates internal cross-skill reference to .agents/skills. |
| .agents/skills/backport-pr/SKILL.md | Moves/introduces skill content under .agents/skills. |
| .agents/skills/api-review/SKILL.md | Moves/introduces skill content under .agents/skills. |
Copilot's findings
- Files reviewed: 12/30 changed files
- Comments generated: 0
|
/backport to release/13.4 |
|
Started backporting to |
|
@mitchdenny backporting to git am output$ git am --3way --empty=keep --ignore-whitespace --keep-non-patch changes.patch
Applying: Move repository skills to .agents
Using index info to reconstruct a base tree...
M docs/contributing.md
M src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs
M src/Aspire.Cli/Resources/AgentCommandStrings.resx
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.cs.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.de.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.es.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.fr.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.it.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ja.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ko.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pl.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pt-BR.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ru.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.tr.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hans.xlf
M src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hant.xlf
Falling back to patching base and 3-way merge...
Auto-merging docs/contributing.md
CONFLICT (content): Merge conflict in docs/contributing.md
Auto-merging src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs
Auto-merging src/Aspire.Cli/Resources/AgentCommandStrings.resx
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.cs.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.de.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.es.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.fr.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.it.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ja.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ko.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pl.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pt-BR.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ru.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.tr.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hans.xlf
Auto-merging src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hant.xlf
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 Move repository skills to .agents
Error: The process '/usr/bin/git' failed with exit code 128 |
|
✅ No documentation update needed. docs_optional → No triggered signals ( |
…ilename globs match nested paths Three automated PRs in the last 14d fired more tests than they needed to: #17672, #17263 [Automated] Update ATS API Surface Area #17534 Move repository skills to .agents They each touched only api/*.txt or only README/skill markdown, but were firing trigger_all or selective:integrations — burning the full ~25min CI critical path. Audit-replay over 161 merged PRs found them, plus a latent C# glob bug where bare-filename patterns silently ignored nested matches. Root causes — two independent bugs: 1. The category-trigger rescue logic in RescueCategoryTriggerFiles built a synthetic union of all category triggerPaths without consulting per-category excludePaths. An ignored file that textually matched some category's glob but was excluded from that category got rescued back to active and then hit fallback_unmatched (worse than staying ignored). For src/Aspire.Hosting.Foundry/api/*.txt this meant ATS-only PRs fired integrations even after `**/api/*.txt` was added to ignorePaths. 2. The four glob analyzers (CriticalFileDetector, IgnorePathFilter, CategoryMapper.CompiledCategory, ProjectMappingResolver.CompiledMapping) handed user-facing patterns directly to FileSystemGlobbing.Matcher. The Matcher anchors bare-filename patterns at the repo root, so `Directory.Build.props` matched only the root file, not `src/Directory.Build.props` or `tests/Directory.Build.props`. The Python audit-replay evaluator (eval_rules.py) already documented and applied a "prepend **/ to bare-filename patterns" rule; the C# analyzers did not, so the two evaluators silently disagreed on ~5 patterns across ignorePaths, triggerAllPaths, and sourceToTestMappings. The fix: - Rescue now passes config.Categories directly to CategoryMapper so CompiledCategory.Matches honors per-category excludes. A file is rescued only when at least one category would actually fire on it. - New PatternNormalization.NormalizeGlob prepends `**/` to any pattern without a path separator. Every glob entry point applies it: the four analyzers above plus ProjectMappingResolver's regex compiler. - Rules: integrations.excludePaths gains `tests/Aspire.Acquisition.Tests/**`, `tests/Infrastructure.Tests/**`, `**/*.md`, `**/api/*.txt`. The same `**/api/*.txt` exclude is added to every category so an ignored ATS file can't be rescued back by any category. ignorePaths gains `**/api/*.txt`. Acquisition mapping's source list gains the missing self-mapping `tests/Aspire.Acquisition.Tests/**` (Templates and Infrastructure mappings already had this; Acquisition was an oversight exposed only after the new exclude was added). Verification: - Audit replay over 161 merged PRs: 4 outcomes change (#17263, #17534, #17549, #17672 all move to `skip`); zero regressions; zero fallback_unmatched. - New AuditFixtureTests xUnit [Theory] replays 28 hand-validated PRs against the live audit rules. Each row is a separate test, so any future rule edit that changes a row's outcome shows up as a visible CI failure. Coverage includes templates (#16447), CLI native build (#17567), extension multi-category (#17881/17698/17772), Hosting-core trigger_all (#17879), polyglot (#17948), and the regression canaries for previous fallback_unmatched cases. - Per-component regression tests pin both bugs: two new tests in EndToEndEvaluationTests for rescue+excludes; two more for bare-filename matching at nested paths. - Three pre-existing analyzer tests had asserted the buggy bare-filename behavior as expected (e.g. `*.md` not matching `docs/guide.md`). Updated with comments explaining the user-intent rule. - Full TestSelector namespace: 290 tests, all pass. No collateral damage on the wider Infrastructure.Tests suite (5 pre-existing baseline failures unchanged). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Description
Move repository-owned Copilot skills from
.github/skillsinto.agents/skillsso the repo follows the shared agent skill location without changing Aspire product code.This PR only moves skill content and updates repository guidance that points at those skills, including contributor docs, agent instructions, CI trigger patterns for skill-only changes, and the deployment E2E README skill link. It intentionally leaves Aspire CLI behavior, localization, product specs, and CLI tests unchanged.
Validation:
.agents/skills, repo guidance/docs, CI trigger patterns, and a test README link.Fixes # (issue)
Checklist
<remarks />and<code />elements on your triple slash comments?