Repository navigation
Discover the default skills destination from ancestor Git or solution markers - #34
Open
kartheekp-ms wants to merge 7 commits into
Open
kartheekp-ms wants to merge 7 commits into
kartheekp-ms wants to merge 7 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Stale cleanup can delete skills still required by sibling projects because implicit ancestor-destination discovery compares a shared manifest against only the invoking project's references.
2 open issues
What changed in this PR
This PR makes dotnet-package-skills use a shared default skills folder under the nearest Git or solution ancestor when invoked from a project subdirectory.
Changes:
- Add nearest-marker discovery, with invocation-directory fallback and explicit destination overrides.
- Apply consistent destination and manifest resolution across install, list, and uninstall without changing source/cache path resolution.
- Add resolver and CLI coverage, and document the new default behavior.
| File | Description |
|---|---|
dotnet-package-skills/tests/DestinationLocatorTests.cs |
Tests markers, precedence, fallback, and explicit paths. |
dotnet-package-skills/tests/DestinationCommandLineTests.cs |
Tests shared destinations, manifests, and command behavior. |
dotnet-package-skills/src/Program.cs |
Wires destination discovery into commands and updates help. |
dotnet-package-skills/src/Infrastructure/DestinationLocator.cs |
Implements ancestor-marker destination resolution. |
dotnet-package-skills/README.md |
Documents discovery, overrides, and existing-installation handling. |
Review effort: Max
Require explicit source or destination scope for full-target installs and stale cleanup from a subdirectory. Report unreadable discovery ancestors with an actionable destination override. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Successful install and uninstall --stale runs with both --source and --destination omitted are untested, leaving invocation-local destination handling unprotected against regressions.
1 open issue
2 resolved since last review
Review effort: Max
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
kartheekp-ms
marked this pull request as draft
November 2, 2026 19:56
Allow project-local operations against discovered shared destinations without requiring explicit scope. Preserve absent package IDs while comparing stale versions only for referenced packages. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Bound CLI fallback discovery to owned fixtures and clarify automatic versus explicit stale-cleanup scope. Keep requested versions for replacement safety while deferring dropped-skill cleanup for incompletely inspected packages. Add normal and dry-run regressions for the missing-extra-version case while preserving current-version and interactive add-only behavior. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Running
dotnet-package-skillsfrom a project subdirectory currently uses that subdirectory's.agents/skillsfolder. This change resolves the default destination from an ancestor Git or solution directory instead..gitdirectory/file or a.sln/.slnxfile (case-insensitive solution extensions), then use its.agents/skillsfolder. Fall back to the invocation directory when no marker exists.install,list, anduninstall, including manifest lookup, interactive flows, and dry runs.--destinationpaths: relative paths remain invocation-relative, even when explicitly set to.agents/skills.SDK directory-selection behavior
The resolver matches the directory-selection behavior of the .NET SDK's
GetDirectoryToCreateToolManifest:.gitdirectory first, then enumerate.sln/.slnxfiles, then check for a.gitfile. Return the first matching directory.PR build succeeded