Files
build_webstatic/AGENTS.md
T
gc-dev-afjd ca34a5f866 Versions-Definition: --version mit Remote-Check + README-Mismatch-Warnung
- 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).
2026-07-11 17:34:45 +02:00

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_webstatic innerhalb 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 .cs in src/ deklariert ihn; Program.cs nutzt using 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 über Directories (aus BuildConfig.Paths relativ zum Site-Root).
  • i18n: UI-Texte über {{ i18n.<bereich>.<key> }} in Templates; Daten in i18n.json; Substitution via I18n.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 (ä ö ü ß), nicht ae/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:

  1. README.md — Block-Quote > **Version: X.Y.Z** direkt unter dem Titel (kanonisch; per git show origin/main:README.md remote sichtbar)
  2. GCBoK.WebStaticBuilder.csproj<Version>X.Y.Z</Version> (Assembly)
  3. 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