Migrate all repos into monorepo context folders

Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
2026-06-30 20:39:52 +02:00
parent 2f2b295531
commit a5f8fb49ab
1717 changed files with 447332 additions and 0 deletions
@@ -0,0 +1 @@
{"specId": "2a1dd5ab-86c0-4f0f-b8fd-2c6e916fe712", "workflowType": "requirements-first", "specType": "feature"}
@@ -0,0 +1,414 @@
# Design Document: LinkedIn-Profil-Revamp
## Overview
Dieses Design beschreibt die technische Umsetzung eines neuen Kiro Skills `linkedin-profile` zur automatisierten Generierung und Optimierung von LinkedIn-Profilinhalten aus der bestehenden Knowledge Base. Der Skill erzeugt optimierte Texte für Headline, About-Section und Experience-Beschreibungen, generiert eine Content-Strategie und implementiert ein Tracking-System für LinkedIn-Metriken.
### Design-Entscheidungen
1. **Neuer Kiro Skill statt Standalone-Script** — Folgt dem etablierten Muster der bestehenden Skills (consultant-profile, cv-generate, talk-intro). Ermöglicht interaktive Nutzung und iterative Verfeinerung.
2. **KB als Single Source of Truth** — Alle LinkedIn-Inhalte werden aus den bestehenden YAML-Entities generiert. Keine Duplizierung von Daten.
3. **Tracking als YAML-Entity** — LinkedIn-Metriken werden als neue Entity-Kategorie `kb/tracking/` gespeichert, konsistent mit dem bestehenden Datenmodell.
4. **Markdown-Output mit strukturierten Sektionen** — Output-Dateien enthalten alle generierten Profilsektionen in einem einzigen Dokument, analog zum Talk-Intro-Skill.
5. **Constraint-Validierung zur Generierungszeit** — Zeichenlimits (220 für Headline, 2.600 für About) werden programmatisch validiert, nicht nur als Richtlinie.
6. **Content-Strategie als Template** — Die Content-Strategie wird als wiederverwendbares Template generiert, das quartalsweise aktualisiert werden kann.
## Architecture
```mermaid
graph TD
subgraph "Knowledge Base (kb/)"
Profile[profiles/andre-knie.yaml]
Experiences[experiences/*.yaml]
Skills[skills/*.yaml]
Projects[projects/*.yaml]
Orgs[organizations/*.yaml]
Tracking[tracking/*.yaml]
end
subgraph "Kiro Skill (.kiro/skills/linkedin-profile/)"
SkillMD[SKILL.md]
end
subgraph "Source Modules (src/linkedin/)"
HeadlineGen[headline-generator.ts]
AboutGen[about-generator.ts]
ExperienceGen[experience-generator.ts]
ContentStrategy[content-strategy.ts]
TrackingMgr[tracking-manager.ts]
Constraints[constraints.ts]
end
subgraph "Shared Modules (src/)"
Validate[schemas/validate.ts]
Types[schemas/types.ts]
YamlUtils[io/yaml-utils.ts]
EntityFiles[io/entity-files.ts]
end
subgraph "Output (output/linkedin/)"
ProfileDoc[profile-optimized.md]
StrategyDoc[content-strategy.md]
TrackingReport[tracking-report.md]
end
SkillMD -->|orchestrates| HeadlineGen
SkillMD -->|orchestrates| AboutGen
SkillMD -->|orchestrates| ExperienceGen
SkillMD -->|orchestrates| ContentStrategy
SkillMD -->|orchestrates| TrackingMgr
HeadlineGen -->|reads| Profile
HeadlineGen -->|reads| Experiences
AboutGen -->|reads| Profile
AboutGen -->|reads| Projects
ExperienceGen -->|reads| Experiences
ExperienceGen -->|reads| Skills
ExperienceGen -->|reads| Projects
ContentStrategy -->|reads| Profile
TrackingMgr -->|reads/writes| Tracking
HeadlineGen -->|validates| Constraints
AboutGen -->|validates| Constraints
ExperienceGen -->|validates| Constraints
HeadlineGen -->|uses| EntityFiles
AboutGen -->|uses| EntityFiles
ExperienceGen -->|uses| EntityFiles
TrackingMgr -->|uses| YamlUtils
HeadlineGen -->|writes| ProfileDoc
AboutGen -->|writes| ProfileDoc
ExperienceGen -->|writes| ProfileDoc
ContentStrategy -->|writes| StrategyDoc
TrackingMgr -->|writes| TrackingReport
```
### Komponenten-Interaktionsfluss
1. **Profil-Generierung**: User aktiviert Skill → Skill liest KB-Entities → generiert optimierte Texte → validiert Constraints → schreibt Output
2. **Content-Strategie**: User fordert Strategie an → Skill analysiert Profil und Themen → generiert Redaktionsplan → schreibt Template
3. **Tracking**: User gibt Metriken ein → Skill speichert als YAML → berechnet Trends → generiert Report
## Components and Interfaces
### 1. LinkedIn Profile Skill (`.kiro/skills/linkedin-profile/`)
Orchestriert die gesamte LinkedIn-Optimierung als Kiro Skill.
**Interface**: Manuell aktiviert durch User-Request.
**Verantwortlichkeiten**:
- Koordination der Generierungsmodule
- Interaktive Verfeinerung mit dem User
- Output-Management
### 2. Headline Generator (`src/linkedin/headline-generator.ts`)
Generiert optimierte LinkedIn-Headlines aus KB-Daten.
**Interface**:
```typescript
interface HeadlineOptions {
personId: string;
emphasis?: 'dual-role' | 'ai-expert' | 'leadership';
variants?: number; // default: 3
}
function generateHeadlines(options: HeadlineOptions): HeadlineResult;
interface HeadlineResult {
variants: HeadlineVariant[];
validation: ConstraintValidation;
}
interface HeadlineVariant {
text: string;
charCount: number;
keywords: string[];
roles: string[];
}
```
**Constraints**:
- Max 220 Zeichen
- Muss beide Rollen enthalten (DB InfraGO + Data Hive Cassel)
- Kein Fachjargon
- Mindestens ein differenzierendes Element
### 3. About Section Generator (`src/linkedin/about-generator.ts`)
Generiert die About-Section mit Hook, Story und CTA.
**Interface**:
```typescript
interface AboutOptions {
personId: string;
tone?: 'nahbar' | 'fachlich' | 'inspirierend';
includeStats?: boolean; // default: true
}
function generateAbout(options: AboutOptions): AboutResult;
interface AboutResult {
fullText: string;
charCount: number;
hookPreview: string; // erste 2 Zeilen (vor "mehr anzeigen")
sections: {
hook: string;
mission: string;
expertise: string;
cta: string;
};
validation: ConstraintValidation;
}
```
**Constraints**:
- Max 2.600 Zeichen
- Hook in ersten 2 Zeilen sichtbar
- Drei Kernthemen benannt
- Konkrete Belege enthalten
- CTA am Ende
### 4. Experience Generator (`src/linkedin/experience-generator.ts`)
Generiert wirkungsorientierte Experience-Beschreibungen.
**Interface**:
```typescript
interface ExperienceOptions {
personId: string;
experienceIds?: string[]; // specific experiences, or all if omitted
keywords?: string[]; // SEO keywords to include
}
function generateExperiences(options: ExperienceOptions): ExperienceResult[];
interface ExperienceResult {
experienceId: string;
title: string;
organization: string;
description: string;
keywords: string[];
achievements: string[];
validation: ConstraintValidation;
}
```
**Constraints**:
- Ergebnisse statt Aufgaben
- Relevante Keywords für LinkedIn-Suche
- Messbare Erfolge wo vorhanden
### 5. Content Strategy Generator (`src/linkedin/content-strategy.ts`)
Generiert einen strukturierten Content-Plan.
**Interface**:
```typescript
interface ContentStrategyOptions {
personId: string;
quarter: string; // e.g., "2026-Q3"
existingFormats?: string[]; // podcast, column, etc.
}
function generateContentStrategy(options: ContentStrategyOptions): ContentStrategy;
interface ContentStrategy {
postingFrequency: string;
themeCluster: ThemeCluster[];
weeklyPlan: WeeklySlot[];
engagementRoutine: EngagementRoutine;
formatMix: FormatMix;
}
```
### 6. Tracking Manager (`src/linkedin/tracking-manager.ts`)
Verwaltet LinkedIn-Metriken als YAML-Entities.
**Interface**:
```typescript
interface TrackingEntry {
id: string;
type: 'linkedin-tracking';
date: string; // ISO date
metrics: {
profileViews: number;
searchAppearances: number;
connectionRequests: number;
postImpressions?: number;
engagementRate?: number;
comments?: number;
reposts?: number;
};
posts?: PostMetric[];
}
interface PostMetric {
title: string;
date: string;
format: 'text' | 'carousel' | 'video' | 'newsletter';
impressions: number;
engagementRate: number;
comments: number;
reposts: number;
isBestPractice?: boolean;
}
function addTrackingEntry(entry: TrackingEntry): void;
function getWeeklyReport(weekOf: string): WeeklyReport;
function getMonthlyTrend(month: string): MonthlyTrend;
```
### 7. Constraint Validator (`src/linkedin/constraints.ts`)
Validiert LinkedIn-spezifische Constraints.
**Interface**:
```typescript
interface ConstraintValidation {
valid: boolean;
errors: ConstraintError[];
warnings: ConstraintWarning[];
}
interface ConstraintError {
field: string;
constraint: string;
actual: string | number;
limit: string | number;
}
function validateHeadline(text: string): ConstraintValidation;
function validateAbout(text: string): ConstraintValidation;
function validateExperience(text: string): ConstraintValidation;
```
## Data Models
### LinkedIn Tracking Entity (`kb/tracking/<date>.yaml`)
```yaml
id: linkedin-2026-w28
type: linkedin-tracking
created: 2026-07-13
modified: 2026-07-13
date: 2026-07-13
period: weekly
metrics:
profile-views: 142
search-appearances: 38
connection-requests: 12
post-impressions: 4500
engagement-rate: 4.2
comments: 23
reposts: 8
posts:
- title: "KI in der Bahn — was wirklich funktioniert"
date: 2026-07-10
format: text
impressions: 2100
engagement-rate: 5.1
comments: 14
reposts: 5
is-best-practice: true
- title: "Carousel: 5 Fehler bei der KI-Einführung"
date: 2026-07-12
format: carousel
impressions: 2400
engagement-rate: 3.8
comments: 9
reposts: 3
is-best-practice: false
```
### LinkedIn Profile Output (`output/linkedin/profile-optimized.md`)
```markdown
# LinkedIn-Profil — Dr. Andre Knie
Generated: 2026-07-13
## Headline (Variante 1)
[Generated headline text]
## Headline (Variante 2)
[Generated headline text]
## About Section
[Generated about text]
## Experience: Experte für Digitalisierung — DB InfraGO
[Generated experience description]
## Experience: Gründer & Geschäftsführer — Data Hive Cassel
[Generated experience description]
...
```
### Content Strategy Output (`output/linkedin/content-strategy.md`)
```markdown
# Content-Strategie LinkedIn — Q3 2026
Generated: 2026-07-13
## Posting-Frequenz
2 Beiträge pro Woche (Di + Do)
## Themen-Cluster
1. Innovation & Technologie (40%)
2. Mensch & Kultur (35%)
3. Verantwortung (25%)
## Wochenplan
...
## Engagement-Routine
...
## Format-Mix
...
```
### Erweiterung Graph Index
```yaml
# Neue Entity-Typen in graph-index.yaml
entities:
- id: linkedin-2026-w28
type: linkedin-tracking
name: LinkedIn Tracking KW28 2026
```
### Directory Structure (Erweiterungen)
```
project-root/
├── kb/
│ └── tracking/ # NEU: LinkedIn-Metriken
│ ├── linkedin-2026-w28.yaml
│ └── linkedin-2026-w29.yaml
├── src/
│ └── linkedin/ # NEU: LinkedIn-Module
│ ├── headline-generator.ts
│ ├── about-generator.ts
│ ├── experience-generator.ts
│ ├── content-strategy.ts
│ ├── tracking-manager.ts
│ ├── constraints.ts
│ └── linkedin.test.ts
├── output/
│ └── linkedin/ # NEU: LinkedIn-Outputs
│ ├── profile-optimized.md
│ ├── content-strategy.md
│ └── tracking-report.md
└── .kiro/
└── skills/
└── linkedin-profile/ # NEU: LinkedIn Skill
└── SKILL.md
```
@@ -0,0 +1,136 @@
# Requirements Document — LinkedIn-Profil-Revamp
## Einleitung
Dieses Dokument beschreibt die Anforderungen für die Überarbeitung des LinkedIn-Profils von Dr. Andre Knie. Ziel ist eine konsistente, professionelle und wirkungsvolle Präsenz, die seine Doppelrolle als Digitalisierungsexperte bei DB InfraGO und Gründer/Geschäftsführer von Data Hive Cassel widerspiegelt. Das Profil soll seine Expertise in KI, Change Management und Führung klar kommunizieren und ihn als Thought Leader im DACH-Raum positionieren.
## Glossar
- **Profil**: Das LinkedIn-Profil von Dr. Andre Knie (https://www.linkedin.com/in/knie)
- **Headline**: Die Überschrift direkt unter dem Namen auf LinkedIn (max. 220 Zeichen)
- **About_Section**: Der "Info"-Bereich des LinkedIn-Profils (max. 2.600 Zeichen)
- **Featured_Section**: Der "Im Fokus"-Bereich für angeheftete Inhalte
- **Experience_Section**: Der "Berufserfahrung"-Bereich mit Rollenbeschreibungen
- **Content_Strategie**: Der Plan für regelmäßige Beiträge und Interaktionen
- **Personal_Brand**: Die konsistente Außenwahrnehmung über alle Kanäle hinweg
- **Zielgruppe**: Die primären Adressaten der LinkedIn-Aktivitäten
- **Tracking_System**: Das System zur Erfassung und Auswertung von LinkedIn-Metriken
- **KPI**: Key Performance Indicator — eine messbare Kennzahl zur Erfolgsbewertung
## Requirements
### Requirement 1: Profil-Headline
**User Story:** Als LinkedIn-Nutzer möchte ich eine prägnante Headline haben, damit Besucher sofort verstehen, wofür ich stehe und welchen Mehrwert ich biete.
#### Acceptance Criteria
1. THE Headline SHALL kommunizieren, dass Dr. Andre Knie an der Schnittstelle von KI, Digitalisierung und Führung arbeitet
2. THE Headline SHALL beide Rollen (DB InfraGO und Data Hive Cassel) erkennbar machen
3. THE Headline SHALL maximal 220 Zeichen umfassen
4. THE Headline SHALL mindestens ein differenzierendes Element enthalten, das Neugier weckt
5. THE Headline SHALL ohne Fachjargon für ein breites Business-Publikum verständlich sein
### Requirement 2: About-Section
**User Story:** Als LinkedIn-Nutzer möchte ich eine überzeugende About-Section haben, damit Besucher meine Geschichte, Motivation und Expertise verstehen und zum Vernetzen motiviert werden.
#### Acceptance Criteria
1. THE About_Section SHALL mit einem aufmerksamkeitsstarken Einstieg beginnen, der in den ersten zwei Zeilen (vor "mehr anzeigen") sichtbar ist
2. THE About_Section SHALL die persönliche Mission kommunizieren: Angst vor Technologie und Veränderung überwinden und echten Mehrwert schaffen
3. THE About_Section SHALL die drei Kernthemen (Innovation/Technologie, Mensch/Kultur, Verantwortung) klar benennen
4. THE About_Section SHALL konkrete Belege für Expertise enthalten (60+ Publikationen, 13+ Jahre KI-Erfahrung, 50+ Projekte)
5. THE About_Section SHALL maximal 2.600 Zeichen umfassen
6. THE About_Section SHALL einen klaren Call-to-Action am Ende enthalten
7. THE About_Section SHALL in einem authentischen, nahbaren Ton verfasst sein
### Requirement 3: Experience-Beschreibungen
**User Story:** Als LinkedIn-Nutzer möchte ich aussagekräftige Beschreibungen meiner Berufserfahrungen haben, damit Besucher den Wert und die Wirkung meiner Arbeit nachvollziehen können.
#### Acceptance Criteria
1. WHEN eine Experience-Beschreibung erstellt wird, THE Experience_Section SHALL konkrete Ergebnisse und Wirkung statt Aufgabenbeschreibungen enthalten
2. WHEN eine Experience-Beschreibung erstellt wird, THE Experience_Section SHALL relevante Keywords für die LinkedIn-Suche enthalten
3. THE Experience_Section SHALL die aktuelle Rolle bei DB InfraGO als primäre Position darstellen
4. THE Experience_Section SHALL die Gründerrolle bei Data Hive Cassel mit messbaren Erfolgen beschreiben (50+ Projekte, 15+ Kunden, ROI über 2)
5. THE Experience_Section SHALL das JobSharing-Experiment bei DB Netz als Innovation in Führung hervorheben
6. THE Experience_Section SHALL die akademische Laufbahn (Promotion, Dozent) als Fundament für die KI-Expertise positionieren
### Requirement 4: Featured-Section-Strategie
**User Story:** Als LinkedIn-Nutzer möchte ich eine kuratierte Featured-Section haben, damit Besucher sofort meine besten Inhalte und Referenzen sehen.
#### Acceptance Criteria
1. THE Featured_Section SHALL maximal 5 Elemente enthalten, um Fokus zu gewährleisten
2. THE Featured_Section SHALL mindestens einen Inhalt pro Kernthema (KI/Technologie, Mensch/Kultur, Verantwortung) enthalten
3. THE Featured_Section SHALL regelmäßig (mindestens quartalsweise) aktualisiert werden
4. WHEN ein neuer hochperformanter Beitrag veröffentlicht wird, THE Featured_Section SHALL geprüft und bei Bedarf aktualisiert werden
5. THE Featured_Section SHALL eine Mischung aus Formaten enthalten (Beiträge, externe Links, Dokumente)
### Requirement 5: Content-Strategie
**User Story:** Als LinkedIn-Nutzer möchte ich eine konsistente Content-Strategie haben, damit ich regelmäßig Sichtbarkeit aufbaue und als Thought Leader wahrgenommen werde.
#### Acceptance Criteria
1. THE Content_Strategie SHALL eine Posting-Frequenz von mindestens 2 Beiträgen pro Woche vorsehen
2. THE Content_Strategie SHALL die drei Kernthemen (Innovation/Technologie, Mensch/Kultur, Verantwortung) abdecken
3. THE Content_Strategie SHALL bestehende Formate (Podcast "Almost Intelligent", Kolumne "Kniepunkt") als Content-Quellen einbinden
4. THE Content_Strategie SHALL eine Mischung aus Formaten vorsehen (Text, Carousel, Video, Newsletter)
5. THE Content_Strategie SHALL Interaktionszeiten und Engagement-Routinen definieren
6. WHEN ein Beitrag veröffentlicht wird, THE Content_Strategie SHALL sicherstellen, dass der Beitrag einen klaren Mehrwert für die Zielgruppe bietet
7. THE Content_Strategie SHALL Themen-Cluster definieren, die zur Personal_Brand passen
### Requirement 6: Skills und Endorsements
**User Story:** Als LinkedIn-Nutzer möchte ich eine optimierte Skills-Section haben, damit der LinkedIn-Algorithmus mein Profil für relevante Suchanfragen vorschlägt.
#### Acceptance Criteria
1. THE Profil SHALL maximal 50 Skills enthalten, priorisiert nach strategischer Relevanz
2. THE Profil SHALL die Top-5-Skills so wählen, dass sie die Kernpositionierung widerspiegeln (KI, Digitalisierung, Change Management, Führung, Innovation)
3. WHEN ein neuer Skill hinzugefügt wird, THE Profil SHALL sicherstellen, dass der Skill zur definierten Personal_Brand passt
4. THE Profil SHALL eine Strategie zur aktiven Einholung von Endorsements für die Top-Skills enthalten
### Requirement 7: Netzwerk-Strategie
**User Story:** Als LinkedIn-Nutzer möchte ich eine gezielte Netzwerk-Strategie haben, damit ich relevante Kontakte aufbaue und meine Reichweite in den Zielgruppen erhöhe.
#### Acceptance Criteria
1. THE Profil SHALL eine definierte Zielgruppe für Vernetzungsanfragen haben (Entscheider in Digitalisierung, KI-Community, Startup-Ökosystem, Bahn-Branche)
2. THE Profil SHALL personalisierte Vernetzungsnachrichten verwenden, die einen konkreten Anknüpfungspunkt benennen
3. THE Content_Strategie SHALL aktives Kommentieren bei relevanten Thought Leadern vorsehen (mindestens 5 Kommentare pro Woche)
4. WHEN eine Vernetzungsanfrage gesendet wird, THE Profil SHALL sicherstellen, dass die Anfrage einen Mehrwert oder gemeinsamen Kontext kommuniziert
5. THE Profil SHALL die bestehenden Netzwerke (KI-Peergroup Nordhessen, KI-Bundesverband, Science Park Kassel) aktiv auf LinkedIn abbilden
### Requirement 8: Traktion und Erfolgsmessung
**User Story:** Als LinkedIn-Nutzer möchte ich die Performance meiner Beiträge und meines Profils systematisch messen, damit ich datenbasiert entscheiden kann, welche Inhalte und Formate am besten funktionieren.
#### Acceptance Criteria
1. THE Tracking_System SHALL definierte KPIs für Beiträge erfassen (Impressionen, Engagement-Rate, Kommentare, Reposts, Klicks)
2. THE Tracking_System SHALL definierte KPIs für das Profil erfassen (Profilaufrufe, Suchergebnisse, Vernetzungsanfragen pro Woche)
3. THE Tracking_System SHALL eine wöchentliche Auswertung der Beitrags-Performance ermöglichen
4. THE Tracking_System SHALL eine monatliche Trendanalyse bereitstellen, die Wachstum und Top-Performer identifiziert
5. WHEN ein Beitrag eine überdurchschnittliche Engagement-Rate erzielt, THE Tracking_System SHALL diesen Beitrag als Best Practice markieren
6. THE Tracking_System SHALL die Daten in einem strukturierten Format speichern, das Vergleiche über Zeit ermöglicht
7. THE Tracking_System SHALL Empfehlungen für Content-Optimierung auf Basis der gemessenen Daten ableiten
### Requirement 9: Personal Branding und Konsistenz
**User Story:** Als LinkedIn-Nutzer möchte ich eine konsistente Personal Brand haben, damit meine Außenwahrnehmung über alle Kanäle einheitlich und wiedererkennbar ist.
#### Acceptance Criteria
1. THE Personal_Brand SHALL ein konsistentes visuelles Erscheinungsbild definieren (Profilfoto, Banner, Farbwelt)
2. THE Personal_Brand SHALL die Tonalität festlegen: nahbar, fachlich fundiert, inspirierend
3. THE Personal_Brand SHALL die Doppelrolle (Konzern + Startup) als Stärke und Alleinstellungsmerkmal positionieren
4. THE Personal_Brand SHALL mit der d-Hive Corporate Identity kompatibel sein (Schwarz/Neon-Grün als Akzente)
5. WHEN Inhalte auf LinkedIn veröffentlicht werden, THE Personal_Brand SHALL sicherstellen, dass die Inhalte zur definierten Positionierung passen
6. THE Personal_Brand SHALL einen wiedererkennbaren Claim oder Leitsatz enthalten
@@ -0,0 +1,199 @@
# Implementation Plan: LinkedIn-Profil-Revamp
## Overview
Implementierung eines neuen Kiro Skills `linkedin-profile` zur automatisierten Generierung und Optimierung von LinkedIn-Profilinhalten. Der Skill nutzt die bestehende Knowledge Base als Datenquelle und erzeugt optimierte Texte für Headline, About-Section, Experience-Beschreibungen, eine Content-Strategie sowie ein Tracking-System für LinkedIn-Metriken. Die Implementierung folgt den etablierten Mustern der bestehenden Skills (consultant-profile, cv-generate, talk-intro).
## Tasks
- [x] 1. Constraint-Validator und Typen erstellen
- [x] 1.1 LinkedIn-spezifische TypeScript-Interfaces in `src/linkedin/constraints.ts` definieren
- `ConstraintValidation`, `ConstraintError`, `ConstraintWarning` Interfaces
- Validierungsfunktionen: `validateHeadline(text)`, `validateAbout(text)`, `validateExperience(text)`
- Headline-Limit: 220 Zeichen, About-Limit: 2.600 Zeichen
- _Requirements: 1.3, 2.5_
- [x] 1.2 LinkedIn-Modul-Interfaces und Typen in `src/linkedin/types.ts` definieren
- `HeadlineOptions`, `HeadlineResult`, `HeadlineVariant`
- `AboutOptions`, `AboutResult`
- `ExperienceOptions`, `ExperienceResult`
- `ContentStrategyOptions`, `ContentStrategy`, `ThemeCluster`, `WeeklySlot`
- `TrackingEntry`, `PostMetric`, `WeeklyReport`, `MonthlyTrend`
- _Requirements: 1.11.5, 2.12.7, 3.13.6, 5.15.7, 8.18.7_
- [x] 1.3 Unit-Tests für Constraint-Validator schreiben
- Teste Headline-Validierung (unter/über 220 Zeichen)
- Teste About-Validierung (unter/über 2.600 Zeichen)
- Teste Experience-Validierung
- Teste Edge Cases (leere Strings, exakt am Limit)
- _Requirements: 1.3, 2.5_
- [x] 2. Headline Generator implementieren
- [x] 2.1 `src/linkedin/headline-generator.ts` erstellen
- Funktion `generateHeadlines(options: HeadlineOptions): HeadlineResult`
- KB-Entities lesen (Profile, Experiences) via `src/io/entity-files.ts`
- Mehrere Varianten generieren (default: 3)
- Beide Rollen (DB InfraGO + Data Hive Cassel) einbinden
- Constraint-Validierung via `constraints.ts` anwenden
- Keywords und differenzierende Elemente extrahieren
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5_
- [x] 2.2 Unit-Tests für Headline Generator schreiben
- Teste korrekte Extraktion beider Rollen aus KB
- Teste Zeichenlimit-Einhaltung
- Teste Variantengenerierung
- _Requirements: 1.11.5_
- [x] 3. About Section Generator implementieren
- [x] 3.1 `src/linkedin/about-generator.ts` erstellen
- Funktion `generateAbout(options: AboutOptions): AboutResult`
- KB-Entities lesen (Profile, Projects) via `src/io/entity-files.ts`
- Strukturierte Sektionen: Hook, Mission, Expertise, CTA
- Hook-Preview (erste 2 Zeilen) separat bereitstellen
- Konkrete Belege einbinden (60+ Publikationen, 13+ Jahre KI, 50+ Projekte)
- Drei Kernthemen benennen (Innovation/Technologie, Mensch/Kultur, Verantwortung)
- Constraint-Validierung (max. 2.600 Zeichen)
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7_
- [x] 3.2 Unit-Tests für About Generator schreiben
- Teste Zeichenlimit-Einhaltung
- Teste Vorhandensein aller Sektionen (hook, mission, expertise, cta)
- Teste Hook-Preview-Extraktion
- _Requirements: 2.12.7_
- [x] 4. Checkpoint — Kernmodule validieren
- Ensure all tests pass, ask the user if questions arise.
- [x] 5. Experience Generator implementieren
- [x] 5.1 `src/linkedin/experience-generator.ts` erstellen
- Funktion `generateExperiences(options: ExperienceOptions): ExperienceResult[]`
- KB-Entities lesen (Experiences, Skills, Projects) via `src/io/entity-files.ts`
- Ergebnisorientierte Beschreibungen statt Aufgabenlisten
- Keywords für LinkedIn-Suche einbinden
- Messbare Erfolge hervorheben (50+ Projekte, 15+ Kunden, ROI > 2)
- DB InfraGO als primäre Position, Data Hive mit Gründer-Achievements
- JobSharing-Experiment als Führungsinnovation positionieren
- Akademische Laufbahn als KI-Expertise-Fundament
- _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6_
- [x] 5.2 Unit-Tests für Experience Generator schreiben
- Teste korrekte Zuordnung von Experiences aus KB
- Teste Keyword-Einbindung
- Teste Ergebnis-Struktur (title, organization, description, achievements)
- _Requirements: 3.13.6_
- [x] 6. Content Strategy Generator implementieren
- [x] 6.1 `src/linkedin/content-strategy.ts` erstellen
- Funktion `generateContentStrategy(options: ContentStrategyOptions): ContentStrategy`
- Posting-Frequenz: 2 Beiträge/Woche
- Themen-Cluster mit Gewichtung (Innovation 40%, Mensch 35%, Verantwortung 25%)
- Wochenplan mit konkreten Slots
- Engagement-Routine (5+ Kommentare/Woche bei Thought Leadern)
- Format-Mix (Text, Carousel, Video, Newsletter)
- Bestehende Formate einbinden (Podcast "Almost Intelligent", Kolumne "Kniepunkt")
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7_
- [x] 6.2 Unit-Tests für Content Strategy Generator schreiben
- Teste Struktur des generierten Plans
- Teste Themen-Cluster-Vollständigkeit
- Teste Format-Mix-Abdeckung
- _Requirements: 5.15.7_
- [ ] 7. Tracking Manager implementieren
- [x] 7.1 `src/linkedin/tracking-manager.ts` erstellen
- Funktion `addTrackingEntry(entry: TrackingEntry): void`
- Funktion `getWeeklyReport(weekOf: string): WeeklyReport`
- Funktion `getMonthlyTrend(month: string): MonthlyTrend`
- YAML-Entities in `kb/tracking/` lesen/schreiben via `src/io/yaml-utils.ts`
- Best-Practice-Markierung bei überdurchschnittlicher Engagement-Rate
- Trend-Berechnung über Zeiträume
- Empfehlungen für Content-Optimierung ableiten
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7_
- [x] 7.2 KB-Verzeichnis `kb/tracking/` anlegen und Graph-Index erweitern
- Verzeichnis `kb/tracking/` mit `.gitkeep` erstellen
- Entity-Typ `linkedin-tracking` in `kb/graph-index.yaml` dokumentieren
- _Requirements: 8.6_
- [-] 7.3 Unit-Tests für Tracking Manager schreiben
- Teste YAML-Serialisierung/Deserialisierung von Tracking-Entries
- Teste Weekly-Report-Aggregation
- Teste Monthly-Trend-Berechnung
- Teste Best-Practice-Markierung
- _Requirements: 8.18.7_
- [x] 8. Checkpoint — Alle Module validieren
- Ensure all tests pass, ask the user if questions arise.
- [ ] 9. Kiro Skill erstellen und Module verdrahten
- [-] 9.1 `SKILL.md` für linkedin-profile Skill erstellen
- Datei: `.kiro/skills/linkedin-profile/SKILL.md`
- Skill-Metadaten (name, description, activation: manual)
- Workflow-Beschreibung: Profil-Generierung, Content-Strategie, Tracking
- Inputs dokumentieren (personId, emphasis, quarter, etc.)
- Outputs dokumentieren (profile-optimized.md, content-strategy.md, tracking-report.md)
- Shared Modules referenzieren
- Rules und Constraints definieren
- Muster von `talk-intro/SKILL.md` folgen
- _Requirements: 1.11.5, 2.12.7, 3.13.6, 4.14.5, 5.15.7, 9.19.6_
- [x] 9.2 Output-Verzeichnis `output/linkedin/` anlegen
- Verzeichnis mit `.gitkeep` erstellen
- _Requirements: 2.5, 5.7, 8.3_
- [x] 9.3 Profil-Output-Generierung verdrahten
- Headline, About und Experience Generatoren zu `output/linkedin/profile-optimized.md` zusammenführen
- Markdown-Template mit strukturierten Sektionen
- Generierungsdatum und Validierungsstatus einbinden
- _Requirements: 1.11.5, 2.12.7, 3.13.6_
- [x] 9.4 Content-Strategy-Output-Generierung verdrahten
- Content Strategy Generator zu `output/linkedin/content-strategy.md` zusammenführen
- Quartalsweise Template-Struktur
- _Requirements: 5.15.7_
- [x] 9.5 Tracking-Report-Output-Generierung verdrahten
- Tracking Manager zu `output/linkedin/tracking-report.md` zusammenführen
- Wöchentliche und monatliche Reports
- _Requirements: 8.18.7_
- [x] 10. Integration und Abschluss
- [x] 10.1 Export in `src/index.ts` ergänzen
- LinkedIn-Module exportieren
- _Requirements: alle_
- [x] 10.2 Integrationstests schreiben
- Teste End-to-End-Flow: KB lesen → Generierung → Output schreiben
- Teste Constraint-Validierung im Gesamtfluss
- Teste Tracking-Persistenz
- _Requirements: 1.11.5, 2.12.7, 3.13.6, 8.18.7_
- [x] 11. Final Checkpoint — Alle Tests und Integration validieren
- Ensure all tests pass, ask the user if questions arise.
## Notes
- Tasks marked with `*` are optional and can be skipped for faster MVP
- Each task references specific requirements for traceability
- Checkpoints ensure incremental validation
- Unit tests validate specific examples and edge cases
- The design has no Correctness Properties section, so no property-based tests are included
- All modules follow the existing project patterns (see `src/intro/`, `src/cv/`)
- YAML conventions from `.kiro/steering/kb-conventions.md` apply to tracking entities
## Task Dependency Graph
```json
{
"waves": [
{ "id": 0, "tasks": ["1.1", "1.2"] },
{ "id": 1, "tasks": ["1.3", "2.1", "7.2", "9.2"] },
{ "id": 2, "tasks": ["2.2", "3.1", "5.1", "6.1"] },
{ "id": 3, "tasks": ["3.2", "5.2", "6.2", "7.1"] },
{ "id": 4, "tasks": ["7.3", "9.1"] },
{ "id": 5, "tasks": ["9.3", "9.4", "9.5"] },
{ "id": 6, "tasks": ["10.1"] },
{ "id": 7, "tasks": ["10.2"] }
]
}
```