Monday dev session focused on defining “done” and polishing dotnet templates.

TIL

1. Define “done” before you start

Spent time with a collaborator defining exactly what V1 of a game project means. The scope cage:

  • 1 hand-made town (not procedural)
  • 5 dungeon levels (not infinite)
  • 4 classes (not 12)
  • 3 endings (not branching trees)

Ship date: Easter. Slightly uncomfortable = probably correct.

2. dotnet templates need explicit parameters

The fes-module template was generating broken project references because --namespace defaulted to FesStarter. Fix: make it required with "isRequired": true in template.json.

"namespace": {
  "type": "parameter",
  "isRequired": true,
  "replaces": "FesStarter"
}

3. Branch protection is worth the friction

Set up GitHub branch protection requiring PR reviews. Immediately caught myself trying to push directly. Good habit even for solo projects.

4. Always request Copilot review

GitHub Copilot can review PRs and catch issues. Added it to the workflow - free automated code review, why not?

5. Post-actions need explicit file paths

Template post-actions like “add to solution” fail silently without "projectFiles": ["*.csproj"] in the args. The error message is unhelpful but the fix is simple.

Shipped

  • fes-starter cleanup (removed redundant AI scaffold skills)
  • Fixed module template NuGet references
  • Made namespace required across all sub-templates
  • Branch protection on fes-starter repo
  • Mr. White party game now public

Good Monday. Time to rest.