This is a collection of notes on how I manage multiple GitHub repositories. All repositories under my account are maintained using this system.
Features
I need the following:
- Standardized repository configuration — Easily change topics, descriptions, settings across all repos.
- Unified GitHub Actions workflows — Shared build, test, release pipelines (e.g., NuGet, Docker Hub).
- Synchronized repository content — Shared files like
.gitignore
,Directory.Build.props
, and CI/CD workflows.
In short, I want to template my repositories—but also update those templates over time.
Parts
This guide is split into parts:
Specification
All repositories are defined in a central repos.json
file:
{
"content": {
"standardContent": {
".gitignore": "standard_content/.gitignore"
},
"standardDotnetNuget": {
".github/workflows/dotnet.yml": "standard_content/dotnet.yml",
".github/workflows/nuget.yml": "standard_content/nuget.yml",
"Directory.Build.props": "standard_content/Directory.Build.props"
}
},
"repositories": {
"MBW.BlueRiiot2MQTT": {
"description": "Utility to map between Blue Riiots pool API, and Home Assistant MQTT",
"topics": ["hass", "home-assistant", "mqtt", "blue-riiot", "pool"],
"docker": true,
"nuget": false,
"standardContent": true
},
"TMDbLib": {
"description": "C#.Net library for TheMovieDB",
"topics": ["tmdb", "movies", "themoviedb"],
"has_wiki": true,
"standardContent": true,
"standardDotnetNuget": true
}
}
}
Each repo entry defines descriptive metadata and flags used by automation tools. Follow the linked posts for implementation details.