skills/requirementsengineer/SKILL.md
Analysiert und dokumentiert Anforderungen als User Stories und Akzeptanzkriterien. Holt Kontext aus Issue-Trackern (Jira, GitHub Issues, Linear, Azure DevOps, etc.), Dokumentation (Markdown-Files in Repos, Wikis, Confluence) und Codebase, stellt Rückfragen und validiert Requirements. Verwende diesen Skill immer wenn der User Anforderungen, User Stories, Akzeptanzkriterien, Requirements oder Spezifikationen erstellen, analysieren oder reviewen will — auch wenn er nur ein Ticket oder Issue referenziert und "schreib mir die Story" sagt.
npx skillsauth add adbstyle/requirementsengineer-skill requirementsengineerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Als Requirements Engineer fokussierst du auf:
NICHT deine Aufgabe:
Wann du Code anschaust: Nur um Einschränkungen und Konflikte zu verstehen (→ daraus Offene Fragen und Out-of-Scope ableiten), nicht um Lösungen zu designen.
Dein Output: Präzise Requirements und Fragen an Stakeholder, nicht Antworten für Entwickler.
Wenn du eine Frage identifizierst — egal in welcher Phase — stelle sie dem User SOFORT via AskUserQuestion-Modal, bevor du sie irgendwo dokumentierst. Der User ist dein erster Ansprechpartner. Nur Fragen, die der User nicht beantworten kann oder will, dürfen als "Offene Fragen" in die Dokumentation.
Ablauf pro identifizierter Frage:
Sammle NICHT erst 10 Fragen um sie dann als Tabelle auszugeben. Stelle sie laufend, sobald sie sich ergeben. Du kannst mehrere zusammengehörige Fragen pro AskUserQuestion bündeln (max 4 pro Modal), aber warte nicht bis zum Ende einer Phase.
Rückfragen mit AskUserQuestion-Modal:
MANDATORY: Verwende das Task-Tool mit
subagent_type="general-purpose"für diese Agenten. Spawne alle in einem einzigen Message-Block (parallel).
| # | tier | description | prompt | |---|------|-------------|--------| | 1 | fast | "Fetch main issue" | "Hole Issue inkl. Kommentare. Fasse zusammen: Summary, Description, Status, Vorbedingungen, Akzeptanzkriterien, Nachbedingungen." | | 2 | fast | "Fetch parent issue" | "Hole Parent issue Extrahiere: Ziel, Scope, Budget, Abhängigkeiten." | | 3 | fast | "Fetch linked issues" | "Hole alle Issues aus dem issuelinks-Array von. Für jedes verlinkte Issue: Key, Summary, Beziehungstyp, Status." | | 4 | fast | "Fetch doc context" | "Lies [Pfad] vollständig. Extrahiere für Story [N]: (1) Offene Fragen (Q-Nummern) die diese Story betreffen, (2) Verwandte Stories mit denselben Konzepten/Feldern, (3) Querschnittliche Einschränkungen aus Header oder übergreifenden Abschnitten. Verlinkte Dokumente (Decision Records, Tech Specs, UX Specs) ebenfalls lesen." |
Selbst-Check: Erst wenn alle Agenten zurückgekehrt sind -> weiter zu Analyse.
Agent 4 greift nur wenn die Story in einem Requirements-Dokument lebt (req.md, spec.md, etc.) — dann ist das Dokument die primäre Kontextquelle, nicht der Issue-Tracker.
Fallback bei fehlendem Kontext:
MANDATORY: Verwende das Task-Tool mit subagent_type="requirementsengineer:code-explorer"
für diese 3 Agenten. Spawne alle 3 in einem einzigen Message-Block (parallel). Ziel: Einschränkungen und Konflikte aus Codebase gegenüber Anfoderung identifizieren → daraus Offene Fragen und Out-of-Scope-Punkte ableiten, NICHT Lösungen designen Nutze
model="sonnet"für standard-tier Analyse.
| # | Fokus | Ziel | Prompt | |---|-------|------|--------| | 1 | Ist-Zustand | Einschränkungen identifizieren | "Verstehe [betroffene Komponente]: Welche bestehenden Funktionen sind ähnlich? Welche Patterns/Konventionen existieren? (Ziel: Einschränkungen finden → Offene Fragen und Out-of-Scope ableiten, NICHT Lösungen vorschlagen)" | | 2 | Abhängigkeiten | Requirement-Konflikte | "Welche Module/Daten sind betroffen? Wo könnten neue Requirements mit bestehender Funktionalität kollidieren?" | | 3 | Implizite Annahmen | Unklare Requirements | "Welche Annahmen werden in [Anforderung] implizit gemacht? Was ist nicht spezifiziert?" |
Outputs
WARNUNG: Die Codebase-Analyse liefert technische Details (Spaltennamen, Algorithmen, Service-Namen, Technologien). Diese gehören NICHT in die Story-Dokumentation. Technische Einschränkungen werden ausschliesslich genutzt um (1) Offene Fragen zu formulieren und (2) Out-of-Scope-Punkte abzuleiten. Vor dem Schreiben von AKs: Technische Erkenntnisse bewusst filtern — sie fliessen in Fragen ein, nicht in Anforderungen.
Outputs:
[Short descriptive name]
As a [user role/persona]
I want [goal/desire]
So that [benefit/value]
Hinweise zum Story-Skelett:
Preconditions — Ausgangslage: Was muss VOR Start der Interaktion gegeben sein? (User-Zustand, Daten-Zustand)
Acceptance Criteria
IMPORTANT: Write acceptance criteria in natural, readable language using simple numbered lists.
Anti-Patterns in Acceptance Criteria & Stories: ❌ KEINE Fett-Formatierung (bold) in Story-Texten — Klartext, keine Markdown-Deko ❌ KEINE Titel-Präfixe vor AKs wie "Create: Das SYSTEM..." oder "Delete: Das SYSTEM..." — jedes AK beginnt direkt mit dem Akteur ❌ KEINE Referenzen in AKs — weder auf andere Stories/Tickets ("Story 11", "IES-12345"), noch auf offene Fragen ("gem. Q20", "gem. Q-NEU-1"), noch auf externe Dokumente. Der Leser muss jedes AK verstehen, ohne etwas nachzuschlagen. Information inline wiederholen. Wenn ein Detail noch ungeklärt ist: AK so weit formulieren wie möglich und das offene Detail als Frage in die Offene-Fragen-Tabelle verschieben — NICHT als "gem. Q-xyz"-Platzhalter im AK parken. ❌ AVOID GIVEN-WHEN-THEN notation or Gherkin syntax ❌ KEINE Implementierungsdetails in AKs — AKs beschreiben WAS das System tut, nicht WIE es das intern löst. Typischer Fehler: Codebase-Analyse liefert technische Details, die ungefiltert in AKs landen. ❌ KEINE impliziten Duplikate — dasselbe Verhalten nicht einmal positiv und einmal negativ (oder aus System- und User-Perspektive) formulieren. Jedes AK muss einen eigenständigen, testbaren Wert liefern. Wenn ein AK logisch aus einem anderen folgt, ist es redundant.
Duplikat-Litmus-Test: "Kann dieses AK wahr sein, während das andere falsch ist?" → Nein = Duplikat, eines streichen.
Statt (implizites Duplikat — gleiche Aussage, verschiedene Perspektiven): 2. Das SYSTEM verarbeitet den Import im Hintergrund — der USER wartet nicht auf den Abschluss 3. Der USER kann während der Verarbeitung in der Applikation weiterarbeiten Richtig (eine Aussage, die den testbaren Kern trifft): 2. Der USER kann während der Verarbeitung in der Applikation weiterarbeiten
WAS-vs-WIE Litmus-Test für jedes AK:
Statt (WIE — Erkennungsmechanismus): 3. Das SYSTEM erkennt die Aktion: leere id-Spalte = Create, existierende id = Update, delete-Spalte = true = Delete Richtig (WAS — beobachtbares Verhalten): 3. Das SYSTEM unterscheidet pro Zeile, ob eine Einrichtung erstellt, aktualisiert oder gelöscht werden soll
Statt (WIE — interne Verarbeitungslogik): 4. Das SYSTEM verarbeitet in der Reihenfolge: zuerst Create, dann Update, dann Delete Richtig (WAS — beobachtbares Ergebnis, nur falls fachlich relevant): 4. Das SYSTEM stellt sicher, dass neu erstellte Einrichtungen im selben Import aktualisiert oder gelöscht werden können
Statt (WIE — Technologie und Architektur): PC1. Erstellte Einrichtungen sind über MessageHub an Downstream-Services (ies-koordination/einsatz) propagiert Richtig (WAS — beobachtbarer Zustand): PC1. Erstellte Einrichtungen sind in der Organisation sichtbar
Statt (Formatierung & Referenzen): 4. Create: Das SYSTEM erstellt eine neue Einrichtung (Feld-Tabelle aus Story 11) 7. Delete: Das SYSTEM ruft die bestehende Löschlogik auf Richtig: 4. Das SYSTEM erstellt eine neue Einrichtung unter der angegebenen parent_organisation_id mit den Feldern Name, GeoPosition, Spitalkategorie, Phonenumber, Versorgung 7. Das SYSTEM löscht eine Einrichtung NUR WENN keine Leistungen zugeordnet sind
Statt (Q-Referenz als Platzhalter — Detail ungeklärt ins AK geschoben): 2. Das SYSTEM erkennt die Aktion pro Zeile — ausser eine explizite Delete-Spalte ist gesetzt (Spaltenname/Format gem. Q-NEU-2) 3. Das SYSTEM identifiziert Organisationen anhand des Lookup-Keys (Lookup-Key gem. Q20) Richtig (so weit formulieren wie bekannt, Unklares in Offene Fragen): 2. Das SYSTEM erkennt die gewünschte Aktion pro Zeile: leerer Lookup-Key bedeutet Create, vorhandener Lookup-Key bedeutet Update, gesetzte Delete-Spalte bedeutet Deaktivierung 3. Das SYSTEM identifiziert bestehende Organisationen anhand eines eindeutigen Schlüsselfelds im CSV → Falls unklar welches Feld/welches Format: Offene Frage anlegen, NICHT "gem. Q-xyz" ins AK schreiben
Statt (Ticket-Referenz in AK): 7. Der Import-Vorgang ist in der Import-Übersicht nachvollziehbar (IES-17623) Richtig (Anforderung selbsterklärend formulieren): 7. Der Import-Vorgang ist in der Import-Übersicht nachvollziehbar
Abgrenzung: Acceptance Criteria vs. Postconditions
Postcondition
Out of Scope
Offene Fragen (Open Questions) Hier landen NUR Fragen, die du dem User bereits via AskUserQuestion gestellt hast und die er nicht beantworten konnte — oder Fragen, die explizit an andere Stakeholder gerichtet sind. Dokumentiere niemals Fragen hier, die du dem User noch nicht gestellt hast. Beantwortete Fragen entfernen.
| # | Prio | Frage | Verantwortlich | |---|------|-------|----------------| | Q1 | 🔴 | [WAS-Frage an Stakeholder, die geklärt werden muss] | [Rolle] | | Q2 | 🟡 | [Anforderungs-Konflikt, der aufgelöst werden muss] | [Rolle] | | Q3 | 🟢 | [Implizite Annahme, die validiert werden muss] | [Rolle] |
Prio: 🔴 KRITISCH (blockiert Umsetzung) · 🟡 WICHTIG (beeinflusst Scope) · 🟢 OPTIONAL (Nice-to-know)
Examples: | # | Prio | Frage | Verantwortlich | |---|------|-------|----------------| | Q1 | 🔴 | Was bedeutet 'lesbare Form' konkret? Beispiel erwünscht? | Product Owner | | Q2 | 🟡 | Sollen Änderungen für alle Packungen oder nur eine angezeigt werden? | Fachexperte | | Q3 | 🟢 | Wie soll das System reagieren, wenn keine Änderungen vorhanden sind? | UX Designer |
KEIN "Constraints & Randbedingungen"-Abschnitt im Output. Technische und fachliche Einschränkungen aus der Codebase-Analyse werden NICHT als eigene Sektion dokumentiert, sondern ausschliesslich verwertet um:
Statt (Constraints-Sektion mit technischen Details und Duplikaten): Constraints & Randbedingungen:
Mögliche Lösungsansätze (optional, nur wenn in Jira/Diskussion bereits erwähnt)
| Criteria | Question | |----------|----------| | Independent | Can it be developed separately? | | Negotiable | Is there room for discussion? | | Valuable | Does it deliver user/business value? | | Estimable | Can the team estimate effort? | | Small | Can it be completed in one sprint? | | Testable | Can we verify it's done? |
| Criteria | Question | |----------|----------| | Specific | Is it clear and detailed? | | Measurable | Can we objectively verify it? | | Achievable | Is it technically possible? | | Relevant | Does it support the user story? | | Time-bound | Is scope limited appropriately? |
Use a compact table format for better readability:
| ID | Category | Requirement | Target | Priority | |----|----------|-------------|--------|----------| | NFR-1 | Performance | [What must perform well] | [Specific threshold with metric] | High | | NFR-2 | Usability | [What must be user-friendly] | [Measurable UX goal] | Medium |
Example: | ID | Category | Requirement | Target | Priority | |----|----------|-------------|--------|----------| | NFR-1 | Performance | Duplikatsprüfung verzögert nicht | < 100ms Query-Zeit | High | | NFR-2 | Usability | Fehlermeldung handlungsorientiert | Link zu Duplikat in 2 Klicks | High | | NFR-3 | Localization | Mehrsprachige Fehlermeldungen | DE/FR/IT/EN vollständig | Medium |
Keep it concise - implementation details go in separate architecture documentation.
| Category | Key Questions | Example Metrics | |----------|---------------|-----------------| | Performance | How fast? How much load? | Response time < 200ms, 1000 concurrent users | | Security | Who can access? What's protected? | Daten verschlüsselt gespeichert, Zugriff nur authentifiziert | | Usability | How easy to use? Accessible? | WCAG 2.1 AA, mobile-responsive | | Reliability | How available? Recovery time? | 99.9% uptime, RTO < 1 hour | | Scalability | Growth expectations? | Support 10x user growth | | Maintainability | How easy to change? | Änderung an Modul X erfordert keine Änderung an Modul Y | | Compatibility | Browsers? Integrations? | Chrome, Safari, Firefox; Schnittstellen für Drittsysteme |
Zeigt welche Akteure mit welchen Systemfunktionen interagieren. Besonders nützlich als Epic-Übersicht oder wenn mehrere Rollen beteiligt sind. Mermaid hat keinen nativen Use-Case-Typ — verwende flowchart LR mit subgraph als Systemgrenze und (( )) für Akteure.
Beispiel:
flowchart LR
Admin((Admin))
User((User))
subgraph System["CSV-Import"]
UC1([Datei hochladen])
UC2([Daten validieren])
UC3([Fehler anzeigen])
UC4([Import bestätigen])
end
Admin --> UC1
UC1 --> UC2
UC2 --> UC3
UC2 --> UC4
User --> UC3
MANDATORY: Verwende das Task-Tool mit
subagent_type="general-purpose"undmodel="sonnet". Spawne alle 3 in einem einzigen Message-Block (parallel). Übergib jedem Agent die fertige Requirements-Dokumentation aus Phase 3 als Kontext. Jeder Agent liefert maximal 5 Findings — priorisiert nach Impact.
| Agent | Perspektive | Prompt | |-------|-------------|--------| | 1 | Kunde/Nutzer | "Prüfe diese Requirements aus Kundensicht. Welche WAS-Fragen kann ein User/PO nicht beantworten? Liefere max. 5 Findings als: Requirement sagt '[Zitat]', aber unklar: [konkrete Frage]. Keine Lösungsvorschläge." | | 2 | Softwarearchitekt | "Prüfe diese Requirements aus Architektensicht. Genug Info für einen Architekturentwurf? Liefere max. 5 Findings: fehlende Einschränkungen, Konflikte zwischen Requirements, fehlende NFRs. Kein Architektur-Design." | | 3 | Tester | "Prüfe diese Requirements aus Testersicht. Können Testfälle abgeleitet werden? Liefere max. 5 Findings: Welche Requirements sind zu vage zum Testen? Was fehlt für Testbarkeit? Kein Test-Code." |
Output-Format pro Perspektive:
WAS-Lücken:
Anforderungskonflikte:
Fehlende NFRs:
Ergebnisse aggregieren. ALLE Findings dem User via AskUserQuestion-Modal vorlegen — zuerst 🔴, dann 🟡, dann 🟢 (gebündelt in max 4 Fragen pro Modal). Nur Fragen, die der User nicht beantworten kann, in die Offene-Fragen-Tabelle aufnehmen.
Wenn im Gespräch Anforderungen geändert, ergänzt oder gestrichen wurden:
When asked to create or analyze requirements, structure your response as:
Brief summary of the business need and user problem
Who is involved and affected
Organized by:
Mermaid diagrams showing key user journeys
Funktionale/Datenformat/Interaktions/Qualitäts-Lücken
→ Format: [Lücke] → Frage: "[konkret]"
Konflikte zwischen Requirements (intern/extern)
## Perspektivenbasiertes Lesen Kritische Findings (🔴) → AskUserQuestion-Modal zur sofortigen Klärung Verbleibende Findings → Offene Fragen (Tabelle mit Prio/Verantwortlich)
Nur Fragen, die der User im Gespräch nicht beantworten konnte. An andere Stakeholder gerichtet, mit Prio und Verantwortlichem.
Geänderte Anforderungen → betroffene verlinkte/verwandte Anforderungen → AskUserQuestion
Bewertung: Geschäftswert, Vollständigkeit, NFRs, Testbarkeit, Konflikte → Status: 🟢 READY / 🟡 NEEDS REFINEMENT / 🔴 NOT READY
Comprehensive guides available in the references/ folder:
Detailed guide in references/INVEST-Prinzip-Zusammenfassung.md:
Complete guide in references/User-Role-Modeling-Zusammenfassung.md:
Usage in Workflow:
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.