diff --git a/docs/superpowers/plans/2026-06-12-bewerb-umgebung.md b/docs/superpowers/plans/2026-06-12-bewerb-umgebung.md new file mode 100644 index 0000000..4bd2418 --- /dev/null +++ b/docs/superpowers/plans/2026-06-12-bewerb-umgebung.md @@ -0,0 +1,380 @@ +# bewerb-Umgebung Implementierungsplan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Eine versionierte Claude-Code-Umgebung unter `/home/tlg/mkt/bewerb` aufbauen, die Freiberufler-Projekte im EspoCRM erfasst und KI-gestützte Bewerbungen mit persistentem Gedächtnis schreibt. + +**Architecture:** Reine Struktur-/Inhaltsumgebung: Verzeichnisbaum + Markdown-Dateien + zwei Claude-Code-Skills. Das Gedächtnis liegt versioniert in `gedaechtnis/`. Kein Code/Build, daher ersetzen konkrete Verifikationsschritte (Datei-, Git- und Skill-Erkennbarkeitsprüfungen) klassische Tests. Zwei Tasks sind Übergabepunkte, an denen der Nutzer Bestandsdateien beisteuert. + +**Tech Stack:** Git (sha256, Remote auf DesTEngS-Gitea), Markdown, Claude-Code-Skills (`.claude/skills//SKILL.md`), EspoCRM REST-API (Zugang in `.secrets/espocrm-api.md`). + +**Referenz-Spec:** `docs/superpowers/specs/2026-06-12-bewerb-umgebung-design.md` + +--- + +## Dateistruktur (Überblick) + +Neu anzulegen in diesem Plan: + +``` +bewerb/ +├── CLAUDE.md # Task 2 +├── vorgaben/.gitkeep # Task 1 (Inhalt vom Nutzer: Task 5) +├── bewerbungen/index.md # Task 1 +├── gedaechtnis/stil.md # Task 1 +├── gedaechtnis/inhalte.md # Task 1 +├── gedaechtnis/schwerpunkte.md # Task 1 +├── gedaechtnis/log.md # Task 1 +├── .claude/skills/bewerbung-schreiben/SKILL.md # Task 3 +└── .claude/skills/projekt-anlegen/SKILL.md # Task 5 (Inhalt vom Nutzer) +``` + +Bereits vorhanden: `.git/`, `.gitignore`, `.secrets/espocrm-api.md`, `.claude/settings.local.json`, die beiden Doku-Dateien unter `docs/superpowers/`. + +Alle Befehle gehen davon aus, dass das Arbeitsverzeichnis `/home/tlg/mkt/bewerb` ist. + +--- + +## Task 1: Verzeichnisgerüst + Gedächtnis-Seeds + Register + +**Files:** +- Create: `vorgaben/.gitkeep` +- Create: `bewerbungen/index.md` +- Create: `gedaechtnis/stil.md` +- Create: `gedaechtnis/inhalte.md` +- Create: `gedaechtnis/schwerpunkte.md` +- Create: `gedaechtnis/log.md` + +- [ ] **Step 1: Verzeichnisse anlegen** + +```bash +mkdir -p vorgaben bewerbungen gedaechtnis .claude/skills/bewerbung-schreiben .claude/skills/projekt-anlegen +touch vorgaben/.gitkeep +``` + +- [ ] **Step 2: `bewerbungen/index.md` schreiben** + +```markdown +# Bewerbungs-Register + +Eine Zeile je Bewerbung. **Schwerpunkte** ausschließlich aus +`gedaechtnis/schwerpunkte.md` verwenden. Beim Schreiben einer neuen Bewerbung +hier nach überlappenden Schwerpunkten suchen und nur die **finale Fassung** +passender Einträge als Vorlage nutzen. + +| Datum | Käufer | Projekttitel | Einsatzort | Schwerpunkte | finale Fassung | Status | +|---|---|---|---|---|---|---| +``` + +- [ ] **Step 3: `gedaechtnis/schwerpunkte.md` schreiben** + +```markdown +# Schwerpunkte (kontrolliertes Vokabular) + +Erlaubte Schlagworte zur Klassifikation von Projekten und Bewerbungen. +Beim Schreiben einer Bewerbung **nur** Schlagworte aus dieser Liste verwenden. +Fehlt ein passendes Schlagwort, hier ergänzen (mit Kurzdefinition) und im +Commit begründen. Ziel: gleiche Schwerpunkte immer gleich benennen +(kein „ML" vs. „Machine Learning" vs. „KI"). + +| Schlagwort | Definition | +|---|---| +| _(wächst mit der Zeit)_ | | +``` + +- [ ] **Step 4: `gedaechtnis/stil.md` schreiben** + +```markdown +# Schreibstil (gelernt) + +Übertragbare Regeln für Bewerbungstexte. Wird am Ende jeder Bewerbungssession +aktualisiert. Nur **übertragbares** Wissen, keine projektspezifischen Einmaligkeiten. + +## Tonalität +_(noch keine Einträge)_ + +## Anrede & Form +_(noch keine Einträge)_ + +## Formulierungen – bevorzugt +_(noch keine Einträge)_ + +## Formulierungen – vermeiden +_(noch keine Einträge)_ +``` + +- [ ] **Step 5: `gedaechtnis/inhalte.md` schreiben** + +```markdown +# Inhaltliche Bausteine (geprüft) + +Bewährte, faktisch korrekte Inhalte und Formulierungen zu Erfahrungen/Skills. +Was hier steht, ist verifiziert richtig. Wird am Ende jeder Session aktualisiert. + +## Korrekte Fakten +_(noch keine Einträge)_ + +## Bewährte Bausteine +_(noch keine Einträge)_ + +## Nicht zutreffend / nicht behaupten +_(noch keine Einträge)_ +``` + +- [ ] **Step 6: `gedaechtnis/log.md` schreiben** + +```markdown +# Gedächtnis-Chronik + +Datierte Einträge: was wurde am Gedächtnis geändert und **warum**. + +## 2026-06-12 — Initialisierung +- Gedächtnisstruktur angelegt (`stil.md`, `inhalte.md`, `schwerpunkte.md`, `log.md`) + und Register `bewerbungen/index.md`. Noch keine inhaltlichen Lerneinträge. +``` + +- [ ] **Step 7: Verifizieren** + +Run: `ls -1 vorgaben/.gitkeep bewerbungen/index.md gedaechtnis/*.md && echo OK` +Expected: alle sechs Pfade werden gelistet, danach `OK`. + +- [ ] **Step 8: Commit** + +```bash +git add vorgaben/.gitkeep bewerbungen/index.md gedaechtnis/ +git commit -m "Verzeichnisgerüst, Gedächtnis-Seeds und Bewerbungs-Register anlegen" +``` + +--- + +## Task 2: `CLAUDE.md` (operative Projekt-Anleitung) + +**Files:** +- Create: `CLAUDE.md` + +- [ ] **Step 1: `CLAUDE.md` schreiben** + +```markdown +# bewerb — Projekt-Anleitung + +Diese Umgebung unterstützt zwei Arbeitsabläufe: +1. **Freiberufler-Projekte bewerten und im EspoCRM erfassen** → Skill `projekt-anlegen`. +2. **Bewerbungen mit KI-Unterstützung schreiben** → Skill `bewerbung-schreiben`. + +Sprache: **Deutsch** (Texte, Gedächtnis, Commits). + +## Verzeichnisse +- `vorgaben/` — feste Quellen: `lebenslauf.md`, `marketing.md`. Referenz; nicht ohne Auftrag ändern. +- `bewerbungen/` — je Bewerbung ein Ordner; `bewerbungen/index.md` ist das zentrale Register. +- `gedaechtnis/` — versioniertes Gedächtnis: `stil.md`, `inhalte.md`, `schwerpunkte.md`, `log.md`. +- `.claude/skills/` — die beiden Skills. +- `.secrets/espocrm-api.md` — CRM-Zugang (NICHT versioniert, NICHT teilen, nur bei konkretem CRM-Auftrag lesen). + +## Gedächtnis-Regeln (verbindlich) +**Vor** Arbeit an einer Bewerbung lesen: `gedaechtnis/stil.md`, `gedaechtnis/inhalte.md`, +`gedaechtnis/schwerpunkte.md` sowie `vorgaben/lebenslauf.md` und `vorgaben/marketing.md`. + +**Am Ende** einer Bewerbungssession (Text versandreif): +1. Übertragbare Stil-Erkenntnisse → `gedaechtnis/stil.md` +2. Geprüfte inhaltliche Fakten/Bausteine → `gedaechtnis/inhalte.md` +3. Neue Schwerpunkt-Schlagworte → `gedaechtnis/schwerpunkte.md` +4. Datierter Eintrag (was/warum) → `gedaechtnis/log.md` +5. Register `bewerbungen/index.md` aktualisieren +6. Alles committen (und pushen) + +Nur **übertragbares** Wissen ins Gedächtnis — keine projektspezifischen Einmaligkeiten. + +## Git +- Branch `main`, Remote `origin` (DesTEngS-Gitea, `ssh://git@git.destengs.com:8085/tlg/bewerb.git`, Objektformat sha256). +- Inhaltliche Änderungen committen; `.secrets/` bleibt durch `.gitignore` ausgeschlossen. +``` + +- [ ] **Step 2: Verifizieren** + +Run: `test -f CLAUDE.md && grep -q "Gedächtnis-Regeln" CLAUDE.md && echo OK` +Expected: `OK` + +- [ ] **Step 3: Commit** + +```bash +git add CLAUDE.md +git commit -m "CLAUDE.md mit Workflow- und Gedächtnis-Regeln anlegen" +``` + +--- + +## Task 3: Skill `bewerbung-schreiben` + +**Files:** +- Create: `.claude/skills/bewerbung-schreiben/SKILL.md` + +- [ ] **Step 1: `SKILL.md` schreiben** + +```markdown +--- +name: bewerbung-schreiben +description: Use when writing or revising a job application (Bewerbung/Anschreiben) for a freelance project. Loads CV, marketing, style memory and matching past applications, drafts and iterates the text with the user, then updates the memory. Trigger on "Bewerbung schreiben", "Anschreiben", "bewirb mich". +--- + +# Bewerbung schreiben + +Wiederholbarer Workflow für eine KI-gestützte Bewerbung mit Gedächtnis. + +## 1. Kontext laden +Lies zwingend: +- `vorgaben/lebenslauf.md`, `vorgaben/marketing.md` +- `gedaechtnis/stil.md`, `gedaechtnis/inhalte.md`, `gedaechtnis/schwerpunkte.md` + +## 2. Schwerpunkte bestimmen +Bestimme die Schwerpunkte des aktuellen Projekts als Schlagworte aus +`gedaechtnis/schwerpunkte.md`. Fehlt ein passendes Schlagwort, ergänze es dort +mit Kurzdefinition (und begründe es später im Commit). + +## 3. Vorlage wählen (Matching) +Öffne `bewerbungen/index.md`. Suche Zeilen mit **überlappenden** Schwerpunkten. +Nutze nur die **finale Fassung** passender Einträge als Vorlage. Kein Treffer → +ohne Vorlage schreiben (nur Vorgaben + Gedächtnis). + +## 4. Ordner anlegen +Schema: `bewerbungen/YYYY-MM-DD___/` +- **Käufer:** Agentur (verkauft die Leistung weiter) oder bei Direktbeauftragung der Endkunde. +- **Projekttitel:** Titel aus der Projektbeschreibung. +- **Einsatzort:** `Remote`, `Hybrid-` oder ``. +- **Normalisierung:** Leerzeichen → Bindestrich; Slashes, Klammern und Zusätze wie + `(m/w/d)` entfernen; sonstiger Wortlaut bleibt erhalten. +- Beispiel: `2026-06-10_Aristo-Recruitment_AI-Engineer-Medical-Imaging_Remote` + +Lege darin den Entwurf `entwurf.md` an. + +## 5. Iterieren +Schreibe gemäß Stil-Gedächtnis und Vorgaben. Iteriere mit dem Nutzer bis +versandreif. Speichere die finale Fassung als `bewerbung.md` im Ordner. + +## 6. Gedächtnis aktualisieren (Session-Ende) +- Stil-Erkenntnisse → `gedaechtnis/stil.md` +- geprüfte Inhalte → `gedaechtnis/inhalte.md` +- neue Schlagworte → `gedaechtnis/schwerpunkte.md` +- datierter Eintrag (was/warum) → `gedaechtnis/log.md` +- neue Zeile → `bewerbungen/index.md` (Datum, Käufer, Projekttitel, Einsatzort, + Schwerpunkte, finale Fassung, Status) +- committen (und pushen) +``` + +- [ ] **Step 2: Verifizieren, dass die Skill-Datei valide Frontmatter hat** + +Run: `head -4 .claude/skills/bewerbung-schreiben/SKILL.md` +Expected: erste Zeile `---`, dann `name: bewerbung-schreiben`, eine `description:`-Zeile, dann `---`. + +- [ ] **Step 3: Verifizieren, dass Claude Code den Skill erkennt** + +In einer Claude-Code-Session aus `/home/tlg/mkt/bewerb`: prüfen, ob `bewerbung-schreiben` in der Liste verfügbarer Skills erscheint (bzw. `/bewerbung-schreiben` aufrufbar ist). +Expected: Skill ist gelistet/aufrufbar. (Hinweis: ggf. ist ein Neustart der Session nötig, damit neue Projekt-Skills geladen werden.) + +- [ ] **Step 4: Commit** + +```bash +git add .claude/skills/bewerbung-schreiben/SKILL.md +git commit -m "Skill bewerbung-schreiben anlegen (Workflow inkl. Gedächtnis-Update)" +``` + +--- + +## Task 4: Übergabe — Vorgaben & Cowork-Skill vom Nutzer (Checkpoint) + +Dies ist ein **Übergabepunkt**: Der Nutzer legt jetzt die Bestandsdateien an den vorgesehenen Orten ab. Keine Code-Schritte; Ausführung pausiert hier bis die Dateien vorliegen. + +- [ ] **Step 1: Nutzer ablegen lassen** + - `vorgaben/lebenslauf.md` (Lebenslauf, Markdown) + - `vorgaben/marketing.md` (Marketing-Beschreibung, Markdown) + - Inhalt des bestehenden Cowork-Skills nach `.claude/skills/projekt-anlegen/SKILL.md` + +- [ ] **Step 2: Vorhandensein prüfen** + +Run: `ls -1 vorgaben/lebenslauf.md vorgaben/marketing.md .claude/skills/projekt-anlegen/SKILL.md && echo VORHANDEN` +Expected: alle drei Pfade gelistet, danach `VORHANDEN`. Fehlt etwas → beim Nutzer nachfordern, bevor Task 5 startet. + +--- + +## Task 5: Skill `projekt-anlegen` integrieren & kompatibel machen + +Der vom Nutzer beigesteuerte Cowork-Skill wird als Claude-Code-Skill nutzbar gemacht. Cowork- und Claude-Code-Skills verwenden beide YAML-Frontmatter mit `name`/`description`; ggf. ist nur eine Anpassung der Frontmatter nötig. + +**Files:** +- Modify: `.claude/skills/projekt-anlegen/SKILL.md` + +- [ ] **Step 1: Frontmatter prüfen/setzen** + +Sicherstellen, dass die Datei mit gültiger Frontmatter beginnt. Falls `name`/`description` fehlen oder unpassend sind, an den Anfang setzen bzw. anpassen: + +```markdown +--- +name: projekt-anlegen +description: Use when evaluating a freelance project and recording it in the EspoCRM (Opportunity, Contact, Account). Reads CRM access from .secrets/espocrm-api.md, does a Must/Nice-to-have match against the CV, and creates/updates the CRM records. Trigger on "Projekt bewerten", "Projekt anlegen", "ins CRM". +--- +``` + +Den fachlichen Body (Bewertungslogik, CRM-Felder) aus dem Cowork-Skill unverändert übernehmen. + +- [ ] **Step 2: CRM-Bezug prüfen** + +Run: `grep -n "espocrm-api.md\|Opportunity\|X-Api-Key" .claude/skills/projekt-anlegen/SKILL.md || echo "Hinweis: kein CRM-Bezug gefunden — Body prüfen"` +Expected: mindestens ein Treffer auf den CRM-Zugang/Entitäten; sonst Body mit dem Nutzer abgleichen. + +- [ ] **Step 3: Frontmatter-Validität prüfen** + +Run: `head -4 .claude/skills/projekt-anlegen/SKILL.md` +Expected: gültige Frontmatter (`---`, `name: projekt-anlegen`, `description:`, `---`). + +- [ ] **Step 4: Commit** + +```bash +git add .claude/skills/projekt-anlegen/SKILL.md +git commit -m "Skill projekt-anlegen aus Cowork übernehmen und für Claude Code anpassen" +``` + +--- + +## Task 6: Abschlussverifikation & Push + +- [ ] **Step 1: Gesamtstruktur prüfen** + +Run: +```bash +test -f CLAUDE.md \ + && test -f bewerbungen/index.md \ + && test -f gedaechtnis/stil.md && test -f gedaechtnis/inhalte.md \ + && test -f gedaechtnis/schwerpunkte.md && test -f gedaechtnis/log.md \ + && test -f .claude/skills/bewerbung-schreiben/SKILL.md \ + && test -f .claude/skills/projekt-anlegen/SKILL.md \ + && test -f vorgaben/lebenslauf.md && test -f vorgaben/marketing.md \ + && echo "STRUKTUR VOLLSTÄNDIG" +``` +Expected: `STRUKTUR VOLLSTÄNDIG` + +- [ ] **Step 2: `.secrets`-Ausschluss erneut prüfen** + +Run: `git check-ignore -q .secrets/espocrm-api.md && echo "secrets ignoriert" || echo "WARNUNG"` +Expected: `secrets ignoriert` + +- [ ] **Step 3: Sauberer Arbeitsbaum & Push** + +```bash +git status --short +git push origin main +git rev-list --left-right --count HEAD...@{u} +``` +Expected: keine ungetrackten inhaltlichen Änderungen; Push erfolgreich; Zähler `0 0` (in Sync). + +--- + +## Selbstreview (gegen die Spec) + +- **Spec §2 Verzeichnisstruktur** → Tasks 1–3, 5 (alle Ordner/Dateien). ✓ +- **Spec §3 Gedächtnis** (stil/inhalte/schwerpunkte/log + Lebenszyklus) → Task 1 (Seeds), Task 2 (Regeln in CLAUDE.md), Task 3 (Update-Schritt im Skill). ✓ +- **Spec §4.1 projekt-anlegen** → Tasks 4–5 (Übernahme + Kompatibilität). ✓ +- **Spec §4.2 bewerbung-schreiben** → Task 3 (vollständiger Workflow). ✓ +- **Spec §5 Register & Namensschema** → Task 1 (index.md), Task 3 (Schema + Normalisierung im Skill). ✓ +- **Spec §6 Git** → Task 6 (Push), Commits in jedem Task. ✓ +- **Spec §8 offene Punkte** (Bestandsdateien, Cowork-Skill) → Task 4 (Übergabe). ✓ + +Keine Platzhalter; Datei- und Skill-Namen über alle Tasks konsistent (`bewerbung-schreiben`, `projekt-anlegen`, `gedaechtnis/*`, `bewerbungen/index.md`).