Skip to content

Roadmap: keep dotnet-template a minimal, current, low-friction .NET scaffold #218

Description

@devantler

🤖 Generated by the Daily AI Assistant

Roadmap: keep dotnet-template a minimal, current, low-friction .NET scaffold

First strategy review for dotnet-template (the repo had no roadmap label and no open issues). This epic sets the north-star and tracks the small set of theme-level work; actionable children link back here and close with Fixes #N. It deliberately mirrors the sibling go-template roadmap epic #104 — the two scaffolds should advance in lockstep.

Where the product is

A deliberately minimal, batteries-included .NET scaffold: an Example.slnx solution wiring one library project (src/Example, a single documented ExampleClass.Add member) to a matching xUnit test project (tests/Example.Tests, on xunit.v3), the house defaults baked into every project (Nullable, ImplicitUsings, AnalysisMode=All, EnforceCodeStyleInBuild, GenerateDocumentationFile, TreatWarningsAsErrors), a ci.yaml required-checks aggregator with the actual build/test enforced by the org-required reusable workflow, semantic-release → NuGet publish on v* tags, daily Dependabot, and agent tooling (AGENTS.md + .claude/skills/maintain). It is healthy and current (net10.0, SDK floor 10.0.300 with rollForward: latestFeature).

Where it should be

The bias is minimal, idiomatic, current — not feature-rich. So "advancing" this product means reducing friction and drift, never adding product features. Three themes:

  1. Onboarding friction. Creating a project from the template still requires manual, error-prone steps: the README asks the adopter to rename the solution, the library project, the namespace, and the test project from Example, then replace ExampleClass. ✅ DELIVERED on mainscripts/rename-placeholders.sh (a two-pass type-then-project rename) personalises the scaffold in one shot, and the README Use this template section documents the adopt-and-delete checklist (direct parity with go-template #107).
  2. Toolchain & scaffold currency. The SDK floor (global.json 10.0.300, rollForward: latestFeature) and the net10.0 TFM are bumped ad-hoc; the rationale (why this floor, when to raise it) lives nowhere. ✅ DELIVERED on mainAGENTS.md carries the Toolchain-floor policy section and the Toolchain-floor freshness maintenance task (parity with go-template chore(deps): Bump devantler-tech/reusable-workflows/.github/workflows/ci-dotnet-test.yaml from 1.31.1 to 1.32.0 #106); the SDK floor lives only in global.json as the single source of truth.
  3. Template-suite parity (portfolio concern). go-template, dotnet-template, and the other templates should stay aligned on what they can share — agent files, label sets, Dependabot/cooldown policy, CI structure, README shape, and onboarding ergonomics. Divergence is drift. Tracked here as a theme; concrete reconciliation lands as additive PRs (and may graduate to a monorepo holistic-review item). In flight: PR #242 adds the copilot-setup-steps workflow for parity with go-template/platform-template (both already ship it; dotnet-template and gitops-tenant-template did not).

Rough size

Small. 2–3 focused children, each independently shippable; no large structural change. Respect the minimal-by-design constraint — reject feature-creep proposals here.


Refreshed 2026-06-23 (strategy review against live main): themes 1 (onboarding script) and 2 (toolchain-floor policy + freshness) marked delivered — the body previously implied they were unstarted (the 319th stale-roadmap trap). The stale .github/copilot-instructions.md reference was dropped (no longer maintained — Copilot reads AGENTS.md directly). Theme 3 (suite parity) is the lone open direction; PR #242 is its first reconciliation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions