7.9 KiB
name, description, metadata
| name | description | metadata | ||||
|---|---|---|---|---|---|---|
| kalina-ci | Use when a PDF, page or slide must carry the KALINA corporate identity. One CSS, one CLI, one source. |
|
KALINA CI — Corporate Identity für Dokumente und Seiten
Diese Skill-Datei ist der Einstiegspunkt in die KALINA CI. Alles, was nach KALINA aussehen soll — PDF, Bericht, Angebot, Folie, Landingpage — nimmt diese Dateien, nicht selbst erfundene Farben und nicht ein nachgebautes Logo.
Die CI ist versioniert. Änderungen laufen über das Repository (Issue → Branch → PR),
nicht ad hoc in einem Projekt. Siehe docs/aenderungen.md.
Was hier liegt
| Pfad | Rolle |
|---|---|
css/kalina-ci.css |
Satzvorlage: @page A4, Kopfleiste, Tabellen, Plakette, Fußlinie |
templates/report.html |
Mehrseitiger Bericht (Deckblatt, Abschnitte, Tabellen) |
templates/page.html |
Einzelne Seite / Handout |
templates/bild-mit-prompt.html |
Generiertes Bild mit Prompt als Dokument |
assets/kalina-mark.svg |
Marke (Kreis + K + Beeren), schriftfrei, überall einsetzbar |
assets/favicon/kalina-favicon.svg |
Favicon-Fassung: K ohne Beeren, weil Beeren bei 16 px zu Matsch werden |
assets/favicon/kalina-{16,32,48,180,192,512}.png, kalina.ico |
fertige Raster, gezeichnet statt gerendert (siehe Regel unten) |
assets/kalina-wordmark.svg |
Wortmarke — nur verwenden, wo DejaVu Sans liegt |
assets/kalina-logo-combined.svg |
Marke + Wortmarke |
assets/favicon/ |
16 / 32 / 180 / 512 px, gerendert aus der Marke |
scripts/stamp_existing_pdf.py |
Fremd-PDF stempeln (Deckblatt, Fußzeile, optional Kopfb and) |
tools/kalina-pdf |
CLI: bauen, stempeln, prüfen |
tokens.json |
Farben, Schriften, Geometrie, Zonen — maschinenlesbar |
Drei Wege, ein Ergebnis
# 1. Neues Dokument: Vorlage kopieren, «Platzhalter» füllen, bauen
cp templates/report.html bericht.html
tools/kalina-pdf build bericht.html --stamp --titel "Angebot 2026-17"
# 2. Fremdes PDF (Anhang, Behördenpost, Kundenpdf) mit CI versehen
tools/kalina-pdf stamp eingang.pdf -o eingang-kalina.pdf --titel "Rechnung 4711"
# 3. Nur prüfen: Seiten, Füllgrad je Seite, Seite 1 als PNG
tools/kalina-pdf check bericht.pdf --raster raster/
build kopiert fehlendes kalina-ci.css neben die HTML-Datei, weil weasyprint
Stylesheets relativ zur HTML-Datei auflöst. stamp lässt das Original unangetastet
und schreibt immer eine neue Datei.
check hat zwei Schwellen: --min-fill (Standard 0,10) bricht mit Exit 1 ab, weil
darunter eine Fast-Leerseite steht — ein Umbruchfehler, kein Inhalt. --ziel (0,55) wird
nur berichtet: dichter Bericht mit Tabellen und Zeichnungen erreicht das, reiner
Fließtext selten. Seite 1 gilt als Deckblatt und wird berichtet, nicht bewertet
(--kein-deckblatt-bonus schaltet das ab) — ein Deckblatt ist absichtlich dünn.
Autor und Impressum (verbindlich)
Autor ist immer Kalina — nicht der ausführende Agent, nicht „KI", nicht Mathias. Grund (Mathias, 23.10.2026): das Kalina-System ist der durchführende Part. Gilt ausdrücklich auch für Entwürfe.
- Jedes Dokument endet mit dem Impressum im Fußband: Marke,
KALINA · «Dokumenttitel» · Stand …, Zeile „Erstellt durch das Kalina-System · «Auftrag/Projekt · Ticket»" und© «JJJJ» kalina.si. Die Vorlagenreport.html,page.html,bild-mit-prompt.htmltragen das bereits — Platzhalter füllen, nicht löschen. - Decks: Autor auf der Titelfolie, auf der Schlussfolie genügt Marke +
© «JJJJ» kalina.siin einer Zeile. - HTML:
<meta name="author" content="Kalina">und dieselbe Fußzeile. - Commit-Autor:
Kalina <kalina@m-m.bio>. - Prüfung vor Auslieferung:
kalina.siper Textsuche im PDF nachweisen (muss auf der letzten Seite stehen) und das Fußband als Raster ansehen — Marke sichtbar, Copyright vollständig. Ein Impressum, das allein auf einer leeren Seite landet, ist ein Umbruchfehler: kompakt ins Fußband, nicht als eigener Abschnitt mitbreak-inside: avoid.
Vision lokal (verbindlich)
Bildprüfung läuft lokal auf dem ROG, nie in der Cloud — gleiches Ergebnis, keine Token-Kosten (Mathias, 23.10.2026).
- Modelle am Router
http://192.168.188.187:8100/v1:rog-vision(Gemma4-12B, multimodal),rog-agent(Qwen2.5-VL-7B),rog-ocr(GLM-OCR für Text im Bild). - Hermes:
auxiliary.vision.model=rog-vision,provider=kalinarouter-auto. Prüfen mithermes config get auxiliary.vision; ändern mithermes config set, nicht per Datei-Edit. - Nicht
autofür Bilder, solangeollama-cloudim Auto-Pfad vision-fähig ist — ein belegtes ROG kann sonst still in die Cloud ausweichen. - Stichprobe statt Bilderlawine: drei Seiten visuell, den Rest geometrisch (Pixel-Hash,
getBoundingClientRect, PyMuPDF-Rects). Gemessen: 43 Einzelaufrufe für ein 13-Seiten-PDF kosteten 10 von 30 erlaubten Run-Minuten.
Regeln, die aus Fehlern entstanden sind
- Marke ja, Wortmarke vorsichtig. Die Marke (Kreis + K + Beeren) ist schriftfrei
und skaliert beliebig. Die Wortmarken-SVG setzt ihre Buchstaben absolut
(x = 10/80/150/212/242/319) und ist auf DejaVu Sans Bold vermessen — in einer
fremden Schrift stoßen L, i und N zusammen. In Dokumenten und Webseiten die
Wortmarke deshalb als Text setzen:
KAL+ rotesi+NA. - Auf helle Fläche Ink, auf Ink-Fläche Bone. Bone auf Bone ist unsichtbar; im gerasterten PDF stand dann nur das rote i.
- Wortmarke nicht unter
s ≈ 0.2. Darunter ist der i-Schaft ~2 pt lang und der Beeren-Cluster kleiner als 2 pt. In Kopfzeilens = 0.24. - Marke im Band nie größer als das Band. 44 mm Marke in 12 mm Band ragt heraus und liegt auf dem fremden Titel.
- Nach jedem Bau die erste Seite rastern und ansehen, nicht auf Sichtbarkeit
schließen:
tools/kalina-pdf check x.pdf --raster raster/. break-inside: avoidnur für kurze Abschnitte. Bei Berichten mit Abschnitten länger als eine Seite erzwingt die Vorlage einen Seitenanfang je Abschnitt und hinterlässt fast leere Vorderseiten (gemessen: 14 Seiten, eine bei 11,6 %; nach Aufhebung 10 Seiten ohne Seite unter 89 %). Im eigenen<style>:@media print { .abschnitt { break-inside: auto; } },h2, h3 { break-after: avoid }.- ImageMagick rendert die Marke ohne K.
magick kalina-mark.svg -resize 32x32 x.pngliefert einen dunklen Kreis mit rotem Punkt — die K-Striche fehlen still, weil der MSVG-Renderer vererbtestroke-Attribute am<g>ignoriert. Wer die Marke rastert: Attribute an jedes<path>schreiben und das Ergebnis messen (helle Pixel im Kreis zählen), nicht ansehen; oder das Raster mit PIL direkt zeichnen (so entstandassets/favicon/kalina-*.png) oder einen echten Renderer (librsvg, cairosvg) nutzen. - Favicons brauchen eine eigene Fassung. Beeren mit r = 2,2 auf einer 240er viewBox sind bei 16 px 0,15 px groß: matschig, aber sie verwischen den Kreis. Die Favicon-SVG lässt den Cluster weg und verstärkt den Strich.
- Füllgrad ohne Kopf- und Fußzone messen — sonst zählt die Fußzeile als unterster
Block und jede Seite meldet dieselben ~105 %.
kalina-pdf checkmacht das richtig. - Überschrift und lange Tabelle gehören zusammen. Reißt eine 12-Zeilen-Tabelle
mit einer Zeile auf die Folgeseite, ist das ein Satzfehler:
break-before: pagean die Überschrift oder Tabelle kürzen.
Farben
Ink #0B0F14 · Bone #F5F5EF · Kalina-Rot #C1121F · Steel #3A4250 · Muted #8A94A2
Wenn ein anderer Agent das Design macht
Werkzeuge und Agenten, die eine Seite bauen (Bildgeneratoren, externe Design-Dienste), sehen diese Dateien nicht und erfinden sonst ein eigenes Logo — markenfremd und meist als schweres Raster-PNG. Also die Marke mitgeben: SVG inline einbetten oder als Datei beilegen, nie einen Fremdanbieter die Marke neu zeichnen lassen. Danach nachsehen, dass das Ergebnis keine Bilder von fremden Hosts zieht.