# KALINA CI Corporate Identity der KALINA als versioniertes Artefakt: eine Satzvorlage (CSS), drei Dokumentvorlagen, die Marke als SVG, ein Stempel-Skript für fremde PDFs und eine CLI, die alle drei Wege bedient. **Ein Dokument, das nach KALINA aussehen soll, nimmt diese Dateien — keine nachgebauten Farben, kein selbst gezeichnetes Logo.** ``` css/kalina-ci.css Satzvorlage: @page A4, Kopfleiste, Tabellen, Plakette, Fußlinie templates/ report.html · page.html · bild-mit-prompt.html assets/ kalina-mark.svg · kalina-wordmark.svg · kalina-logo-combined.svg · favicon/ scripts/stamp_existing_pdf.py fremdes PDF mit Deckblatt/Marke/Fußzeile versehen tools/kalina-pdf CLI: build · stamp · check · tokens tokens.json Farben, Schriften, Geometrie, Zonen (maschinenlesbar) SKILL.md Einstiegspunkt für Agenten (Frontmatter + Regeln + Fallen) docs/aenderungen.md der verbindliche Änderungsweg ``` ## Schnellstart ```bash git clone kalina-ci && cd kalina-ci cp templates/report.html bericht.html # «Platzhalter» füllen tools/kalina-pdf build bericht.html --stamp --titel "Angebot 2026-17" tools/kalina-pdf stamp fremd.pdf -o fremd-kalina.pdf --titel "Rechnung 4711" tools/kalina-pdf check bericht.pdf --raster raster/ ``` Voraussetzungen: `weasyprint` (Layout), `pymupdf` (Messung/Raster), `matplotlib` + `pypdf` (Stempel), `pdftoppm` optional für Sichtprüfung. ## Farben Ink `#0B0F14` · Bone `#F5F5EF` · Kalina-Rot `#C1121F` · Steel `#3A4250` · Muted `#8A94A2` ## Wie Agenten das nutzen Zwei Wege, gleicher Inhalt: 1. **Als Skill importiert** (Paperclip: `POST /api/companies//skills/import` mit `{"source": ""}`). Der Import liest `SKILL.md` und alle Dateien darunter, hält `ref` und `trackingRef` fest und meldet Aktualisierungen über `update-status`. 2. **Als Arbeitskopie** (Hermes, Skripte, Cron): Repo klonen, `tools/kalina-pdf` aus der Kopie aufrufen. Die CLI findet CSS, Vorlagen und Stempel relativ zu sich selbst. ## Zugriff Das Repo ist **öffentlich lesbar** — nicht aus Bequemlichkeit: der Skill-Import der Paperclip-Instanz holt Bäume und Rohdateien **ohne** Authentifizierung, ein privates Repo wäre dort nicht importierbar. Deshalb gilt die Inhaltsregel: > Keine internen Hostnamen, keine IP-Adressen, keine Zugangsschlüssel, keine > Kundeninhalte. Interne Verdrahtung gehört in die jeweilige Betriebsdoku, nicht hierher. Schreibzugriff haben `mm` (Owner) und das Agenten-Konto `kalina` (Collaborator, `write`). Weitere Agenten werden als Collaborator mit `write` aufgenommen — die CI ist kein Diskussionsgegenstand, sondern eine Vorlage, die Agenten anwenden. ## Änderungen Nicht ad hoc. Der Weg steht in [`docs/aenderungen.md`](docs/aenderungen.md): Issue im Repo → Branch `ci/` → PR → Review → Merge → `CHANGELOG.md` ergänzen. Wer die CI in einem Projekt „schnell anders" braucht, ändert das Projekt, nicht die CI.