new skills

This commit is contained in:
martin 2026-02-20 22:25:28 +01:00
parent 334dd87994
commit a87d6da87f
2 changed files with 275 additions and 0 deletions

View File

@ -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: <description of the todo>
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)

View File

@ -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/`.