SHA256
- Program.cs: PrintVersion() vergleicht Assembly-Version mit README.md (Block-Quote '> **Version: X.Y.Z**') und warnt bei Mismatch. Remote-Check via 'git ls-remote origin HEAD' vergleicht lokalen mit remote Commit-Hash; Hinweis 'UPDATE AVAILABLE' bei Differenz. Copy-Installationen (kein .git) erhalten Hinweis auf ./install.sh. - README.md: Versions-Block-Quote unter dem Titel (kanonisch), Update-Check-Doku, drei synchrone Versionsquellen dokumentiert. - AGENTS.md: Versions-Definition als Definition of Done für Releases (README + csproj + Assembly müssen synchron sein).
3.0 KiB
3.0 KiB
AGENTS — GCBoK.WebStaticBuilder
Guidelines für KI-Agenten, die an diesem Tool (nicht an der GCBoK-Website) arbeiten.
Wesen des Projekts
- Eigenständiger Static-Site-Generator (C# / .NET 10, kompilierte Konsolen-App, Assembly
webstatic). - Früher: Submodul
OSS/build_webstaticinnerhalb der GCBoK-Website (www/build/). Seit 2026-07 eigenständiges OSS-Tool unter/opt/GitCover/webstatic(KMU-fähig). - Kein Python. Einzige externe Build-Abhängigkeit:
npx pagefind(Suchindex, optional). - Lizenz: MIT (
LICENSE).
Build & Verify (kanonisch)
dotnet build -c Release # kompiliert src/ -> bin/Release/net10.0/webstatic.dll
dotnet bin/Release/net10.0/webstatic.dll build --env work --verbose # Beispiel in webstatic.example/
dotnet bin/Release/net10.0/webstatic.dll serve --port 8000 # lokale Vorschau
Konventionen
- Namespace:
GCBoK.WebStaticBuilder(jede.csinsrc/deklariert ihn;Program.csnutztusing GCBoK.WebStaticBuilder;). - Packages:
Markdig,YamlDotNet(Versionen explizit gepinnt — CPM ist deaktiviert via<ManagePackageVersionsCentrally>false</ManagePackageVersionsCentrally>). - Keine unversionierten
PackageReference(führt zu NU1015). - Config-Priorität: CLI-Flags >
webstatic.json> eingebaute Defaults (BuildConfig.Defaults()). - Pfade generisch: nie hartkodiert auf
www/— alles überDirectories(ausBuildConfig.Pathsrelativ zum Site-Root). - i18n: UI-Texte über
{{ i18n.<bereich>.<key> }}in Templates; Daten ini18n.json; Substitution viaI18n.cs(Fallback Englisch).
Verzeichnisstruktur
plans/ (Pläne), docs/ (Anleitungen), diary/ (Dev-Tagebuch), src/ (Code),
tests/ (Tests), webstatic.example/ (KMU-Vorlage), install.sh, LICENSE.
Guardrails
- Umlaute in Prosa verwenden (
ä ö ü ß), nichtae/oe/ue. §(nicht ausgeschrieben) für Gesetzesparagraphen.- Kein Commit ohne expliziten Wunsch. Bei Release: signierte Commits.
dist/,bin/,obj/,.translation-drafts/sind gitignored.- Machine-Translation liefert nur Entwürfe (
.translation-drafts/), nie Auto-Überschreibung.
Versions-Definition (Definition of Done für Releases)
Die Versionsnummer wird an drei Stellen synchron gehalten — ein Release-Commit
muss alle drei aktualisieren, andernfalls warnt webstatic --version vor einem
Mismatch:
README.md— Block-Quote> **Version: X.Y.Z**direkt unter dem Titel (kanonisch; pergit show origin/main:README.mdremote sichtbar)GCBoK.WebStaticBuilder.csproj—<Version>X.Y.Z</Version>(Assembly)webstatic --version— gibt Assembly-Version aus, vergleicht mit README und remote Commit-Hash (git ls-remote origin HEAD)
Vor einem Release sind lokal und remote die Version feststellbar, ohne die CLI aufzurufen:
git show HEAD:README.md | head -3 # lokal
git show origin/main:README.md | head -3 # remote