Skip to content

Move repository skills to .agents#17534

Merged
mitchdenny merged 2 commits into
mainfrom
davidfowl/move-skills
May 27, 2026
Merged

Move repository skills to .agents#17534
mitchdenny merged 2 commits into
mainfrom
davidfowl/move-skills

Conversation

@davidfowl

@davidfowl davidfowl commented May 27, 2026

Copy link
Copy Markdown
Contributor

Description

Move repository-owned Copilot skills from .github/skills into .agents/skills so 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:

  • Verified the final branch diff is limited to .agents/skills, repo guidance/docs, CI trigger patterns, and a test README link.

Fixes # (issue)

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No

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>
Copilot AI review requested due to automatic review settings May 27, 2026 07:50
@github-actions

github-actions Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17534

Or

  • Run remotely in PowerShell:
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>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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/skills as the skill base directory for Playwright skill mirroring.
  • Update docs/README guidance and CI trigger patterns to reference .agents/skills instead of .github/skills.
  • Add/move multiple skill definitions and companion scripts into .agents/skills, and label .github/skills as 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

@mitchdenny mitchdenny merged commit a94c812 into main May 27, 2026
7 checks passed
@mitchdenny mitchdenny deleted the davidfowl/move-skills branch May 27, 2026 10:55
@mitchdenny

Copy link
Copy Markdown
Member

/backport to release/13.4

@github-actions

Copy link
Copy Markdown
Contributor

Started backporting to release/13.4 (link to workflow run)

@github-actions github-actions Bot added this to the 13.5 milestone May 27, 2026
@aspire-repo-bot

Copy link
Copy Markdown
Contributor

@mitchdenny backporting to release/13.4 failed, the patch most likely resulted in conflicts. Please backport manually!

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

Link to workflow output

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

✅ No documentation update needed.

docs_optional → agent_or_skill_content

No triggered signals (signal_count == 0). The PR moves 30 files that are Copilot skill content (.agents/skills/**) and internal repository guidance/CI config — no user-facing Aspire product code, public API, CLI behavior, or documentation changed. All changed files fall under .agents/, .github/, AGENTS.md, and similar internal paths, which are excluded from docs requirements.

radical added a commit that referenced this pull request Jun 9, 2026
…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>
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 27, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants