name: vision4it-dokumente
Diese Anleitung beschreibt, wie professionelle Kundendokumente im vision4it-Corporate-Design erstellt werden — Angebote/Kurzkonzepte (Deckblatt + Konzept) sowie Kundenanleitungen — im Stil des GSS-Angebots (German Security Service GmbH, Terminal-Server-Infrastrukturprojekt). Der gleiche Look wurde bereits für Autohaus Elegance (Managed Services) und das JTL/Reonic-Kurzkonzept (Solar-Kunde) wiederverwendet.
Zielgruppe: Jede Claude-Instanz, die Kundendokumente für die vision4it GmbH erstellt.
"vision4it" wird IMMER klein geschrieben — auch am Satzanfang, in Überschriften, Fußzeilen und im Firmennamen "vision4it GmbH". Niemals "Vision4IT", "Vision4it" oder "VISION4IT" schreiben. Einzige Ausnahme: das Logo selbst (Grafik).
Verbindliche Firmenangaben (Fußzeilen, Impressumsblöcke):
vision4it GmbH · Siemensstraße 8 · 41542 Dormagen
Tel. 02133 8688890 · office@vision4it.de · vision4it.de
Geschäftsführer: Matthias Gehlhaar, Phillip Gehlhaar
Amtsgericht Mönchengladbach, HRB 22650 · USt-IdNr. DE369304034
SKILL.md des docx-Skills lesen: /mnt/skills/public/docx/SKILL.md (Pflicht vor Codebeginn)Branding-Assets aus dem Git-Repo holen (Logo, Farben, ggf. Fonts):
git clone --depth 1 https://3f386caf463c4b46eb3d8a37bbaa59f792cde016@git.services.vision4it.de/vision4it/vision4it-branding.git /home/claude/branding
Danach verfügbar:
/home/claude/branding/logo/logo.png — Standard-Logo (transparent, für helle Seiten)/home/claude/branding/logo/logo-white.png — weiße Variante (für dunkles Deckblatt)/home/claude/branding/colors.md — verbindliche Farbpalette/home/claude/branding/fonts/ — Font-Dateien (nur für PDF-Workflows relevant)Der Token in der URL ist ein dedizierter Nur-Lese-Token (Benutzer "claude"), der ausschließlich dieses öffentliche Repo sehen kann. Falls der Clone fehlschlägt (Netzwerk/Auth): ohne Logo weiterarbeiten, Firmenname typografisch setzen (wie im Template) und Matthias auf das Problem hinweisen.
mkdir -p /home/claude/<kunde>docx-Library prüfen/installieren: npm list -g docx || npm install -g docxbuild_deckblatt.js → Deckblatt (eigene Datei oder erste Section)build_doc.js → Kurzkonzept (nummerierte Kapitel)node build_doc.jspython3 /mnt/skills/public/docx/scripts/office/validate.py <datei>.docx
(Pfade unter /mnt/skills/ gelten für die claude.ai-Umgebung; falls dort nicht
vorhanden, Validierung/Rendering mit verfügbaren Mitteln sinngemäß durchführen)/mnt/user-data/outputs/ kopieren und
present_files; Cowork: SendUserFile; sonst sinngemäß)// vision4it Farbpalette (Hex ohne #, wie von docx-Library erwartet)
const C_DARK = "1A1A1A"; // Haupttext, Überschriften, dunkle Flächen (Deckblatt)
const C_GREEN = "13A983"; // Akzentfarbe (Linien, Hervorhebungen, Status-Elemente)
const C_GREY = "5C5C5C"; // Sekundärtext, Untertitel, Metadaten
const C_LIGHT = "F4F4F4"; // Helle Hintergrundflächen (Tabellen-Header, Infoboxen)
const C_BORDER = "D0D0D0"; // Tabellenrahmen, Trennlinien
Regeln:
13A983) sparsam als Akzent einsetzen — Linien unter Überschriften, Kennzahlen,
Summenzeilen. Nicht als Flächenfarbe für Fließtext-Hintergründe.logo.png) OBEN RECHTS (alignment: RIGHT), groß (~247×60)Bewährte Gliederung aus dem GSS-Dokument (an Scope anpassen, nicht sklavisch kopieren):
Bei Managed-Services-Verträgen (wie Autohaus Elegance): Service-Beschreibung statt Projekt-Phasenplan — Leistungsumfang, SLA/Reaktionszeiten, monatlicher Preis, Laufzeit.
Format wie bei GSS (Positionen mit Stunden, Zwischensumme, Puffer, Gesamtsumme):
| Pos | Leistung | Stunden |
|---|---|---|
| 1 | Vorbereitung & Planung | … |
| 2 | Hardware-Aufbau & Basis-Infrastruktur | … |
| 3 | Server-Rollen | … |
| 4 | Sicherheit & Monitoring | … |
| 5 | Migration & Rollout | … |
| 6 | Übergabe & Dokumentation (Hudu, Hypercare, Abnahme) | … |
| Zwischensumme | … | |
| 7 | Projektpuffer (15 %) | … |
| Gesamt Dienstleistung | … h |
Dazu immer:
Preise nur nennen, wenn Matthias es explizit will — es gab Fälle, in denen die Preis-/Phasensektion nachträglich entfernt werden musste. Im Zweifel nachfragen.
Vollständiges, geprüftes Referenz-Script: templates/build_angebot_beispiel.js im
Branding-Repo — erzeugt ein komplettes Angebot (helles Deckblatt mit Logo rechts,
Kurzkonzept, Phasentabelle, Firmenangaben-Fußzeile). Am besten dieses Script kopieren
und Inhalte austauschen, statt von Null zu starten. Der Ausschnitt unten zeigt nur
die Grundstruktur:
const fs = require('fs');
const {
Document, Packer, Paragraph, TextRun, Table, TableRow, TableCell,
AlignmentType, HeadingLevel, BorderStyle, WidthType, ShadingType,
PageNumber, Header, Footer, VerticalAlign, LevelFormat
} = require('docx');
// vision4it Farben
const C_DARK = "1A1A1A", C_GREEN = "13A983", C_GREY = "5C5C5C",
C_LIGHT = "F4F4F4", C_BORDER = "D0D0D0";
// --- Helpers ---------------------------------------------------------------
const noBorder = { style: BorderStyle.NONE, size: 0, color: "FFFFFF" };
const noBorders = { top: noBorder, bottom: noBorder, left: noBorder, right: noBorder };
const cell = (children, opts = {}) => new TableCell({
borders: opts.borders || noBorders,
width: opts.width ? { size: opts.width, type: WidthType.DXA } : undefined,
shading: opts.shade ? { fill: opts.shade, type: ShadingType.CLEAR } : undefined,
margins: opts.margins || { top: 60, bottom: 60, left: 80, right: 80 },
verticalAlign: opts.valign,
columnSpan: opts.colSpan,
children: Array.isArray(children) ? children : [children],
});
const H1 = (text) => new Paragraph({
heading: HeadingLevel.HEADING_1,
spacing: { before: 320, after: 160 },
children: [new TextRun({ text, bold: true, color: C_DARK, size: 28 })],
});
const H2 = (text) => new Paragraph({
heading: HeadingLevel.HEADING_2,
spacing: { before: 240, after: 120 },
children: [new TextRun({ text, bold: true, color: C_DARK, size: 24 })],
});
const P = (text) => new Paragraph({
spacing: { after: 120 },
children: [new TextRun({ text, size: 22, color: C_DARK })],
});
const Bullet = (text) => new Paragraph({
numbering: { reference: "bullets", level: 0 },
spacing: { after: 60 },
children: [new TextRun({ text, size: 22, color: C_DARK })],
});
// --- Dokument --------------------------------------------------------------
const doc = new Document({
numbering: {
config: [{
reference: "bullets",
levels: [{
level: 0, format: LevelFormat.BULLET, text: "\u2022",
alignment: AlignmentType.LEFT,
style: { paragraph: { indent: { left: 720, hanging: 360 } } },
}],
}],
},
sections: [
// Section 1: Deckblatt (ohne Kopf-/Fußzeile)
{
properties: { page: { margin: { top: 1134, bottom: 1134, left: 1134, right: 1134 } } },
children: [
// Branding-Block, Titel, Kunde, Datum — mit Tabellen/Paragraphs layouten
],
},
// Section 2: Kurzkonzept (mit Fußzeile + Seitenzahlen)
{
properties: { page: { margin: { top: 1134, bottom: 1134, left: 1134, right: 1134 } } },
footers: {
default: new Footer({
children: [new Paragraph({
alignment: AlignmentType.RIGHT,
children: [
new TextRun({ text: "vision4it GmbH | Seite ", size: 16, color: C_GREY }),
new TextRun({ children: [PageNumber.CURRENT], size: 16, color: C_GREY }),
],
})],
}),
},
children: [
H1("1. Ausgangslage"),
P("…"),
// weitere Kapitel …
],
},
],
});
Packer.toBuffer(doc).then(buffer => {
fs.writeFileSync("/home/claude/Kurzkonzept_<Kunde>.docx", buffer);
console.log("OK");
});
Logo-Fakten (aus Logo_vision4it_rgb_2023.pdf extrahiert):
{ width: 247, height: 60 }, Kopfzeile { width: 124, height: 30 }CI-Schriften im Logo: Design System 500R (Schriftzug), Presario Text (Tagline) — beide kommerziell; Fließtext in Dokumenten trotzdem Calibri/Arial.
const { ImageRun } = require('docx');
const logoBuffer = fs.readFileSync('/home/claude/branding/logo/logo.png'); // Standard: farbiges Logo
new Paragraph({
alignment: AlignmentType.LEFT,
children: [new ImageRun({
data: logoBuffer,
transformation: { width: 206, height: 50 }, // Seitenverhältnis 4.12:1 einhalten!
type: 'png',
})],
});
Überall logo.png (farbig). logo-white.png nur für dunkle digitale Anwendungen
(Präsentations-Titelfolien, Website), NICHT für Druck-Deckblätter.
Hinweise:
indent nicht zusätzlich zur numbering-Referenz setzen (Konflikt, bekannter Bug
aus früherer Session).C_LIGHT-Header-Zeile und C_BORDER-Rahmen; Summenzeilen bold, ggf. grüner Akzent.Für Schritt-für-Schritt-Anleitungen an Endanwender (z. B. RDP-Zugang, VPN einrichten, E-Mail auf dem Handy). Gleiche Farben, gleiche Fußzeile mit Firmenangaben, Logo oben rechts — und IMMER mit Deckblatt (gleicher Aufbau wie beim Angebot, eigene Section ohne Word-Fußzeile). Auf dem Deckblatt: Kicker "ANLEITUNG" in Teal statt "ANGEBOT & KURZKONZEPT", Titel = Thema (z. B. "RDP-Verbindung einrichten"), Untertitel = Zielgruppe/System, Metadaten-Tabelle mit Kunde, Datum, Version — ohne Angebots-Nr. In der Innenseiten-Fußzeile entfällt die Angebots-Nr. ebenfalls; stattdessen Dokumenttitel + Seitenzahl.
Oberste Regel: KURZ UND KNAPP. Zielgruppe sind Endanwender, keine Techniker. Erfahrungswert: Eine frühere RDP-Anleitung wurde als zu ausführlich zurückgewiesen — lieber 1–2 Seiten, die jemand wirklich liest, als 5 Seiten Vollständigkeit.
Struktur (nach dem Deckblatt):
Sprachliche Regeln:
Dateiname: Anleitung_<Thema>_<Kunde>.docx
Wie Angebot/Kurzkonzept, aber: Service-Beschreibung statt Projekt-Phasenplan. Abschnitte: Leistungsumfang (Bullets pro Service-Baustein), Reaktionszeiten/SLA, monatlicher Preis, Laufzeit & Kündigung, Nicht enthalten. Referenz: Autohaus Elegance (IT Essential, 1.200 €/Monat).
validate.py erfolgreich durchgelaufen| Projekt | Typ | Besonderheit |
|---|---|---|
| GSS German Security Service | Infrastruktur-Projekt | Vollständiger Phasenplan, 221 h, Dual EPYC/ZFS/VLAN/NAC |
| Autohaus Elegance | Managed Services | Service-Beschreibung statt Phasenplan, 1.200 €/Monat IT Essential |
| Solar-Kunde (JTL/Reonic) | Konzept + Middleware | Kurzkonzept ohne Preissektion (nachträglich entfernt), Hosting-Produkte separat |