diff --git a/skills/create-todo/SKILL.md b/skills/create-todo/SKILL.md new file mode 100644 index 0000000..75a3a37 --- /dev/null +++ b/skills/create-todo/SKILL.md @@ -0,0 +1,66 @@ +--- +name: create-todo +description: Use when creating structured todo files for any project. Reads CLAUDE.md for project context, identifies affected files via codebase search, and writes todos to the todos/ folder. +argument-hint: +allowed-tools: Read, Write, Edit, Glob, Grep +--- + +# Create Todo + +Creates structured todo files in the `todos/` directory of the current project. + +## Workflow + +### Step 1: Gather Project Context + +1. Read the project's `CLAUDE.md` to understand tech stack, architecture, and conventions +2. Parse the user's request to identify the affected area +3. Use Glob/Grep to find relevant files in the codebase if affected files are not obvious + +### Step 2: Choose Filename + +Format: `kebab-case-description.md` in the `todos/` directory. + +Create `todos/` if it doesn't exist. + +### Step 3: Write Todo + +Use this template: + +```markdown +# [Short, precise title] + +**Status:** Open +**Priority:** High | Medium | Low +**Area:** [module/app/component name] + +## Description + +[What needs to be done - clear and concise] + +## Requirements + +1. [Concrete requirement] +2. [Concrete requirement] + +## Affected Files + +- `path/to/file` - [What to change] + +## Technical Notes + +[Relevant patterns, reusable functions, conventions from CLAUDE.md] + +## Acceptance Criteria + +- [ ] Criterion 1 +- [ ] Criterion 2 +``` + +## Rules + +1. **Be specific** - "Add column X to table Y" not "Improve table" +2. **Name files** - Always list concrete paths from codebase search +3. **Reference patterns** - Point to similar existing solutions found in the code +4. **No implementation** - Describe WHAT, not HOW in detail +5. **Use project language** - Match the language of CLAUDE.md and user request (German/English) diff --git a/skills/schedule-analyzer/SKILL.md b/skills/schedule-analyzer/SKILL.md new file mode 100644 index 0000000..88bec1d --- /dev/null +++ b/skills/schedule-analyzer/SKILL.md @@ -0,0 +1,209 @@ +--- +name: schedule-analyzer +description: Analysiert Fußball-Spielpläne (JSON) auf Fairness, Verteilung, Muster und Optimierungspotenzial. Für Heim/Auswärts-Serien, Reisebelastung, Wettbewerbsgleichheit. +argument-hint: [analyse-typ] z.B. fairness, reise, muster +allowed-tools: + - Read + - Glob + - Grep + - Bash + - WebSearch +disable-model-invocation: false +--- + +# Fußball-Spielplan-Analysator + +Spezialisierter Skill zur tiefgehenden Analyse von Fußball-Spielplänen. Erkennt strukturelle Probleme, Fairness-Ungleichgewichte und Optimierungspotenziale. + +## Wann verwenden + +- Analyse von Spielplan-JSON-Dateien auf Fairness und Verteilung +- Erkennung von Heim/Auswärts-Serien und deren Auswirkungen +- Bewertung von Reisebelastung und Regenerationszeiten +- Identifikation von Scheduling-Mustern und Anomalien +- Vergleich verschiedener Spielplan-Varianten +- Vorbereitung von Optimierungs-Empfehlungen + +## JSON-Datenstruktur + +Erwartetes Format der Spielplan-JSON: + +```json +[ + { + "round": 1, + "date": "2026-09-01", + "kickoff_time": "15:30", + "team_a": { + "name": "FC Bayern München", + "country": "GER" + }, + "team_b": { + "name": "Borussia Dortmund", + "country": "GER" + } + } +] +``` + +**Felder:** +- `round`: Spieltag-Nummer +- `date`: Datum im ISO-Format (YYYY-MM-DD) +- `kickoff_time`: Anstoßzeit (optional, kann leer sein) +- `team_a`: Heimmannschaft mit `name` und `country` +- `team_b`: Auswärtsmannschaft mit `name` und `country` + +## Analyse-Kategorien + +### 1. Fairness-Analyse + +Prüfe auf Ungleichgewichte: + +- **Heim/Auswärts-Verhältnis**: Jedes Team sollte gleich viele Heim- wie Auswärtsspiele haben +- **Aufeinanderfolgende Heim/Auswärts-Spiele**: Serien von >2 aufeinanderfolgenden Heim- oder Auswärtsspielen sind problematisch +- **Spieltagsverteilung**: Gleiche Anzahl Spiele pro Spieltag für alle Teams +- **Wochenend- vs. Wochentagsspiele**: Faire Verteilung über die Saison + +```python +# Beispiel-Metriken berechnen +def analyze_home_away_balance(schedule): + team_stats = {} + for game in schedule: + home = game['team_a']['name'] + away = game['team_b']['name'] + + if home not in team_stats: + team_stats[home] = {'home': 0, 'away': 0} + if away not in team_stats: + team_stats[away] = {'home': 0, 'away': 0} + + team_stats[home]['home'] += 1 + team_stats[away]['away'] += 1 + + return team_stats +``` + +### 2. Serien-Erkennung + +Identifiziere kritische Muster: + +- **Heim-Serien**: Mehr als 2 Heimspiele hintereinander +- **Auswärts-Serien**: Mehr als 2 Auswärtsspiele hintereinander (besonders belastend) +- **Englische Wochen**: Spiele mit <5 Tagen Abstand +- **Regenerationslücken**: Zu lange Pausen (>14 Tage) zwischen Spielen + +```python +def detect_streaks(schedule, team_name): + games = sorted([g for g in schedule + if g['team_a']['name'] == team_name + or g['team_b']['name'] == team_name], + key=lambda x: x['date']) + + streaks = {'home': [], 'away': []} + current_home_streak = 0 + current_away_streak = 0 + + for game in games: + is_home = game['team_a']['name'] == team_name + if is_home: + current_home_streak += 1 + if current_away_streak > 0: + streaks['away'].append(current_away_streak) + current_away_streak = 0 + else: + current_away_streak += 1 + if current_home_streak > 0: + streaks['home'].append(current_home_streak) + current_home_streak = 0 + + return streaks +``` + +### 3. Reisebelastungs-Analyse + +Für internationale Wettbewerbe oder große Ligen: + +- **Gesamtreisestrecke** pro Team (erfordert Geodaten) +- **Back-to-Back Auswärtsreisen**: Zwei Auswärtsspiele nacheinander +- **Zeitzonen-Wechsel**: Bei internationalen Spielplänen +- **Geografische Cluster**: Nahe beieinander liegende Auswärtsspiele + +### 4. Saisonverlaufs-Muster + +- **Schwierigkeitsgrad-Verteilung**: Top-Teams gleichmäßig über die Saison verteilt? +- **Derby-Termine**: Lokale Derbys nicht zu früh/spät? +- **Saisonstart/-ende**: Keine unverhältnismäßige Häufung von schweren Spielen + +## Ausgabeformat + +Strukturiere die Analyse wie folgt: + +```markdown +## Spielplan-Analyse: [Dateiname] + +### Übersicht +- **Anzahl Spiele**: X +- **Anzahl Teams**: Y +- **Zeitraum**: DD.MM.YYYY - DD.MM.YYYY +- **Spieltage**: Z + +### Fairness-Bewertung +| Team | Heim | Auswärts | Balance | +|------|------|----------|---------| +| ... | ... | ... | ... | + +### Kritische Befunde +1. **[HOCH]** Team X hat 4 Auswärtsspiele in Folge (Runde 5-8) +2. **[MITTEL]** Ungleiche Wochenendverteilung für Team Y +3. **[NIEDRIG]** ... + +### Serien-Übersicht +- Längste Heim-Serie: Team A (3 Spiele, Runde 2-4) +- Längste Auswärts-Serie: Team B (4 Spiele, Runde 5-8) + +### Empfehlungen +1. Tausche Spiel in Runde X mit Runde Y für Team Z +2. ... +``` + +## Analyse-Workflow + +1. **Datei laden**: JSON-Spielplan einlesen und validieren +2. **Grundmetriken berechnen**: Teams, Spiele, Zeitraum +3. **Team-basierte Analyse**: Für jedes Team Heim/Auswärts-Statistiken +4. **Serien erkennen**: Aufeinanderfolgende Heim/Auswärts-Spiele finden +5. **Kritische Punkte identifizieren**: Verstöße gegen Fairness-Regeln +6. **Empfehlungen formulieren**: Konkrete Verbesserungsvorschläge + +## Best Practices + +### Schwellenwerte + +| Metrik | Akzeptabel | Warnung | Kritisch | +|--------|------------|---------|----------| +| Heim/Auswärts-Differenz | 0 | 1 | >1 | +| Heim-Serie | 2 | 3 | >3 | +| Auswärts-Serie | 2 | 3 | >3 | +| Tage zwischen Spielen | 5-10 | 3-4 / 11-14 | <3 / >14 | + +### Priorisierung + +1. **Hoch**: Auswärts-Serien >3, extreme Ungleichgewichte +2. **Mittel**: Heim-Serien >3, ungleiche Wochenendverteilung +3. **Niedrig**: Kleinere Abweichungen, Optimierungspotenzial + +## Beispiel-Prompts + +Wenn der Benutzer `/schedule-analyzer` aufruft: + +- "Analysiere den Spielplan auf Fairness" +- "Zeige mir alle Teams mit Auswärts-Serien von mehr als 2 Spielen" +- "Welches Team hat die ungünstigste Spieltagsverteilung?" +- "Vergleiche die Reisebelastung der Top-4-Teams" +- "Gibt es englische Wochen im Spielplan?" + +## Integration mit league-ai + +Dieser Skill ergänzt die bestehende `LLMService`-Analyse durch strukturierte, regelbasierte Auswertung. Die KI-gestützte Interpretation kann auf den berechneten Metriken aufbauen. + +Spielplan-Dateien befinden sich in `data/schedules/`.