This documentation is also published as Markdown for efficient machine reading: the whole site is indexed at /llms.txt, and every page has a clean Markdown copy at the same URL with .md appended. These are generated from the same source and cost far fewer tokens to read than this rendered HTML.

Skip to main content

April 18, 2026

Start a new site with dotnet new

By Phil Scott

Starting a new site used to be a short checklist: create a project, add the package references, wire up Program.cs, drop in a layout. Now creating the project is one command.

Three templates, installed once

Pennington.Templates is a dotnet new template package. Install it once:

bash
dotnet new install Pennington.Templates

Then create a project from any of the three templates:

bash
dotnet new pennington-docs -o my-docs
  • pennington — the bare content engine, for when you want to assemble the site yourself.
  • pennington-docs — a full DocSite: sidebar navigation, a table of contents, and a starter page tree.
  • pennington-blog — a full BlogSite: home page, archive, tag pages, and an RSS feed.

Each one produces a project that runs immediately. cd my-docs, dotnet run, and the site is in your browser with live reload.

Why a template, not a checklist

A setup checklist is a place to make small mistakes: a missing package reference, a Program.cs line in the wrong order, a layout file that doesn't quite match. Starting from a template that already works means your first commit is content rather than project setup — dotnet new is the fastest way to the same place the tutorials build by hand.