maui-labs packaging.instructions.md

Build and packaging instructions for the dotnet/maui-labs repository, including NuGet package management and .NET build infrastructure.

In plain words
What is it for?
They help add NuGet packages, manage versions, create packable projects, and work with Arcade SDK build scripts and Dependency Flow.
Why use it?
They explain where package versions and build settings belong, while identifying generated files that should not be edited.

Instructions file for GitHub Copilot

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/dotnet/maui-labs/packaging
Clone the repo
git clone --depth 1 https://github.com/dotnet/maui-labs

Made for: GitHub Copilot.

Per session 1,100 This file is loaded in full into every session.
When invoked 1,100 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.01100 $0.01100
Opus 5 $0.00550 $0.00550
Sonnet 5 $0.00220 $0.00220
Haiku 4.5 $0.00110 $0.00110

Measured 3d ago against content hash 787a42889ca9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

maui-labs packaging.instructions.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.github/instructions/packaging.instructions.md · 94 lines

How it starts

The opening of the file, as written. The whole thing — 94 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Packaging and Build Infrastructure

Arcade SDK

This repo uses the Microsoft.DotNet.Arcade.Sdk for build infrastructure. Key rules:

  • Never modify files in eng/common/ — they are auto-generated and overwritten by Dependency Flow updates
  • Arcade version is pinned in global.json under msbuild-sdks
  • CI scripts: eng/common/cibuild.sh (macOS/Linux) and eng\common\cibuild.cmd (Windows)

Central Package Management

All NuGet package versions are defined in Directory.Packages.props at the repo root.

  • .csproj files reference packages without versions: <PackageReference Include="xunit" />
  • To add a new dependency: add <PackageVersion Include="Package.Name" Version="X.Y.Z" /> to Directory.Packages.props
  • To override a version in a specific project: use VersionOverride="X.Y.Z" on the PackageReference
  • MAUI and runtime package versions flow via Dependency Flow (Maestro/DARC) and are defined in eng/Versions.props

Adding a New NuGet Package

  1. Create the project in src/{Product}/:
    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>net10.0</TargetFramework>
        <IsPackable>true</IsPackable>
        <IsShipping>true</IsShipping>
        <PackageId>Microsoft.Maui.DevFlow.NewPackage</PackageId>
        <Description>What this package does</Description>
      </PropertyGroup>
    </Project>
    
  2. Set IsPackable and IsShipping to true (defaults are false in Directory.Build.props)
  3. For CLI tools, also set PackAsTool=true and ToolCommandName=your-command
  4. Add any new third-party dependencies to Directory.Packages.props
  5. Add signing entries in eng/Signing.props for third-party DLLs:
    <FileSignInfo Include="ThirdParty.dll" CertificateName="3PartySHA2" />
    
  6. Add the project to the solution: MauiLabs.slnx and the product's .slnf
  7. Add to DevFlow.slnf if it should be built by CI

Version Management

eng/Versions.props              ← Product version (VersionPrefix + VersionSuffix)
src/{Product}/Version.props     ← Per-product override (if needed)
Directory.Packages.props        ← NuGet dependency versions
eng/Version.Details.xml         ← Dependency Flow tracking (auto-managed by DARC)

Read the full file on GitHub · 94 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 94 lines · 1,100 tokens per session scan A 787a42889ca9

Subscribe to this mod's changes

maui-labs packaging.instructions.md is an instructions file published in the GitHub repository dotnet/maui-labs (212 stars, last pushed 5d ago), licensed MIT. It adds 1,100 tokens to every session, about $0.0055 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.