[docs] Update aspire agent init docs to reflect bundle-manifest-driven skills catalog#1125
Conversation
…ls catalog Documents the changes from microsoft/aspire#17553: - Skills catalog is now loaded from the bundle manifest (skill-manifest.json) instead of a hardcoded list, exposing previously invisible bundle-only skills (aspire-init, aspire-monitoring, aspire-orchestration). - Clarifies which skills come from the bundle vs. from the CLI directly. - Documents the aspireify pre-selection difference between aspire init and aspire new. - Documents the aspireSkillsRemoteFetchEnabled feature flag (default off) and the bundle resolution order (cache → GitHub release → embedded snapshot). - Updates --skills option description to list valid bundle and CLI skill names. - Adds examples for installing bundle-only skills and enabling remote fetch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Updates the aspire agent init command reference page to document the new manifest-driven skills catalog from microsoft/aspire#17553. Adds a Skills catalog subsection, a Bundle resolution and remote fetch subsection (introducing the features:aspireSkillsRemoteFetchEnabled feature flag), updates the --skills option description with the expanded set of skill names, and adds two new usage examples.
Changes:
- Replaces the static three-skill list with a description explaining the catalog is loaded from
skill-manifest.json, plus an explicit list of bundle-provided and CLI-defined skills. - Documents the bundle resolution order (cache → GitHub release → embedded snapshot) and the opt-in
features:aspireSkillsRemoteFetchEnabledflag. - Adds two examples covering non-interactive bundle skill installs and enabling remote bundle fetching.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
IEvangelist
left a comment
There was a problem hiding this comment.
Automated docs-accuracy review
Phase A verified against microsoft/aspire release/13.4 @ 0cbaf82dab7d2dec5cf2fbda7577e7eaca6e86b1.
Phase B exercised live aspire.dev/reference/cli/commands/aspire-agent-init/ (no PR preview available; assessed PR-branch MDX content as new-user-rendered prose).
Phase A — claim verdicts (12 total)
| verdict | count |
|---|---|
| verified | 9 |
| verified-with-nuance | 2 |
| contradicted | 1 |
| unverifiable | 0 |
The single contradicted claim and its companion nuance both stem from the same omission: the doc enumerates 5 bundle-provided skills, but the embedded bundle (src/Aspire.Cli/Agents/AspireSkills/Embedded/aspire-skills-v0.0.1.tgz) actually ships 6. See the inline comments at lines 34 and 62.
Verified claims (9) and verified-with-nuance (2) — click to expand
| id | claim | evidence |
|---|---|---|
| c1 | The CLI loads available skills from skill-manifest.json |
AspireSkillsBundle.cs:16 ManifestFileName="skill-manifest.json"; GetSkillDefinitions() parses the manifest. ✅ |
| c3 | CLI itself defines playwright-cli and dotnet-inspect, separate from the bundle |
SkillDefinition.cs:178 CliDefined = [PlaywrightCli, DotnetInspect]; AgentInitCommand.cs:505 adds them after bundle resolution. ✅ |
| c4 | CLI-defined skill wins when its name collides with a bundle skill | AgentInitCommand.cs:492 bundle.GetSkillDefinitions().Where(s => !IsCliDefinedSkillName(s.Name)); CLI-defined appended at line 505. ✅ |
| c5 | aspire init pre-selects aspireify with the bundle defaults |
InitCommand.cs:171-178 calls PromptAndChainAsync without the ExcludeOneTimeSetupSkillsFromDefaults predicate, so IsDefault=true skills (which include aspireify) are pre-selected. |
| c6 | aspire new does not pre-select aspireify |
NewCommand.cs:533 passes ExcludeOneTimeSetupSkillsFromDefaults; AgentInitCommand.cs:160-172 lists aspireify in s_oneTimeSetupSkillNames. ✅ |
| c7 | Feature flag features:aspireSkillsRemoteFetchEnabled exists and defaults to false |
KnownFeatures.cs:32 defines the key; lines 86-89 set DefaultValue: false. ✅ |
| c8 | Default (flag off) skips the GitHub call entirely | AspireSkillsInstaller.cs:82-105 gates InstallFromGitHubAsync behind the feature flag; embedded fallback runs at line 107. ✅ |
| c9 | Resolution order matches the doc (cache → [github] → embedded) |
AspireSkillsInstaller.cs:54-122 — cache first (TryLoadCachedBundleAsync), then conditionally GitHub, then embedded. ✅ |
| c10 | aspire config set features:<feature> <value> is the correct syntax |
ConfigCommand.cs:128 registers the set subcommand; Features.cs:13 builds the key as features:{feature} — colon syntax matches. ✅ |
| c11 | --skills accepts the named bundle + CLI skills plus all/none |
AgentInitCommand.cs:84-90 (option), :482 ResolveAvailableSkillsAsync. aspire-deployment is a valid --skills value but the doc's enumeration on line 62 omits it. See inline comment. |
| c12 | --skill-locations standard and combining with --skills works |
SkillLocation.cs:18-24 defines standard; AgentInitCommand.cs:67-76 both options coexist; named skills (aspire, aspire-monitoring, aspire-orchestration) all exist. ✅ |
Phase B — doc-tester report
Scope: the single PR-affected page, /reference/cli/commands/aspire-agent-init/.
Reachability check: all referenced internal targets resolve (HTTP 200): aspire-init/, aspire-new/, aspire-config/, aspire-config-set/, aspire-agent/, aspire-agent-mcp/, configuration/.
Critical issues
- The page documents the standalone
aspire agent initcommand, but never tells the reader what pre-selection happens when running it standalone. Step 2 (line 27) says "All skills are pre-selected by default," then the new "Skills catalog" section explains pre-selection rules only for the chainedaspire initandaspire newpaths. A user landing on this page and runningaspire agent initdirectly cannot determine from the docs whetheraspireify,playwright-cli, anddotnet-inspectare pre-selected, partially pre-selected, or excluded. This is the central use-case of the page being silently skipped.
Warnings
- "because the workspace was just created" is misleading (line 36).
aspire initadds an AppHost to an existing repo — only the AppHost is new, not the workspace. Readers familiar withaspire initwill be confused. Suggested rewrite mirroring the in-source comment atInitCommand.cs:171: "becauseaspire initadds a new AppHost to an existing repo,aspireifyis the natural follow-up wiring skill." - "Versioned cache" is referenced but never defined (line 46). The doc tells users about the resolution order but doesn't say where the cache lives on disk, when it expires, or how to clear it — the first questions a user asks when a stale bundle bites them.
- Chicken-and-egg in cache wording (line 46). "Cached bundles from a previous successful fetch continue to work in either mode" is useful, but a reader who hears "default never fetches" may conclude the cache is always empty. Worth one sentence on how the cache initially populates (i.e., from a prior run with remote-fetch on).
Passed checks
- Page metadata, headings hierarchy, code-block syntax, and Asciinema embed all valid.
- All linked routes resolve.
- The two new examples are well-formed and copy-pasteable.
- The new "Bundle resolution and remote fetch" section gives a useful mental model.
Knowledge gaps a new user will hit
- What does the
features:prefix mean inaspire config set features:...? Is it a namespace, a required token, or a convention? No link toaspire config setconfiguration docs. - Where is the bundle cache stored on disk and how do I purge it?
- What happens if a remote fetch fails (network down, GitHub rate-limited) — silent fallback or surfaced error?
- The third skills example (
--skills aspire,aspire-monitoring,aspire-orchestration) picks three skills with no commentary; readers may wonder why those three and notaspireify/aspire-init.
Recommendations
- After fixing the c2 omission, add one explicit sentence to Step 2 (or to the Skills catalog section) about what standalone
aspire agent initpre-selects. - Define "versioned cache" inline (path + clearing hint) the first time it appears.
- Cross-link the
features:aspireSkillsRemoteFetchEnabledexample to theaspire config setpage.
Verdict
REQUEST_CHANGES — one Phase A contradicted claim (missing aspire-deployment in the bundle enumeration, repeated on line 34 and line 62) and one Phase B critical issue (no documented behavior for standalone aspire agent init skill pre-selection).
Generated by the hourly docs-from-code PR review workflow. Phase A SHA: 0cbaf82da. Reviewer SHA: 28a6770e.
- Add aspire-deployment to the bundle skill catalog and --skills docs (threads PRRT_kwDOQK_VN86Fx3FY, PRRT_kwDOQK_VN86FyWJe, PRRT_kwDOQK_VN86FyWJl) - Clarify standalone and chained default skill pre-selection (threads PRRT_kwDOQK_VN86FyWJq, PRRT_kwDOQK_VN86FyWJv) - Define the skills bundle cache and remote-fetch population behavior (thread PRRT_kwDOQK_VN86FyWJx) - Keep related agent-init guidance consistent (thread PRRT_kwDOQK_VN86Fx3FY) Verified against microsoft/aspire@11bea2e on branch release/13.4. Edited per the doc-writer skill. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Documents changes from microsoft/aspire#17553 by
@IEvangelist.Targeting
release/13.4— the latest release branch onmicrosoft/aspire.dev— becauserelease/13.5(from the source PR milestone13.5) does not exist there.Why this PR is needed
Prior to microsoft/aspire#17553, the
aspire agent initdocs listed only three bundle skills (aspire,aspireify, and implicitly the CLI-local ones). Themicrosoft/aspire-skillsbundle actually ships six skills, soaspire-init,aspire-monitoring, andaspire-orchestrationwere invisible to users reading the docs and to the--skillsoption description.The source PR makes the bundle manifest (
skill-manifest.json) the source of truth for bundle-backed skill names, descriptions, and install defaults, so the docs need to reflect the full catalog and explain how bundle resolution works.What changed
aspire,aspireify,aspire-init,aspire-monitoring,aspire-orchestration) and CLI-defined skills (playwright-cli,dotnet-inspect), and notes theaspireifydefault-selection difference betweenaspire initandaspire new.features:aspireSkillsRemoteFetchEnabledfeature flag (default off) and the resolution order (cache → GitHub release → embedded snapshot).--skillsoption description to include the full set of bundle-provided and CLI-defined skill names.Files modified
src/frontend/src/content/docs/reference/cli/commands/aspire-agent-init.mdx— updated (existing page)