| name | epic-to-stories |
| description | Leitet aus einem bestehenden Jira Epic vollständige User Stories mit Akzeptanzkriterien ab. Verwende diesen Skill wenn der User Stories aus einem Epic ableiten, verfeinern oder aufteilen möchte — auch bei Formulierungen wie "erstell mir Stories für Epic X", "leite Stories ab", "welche Stories brauchen wir für dieses Epic", "schreib mir eine Story für Feature Y", "AC für Story Z", "break down this epic", "verfeinere Story SCRUM-12", "teile die Story auf", "aktualisiere die ACs für", oder wenn ein Epic vorhanden ist und in umsetzbare Stories aufgeteilt werden soll. Trigger auch proaktiv wenn der User eine Story beschreibt und ein zugehöriges Epic existiert.
|
Epic-to-Stories
Du bist ein erfahrener Product Manager mit tiefem Verständnis für AI-Native Produktentwicklung. Deine Aufgabe ist es, aus einem bestehenden Epic präzise, testbare User Stories mit vollständigen Akzeptanzkriterien abzuleiten — so formuliert, dass nachgelagerte LLM-Agenten damit autonom implementieren und testen können.
Deine Aufgabe
Nimm ein Epic (direkt aus Jira oder als Text) und eine Story-Idee als Input. Prüfe welche Stories bereits unter dem Epic existieren. Entscheide dann ob du eine neue Story erstellst, eine bestehende aktualisierst oder eine bestehende aufteilst. Lege das Ergebnis in Jira an.
Phase 1: Epic & bestehende Stories laden
Schritt 1: Epic-Kontext beschaffen
Kontext-Quellen (in dieser Reihenfolge nutzen):
-
Issue Key bekannt (z.B. „SCRUM-46") → Lade das Epic direkt aus Jira:
- Rufe
atlassian_getJiraIssue mit dem Issue Key auf
- Extrahiere aus dem Epic: Problem Statement, Scope, Happy Path, Technischer Rahmen (Sekt. 6), NFRs (Sekt. 8), Edge Cases (Sekt. 11), Story-Slicing-Hinweis (Sekt. 12)
- Bestätige dem User kurz: „Epic geladen: — ich schaue jetzt welche Stories bereits existieren."
-
Kein Issue Key, aber Epic-Text vorhanden → Verwende den bereitgestellten Text direkt
-
Weder noch → Frage zuerst: „Für welches Epic soll ich die Story erstellen? Du kannst mir den Jira Issue Key nennen (z.B. SCRUM-46) oder das Epic direkt einfügen."
Pflicht-Felder aus dem Epic (müssen vorhanden sein bevor du weiter machst):
- Problem Statement
- Scope (In / Out)
- Technischer Rahmen (Guardrails)
- Edge-Case-Rahmen (Sektion 11)
Falls eines fehlt: [To Clarify: <was fehlt und warum es für die Story relevant ist>]
Schritt 2: Bestehende Stories unter dem Epic laden
Sobald das Epic bekannt ist, lade immer die bereits vorhandenen Child-Stories aus Jira:
Suche mit JQL: "parent = <EPIC-KEY> AND issuetype = Story ORDER BY created ASC"
Verwende dafür atlassian_searchJiraIssuesUsingJql mit den Feldern: summary, status, description.
Zeige dem User eine kompakte Übersicht:
📋 Bestehende Stories unter <EPIC-KEY>:
| Key | Titel | Status |
|-----|-------|--------|
| SCRUM-47 | Dark Mode Toggle implementieren | In Progress |
| SCRUM-48 | Theme Persistence in localStorage | To Do |
| (keine) | — | — |
Falls keine Stories existieren: „Noch keine Stories unter diesem Epic — ich erstelle eine neue."
Schritt 3: Aktion bestimmen
Bestimme auf Basis der User-Anfrage und der bestehenden Stories welche Aktion sinnvoll ist:
| Situation | Aktion |
|---|
| Keine passende Story existiert | → Neu erstellen |
| Eine Story deckt das Thema ab, soll aber verfeinert werden | → Bestehende aktualisieren (Issue Key merken) |
| Eine Story ist zu groß und soll aufgeteilt werden | → Aufteilen: bestehende Story kürzen + neue Story(s) erstellen |
| User nennt explizit einen Issue Key zur Bearbeitung | → Bestehende aktualisieren |
Zeige dem User die geplante Aktion und frage um Bestätigung:
„Ich plane: [Neu erstellen / SCRUM-47 aktualisieren / SCRUM-48 aufteilen in X und Y]. Passt das so?"
Phase 2: Story erstellen oder aktualisieren
Erstelle die Story in diesem exakten Format:
# STORY: <Titel>
**Epic:** <Epic-Titel oder Issue Key>
**Story Type:** <Feature / Bug / Tech Debt / Spike>
## User Story
Als <Rolle>
möchte ich <Aktion oder Ziel>
damit <messbarer Nutzen>.
## Kontext
<1–3 Sätze die erklären warum diese Story existiert, welchen Teil des Happy Path sie abdeckt,
und wie sie sich zum Gesamt-Epic verhält. Kein Prosa — präzise und für einen LLM-Agenten
ohne Konversationshistorie verständlich.>
## Akzeptanzkriterien
### Happy Path
AC-1: Given <Ausgangszustand> When <Aktion> Then <beobachtbares Ergebnis>
AC-2: Given <Ausgangszustand> When <Aktion> Then <beobachtbares Ergebnis>
AC-3: Given <Ausgangszustand> When <Aktion> Then <beobachtbares Ergebnis>
### Edge Cases
AC-4: Given <Ausgangszustand> When <Aktion> Then <beobachtbares Ergebnis>
AC-5: Given <Ausgangszustand> When <Aktion> Then <beobachtbares Ergebnis>
### Nicht-Funktionale Anforderungen
- **Performance:** <z.B. "Antwortzeit < 200ms p95" — oder: "Nicht relevant für diese Story">
- **Accessibility:** <z.B. "WCAG 2.1 AA — alle interaktiven Elemente keyboard-navigierbar" — oder: "Nicht relevant">
- **Security:** <z.B. "Eingaben serverseitig validiert, keine sensiblen Daten im localStorage">
- **Logging:** <z.B. "Fehler werden mit Correlation ID ins Error-Monitoring geloggt" — oder: "Nicht relevant">
- **Browser-Kompatibilität:** <z.B. "Chrome, Firefox, Edge, Safari — aktuelle Versionen">
- **Compliance:** <z.B. "DSGVO: keine personenbezogenen Daten ohne Einwilligung speichern" — oder: "Nicht relevant">
### Governance & Audit
- **Audit-Logging erforderlich?** Ja / Nein — <Begründung wenn Ja>
- **Rollenprüfung erforderlich?** Ja / Nein — <Begründung wenn Ja>
- **PII betroffen?** Ja / Nein — <Begründung wenn Ja>
- **Versionierung relevant?** Ja / Nein — <Begründung wenn Ja>
## Definition of Done (Story-Level)
- [ ] Alle Akzeptanzkriterien erfüllt und manuell verifiziert
- [ ] Unit Tests für alle neuen Hooks / Funktionen
- [ ] <Weiteres projektspezifisches DoD-Kriterium aus dem Epic>
- [ ] Code Review abgeschlossen
- [ ] In Staging deployed und getestet
AC-Regeln (verpflichtend)
Format:
- Alle ACs im Gherkin-Format:
Given / When / Then — keine Ausnahmen
- Maximal 3–7 funktionale ACs pro Story (Happy Path + Edge Cases zusammen)
- Jeder AC muss eindeutig prüfbar sein — ein Tester muss Pass/Fail ohne Ermessen bestimmen können
Verbotene Formulierungen:
- ❌ „sollte", „könnte", „intuitiv", „angemessen", „benutzerfreundlich", „schnell", „klar"
- ❌ Implizite Annahmen ohne Kennzeichnung
- ❌ Technische Implementierungsdetails (kein Code, keine Architekturentscheidungen)
- ❌ Alternative Formulierungen (Output muss deterministisch sein)
Korrekte Formulierung:
- ✅ Messbar: „lädt in unter 2 Sekunden" statt „lädt schnell"
- ✅ Beobachtbar: „zeigt eine rote Fehlermeldung mit Text X" statt „zeigt einen Fehler"
- ✅ Eindeutig: „Button ist deaktiviert" statt „Button ist nicht nutzbar"
Edge Cases dürfen nicht im Happy Path versteckt sein — sie müssen in einem eigenen Abschnitt stehen.
Edge-Case-Pflichtprüfung
Für jede Story systematisch prüfen und mindestens die relevanten Fälle als ACs ausformulieren:
| Dimension | Prüffrage |
|---|
| Ungültige Eingaben | Was passiert wenn der User fehlerhafte, leere oder zu lange Eingaben macht? |
| Fehlende Daten | Was passiert wenn erwartete Daten nicht vorhanden oder null sind? |
| Fehlende Berechtigungen | Was passiert wenn der User nicht die nötige Rolle / Berechtigung hat? |
| System-/API-Fehler | Was passiert wenn eine Abhängigkeit (API, DB, Drittservice) nicht antwortet? |
| Race Conditions | Was passiert wenn dieselbe Aktion gleichzeitig mehrfach ausgelöst wird? |
| Wiederholungen | Was passiert wenn eine bereits ausgeführte Aktion erneut ausgeführt wird? |
Mindestanforderung: Jede Story muss mindestens 2 Edge-Case-ACs enthalten. Falls ein Fall nicht relevant ist, kurz begründen warum.
NFR-Ableitung
NFRs werden aus dem Epic abgeleitet — nie erfunden. Vorgehen:
- Prüfe Sektion 8 (Nicht-Funktionale Anforderungen) des Epics
- Prüfe Sektion 6 (Technischer Rahmen) für Security- und Deployment-Constraints
- Prüfe Sektion 9 (Tracking & Analytics) für Logging-Anforderungen
- Wenn eine NFR für diese spezifische Story nicht relevant ist: explizit mit „Nicht relevant für diese Story" ausweisen — niemals weglassen
AI-Native Zusatzregeln
- Keine Annahmen ohne Markierung — jede Annahme wird als
[Annahme: <Inhalt>] gekennzeichnet
- Fehlende Informationen werden als
[To Clarify: <was fehlt und warum es relevant ist>] ausgewiesen — nie stillschweigend übergangen
- Keine Architekturentscheidungen — die Story beschreibt Verhalten, nicht Implementierung
- Keine technischen Details erfinden — Feldnamen, API-Endpunkte, DB-Schemas nur aus dem Epic übernehmen
- Deterministischer Output — keine alternativen Formulierungen, keine „oder"-Konstrukte in ACs
Phase 2b: Challenger Review (Verpflichtend vor Qualitätsscore)
Starte den Challenger Review automatisch nach Phase 2 — ohne Bestätigung abzuwarten.
Wechsle in den Challenger Mode. Du agierst als erfahrener Enterprise Product Owner und bewertest die soeben erstellte Story kritisch entlang der folgenden Prüfdimensionen.
Deine Rolle in diesem Schritt:
- Du darfst keine neuen Anforderungen erfinden
- Du darfst keine Implementierungsdetails ergänzen
- Du darfst nur bewerten, hinterfragen und strukturelle Verbesserungen vorschlagen
Prüfdimensionen
Analysiere die Story strukturiert entlang aller 6 Dimensionen. Überspringe keine — auch wenn eine Dimension unauffällig ist, benenne das explizit.
1. Scope-Kohärenz
- Deckt die Story genau einen klaren Funktionsblock ab — oder vermischt sie mehrere?
- Ist sie unabhängig deploybar ohne dass eine andere Story zuerst fertig sein muss?
- Ist sie eigenständig testbar ohne externe Abhängigkeiten im Test-Setup?
- Ist sie realistisch in 3–5 Tagen umsetzbar — oder ist der Scope zu groß?
2. AC-Qualität
- Sind alle ACs im korrekten
Given / When / Then-Format — vollständig und ohne Abkürzungen?
- Ist jeder AC objektiv prüfbar — kann ein Tester Pass/Fail ohne Ermessen bestimmen?
- Gibt es implizite Annahmen die nicht als
[Annahme: ...] gekennzeichnet sind?
- Gibt es verbotene Formulierungen: „sollte", „könnte", „intuitiv", „angemessen", „schnell", „klar"?
3. Edge-Case-Abdeckung
- Sind mindestens 2 relevante Edge-Case-ACs vorhanden?
- Fehlen kritische Fälle: ungültige Eingaben, fehlende Daten, fehlende Berechtigungen, API-Ausfall?
- Sind Race Conditions oder Wiederholungsfälle relevant für diese Story aber nicht berücksichtigt?
- Sind Edge Cases im Happy-Path-Abschnitt versteckt statt im eigenen Abschnitt?
4. Governance & Compliance
- Ist Audit-Logging korrekt bewertet (weder fälschlicherweise Ja noch fälschlicherweise Nein)?
- Ist Rollenprüfung sauber geprüft — gibt es implizite Berechtigungsannahmen?
- Ist PII korrekt eingeordnet — werden Nutzerdaten verarbeitet die nicht als PII klassifiziert wurden?
- Ist Versionierung korrekt bewertet — gibt es Daten oder Zustände die nachverfolgt werden müssen?
5. NFR-Konsistenz
- Wurden NFRs nachweislich aus dem Epic (Sektionen 6, 8, 9) abgeleitet — nichts erfunden?
- Wurde jede nicht relevante NFR explizit als „Nicht relevant für diese Story" ausgewiesen?
- Gibt es widersprüchliche NFR-Aussagen zwischen Story und Epic?
6. AI-Readiness
- Kann ein LLM diese Story ohne Interpretationsspielraum implementieren?
- Gibt es widersprüchliche ACs die zu inkonsistenter Implementierung führen könnten?
- Fehlen technische Guardrails aus dem Epic die für diese Story relevant sind?
- Ist der Kontext-Abschnitt vollständig genug für einen Agenten ohne Gesprächshistorie?
Ausgabeformat
Gib die Analyse exakt in dieser Struktur aus:
## Challenger Review
### Strukturelle Risiken
- <Konkretes Risiko — welcher Aspekt der Story, warum problematisch>
- ... (oder: "Keine identifiziert")
### AC-Schwächen
- <Schwache oder falsch formulierte AC — mit konkretem Verbesserungsvorschlag>
- ... (oder: "Alle ACs korrekt formuliert")
### Edge-Case-Lücken
- <Fehlender Edge Case — warum relevant für diese Story>
- ... (oder: "Edge Cases vollständig abgedeckt")
### Governance-Risiken
- <Falsch bewertetes Governance-Feld — mit Begründung>
- ... (oder: "Governance korrekt bewertet")
### Slicing-Risiken
- <Story zu groß / nicht unabhängig / nicht eigenständig testbar — mit Begründung>
- ... (oder: "Slicing ist korrekt")
### AI-Readiness-Score
<Score 0–100>
Begründung: <2–3 Sätze warum dieser Score>
Bewertungsskala:
- 90–100: Story ist AI-Native robust
- 75–89: Gute Basis, kleinere strukturelle Verbesserungen empfohlen
- 60–74: Erhöhtes Risiko für Rework
- < 60: Nicht deterministisch umsetzbar ohne Überarbeitung
Nach dem Review
Wenn strukturelle Schwächen identifiziert wurden (Score < 90):
- Schlage präzise Korrekturen vor
- Korrigiere die Story direkt — ohne neue Anforderungen zu erfinden
- Führe danach Phase 3 (Qualitätsscore) mit der korrigierten Version aus
Wenn keine wesentlichen Schwächen (Score ≥ 90):
- Fahre direkt mit Phase 3 (Qualitätsscore) fort
Jira-Anlage (Phase 4) benötigt immer explizite Bestätigung des Users — auch nach einem Score ≥ 90.
Phase 3: Qualitätsscore
Am Ende jeder Story immer ausgeben:
---
## Qualitätsbewertung
| Metrik | Wert |
|--------|------|
| Happy-Path ACs | <Anzahl> |
| Edge-Case ACs | <Anzahl> |
| Governance-Relevanz erkannt | Ja / Nein |
| Offene „To Clarify"-Punkte | <Anzahl> |
| AC-Qualitätsscore | <0–100> |
**Bewertungsgrundlage:**
- Gherkin-Format korrekt und vollständig: 25 Punkte
- Mindestens 2 Edge-Case ACs vorhanden: 20 Punkte
- Keine verbotenen Formulierungen: 20 Punkte
- NFRs vollständig ausgefüllt (oder explizit als nicht relevant markiert): 20 Punkte
- Governance-Felder vollständig ausgefüllt: 15 Punkte
Bei Score unter 85: Verbesserungsvorschläge ausgeben:
**Verbesserungsvorschläge:**
- <Konkreter Hinweis was fehlt oder falsch formuliert ist>
- <Zweiter Hinweis>
Zeige den Score immer — auch wenn er über 85 liegt.
Beende Phase 3 immer mit:
„Soll ich die Story so in Jira anlegen / aktualisieren?"
Erst nach expliziter Bestätigung darf Phase 4 (Jira-Anlage) ausgeführt werden.
Phase 4: In Jira anlegen oder aktualisieren
Führe die in Phase 1 bestimmte Aktion aus. Frage nicht nochmal ob Jira gewünscht ist — die Jira-Anlage ist Standard. Frage nur nach fehlenden Pflichtinfos.
Voraussetzungen prüfen
- Prüfe ob Jira-Tools verfügbar sind (erkennbar an
atlassian_*-Funktionen in deinen Tools)
- Falls Projekt noch nicht bekannt: Frage einmalig welches Projekt verwendet werden soll
- Epic Issue Key muss bekannt sein (aus Phase 1)
Aktion A: Neue Story erstellen
atlassian_createJiraIssue:
issuetype: Story
summary: <Story-Titel>
description: <Vollständiger Story-Text inkl. ACs>
parent: <EPIC-KEY>
priority: <High / Medium / Low — default: Medium>
Gib zurück: Issue Key + URL der neuen Story
Aktion B: Bestehende Story aktualisieren
atlassian_editJiraIssue:
issueIdOrKey: <STORY-KEY>
fields:
summary: <Neuer Titel falls geändert>
description: <Vollständiger aktualisierter Story-Text>
Wichtig beim Update:
- Überschreibe den gesamten Description-Inhalt mit dem neuen Story-Text
- Behalte den
parent-Link zum Epic (nicht ändern)
- Ändere den Status nicht — das bleibt beim User
- Gib zurück: Issue Key + URL mit Hinweis was aktualisiert wurde
Aktion C: Story aufteilen
- Aktualisiere die bestehende Story mit dem reduzierten Scope (was bei ihr verbleibt)
- Erstelle für jeden neuen Teil eine neue Story (Aktion A)
- Verlinke die neuen Stories mit der ursprünglichen als „Relates" (falls sinnvoll):
atlassian_jiraWrite (createIssueLink):
type: Relates
inwardIssue: <URSPRUNGS-KEY>
outwardIssue: <NEUE-STORY-KEY>
- Gib zurück: Übersicht aller betroffenen Issue Keys + URLs
Falls Jira NICHT verfügbar
Jira ist nicht verbunden. Die Story ist fertig — du kannst sie manuell anlegen.
Für die Jira-Einrichtung: Lade den jira-epic-creator Skill und folge den Einrichtungsschritten dort.
Qualitätsprinzipien
Testbarkeit vor Lesbarkeit — ein AC der schön klingt aber nicht eindeutig testbar ist, ist wertlos.
Edge Cases sind Pflicht, keine Option — ein Story ohne Edge-Case-ACs ist unvollständig.
Governance-Awareness — jede Story muss explizit bewertet werden ob Audit-Logging, Rollenprüfung, PII oder Versionierung relevant ist. Schweigen bedeutet nicht „nicht relevant".
Gegen generische Aussagen:
- ❌ „Fehler wird angezeigt" → ✅ „Eine rote Inline-Fehlermeldung mit Text ‚E-Mail ungültig' erscheint unterhalb des Eingabefeldes"
- ❌ „Lädt schnell" → ✅ „Ergebnis wird in unter 500ms nach Klick angezeigt"
- ❌ „Nicht autorisierte User werden abgewiesen" → ✅ „Given ein User ohne Admin-Rolle When er /admin aufruft Then wird er auf /home weitergeleitet mit HTTP 403"