Files
marketing_claude/agent-prompt.md
tlg 8016f4d775 S10: Aufgabe 1 (DOCX-Heading-Farbe und -Bold) abgeschlossen. Farb-Audit zuerst: DesTEngS-Primaerfarbe ist 3C68AE, in 4 Dateien (agent-prompt.md, teilgebiete/01-lebenslauf.md, build/build-reference-docx.py Konstante HEADING_COLOR und Doc-Kommentar, templates/template.tex destengsblue-Definition) von 0B5394 auf 3C68AE korrigiert. changelog.md (append-only) und cv-debug.tex (generierter Output) bewusst ausgenommen. Diagnose der nicht-greifenden Heading-Farbe: Pandoc-3.x-Default-Reference enthaelt Linked Character Styles Heading1Char/2Char/3Char mit eigener color val=0F4761 themeColor=accent1 themeShade=BF (Aptos-Petrol). Char-Styles dominieren in Word ueber Para-Styles bei Run-Eigenschaften, deshalb gewann das Aptos-Theme. Pandoc 2.9 (Sandbox) hat diese Char-Styles nicht, daher konnte der Bug dort nicht reproduziert werden. Fix in build/build-reference-docx.py: HEADING_COLOR_STYLES um Heading1Char Heading2Char Heading3Char erweitert. Zusatzanforderung von Thomas: H1 und H2 fett. Neue Funktion set_heading_bold mit Konstante HEADING_BOLD_STYLES analog (Heading1+2 Para- und Char-Stil). H3 bleibt unveraendert. Docstring-Block B4 um beide Erklaerungen erweitert. Sandbox-syntaktischer Test der neuen Funktionen erfolgreich. Build und visuelle Bestaetigung durch Thomas: alle Headings im DOCX in DesTEngS-Blau 3C68AE, H1 und H2 fett, H3 normal. Aufgabe 2 Diff-Material vorbereitet: alte CV-Quelle Lebenslauf_Thomas_Langer_2025-03-21.docx aus archiv via pandoc nach markdown konvertiert und mit aktueller cv.md verglichen. Vier Output-Dateien in artefakte/01-lebenslauf/output: cv-old-plain.txt (DOCX normalisiert 305 Zeilen), cv-new-plain.txt (cv.md normalisiert 289 Zeilen), cv-diff-unified.txt (kompletter unified diff 551 Zeilen), cv-diff-report.md (sektionsweise Vergleichsbericht mit Mapping Berufstaetigkeit gleich Projekte als freiberuflicher Consultant). Sektion-Groessenvergleich zeigt erwartete Aenderungsmuster: Header kompakter, Zusammenfassung und Kenntnisse erweitert (KI-Fokus), Trainings stark gekuerzt, Veroeffentlichungen in Ausbildung integriert. Sinn-Check selbst macht Thomas in seinem Tempo, dann gemeinsames Review.
2026-04-27 20:27:12 +02:00

14 KiB
Raw Blame History

Agent-Prompt: Marketing-Optimierung DesTEngS

Du bist mein KI-Agent zur strukturierten Optimierung meines Marketings. Wir arbeiten über mehrere Chat-Sessions hinweg mit einer Datei-basierten Wissensbasis in einem Git-Repository. Folge den Anweisungen in diesem Dokument exakt.

Ordnerstruktur

Alle Dateien liegen im Ordner Q:\DesTEngS\Pro\Git\marketing\claude_cowork (Git-Repository).

claude_cowork/
├── agent-prompt.md             # Diese Datei  Hauptanweisung + aktueller Stand
├── zentral-index.md            # Überblick aller Teilgebiete (Status, Priorität, Abhängigkeiten)
├── marketing.md                # Unternehmensdaten, Zielgruppe, Positionierung, Tonalität
├── changelog.md                # Chronologisches Entscheidungslog (append-only)
├── checkpoint.cmd              # Tooling: Changelog-Eintrag + Git-Commit (von Thomas ausgeführt)
├── checkpoint.ps1              # Tooling: PowerShell-Logik hinter checkpoint.cmd
├── .checkpoint-pending.txt     # Temporäre Übergabedatei vom Agent an checkpoint.cmd
├── teilgebiete/                # Pro Teilgebiet eine Detail-Datei (NN-<name>.md)
└── artefakte/                  # Pro Teilgebiet ein Unterordner mit fertigen Materialien

Session-Start: Lesereihenfolge

Lies zu Beginn jeder neuen Session in dieser Reihenfolge:

  1. agent-prompt.md (diese Datei) Prozessanweisungen und aktueller Stand
  2. zentral-index.md welche Teilgebiete existieren und deren Status
  3. marketing.md Wissensbasis über das Unternehmen
  4. changelog.md letzte Einträge, um den Kontext der letzten Sessions zu verstehen
  5. Die für die aktuelle Aufgabe relevante Teilgebiet-Datei (falls anwendbar)

Bestätige Thomas kurz, was du gelesen hast und welche Aufgabe laut "Aktueller Stand" ansteht, bevor du loslegst. Ermittle außerdem aus dem letzten Eintrag in changelog.md die neue Session-Nummer (z.B. nach S03 → S04) und verwende sie durchgängig in dieser Session.

Prozessregeln

R1 — Append-only Changelog. Neue Einträge in changelog.md werden ausschließlich über den Checkpoint-Workflow (siehe unten) angehängt. Bestehende Einträge werden niemals verändert oder gelöscht. Jeder Eintrag enthält Timestamp und Session-Nummer (S01, S02, …).

R2 — Status/Priorität/Abhängigkeiten nur mit OK. Änderungen an Status, Priorität oder Abhängigkeiten eines Teilgebiets im zentral-index.md sind ausschließlich nach explizitem OK von Thomas erlaubt. Du triffst diese Entscheidungen nie eigenständig. Du darfst Änderungen vorschlagen.

R3 — Session-Nummerierung. Beim Session-Start ermittelst du aus der letzten Zeile von changelog.md die nächste Session-Nummer und verwendest sie für alle Checkpoints dieser Session.

R4 — Fragen vor Taten. Bei Unklarheiten fragst du Thomas, bevor du Annahmen triffst. Inhaltliche Marketing-Entscheidungen (Zielgruppe, Kanäle, Positionierung etc.) werden immer mit Thomas abgestimmt.

R5 — Artefakte getrennt halten. Fertige Materialien (Texte, Pläne, Vorlagen) werden in artefakte/NN-<teilgebiet>/ abgelegt, nicht in der Teilgebiet-Datei selbst. Die Teilgebiet-Datei referenziert die Artefakte.

R6 — Dateinamen. Teilgebiet-Dateien folgen dem Schema NN-<kurzname>.md (z.B. 01-positionierung.md). Die Nummer NN entspricht dem Eintrag im Zentral-Index.

R7 — Kein direkter Git-Commit und kein direkter Changelog-Edit. Du editierst changelog.md nicht direkt und führst auch keinen git commit aus. Beides geschieht ausschließlich über den Checkpoint-Workflow.

Checkpoint-Workflow

Ein Checkpoint fasst einen abgeschlossenen Arbeitsschritt zusammen und besteht aus zwei gekoppelten Aktionen: einem Eintrag in changelog.md und einem Git-Commit. Checkpoints können mehrfach pro Session erfolgen jedes Mal, wenn ein logischer Zwischenstand erreicht ist (z.B. ein Teilgebiet-Abschnitt fertig, ein Artefakt erstellt). Sie sollen aber auch immer am Session-Ende erfolgen, um den Stand zu sichern.

Ablauf:

  1. Der Agent hat inhaltliche Änderungen an marketing.md, zentral-index.md, Teilgebiet-Dateien oder Artefakten vorgenommen.
  2. Vor dem letzten Checkpoint einer Session zusätzlich: Aktualisiere den Abschnitt "Aktueller Stand / Nächste Aufgabe" am Ende dieser agent-prompt.md-Datei, sodass die nächste Session nahtlos starten kann.
  3. Der Agent schreibt die Datei .checkpoint-pending.txt im Repo-Root mit exakt diesem Format:
    S<NN>
    <kompakte Zusammenfassung in einer oder mehreren Zeilen>
    
    Zeile 1: Session-Nummer (z.B. S02). Zeile 2 und folgende: Zusammenfassung. Mehrere Zeilen werden von checkpoint.ps1 zu einem Satz zusammengeführt (Leerzeichen getrennt). Keine Pipes (|) in der Zusammenfassung, sie kollidieren mit dem Changelog-Format.
  4. Der Agent teilt Thomas mit: "Bitte checkpoint.cmd ausführen."
  5. Thomas doppelklickt checkpoint.cmd. Das Skript:
    • liest .checkpoint-pending.txt
    • hängt die Zeile YYYY-MM-DD HH:MM | S<NN> | <summary> an changelog.md an (Timestamp vom lokalen PC)
    • führt git add -A && git commit -m "S<NN>: <summary>" aus
    • löscht .checkpoint-pending.txt
  6. Thomas bestätigt im Chat, dass der Checkpoint gelaufen ist. Erst danach arbeitet der Agent weiter.

Fehlerfall: Scheitert checkpoint.cmd (z.B. git commit fehlgeschlagen), bleibt .checkpoint-pending.txt liegen. Thomas gibt das Problem an den Agenten zurück, der Diagnose und Korrektur vorschlägt.

Erste Aufgaben (nur beim allerersten Start relevant)

Falls marketing.md noch leere Platzhalter enthält und zentral-index.md noch keine Teilgebiete listet:

  1. marketing.md interaktiv befüllen. Stelle Thomas gezielte Fragen zu: Unternehmensdaten, Angebot, Zielgruppe(n), aktueller Positionierung, gewünschter Tonalität, vorhandenen Marketing-Aktivitäten, Zielen. Arbeite Abschnitt für Abschnitt, nicht alles auf einmal.
  2. Teilgebiete gemeinsam definieren. Schlage auf Basis von marketing.md eine Liste von Teilgebieten vor (z.B. Positionierung, Zielgruppenanalyse, Website, Content-Strategie, Social Media, Newsletter, SEO, Messen, …). Stimme Priorität und Abhängigkeiten mit Thomas ab und trage sie nach seiner Freigabe in zentral-index.md ein.
  3. Erste Teilgebiet-Datei anlegen für das priorisierte Thema und Einstieg in die Bearbeitung.

Setze zwischen sinnvollen Zwischenständen Checkpoints (z.B. nach "Marketing.md Abschnitte 1-3 befüllt", nach "Teilgebiete-Liste festgelegt").


Aktueller Stand / Nächste Aufgabe

Letzte Session: S09 (2026-04-27)

Was wurde in S09 gemacht:

S09 — Iteration „Links" in cv.md: alle nackten URLs auf explizite Markdown-Link-Syntax migriert, damit Pandoc echte Hyperlink-Elemente in DOCX (<w:hyperlink>) und PDF (\href) emittiert. E-Mail als Pandoc-Autolink-Form <email>, Telefon als [+49 ...](tel:+49...)-Link, Web-Links als [[text]](url) mit sichtbaren äußeren eckigen Klammern. Display-Texte „Link zum Profil" für LinkedIn/Freelance.de, „destengs.de" für Website (.com.de), „Dissertation" für Promotion, „Link zum Zertifikat (funktioniert nur im Browser)" für TÜV. TÜV-Link diagnostiziert: certif-id.com hinter Cloudflare-Bot-Schutz, Word-urlmon-Pre-Flight-Anfrage scheitert mit 403, Direkt-Klick aus Word funktioniert nicht trotz funktionierender URL im Browser. Optionen A (destengs.de-Redirect), B (LinkedIn-Safety-Redirect), C (kein Link) abgewogen, D gewählt: direkter Link mit erklärendem Display-Text. Detaillierte Doku siehe teilgebiete/01-lebenslauf.md Block „Iteration Links (S09)".

S09 — Iteration C: Foto-Einbindung via Grid Table.

  • Header-Layout als 2-Spalten-Grid-Table in cv.md (Name+Kontaktdaten links, Foto rechts), Spalten-Verhältnis 65:35 (LEFT_W=112, RIGHT_W=60 Striche).
  • Pandoc 3.x ist beim Pipe-Alignment in Grid Tables strikt (Pandoc 2.9 ist toleranter und damit irreführend für Sandbox-Tests). Grid Table programmatisch in Python aufbauen mit ljust(LEFT_W) und Pipe-Position-Eindeutigkeitscheck.
  • DOCX-Header-Spacing per neuer 4. Modifikation in build/post-process-docx.py (process_header_table): H1-spacing-before = 0, Foto-Paragraph-spacing-before = 5 pt + jc=right.
  • Foto-Größe 4,06 × 4,06 cm, beide Dimensionen explizit im Markdown — verhindert Pandoc-Default keepaspectratio,height=\textheight, der die Image-Layout-Box auf 24 cm Höhe streckt und das Tabellen-Layout zerschießt.
  • PDF-Layout via Pandoc-Lua-Filter build/header-image-wrap.lua: wrappt das Header-Foto im LaTeX-Output mit \hfill\raisebox{-\height}[0pt][0pt]{...}. \hfill schiebt rechtsbündig in der \raggedright-p-Spalte, \raisebox setzt Bild-Top auf Cell-Top und reportet null Höhe an die Tabellen-Zeile. Filter prüft FORMAT="latex" und Image-Pfad enthält „foto"; DOCX bleibt unberührt.
  • Lua-Filter-Erste-Version (Image durch RawInline ersetzt) hat Pandocs Image-Resource-Resolution gebrochen → File 'foto.jpg' not found. Fix: Filter gibt Lua-Liste zurück, in der das Original-img-Element zwischen RawInline-Wrappern erhalten bleibt.
  • Template-Hotfixes für PDF: \renewcommand{\nolinkurl}[1]{#1} (verhindert \@xverbatim-Bruch in longtable-Minipage durch URL-Display-Text-Verbatim), \titlespacing*{\section}{0pt}{0pt}{0.5em} (H1-Top-Alignment).
  • build/build.ps1: --lua-filter=$luaFilter zu PDF- und DOCX-Pandoc-Calls hinzugefügt; Read-Host-Wait-on-Error entfernt (blockiert AI-Agents/CI), durch Start-Sleep -Seconds 3 am Ende bei Fehler ersetzt.

Vier weitere Edit-Tool-Truncation-Vorfälle in S09 (cv.md, template.tex zweimal, build.ps1). Lehre verschärft: Edit-Tool für jede nicht-triviale Modifikation auf NTFS-Mount-Dateien meiden, generell Python-aus-git-HEAD- oder Python-aus-Disk-Pattern bevorzugen.

Nächste Aufgabe (S10) in dieser Reihenfolge (von Thomas vorgegeben):

  1. DOCX: Blau ist nicht DesTEngS-Blau. Heading-Farben prüfen — Soll: #3C68AE. build/build-reference-docx.py Funktion set_heading_colors setzt zwar <w:color w:val="3C68AE"/>, aber Word rendert ggf. trotzdem den Theme-Aptos-Blau, weil das Heading-Style einen themeColor-Verweis behält oder weil das Theme dominiert. Prüfen, ob das themeColor-Attribut wirklich entfernt ist und ob die Farbe direkt am Run statt am Stil gesetzt werden muss.
  2. Doublecheck der neu generierten Texte in cv.md. Mindestens „elektrischer Gehäuse" ist sinnverkehrt (vermutlich aus V9/V10-KI-Iterationen). cv.md komplett auf Sinn- und Sprachfehler durchgehen, vermutlich Konkordanz-/Stil-Fehler an mehreren Stellen.
  3. Buzzword-Kompetenzen-Brainstorm. Kenntnisse-Abschnitt erweitern. Mindestens „Umgang mit quantisierten LLMs" ergänzen. Weitere KI-Begriffe für Agentur-Keyword-Matching identifizieren (Quantization, GGUF, GPTQ, AWQ, Inference-Optimierung, vLLM, llama.cpp, Ollama-Deployment etc.).
  4. PDF: Abstände H1 / H2 „Kontaktdaten" / Kontaktdaten-Bullet-Liste stimmen nicht (Folge der C4c-Spacing-Änderung). Plus: hellgraue Trennlinien (rulegray = #BFBFBF) sind inakzeptabel — Farbe oder Linienführung überdenken (Trennlinien stehen nach H1 und H2 im titlesec-Format-Block).

Hinweise für die nächste Session:

  • Pandoc 3.x ist beim Grid-Table-Pipe-Alignment strikt (S09-Lehre). Grid Tables programmatisch bauen mit ljust()-Padding und Pipe-Position-Verifikation, nicht von Hand. Sandbox-Pandoc 2.9 ist toleranter und kann beim Testen den Eindruck erwecken, dass etwas funktioniert, was bei Thomas (Pandoc 3.x) nicht funktioniert.
  • Pandoc 3.x emittiert in p-Spalten mit nur einem Image-Element keine \begin{minipage}-Wrapper (S09-Lehre). Das Image landet direkt in der p{calc...}-Spalte und unterliegt der \parbox[t]-Baseline-Logik (Image-Bottom = Baseline = Cell-Top, Image ragt nach oben heraus). Lösung: Lua-Filter mit \raisebox{-\height}[0pt][0pt]{...}.
  • Pandoc emittiert für href mit URL-Display-Text \nolinkurl{} (Verbatim-Mode, S09-Lehre). In longtable-Minipage bricht das mit ! Paragraph ended before \@xverbatim was complete. ab. Fix mit \renewcommand{\nolinkurl}[1]{#1} ist drin.
  • Pandoc-3.x-keepaspectratio,height=\textheight-Default ist tückisch (S09-Lehre). Layout-Box wird auf textheight gestreckt selbst wenn das Bild visuell klein ist — beide Dimensionen explizit setzen, wenn das Bild in einer Tabelle ist.
  • Lua-Filter müssen das img-Element im AST belassen, sonst kein Resource-Path-Resolution (S09-Lehre). Lua-Liste-Return mit {RawInline, img, RawInline} statt einzelnes RawInline mit gebackenem Pfad.
  • Edit-Tool-Truncation auf NTFS-Mount-Dateien ist nach S07/S08/S09 ein systematisches Problem — durchgehend Python-aus-git-HEAD- oder Python-aus-Disk-Pattern verwenden (atomar via os.replace). Sandbox kann zudem stale-reads liefern (z.B. DOCX als „not a zip file"), bei Verdacht git-Version verifizieren oder Build neu erzeugen.
  • build.ps1 ist jetzt nicht-blockierend (S09-Lehre). AI-Agents und CI-Systeme können das Skript aufrufen ohne Read-Host-Hänger. Bei Fehler 3 s Pause am Ende plus 3 s pro fehlgeschlagenem Schritt.
  • Sandbox-Index-Lock-Issue: Sandbox kann nichts an .git/ schreiben (NTFS-Permission-Issue), Index-Lock-Reste muss Thomas auf PowerShell beseitigen. Bei dauerhaftem Lock-File-Vorhandensein zeigt git status eine Warning, aber lesende git-Operations (show, log) funktionieren weiter.
  • DOCX-Pipeline ist 3-stufig mit vier Post-Processing-Modifikationen: (1) build/build-reference-docx.py baut die reference.docx (manuell aufrufen), (2) build/build.ps1 baut PDF und DOCX, (3) build/post-process-docx.py macht: 3-3-Listen-Bullet-Regel, H2-Trennlinien, Bullet-Einzüge in numbering.xml, Header-Tabellen-H1-Spacing-und-Foto-Spacing.
  • Kein Hyphenation-Feintuning (Iteration D) in S09. Steht in S10-Liste hinter den vier Korrektur-Punkten.

Offene Punkte (unverändert seit S04): Zuschnitt und Festpreise der KI-Produkte (marketing.md Abschnitt 2), KMU-Direkthonorarsatz festlegen (marketing.md Abschnitt 2), Vergütungsmodell-Wahl bei erstem konkreten Fall (Notiz in marketing.md Abschnitt 2).