Skip to content

Update Hex1b packages to 0.78.0 and add dependency-update skill#14400

Merged
mitchdenny merged 6 commits intomainfrom
dependency-update-skill
Feb 9, 2026
Merged

Update Hex1b packages to 0.78.0 and add dependency-update skill#14400
mitchdenny merged 6 commits intomainfrom
dependency-update-skill

Conversation

@mitchdenny
Copy link
Member

@mitchdenny mitchdenny commented Feb 9, 2026

Summary

Update external Hex1b package family to 0.78.0 and add the new Hex1b.Tool dotnet tool. Also introduces a new dependency-update Copilot skill for streamlining external dependency imports.

Package Updates

Package Previous New
Hex1b 0.48.0 0.78.0
Hex1b.McpServer 0.48.0 0.78.0
Hex1b.Tool (new) 0.78.0

Package Import

All three packages were imported to the internal NuGet feeds via the dotnet-migrate-package pipeline:

Changes

  • Directory.Packages.props — Updated Hex1b and Hex1b.McpServer versions, added Hex1b.Tool
  • .config/dotnet-tools.json — Added hex1b.tool as a local dotnet tool
  • .github/skills/dependency-update/ — New Copilot skill for managing external dependency updates via the Azure DevOps dotnet-migrate-package pipeline
  • AGENTS.md — Registered the new skill in the Available Skills section

Mitch Denny added 3 commits February 9, 2026 10:35
- SKILL.md: Agent instructions for version lookup, changelog review,
  user confirmation, and pipeline orchestration
- migrate-package.sh: Companion script to trigger and monitor the
  dotnet-migrate-package Azure DevOps pipeline (def 931)
- AGENTS.md: Register new skill in Available Skills section
Replace migrate-package.sh with MigratePackage.cs using:
- Azure.Identity (AzureCliCredential) for authentication
- Azure DevOps .NET SDK (PipelinesHttpClient) for pipeline
  triggering via RunPipelineAsync and polling via GetRunAsync
- Auto-detection of Microsoft corp tenant for token acquisition

Add .editorconfig and Directory.Packages.props overrides to
allow standalone #:package directives within the repo's CPM.
- Hex1b: 0.48.0 → 0.75.0
- Hex1b.McpServer: 0.48.0 → 0.75.0
- Hex1b.Tool: added at 0.75.0 (new dotnet tool)

All three packages imported via dotnet-migrate-package pipeline:
- Hex1b: Run 2898644 (succeeded)
- Hex1b.McpServer: Run 2898645 (succeeded)
- Hex1b.Tool: Run 2898650 (succeeded)
Copilot AI review requested due to automatic review settings February 9, 2026 01:06
@github-actions
Copy link
Contributor

github-actions bot commented Feb 9, 2026

🚀 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/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 14400

Or

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

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the repository’s Hex1b dependency family to 0.75.0, introduces the Hex1b.Tool local dotnet tool, and adds a new dependency-update skill (with a companion script) to standardize external NuGet dependency upgrade workflow via the internal mirroring pipeline.

Changes:

  • Bumped Hex1b and Hex1b.McpServer to 0.75.0 and added Hex1b.Tool version entry.
  • Added hex1b.tool to the local tool manifest (.config/dotnet-tools.json).
  • Added a new .github/skills/dependency-update/ skill with documentation and a C# helper to trigger/poll the dotnet-migrate-package pipeline; registered the skill in AGENTS.md.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
Directory.Packages.props Updates Hex1b package versions and adds a Hex1b.Tool version entry.
.config/dotnet-tools.json Adds hex1b.tool as a local dotnet tool at version 0.75.0.
AGENTS.md Registers the new dependency-update skill in the skills list.
.github/skills/dependency-update/SKILL.md Documents the dependency update workflow and how to use the companion script.
.github/skills/dependency-update/MigratePackage.cs New helper script to trigger and monitor the AzDO dotnet-migrate-package pipeline.
.github/skills/dependency-update/Directory.Packages.props Disables CPM for file-based scripts in this skill directory.
.github/skills/dependency-update/.editorconfig Adds analyzer overrides intended for the standalone script(s).

Comment on lines +365 to +383
async Task<(bool Success, string Output)> RunProcessAsync(string fileName, string arguments)
{
using var process = Process.Start(new ProcessStartInfo
{
FileName = fileName,
Arguments = arguments,
RedirectStandardOutput = true,
RedirectStandardError = true,
UseShellExecute = false
});

if (process is null)
{
return (false, string.Empty);
}

var output = await process.StandardOutput.ReadToEndAsync();
await process.WaitForExitAsync();
return (process.ExitCode == 0, output);
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

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

RunProcessAsync redirects stderr but never reads it. This can deadlock/hang if the child process writes enough to stderr, and it also makes it harder to diagnose failures (errors are dropped). Either don’t redirect stderr, or read/merge stderr output (e.g., read both streams asynchronously) and include it in the returned output when the command fails.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +2
# Override repo-level analyzers for standalone tool scripts
root = true
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

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

Setting root = true here prevents the repo-level .editorconfig (which defines baseline whitespace/charset rules under [*]) from applying to files in this directory, not just the analyzer overrides. Other per-directory overrides in this repo (e.g., tools/scripts/.editorconfig, playground/.editorconfig, src/Vendoring/.editorconfig) don’t set root = true; consider removing it so you inherit the global formatting rules while still overriding the specific diagnostics for these scripts.

Copilot uses AI. Check for mistakes.
<PackageVersion Include="Hex1b" Version="0.48.0" />
<PackageVersion Include="Hex1b.McpServer" Version="0.48.0" />
<PackageVersion Include="Hex1b" Version="0.75.0" />
<PackageVersion Include="Hex1b.McpServer" Version="0.75.0" />
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

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

Hex1b.Tool is added to central package management, but the repo only references it via the local dotnet tool manifest (.config/dotnet-tools.json), not via any PackageReference. Since dotnet tool restore doesn’t use Directory.Packages.props, consider removing this entry (or add a short comment explaining why it’s tracked here) to avoid an orphaned version declaration.

Suggested change
<PackageVersion Include="Hex1b.McpServer" Version="0.75.0" />
<PackageVersion Include="Hex1b.McpServer" Version="0.75.0" />
<!-- Hex1b.Tool is used via .config/dotnet-tools.json; tracked here intentionally for central version management -->

Copilot uses AI. Check for mistakes.
Comment on lines +50 to +55
pollInterval = int.Parse(args[++i]);
break;
case "--timeout":
timeout = int.Parse(args[++i]);
break;
case "--migration-type":
Copy link

Copilot AI Feb 9, 2026

Choose a reason for hiding this comment

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

The option parsing uses args[++i] and int.Parse(...) without validating that a value exists (or that it’s an integer/positive). A missing value (e.g., --timeout at end) will throw, and invalid values will crash the script. Please add bounds checks and use int.TryParse (also validate pollInterval > 0 and timeout > 0) and surface a friendly usage error instead of an exception.

Suggested change
pollInterval = int.Parse(args[++i]);
break;
case "--timeout":
timeout = int.Parse(args[++i]);
break;
case "--migration-type":
if (i + 1 >= args.Length)
{
LogError("Missing value for --poll-interval. Expected a positive integer (seconds).");
PrintUsage();
return;
}
if (!int.TryParse(args[i + 1], out int parsedPollInterval) || parsedPollInterval <= 0)
{
LogError($"Invalid value for --poll-interval: '{args[i + 1]}'. Expected a positive integer (seconds).");
PrintUsage();
return;
}
pollInterval = parsedPollInterval;
i++;
break;
case "--timeout":
if (i + 1 >= args.Length)
{
LogError("Missing value for --timeout. Expected a positive integer (seconds).");
PrintUsage();
return;
}
if (!int.TryParse(args[i + 1], out int parsedTimeout) || parsedTimeout <= 0)
{
LogError($"Invalid value for --timeout: '{args[i + 1]}'. Expected a positive integer (seconds).");
PrintUsage();
return;
}
timeout = parsedTimeout;
i++;
break;
case "--migration-type":
if (i + 1 >= args.Length)
{
LogError("Missing value for --migration-type.");
PrintUsage();
return;
}

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Contributor

github-actions bot commented Feb 9, 2026

🎬 CLI E2E Test Recordings

The following terminal recordings are available for commit ac60e07:

Test Recording
AgentCommands_AllHelpOutputs_AreCorrect ▶️ View Recording
AgentInitCommand_MigratesDeprecatedConfig ▶️ View Recording
Banner_DisplayedOnFirstRun ▶️ View Recording
Banner_DisplayedWithExplicitFlag ▶️ View Recording
CreateAndDeployToDockerCompose ▶️ View Recording
CreateAndDeployToDockerComposeInteractive ▶️ View Recording
CreateAndPublishToKubernetes ▶️ View Recording
CreateAndRunAspireStarterProject ▶️ View Recording
CreateAndRunAspireStarterProjectWithBundle ▶️ View Recording
CreateAndRunJsReactProject ▶️ View Recording
CreateAndRunPythonReactProject ▶️ View Recording
CreateEmptyAppHostProject ▶️ View Recording
CreateStartAndStopAspireProject ▶️ View Recording
CreateTypeScriptAppHostWithViteApp ▶️ View Recording
DoctorCommand_DetectsDeprecatedAgentConfig ▶️ View Recording
DoctorCommand_WithSslCertDir_ShowsTrusted ▶️ View Recording
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted ▶️ View Recording
LogsCommandShowsResourceLogs ▶️ View Recording
PsCommandListsRunningAppHost ▶️ View Recording
ResourcesCommandShowsRunningResources ▶️ View Recording

📹 Recordings uploaded automatically from CI run #21817321943

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@mitchdenny
Copy link
Member Author

@copilot open a new pull request to apply changes based on the comments in this thread

Copy link
Contributor

Copilot AI commented Feb 9, 2026

@mitchdenny I've opened a new pull request, #14403, to work on those changes. Once the pull request is ready, I'll request review from you.

@mitchdenny mitchdenny changed the title Update Hex1b packages to 0.75.0 and add Hex1b.Tool Update Hex1b packages to 0.78.0 and add dependency-update skill Feb 9, 2026
@mitchdenny mitchdenny enabled auto-merge (squash) February 9, 2026 08:22
@mitchdenny mitchdenny merged commit 6e0fa87 into main Feb 9, 2026
340 of 341 checks passed
@mitchdenny mitchdenny deleted the dependency-update-skill branch February 9, 2026 08:37
@dotnet-policy-service dotnet-policy-service bot added this to the 13.2 milestone Feb 9, 2026
- **cli-e2e-testing**: Guide for writing Aspire CLI end-to-end tests using Hex1b terminal automation
- **test-management**: Quarantines or disables flaky/problematic tests using the QuarantineTools utility
- **connection-properties**: Expert for creating and improving Connection Properties in Aspire resources
- **dependency-update**: Guides dependency version updates by checking nuget.org, triggering the dotnet-migrate-package Azure DevOps pipeline, and monitoring runs
Copy link
Contributor

Choose a reason for hiding this comment

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

@mitchdenny why was this required? Don't llms that support agent-skills automatically read the headers if all available skills?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants