SKILL.md 16 KB

SKILL: vision4it Angebot & Kurzkonzept (GSS-Stil)

Zweck

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: Claude-Instanzen, die für Matthias / vision4it GmbH Angebotsdokumente erstellen.


Schreibweise (WICHTIG)

"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).

Kontext vision4it

  • Firma: vision4it GmbH, Rommerskirchen (NRW), MSP für KMU im Rheinland, ~10 Mitarbeiter
  • Standard-Stack (taucht oft in Konzepten auf): Proxmox/Ceph, OPNsense, TacticalRMM, PMG/Rspamd, Exchange on-premises, 3CX, UniFi, Hudu (Doku), FileMaker
  • Grundsatz: ausschließlich Self-Hosted-Lösungen, keine Cloud-Abhängigkeiten
  • Stundensatz (Referenz aus früheren Angeboten): 120 €/h netto
  • Sprache der Dokumente: Deutsch, professionell, sachlich, kundengerecht

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

Technischer Workflow

  1. SKILL.md des docx-Skills lesen: /mnt/skills/public/docx/SKILL.md (Pflicht vor Codebeginn)
  2. 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.

  1. Arbeitsverzeichnis anlegen: mkdir -p /home/claude/<kunde>
  2. docx-Library prüfen/installieren: npm list -g docx || npm install -g docx
  3. Build-Script(s) in Node.js erstellen (siehe Template unten):
    • build_deckblatt.js → Deckblatt (eigene Datei oder erste Section)
    • build_doc.js → Kurzkonzept (nummerierte Kapitel)
    • Alternativ: ein Script mit mehreren Sections (Deckblatt = Section 1 ohne Kopf-/Fußzeile)
  4. Generieren: node build_doc.js
  5. Validieren (Pflicht): python3 /mnt/skills/public/docx/scripts/office/validate.py <datei>.docx
  6. Nach /mnt/user-data/outputs/ kopieren und mit present_files präsentieren

Corporate Design (Farben)

// 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:

  • Grün (13A983) sparsam als Akzent einsetzen — Linien unter Überschriften, Kennzahlen, Summenzeilen. Nicht als Flächenfarbe für Fließtext-Hintergründe.
  • Deckblatt IMMER hell/weiß (druckfreundlich!) — KEINE vollflächig dunklen Deckblätter, die sind auf Bürodruckern nicht praktikabel. Kontrast über Typografie und Teal-Akzente.
  • Kein übermäßiges Bold im Fließtext.

Dokumentstruktur

Deckblatt (hell, druckfreundlich)

  • Weißer Hintergrund — nie vollflächig dunkel (Druckkosten, Qualität auf Bürodruckern)
  • Logo in Originalfarben (logo.png) OBEN RECHTS (alignment: RIGHT), groß (~247×60)
  • Kicker in Teal mit Sperrsatz (z. B. "ANGEBOT & KURZKONZEPT"), darunter großer dunkler Titel
  • Teal-Linie unter dem Untertitel als Akzent
  • Dokumenttyp: „Angebot" bzw. „Kurzkonzept"
  • Projekttitel (z. B. „IT-Infrastruktur Terminal-Server-Umgebung")
  • Kundenname + Standort
  • Datum, ggf. Angebotsnummer / Version
  • Kontaktblock vision4it GmbH (unten)
  • Keine Kopf-/Fußzeile auf dem Deckblatt (eigene Section)

Innenseiten: Kopf & Fuß

  • Logo klein (~124×30) OBEN RECHTS auf der ersten Innenseite
  • Fußzeile ZWEIZEILIG mit den vollständigen Firmenangaben (Block oben) in 7 pt Grau, plus Angebotsnummer und Seitenzahl. Nie nur "vision4it GmbH · Seite X" — die vollständigen Angaben sind Pflicht.

Kurzkonzept (nummerierte H1-Kapitel)

Bewährte Gliederung aus dem GSS-Dokument (an Scope anpassen, nicht sklavisch kopieren):

  1. Ausgangslage / Ist-Zustand
  2. Zielsetzung
  3. Ziel-Architektur (Netz, Server, Virtualisierung)
  4. Netzwerk & Segmentierung (VLANs, Firewall, NAC/RADIUS)
  5. Server-Rollen (DC, Terminal Server, Exchange, Fileserver, Fachanwendungen)
  6. Sicherheit (Firewall-Regelwerk, Logging, Auditing)
  7. Backup & Monitoring (TacticalRMM, Backup-Konzept)
  8. Drucken (z. B. Pull-Printing) — falls relevant
  9. Fernzugriff / VPN
  10. E-Mail / Kollaboration
  11. Endgeräte-Management (GPO, TacticalRMM, BitLocker, kein lokaler Admin, USB gesperrt)
  12. Nächste Schritte (Bullets: Begehung, Detail-Design, Bestellung, Rollout, Schulung, Übergabe)
  13. Zeitplan & Aufwand (Phasentabelle + Kalenderzeit)

Bei Managed-Services-Verträgen (wie Autohaus Elegance): Service-Beschreibung statt Projekt-Phasenplan — Leistungsumfang, SLA/Reaktionszeiten, monatlicher Preis, Laufzeit.

Phasentabelle (Projektangebote)

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:

  • Kalenderzeit (z. B. „8–10 Wochen bei einem Techniker mit ~70 % Auslastung")
  • Nicht enthalten: Anfahrt, Hardware-Lieferzeit, laufender Wartungsvertrag, spätere Erweiterungen

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.


Code-Template (Node.js, docx-Library)

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 einbinden (ImageRun)

Logo-Fakten (aus Logo_vision4it_rgb_2023.pdf extrahiert):

  • Seitenverhältnis 4,12 : 1 (828 × 201 px nativ, Rasterquelle — nicht größer als ~7 cm Breite in Druckdokumenten verwenden, sonst wird es unscharf)
  • Empfohlene Maße: Deckblatt { 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:

  • A4, 2 cm Ränder (1134 DXA).
  • Umlaute/Sonderzeichen im Script als Unicode-Escapes nur wo nötig — UTF-8 funktioniert direkt.
  • Bei Bullets: indent nicht zusätzlich zur numbering-Referenz setzen (Konflikt, bekannter Bug aus früherer Session).
  • Tabellen mit C_LIGHT-Header-Zeile und C_BORDER-Rahmen; Summenzeilen bold, ggf. grüner Akzent.

Dokumenttyp: Kundenanleitung

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):

  1. Kurzer Einleitungssatz (was erreicht der Anwender mit dieser Anleitung)
  2. Infobox (C_LIGHT-Hintergrund, dünner Rahmen): die konkreten Verbindungsdaten / Zugangsinfos als Label-Wert-Tabelle (Server-IP, Benutzername-Schema o. ä.)
  3. Voraussetzungen: max. 3–4 Bullets
  4. Schritt-für-Schritt: nummerierte Schritte, je Schritt EIN Satz Anweisung, optional ein kurzer Hinweis. Keine Screenshots-Platzhalter, keine Theorie-Exkurse.
  5. Bei Problemen: kleine Tabelle Problem → Lösung (max. 4–5 Zeilen), darunter ein Satz: "Weitere Hilfe: vision4it Support, Tel. 02133 8688890, office@vision4it.de"

Sprachliche Regeln:

  • Anwender werden gesiezt ("Öffnen Sie...", "Geben Sie ... ein")
  • Imperativ, aktiv, ein Schritt = eine Handlung
  • Fachbegriffe nur wenn nötig, dann in einem Halbsatz erklärt
  • Platzhalter für kundenspezifische Werte klar markieren: [IHR BENUTZERNAME]

Dateiname: Anleitung_<Thema>_<Kunde>.docx


Dokumenttyp: Managed-Services-Angebot

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).


Checkliste vor Abgabe

  • docx-SKILL.md gelesen
  • Branding-Repo geclont, farbiges Logo eingebunden
  • Farben exakt aus der Palette (kein Blau, kein Apfelgrün 7CB342 aus Altdokumenten — aktueller Standard ist Dunkelgrau/Teal aus dem Logo)
  • Deckblatt als eigene Section ohne Word-Fußzeile, hell/weiß, Logo oben rechts, Firmenangaben-Block unten auf der Seite
  • Fußzeile Innenseiten: vollständige Firmenangaben (Adresse, GF, HRB, USt-IdNr.)
  • Kapitel durchnummeriert, Nummerierung konsistent (bei Löschungen neu durchzählen!)
  • Phasentabelle: Zwischensumme + 15 % Puffer + Gesamtsumme
  • Kalenderzeit-Angabe und „Nicht enthalten"-Block vorhanden
  • validate.py erfolgreich durchgelaufen
  • Rendern (soffice → pdftoppm) und Seitenzahl/Überlauf prüfen — Spacer-Höhen auf dem Deckblatt sind die häufigste Überlauf-Ursache
  • Datei in /mnt/user-data/outputs/, per present_files präsentiert
  • Bei Unsicherheit über Preisnennung: Matthias fragen

Bekannte Varianten (Referenzprojekte)

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