128 lines
14 KiB
Markdown
128 lines
14 KiB
Markdown
# 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).
|