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.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions