Skip to content

Improve agent init skill install output#17519

Merged
IEvangelist merged 1 commit into
mainfrom
dapine/improve-agent-init-ux
May 27, 2026
Merged

Improve agent init skill install output#17519
IEvangelist merged 1 commit into
mainfrom
dapine/improve-agent-init-ux

Conversation

@IEvangelist

Copy link
Copy Markdown
Member

Description

Improves the aspire agent init skill installation output so the useful data is easy to scan. The command now collects updated skill/location pairs and prints one compact summary instead of repeating one success line for every skill at every install target.

Before:

🤖 Installed aspire skill (.agents/skills/aspire).
🤖 Installed aspire skill (~/.agents/skills/aspire).
🤖 Installed aspireify skill (.agents/skills/aspireify).
🤖 Installed aspireify skill (~/.agents/skills/aspireify).
🤖 Installed aspire-deployment skill (.agents/skills/aspire-deployment).
🤖 Installed aspire-deployment skill (~/.agents/skills/aspire-deployment).

After:

🤖 Installed Aspire agent skills:
     Skills: aspire, aspireify, aspire-deployment
     Locations: .agents/skills, ~/.agents/skills
✅ Agent environment configuration complete.

Detailed failure messages still include the exact skill path that failed, and no-op installs stay quiet except for the existing final success message.

User-facing usage

Running aspire agent init with selected skills now summarizes the result:

dotnet run --project src\Aspire.Cli\Aspire.Cli.csproj -- agent init --workspace-root <workspace> --skill-locations claudecode --skills aspire,aspireify,aspire-deployment

Observed local output:

🤖 Installed Aspire agent skills:
     Skills: aspire, aspireify, aspire-deployment
     Locations: .claude/skills
✅ Agent environment configuration complete.

Validation:

  • dotnet build /t:UpdateXlf src\Aspire.Cli\Aspire.Cli.csproj
  • dotnet test --project tests\Aspire.Cli.Tests\Aspire.Cli.Tests.csproj --no-launch-profile -- --filter-class "*.AgentInitCommandTests" --filter-not-trait "quarantined=true" --filter-not-trait "outerloop=true"
  • dotnet run --project src\Aspire.Cli\Aspire.Cli.csproj -- agent init --workspace-root <temp-workspace> --skill-locations claudecode --skills aspire,aspireify,aspire-deployment

Follow-up validation after PR CI publishes an Aspire CLI artifact: download the artifact and run aspire new aspire-ts-starter -n aspire-app -o aspire-app, answer y to AI setup, and select the defaults.

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

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions

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 -- 17519

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17519"

@IEvangelist IEvangelist marked this pull request as ready for review May 27, 2026 03:56
Copilot AI review requested due to automatic review settings May 27, 2026 03:56

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

This PR improves aspire agent init output by replacing repeated per-skill install messages with a compact summary of installed skills and locations, while preserving detailed failure output.

Changes:

  • Collects successful skill install results and emits one summarized Robot message.
  • Adds resource strings for the summary header, skills line, and locations line.
  • Updates tests and localization resource artifacts for the new output shape.

Reviewed changes

Copilot reviewed 16 out of 17 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/Aspire.Cli/Commands/AgentInitCommand.cs Aggregates updated skill/location pairs and displays a single install summary.
src/Aspire.Cli/Resources/AgentCommandStrings.resx Replaces the per-skill install string with summary-related resource strings.
src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs Adds generated accessors for the new resource strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.cs.xlf Updates Czech localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.de.xlf Updates German localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.es.xlf Updates Spanish localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.fr.xlf Updates French localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.it.xlf Updates Italian localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ja.xlf Updates Japanese localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ko.xlf Updates Korean localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pl.xlf Updates Polish localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.pt-BR.xlf Updates Portuguese (Brazil) localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.ru.xlf Updates Russian localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.tr.xlf Updates Turkish localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hans.xlf Updates Simplified Chinese localization units for the new strings.
src/Aspire.Cli/Resources/xlf/AgentCommandStrings.zh-Hant.xlf Updates Traditional Chinese localization units for the new strings.
tests/Aspire.Cli.Tests/Commands/AgentInitCommandTests.cs Updates and adds tests for the summarized install output.
Files not reviewed (1)
  • src/Aspire.Cli/Resources/AgentCommandStrings.Designer.cs: Language not supported

@github-actions

Copy link
Copy Markdown
Contributor

Re-running the failed jobs in the CI workflow for this pull request because 1 job was identified as retry-safe transient failures in the CI run attempt.
GitHub was asked to rerun all failed jobs for that attempt, and the rerun is being tracked in the rerun attempt.
The job links below point to the failed attempt jobs that matched the retry-safe transient failure rules.

@davidfowl davidfowl added this to the 13.4 milestone May 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

CLI E2E Tests unknown — 107 passed, 0 failed, 2 unknown (commit b01f863)

View all recordings
Status Test Recording
AddPackageInteractiveWhileAppHostRunningDetached ▶️ View recording
AddPackageWhileAppHostRunningDetached ▶️ View recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View recording
AgentInitCommand_DefaultSelection_InstallsDefaultSkills ▶️ View recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View recording
AgentMcpListStructuredLogsReturnsLogsFromStarterApp ▶️ View recording
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_DevLocalhost ▶️ View recording
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_Isolated ▶️ View recording
AllPublishMethodsBuildDockerImages ▶️ View recording
AspireAddAndStartWorkAgainstLegacyAppHostTs ▶️ View recording
AspireAddPackageVersionToDirectoryPackagesProps ▶️ View recording
AspireInitSingleFileAppHostRunsViaDotnetRunAppHost ▶️ View recording
AspireInitWithExistingAppHostDirRecreatesMissingNuGetConfigAndPreservesFiles ▶️ View recording
AspireInitWithSolutionFileGeneratesAppHostThatBuildsAgainstChannelHive ▶️ View recording
AspireStartUpdatesStaleTypeScriptAppHostPath ▶️ View recording
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps ▶️ View recording
AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent ▶️ View recording
Banner_DisplayedOnFirstRun ▶️ View recording
Banner_DisplayedWithExplicitFlag ▶️ View recording
Banner_NotDisplayedWithNoLogoFlag ▶️ View recording
CertificatesClean_RemovesCertificates ▶️ View recording
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate ▶️ View recording
CertificatesTrust_WithUntrustedCert_TrustsCertificate ▶️ View recording
ConfigSetGet_CreatesNestedJsonFormat ▶️ View recording
CreateAndRunAspireStarterProject ▶️ View recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View recording
CreateAndRunEmptyAppHostProject ▶️ View recording
CreateAndRunJavaEmptyAppHostProject ▶️ View recording
CreateAndRunJsReactProject ▶️ View recording
CreateAndRunPythonReactProject ▶️ View recording
CreateAndRunTypeScriptEmptyAppHostProject ▶️ View recording
CreateAndRunTypeScriptStarterProject ▶️ View recording
CreateJavaAppHostWithViteApp ▶️ View recording
CreateTypeScriptAppHostWithViteApp_AllowsGuestAppPackageManagerToDiffer ▶️ View recording
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain ▶️ View recording
DashboardRunWithAgentMcpListTracesReturnsNoTraces ▶️ View recording
DashboardRunWithAgentMcpListTracesReturnsNoTraces_DevLocalhost ▶️ View recording
DashboardRunWithOtelTracesReturnsNoTraces ▶️ View recording
DashboardRunWithOtelTracesReturnsNoTraces_DevLocalhost ▶️ View recording
DeployK8sBasicApiService ▶️ View recording
DeployK8sWithExternalHelmChart ▶️ View recording
DeployK8sWithGarnet ▶️ View recording
DeployK8sWithMongoDB ▶️ View recording
DeployK8sWithMySql ▶️ View recording
DeployK8sWithPostgres ▶️ View recording
DeployK8sWithRabbitMQ ▶️ View recording
DeployK8sWithRedis ▶️ View recording
DeployK8sWithSqlServer ▶️ View recording
DeployK8sWithValkey ▶️ View recording
DeployTypeScriptAppToKubernetes ▶️ View recording
DescribeCommandResolvesReplicaNames ▶️ View recording
DescribeCommandShowsRunningResources ▶️ View recording
DetachFormatJsonProducesValidJson ▶️ View recording
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance ▶️ View recording
DoListStepsShowsPipelineSteps ▶️ View recording
DocsCommand_RendersInteractiveMarkdownFromLocalSource ▶️ View recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View recording
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain ▶️ View recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View recording
GatewayWithoutExternalEndpoint_FailsPublishWithGuidance ▶️ View recording
GeneratedAspireDevScript_StartsWatchMode_WithConfiguredToolchain ▶️ View recording
GlobalMigration_HandlesCommentsAndTrailingCommas ▶️ View recording
GlobalMigration_HandlesMalformedLegacyJson ▶️ View recording
GlobalMigration_PreservesAllValueTypes ▶️ View recording
GlobalMigration_SkipsWhenNewConfigExists ▶️ View recording
GlobalSettings_MigratedFromLegacyFormat ▶️ View recording
IngressWithoutExternalEndpoint_FailsPublishWithGuidance ▶️ View recording
InitTypeScriptAppHost_AugmentsExistingViteRepoInWorkspaceSubdirectory ▶️ View recording
InteractiveCSharpInitCreatesExpectedFiles ▶️ View recording
InvalidAppHostPathWithComments_IsHealedOnRun ▶️ View recording
JavaScriptHostingApisRunFromTypeScriptAppHost ▶️ View recording
LatestCliCanStartStableChannelAppHost ▶️ View recording
LatestCliCanStartStableChannelTypeScriptAppHost ▶️ View recording
LegacySettingsMigration_AdjustsRelativeAppHostPath ▶️ View recording
LogsCommandShowsResourceLogs ▶️ View recording
OtelLogsReturnsStructuredLogsFromStarterApp ▶️ View recording
OtelLogsReturnsStructuredLogsFromStarterAppIsolated ▶️ View recording
PsCommandListsRunningAppHost ▶️ View recording
PsFormatJsonOutputsOnlyJsonToStdout ▶️ View recording
PublishJavaScriptPatternsGeneratesExpectedDockerComposeArtifacts ▶️ View recording
PublishWithConfigureEnvFileUpdatesEnvOutput ▶️ View recording
PublishWithDockerComposeServiceCallbackSucceeds ▶️ View recording
PublishWithoutOutputPathUsesAppHostDirectoryDefault ▶️ View recording
ResourceCommand_FailedExecution_DisplaysAppHostLogPathAndLogContainsEntries ▶️ View recording
ResourceCommand_SetAndDeleteParameterUpdatesDescribeOutput ▶️ View recording
RestoreGeneratesSdkFiles ▶️ View recording
RestoreGeneratesSdkFiles_WithConfiguredToolchain ▶️ View recording
RestoreRefreshesGeneratedSdkAfterAddingIntegration ▶️ View recording
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes ▶️ View recording
RunFromParentDirectory_UsesExistingConfigNearAppHost ▶️ View recording
RunReportsSyntaxErrorsForDotNetAppHost ▶️ View recording
RunReportsSyntaxErrorsForTypeScriptAppHost ▶️ View recording
SecretCrudOnDotNetAppHost ▶️ View recording
SecretCrudOnTypeScriptAppHost ▶️ View recording
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels ▶️ View recording
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets ▶️ View recording
StartReportsSyntaxErrorsForDotNetAppHost ▶️ View recording
StartReportsSyntaxErrorsForTypeScriptAppHost ▶️ View recording
StopAllAppHostsFromAppHostDirectory ▶️ View recording
StopJavaPolyglotAppHostUsingApphostDirectory ▶️ View recording
StopNonInteractiveSingleAppHost ▶️ View recording
StopTypeScriptPolyglotAppHostUsingApphostDirectory ▶️ View recording
StopWithNoRunningAppHostExitsSuccessfully ▶️ View recording
UnAwaitedChainsCompileWithAutoResolvePromises ▶️ View recording
UpdateProjectChannelToStable_CSharpEmptyAppHost_PreservesAspireConfigChannel ▶️ View recording
UpdateProjectChannelToStable_CSharpSingleFileInit_PreservesAspireConfigChannel ▶️ View recording
UpdateProjectChannelToStable_TypeScriptSingleFileInit_PreservesAspireConfigChannel ▶️ View recording
UpdateProjectChannelToStable_TypeScript_PreviewsStablePackagesAndPreservesChannel ▶️ View recording

📹 Recordings uploaded automatically from CI run #26488452088

@IEvangelist IEvangelist merged commit 9b43ae9 into main May 27, 2026
617 of 621 checks passed
@IEvangelist IEvangelist deleted the dapine/improve-agent-init-ux branch May 27, 2026 04:27
@microsoft-github-policy-service microsoft-github-policy-service Bot modified the milestones: 13.4, 13.5 May 27, 2026
aspire-repo-bot Bot added a commit to microsoft/aspire.dev that referenced this pull request May 27, 2026
Document the improved compact summary output introduced in
microsoft/aspire#17519. The command now prints one consolidated
message listing all installed skills and locations instead of a
separate line per skill.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Pull request created: #1087

Generated by PR Documentation Check

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

📝 Documentation has been drafted in microsoft/aspire.dev#1087 targeting release/13.4.

Updated src/frontend/src/content/docs/reference/cli/commands/aspire-agent-init.mdx to document the new compact summary output that aspire agent init now prints after installing skills (a single grouped message listing installed skills and locations, rather than a separate line per skill). The example output and behavior notes for failures and no-op runs are included.

Note

This draft PR needs human review before merging.

@IEvangelist

Copy link
Copy Markdown
Member Author

/backport to release/13.4

@github-actions

Copy link
Copy Markdown
Contributor

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

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

@IEvangelist an error occurred while backporting to release/13.4. See the workflow output for details.

@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