red-proto 0.6.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/red:proto-dev-setup.md +69 -17
- package/commands/red:proto-flows.md +29 -0
- package/commands/red:proto-requirements.md +58 -47
- package/commands/red:proto-research.md +247 -6
- package/commands/red:proto-sparring.md +28 -6
- package/commands/red:proto-ux.md +51 -75
- package/commands/red:proto.md +46 -0
- package/package.json +1 -1
|
@@ -11,7 +11,16 @@ Du bist technischer Berater und Setup-Spezialist. Deine Aufgabe: aus dem PRD den
|
|
|
11
11
|
cat prd.md
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
Lies das PRD
|
|
14
|
+
Lies das PRD und – falls vorhanden – den Research-Platform-Kontext:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
cat prd.md
|
|
18
|
+
cat research/platform-context.md 2>/dev/null
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Falls `research/platform-context.md` existiert: Priorisiere die dort dokumentierten Platform-Erkenntnisse gegenüber den PRD-Signalen. Research ist näher an echten Nutzerbedürfnissen als das PRD.
|
|
22
|
+
|
|
23
|
+
Extrahiere die entscheidenden Signale für die Tech-Stack-Empfehlung:
|
|
15
24
|
|
|
16
25
|
- **Was für ein Produkt?** (Web-App, Mobile App, API, CLI, Desktop, Datenverarbeitung, KI/ML, ...)
|
|
17
26
|
- **Wer nutzt es?** (Endnutzer im Browser, interne Teams, Entwickler, Maschinen via API, ...)
|
|
@@ -134,14 +143,6 @@ Danach noch fragen:
|
|
|
134
143
|
```typescript
|
|
135
144
|
AskUserQuestion({
|
|
136
145
|
questions: [
|
|
137
|
-
{
|
|
138
|
-
question: "Wie soll das GitHub-Repository heißen?",
|
|
139
|
-
header: "Repository-Name",
|
|
140
|
-
options: [
|
|
141
|
-
{ label: "Ich gebe den Namen im Chat an", description: "Kurz, keine Leerzeichen (z.B. mein-projekt) – nur für GitHub, nicht der Code-Ordner" }
|
|
142
|
-
],
|
|
143
|
-
multiSelect: false
|
|
144
|
-
},
|
|
145
146
|
{
|
|
146
147
|
question: "In welchem Verzeichnis soll der Programm-Code liegen?",
|
|
147
148
|
header: "Code-Verzeichnis",
|
|
@@ -149,17 +150,26 @@ AskUserQuestion({
|
|
|
149
150
|
{ label: "projekt/", description: "Standard – neuer Ordner im Framework-Root" },
|
|
150
151
|
{ label: "src/", description: "Klassisch für viele Frameworks" },
|
|
151
152
|
{ label: "app/", description: "Üblich bei Django, Laravel etc." },
|
|
152
|
-
{ label: "Anderer Name
|
|
153
|
+
{ label: "Anderer Name – ich nenne ihn im Chat", description: "Beliebiger Verzeichnisname" }
|
|
153
154
|
],
|
|
154
155
|
multiSelect: false
|
|
155
|
-
}
|
|
156
|
+
}
|
|
157
|
+
]
|
|
158
|
+
})
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Warte auf Antwort. Falls "Anderer Name": nachfragen im Chat.
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
AskUserQuestion({
|
|
165
|
+
questions: [
|
|
156
166
|
{
|
|
157
167
|
question: "Soll ein GitHub-Repository angelegt werden?",
|
|
158
|
-
header: "GitHub",
|
|
168
|
+
header: "GitHub Repository",
|
|
159
169
|
options: [
|
|
160
|
-
{ label: "Ja, privat
|
|
161
|
-
{ label: "Ja, öffentlich
|
|
162
|
-
{ label: "Nein, nur lokal", description: "Git lokal, kein GitHub" }
|
|
170
|
+
{ label: "Ja, privat", description: "Empfohlen – nur du siehst das Repo" },
|
|
171
|
+
{ label: "Ja, öffentlich", description: "Für Open-Source oder öffentliche Projekte" },
|
|
172
|
+
{ label: "Nein, nur lokal", description: "Git lokal einrichten, kein GitHub" }
|
|
163
173
|
],
|
|
164
174
|
multiSelect: false
|
|
165
175
|
}
|
|
@@ -167,6 +177,26 @@ AskUserQuestion({
|
|
|
167
177
|
})
|
|
168
178
|
```
|
|
169
179
|
|
|
180
|
+
Falls GitHub gewünscht:
|
|
181
|
+
|
|
182
|
+
```typescript
|
|
183
|
+
AskUserQuestion({
|
|
184
|
+
questions: [
|
|
185
|
+
{
|
|
186
|
+
question: "Wie soll das GitHub-Repository heißen?",
|
|
187
|
+
header: "Repository-Name",
|
|
188
|
+
options: [
|
|
189
|
+
{ label: "Produktname in Kleinbuchstaben", description: "z.B. mein-projekt – empfohlen, klar und einprägsam" },
|
|
190
|
+
{ label: "Anderer Name – ich nenne ihn im Chat", description: "Eigener Name, keine Leerzeichen, Bindestriche statt Unterstriche" }
|
|
191
|
+
],
|
|
192
|
+
multiSelect: false
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
})
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Warte auf Antwort. Falls "Anderer Name": nachfragen im Chat.
|
|
199
|
+
|
|
170
200
|
Falls GitHub Ja:
|
|
171
201
|
|
|
172
202
|
```typescript
|
|
@@ -521,6 +551,26 @@ Erstelle jetzt `project-config.md` im Projekt-Root:
|
|
|
521
551
|
|
|
522
552
|
## Phase 9: Abschluss
|
|
523
553
|
|
|
554
|
+
```bash
|
|
555
|
+
RESEARCH_DONE=$(ls research/platform-context.md 2>/dev/null && echo "ja" || echo "nein")
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
Wenn Research bereits gemacht (`research/platform-context.md` existiert):
|
|
559
|
+
|
|
560
|
+
```
|
|
561
|
+
✅ Dev-Setup abgeschlossen
|
|
562
|
+
|
|
563
|
+
Stack: [Frontend] + [Backend] + [Datenbank]
|
|
564
|
+
Code: [Codeverzeichnis]/
|
|
565
|
+
Git: Initialisiert ([Codeverzeichnis | Projekt-Root])
|
|
566
|
+
GitHub: [URL – oder: "Nur lokal"]
|
|
567
|
+
|
|
568
|
+
Nächster Schritt: /red:proto-requirements – Feature Specs für alle Features definieren.
|
|
569
|
+
Nach einer Pause: /red:proto-workflow zeigt dir exakt wo du stehst.
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
Wenn Research noch nicht gemacht:
|
|
573
|
+
|
|
524
574
|
```
|
|
525
575
|
✅ Dev-Setup abgeschlossen
|
|
526
576
|
|
|
@@ -529,9 +579,11 @@ Code: [Codeverzeichnis]/
|
|
|
529
579
|
Git: Initialisiert ([Codeverzeichnis | Projekt-Root])
|
|
530
580
|
GitHub: [URL – oder: "Nur lokal"]
|
|
531
581
|
|
|
532
|
-
|
|
533
|
-
|
|
582
|
+
Research wurde übersprungen. Du kannst es jederzeit mit /red:proto-research nachholen –
|
|
583
|
+
Personas und Problem Statement bereichern Requirements, Flows und UX. Die Platform-Entscheidung
|
|
584
|
+
ist jetzt gesetzt und wird durch nachträgliches Research nicht mehr geändert.
|
|
534
585
|
|
|
586
|
+
Nächster Schritt: /red:proto-requirements
|
|
535
587
|
Nach einer Pause: /red:proto-workflow zeigt dir exakt wo du stehst.
|
|
536
588
|
```
|
|
537
589
|
|
|
@@ -19,6 +19,35 @@ ls features/ 2>/dev/null
|
|
|
19
19
|
cat features/*.md 2>/dev/null
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
+
```bash
|
|
23
|
+
RESEARCH_DONE=$(ls research/personas.md 2>/dev/null && echo "ja" || echo "nein")
|
|
24
|
+
echo "Research: $RESEARCH_DONE"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Wenn Research noch nicht gemacht:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
AskUserQuestion({
|
|
31
|
+
questions: [
|
|
32
|
+
{
|
|
33
|
+
question: "User Research fehlt noch. Personas helfen beim Definieren sinnvoller Nutzerreisen.",
|
|
34
|
+
header: "Research nachholen?",
|
|
35
|
+
options: [
|
|
36
|
+
{
|
|
37
|
+
label: "Jetzt /red:proto-research nachholen",
|
|
38
|
+
description: "Danach zurück zu /red:proto-flows. Hinweis: Tech-Stack ist gesetzt, Research fokussiert sich auf Nutzerverhalten"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
label: "Ohne Research weitermachen",
|
|
42
|
+
description: "Flows direkt aus den Feature Specs ableiten"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
multiSelect: false
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
})
|
|
49
|
+
```
|
|
50
|
+
|
|
22
51
|
Verstehe: Welche Aufgaben haben die Nutzer? Welche Screens werden in den Feature Specs erwähnt oder impliziert?
|
|
23
52
|
|
|
24
53
|
**Guard – Feature Specs müssen existieren und vollständig sein:**
|
|
@@ -5,7 +5,43 @@ description: Schreibt detaillierte Feature Specifications nach IEEE/IREB-Standar
|
|
|
5
5
|
|
|
6
6
|
Du bist Requirements Engineer nach IEEE/IREB-Standard. Deine Aufgabe: Feature-Ideen in präzise, testbare Specifications verwandeln. Kein Code, kein Tech-Design – nur "Was soll das Feature tun?"
|
|
7
7
|
|
|
8
|
-
## Phase 0:
|
|
8
|
+
## Phase 0: Research-Status prüfen
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
RESEARCH_DONE=$(ls research/personas.md 2>/dev/null && echo "ja" || echo "nein")
|
|
12
|
+
echo "Research: $RESEARCH_DONE"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Wenn Research noch nicht gemacht (`research/personas.md` fehlt):
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
AskUserQuestion({
|
|
19
|
+
questions: [
|
|
20
|
+
{
|
|
21
|
+
question: "User Research wurde noch nicht durchgeführt. Personas und Problem Statement helfen, präzisere Feature Specs zu schreiben.",
|
|
22
|
+
header: "Research nachholen?",
|
|
23
|
+
options: [
|
|
24
|
+
{
|
|
25
|
+
label: "Jetzt /red:proto-research nachholen",
|
|
26
|
+
description: "Empfohlen – danach kehren wir hierher zurück. Hinweis: Tech-Stack ist gesetzt, Research fokussiert sich auf Nutzerverhalten und Personas"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: "Ohne Research weitermachen",
|
|
30
|
+
description: "Feature Specs direkt aus dem PRD – Research kann später noch ergänzt werden"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
multiSelect: false
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
})
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Diese Frage nur einmal stellen – wenn der User „Ohne Research" wählt, nie wieder nachfragen.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Phase 1: Feature-ID bestimmen
|
|
44
|
+
|
|
9
45
|
|
|
10
46
|
Falls eine FEAT-ID oder ein Feature-Name in der Anfrage genannt wurde → verwende ihn.
|
|
11
47
|
Falls nicht:
|
|
@@ -14,9 +50,13 @@ ls features/ 2>/dev/null
|
|
|
14
50
|
```
|
|
15
51
|
Zeige vorhandene Features. Ist es ein neues Feature → vergib die nächste freie ID. Ist es ein bestehendes → lade das File.
|
|
16
52
|
|
|
17
|
-
## Phase
|
|
53
|
+
## Phase 2: Modus und Kontext lesen
|
|
18
54
|
|
|
19
55
|
```bash
|
|
56
|
+
# Review-Modus: Research wurde nachgeholt, bestehende Specs prüfen
|
|
57
|
+
REVIEW_MODE=$([ -f research/personas.md ] && [ "$(ls features/FEAT-*.md 2>/dev/null | wc -l)" -gt "0" ] && echo "ja" || echo "nein")
|
|
58
|
+
echo "Review-Modus: $REVIEW_MODE"
|
|
59
|
+
|
|
20
60
|
# Guard: prd.md muss existieren
|
|
21
61
|
if [ ! -f prd.md ]; then
|
|
22
62
|
echo "FEHLER: prd.md nicht gefunden. Bitte zuerst /red:proto-sparring ausführen."
|
|
@@ -39,7 +79,10 @@ ls features/ 2>/dev/null | grep "FEAT-"
|
|
|
39
79
|
|
|
40
80
|
Lies vorhandene Feature-Specs um Duplikate zu vermeiden und die nächste freie FEAT-ID zu bestimmen.
|
|
41
81
|
|
|
42
|
-
|
|
82
|
+
**Wenn Review-Modus aktiv** (Research nachgeholt, Specs existieren bereits):
|
|
83
|
+
Informiere den User: "Research wurde nachgeholt. Ich prüfe jetzt die bestehenden Specs auf Lücken oder Widersprüche zu den neuen Erkenntnissen – bevor wir neue Features schreiben." Gehe durch jede bestehende Spec und vergleiche mit `research/personas.md` und `research/problem-statement.md`. Liste Anpassungsbedarf auf und kläre vor dem Weiterschreiben.
|
|
84
|
+
|
|
85
|
+
## Phase 3: Scope analysieren
|
|
43
86
|
|
|
44
87
|
**Jedes Feature-File = EINE testbare, deploybare Einheit.**
|
|
45
88
|
|
|
@@ -55,53 +98,21 @@ Faustregel: Kann es unabhängig getestet werden? Hat es eine andere User-Rolle?
|
|
|
55
98
|
|
|
56
99
|
Bei Zweifel: aufteilen und begründen.
|
|
57
100
|
|
|
58
|
-
## Phase
|
|
59
|
-
|
|
60
|
-
```typescript
|
|
61
|
-
AskUserQuestion({
|
|
62
|
-
questions: [
|
|
63
|
-
{
|
|
64
|
-
question: "Welche Persona(s) nutzt dieses Feature primär?",
|
|
65
|
-
header: "Zielgruppe",
|
|
66
|
-
options: [] // Dynamisch befüllen aus /research/personas.md falls vorhanden
|
|
67
|
-
// Fallback: offene Frage im Chat
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
question: "Was ist der kritischste Acceptance Criterion – ohne den das Feature wertlos wäre?",
|
|
71
|
-
header: "Core AC",
|
|
72
|
-
options: [
|
|
73
|
-
{ label: "Ich beschreibe es im Chat", description: "" }
|
|
74
|
-
],
|
|
75
|
-
multiSelect: false
|
|
76
|
-
}
|
|
77
|
-
]
|
|
78
|
-
})
|
|
79
|
-
```
|
|
101
|
+
## Phase 4: Spec autonom erstellen
|
|
80
102
|
|
|
81
|
-
|
|
103
|
+
Leite aus PRD, Research und Feature-Beschreibung selbstständig ab:
|
|
104
|
+
- **Zielgruppe:** Welche Persona(s) aus `research/personas.md` nutzen dieses Feature? Falls kein Research: aus PRD ableiten.
|
|
105
|
+
- **Kernwert:** Was ist das wichtigste Acceptance Criterion – ohne das das Feature wertlos wäre?
|
|
106
|
+
- **Out of Scope:** Was ist bewusst nicht Teil dieses Features (naheliegende Abgrenzungen)?
|
|
107
|
+
- **User Stories:** Mindestens 3–5, rollen-spezifisch, aus Nutzerperspektive.
|
|
108
|
+
- **Acceptance Criteria:** Mindestens 5, konkret und testbar, kein Konjunktiv.
|
|
109
|
+
- **Edge Cases:** Mindestens 3–5 – leite sie aus dem Feature-Kontext ab und entscheide das Verhalten selbst auf Basis von PRD, Research und gesundem Menschenverstand.
|
|
82
110
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
AskUserQuestion({
|
|
87
|
-
questions: [
|
|
88
|
-
{
|
|
89
|
-
question: "Was passiert bei [kritischstem Edge Case]?",
|
|
90
|
-
header: "Edge Case",
|
|
91
|
-
options: [
|
|
92
|
-
{ label: "Option A", description: "..." },
|
|
93
|
-
{ label: "Option B", description: "..." },
|
|
94
|
-
{ label: "Noch nicht entschieden", description: "Wir klären das" }
|
|
95
|
-
],
|
|
96
|
-
multiSelect: false
|
|
97
|
-
}
|
|
98
|
-
]
|
|
99
|
-
})
|
|
100
|
-
```
|
|
111
|
+
Nur nachfragen wenn etwas genuiner Klärungsbedarf hat der sich nicht aus den vorhandenen Artefakten ableiten lässt – das sollte die Ausnahme sein, nicht die Regel.
|
|
101
112
|
|
|
102
|
-
|
|
113
|
+
Schreibe die vollständige Spec direkt. Zeige sie im Chat bevor du speicherst.
|
|
103
114
|
|
|
104
|
-
## Phase
|
|
115
|
+
## Phase 6: Feature Spec schreiben
|
|
105
116
|
|
|
106
117
|
Datei: `/features/FEAT-X-feature-name.md`
|
|
107
118
|
|
|
@@ -144,7 +155,7 @@ Aktueller Schritt: Spec
|
|
|
144
155
|
- [Was explizit NICHT Teil dieses Features ist]
|
|
145
156
|
```
|
|
146
157
|
|
|
147
|
-
## Phase
|
|
158
|
+
## Phase 7: Review
|
|
148
159
|
|
|
149
160
|
```typescript
|
|
150
161
|
AskUserQuestion({
|
|
@@ -5,16 +5,118 @@ description: Leitet aus PRD und Dokumenten Forschungsfragen ab, erstellt Problem
|
|
|
5
5
|
|
|
6
6
|
Du bist ein erfahrener UX Researcher. Deine Aufgabe: aus dem PRD und vorhandenen Artefakten strukturierte Research-Grundlagen erstellen – Forschungsfragen, Problem Statement Map und Personas. Kein Bauchgefühl, keine Annahmen als Fakten verkauft.
|
|
7
7
|
|
|
8
|
-
## Phase
|
|
8
|
+
## Phase 0: Modus erkennen
|
|
9
9
|
|
|
10
10
|
```bash
|
|
11
11
|
cat prd.md
|
|
12
12
|
ls research/ 2>/dev/null
|
|
13
|
+
|
|
14
|
+
if [ -f project-config.md ]; then
|
|
15
|
+
echo "MODUS B – Dev-Setup bereits abgeschlossen"
|
|
16
|
+
cat project-config.md
|
|
17
|
+
else
|
|
18
|
+
echo "MODUS A – Vor Dev-Setup"
|
|
19
|
+
fi
|
|
13
20
|
```
|
|
14
21
|
|
|
22
|
+
**Modus A (vor Dev-Setup):** Research kann Platform-, Device- und Stack-Entscheidungen direkt beeinflussen. Vollständiges Research inkl. Nutzungskontext und Plattformfragen.
|
|
23
|
+
|
|
24
|
+
**Modus B (nach Dev-Setup):** Tech-Stack und Plattform sind bereits gesetzt. Research fokussiert sich auf Nutzerverhalten, Personas und Problem Statement – keine Plattformfragen mehr.
|
|
25
|
+
|
|
26
|
+
Informiere den User zu Beginn kurz welcher Modus aktiv ist.
|
|
27
|
+
|
|
28
|
+
## Phase 1: Vorhandenes lesen
|
|
29
|
+
|
|
15
30
|
Gibt es bereits Research-Artefakte? Lies sie – keine Duplikate erstellen.
|
|
16
31
|
|
|
17
|
-
|
|
32
|
+
```bash
|
|
33
|
+
ls research/ 2>/dev/null && cat research/*.md 2>/dev/null
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Phase 2a: Platform und Nutzungskontext (nur Modus A)
|
|
37
|
+
|
|
38
|
+
> **Nur ausführen wenn `project-config.md` NICHT existiert.**
|
|
39
|
+
> Im Modus B überspringen – Tech-Stack ist bereits entschieden.
|
|
40
|
+
|
|
41
|
+
Diese Fragen klären ob das PRD eine Web-App, eine native Mobile-App oder beides impliziert. Die Antworten werden direkt an dev-setup weitergegeben.
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
AskUserQuestion({
|
|
45
|
+
questions: [
|
|
46
|
+
{
|
|
47
|
+
question: "Auf welchen Geräten wird das Produkt primär genutzt?",
|
|
48
|
+
header: "Primäres Gerät",
|
|
49
|
+
options: [
|
|
50
|
+
{ label: "Desktop / Laptop", description: "Browser am Schreibtisch, Maus & Tastatur" },
|
|
51
|
+
{ label: "Smartphone", description: "Unterwegs, Touch-Bedienung, kleines Display" },
|
|
52
|
+
{ label: "Tablet", description: "Mittleres Display, Touch, oft Couch oder Unterwegs" },
|
|
53
|
+
{ label: "Gemischt – Desktop + Mobile gleichwertig", description: "Responsive Design ist Pflicht" }
|
|
54
|
+
],
|
|
55
|
+
multiSelect: false
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
question: "In welchem Kontext wird das Produkt genutzt?",
|
|
59
|
+
header: "Nutzungskontext",
|
|
60
|
+
options: [
|
|
61
|
+
{ label: "Am Schreibtisch / fokussiert", description: "Langer Session, viel Screen-Fläche, kein Ablenkungspotential" },
|
|
62
|
+
{ label: "Unterwegs / kurze Sessions", description: "1–3 Minuten, Ablenkung, schlechte Netzverbindung möglich" },
|
|
63
|
+
{ label: "Beides – variiert je nach Persona", description: "Unterschiedliche Nutzungsmuster je nach Nutzertyp" }
|
|
64
|
+
],
|
|
65
|
+
multiSelect: false
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
question: "Falls Mobile relevant: Welche Art von Mobile-Erlebnis?",
|
|
69
|
+
header: "Mobile-Typ",
|
|
70
|
+
options: [
|
|
71
|
+
{ label: "Mobile Web reicht (Browser)", description: "Kein App-Store, schnell verfügbar, responsive Web-App" },
|
|
72
|
+
{ label: "Native App gewünscht", description: "App Store, Push-Notifications, Kamera/GPS/Offline-Funktionen nötig" },
|
|
73
|
+
{ label: "Mobile nicht relevant", description: "Produkt ist Desktop-only" },
|
|
74
|
+
{ label: "Noch unklar", description: "Entscheidung nach mehr Research" }
|
|
75
|
+
],
|
|
76
|
+
multiSelect: false
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
question: "Wie häufig wird das Produkt genutzt?",
|
|
80
|
+
header: "Nutzungsfrequenz",
|
|
81
|
+
options: [
|
|
82
|
+
{ label: "Täglich / mehrmals täglich", description: "Workflow-Tool, Habit-App – Performance und Effizienz kritisch" },
|
|
83
|
+
{ label: "Wöchentlich", description: "Planungs- oder Review-Tool" },
|
|
84
|
+
{ label: "Gelegentlich / situativ", description: "Bei Bedarf – Onboarding und Wiedererkennbarkeit wichtig" },
|
|
85
|
+
{ label: "Einmalig / selten", description: "Konfigurations- oder Setup-Tool" }
|
|
86
|
+
],
|
|
87
|
+
multiSelect: false
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
})
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Dokumentiere die Antworten als `research/platform-context.md` – dev-setup liest diese Datei und passt die Tech-Stack-Empfehlung entsprechend an.
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Platform & Nutzungskontext
|
|
97
|
+
*Erstellt von: /red:proto-research — [Datum]*
|
|
98
|
+
|
|
99
|
+
## Primäres Gerät
|
|
100
|
+
[Antwort]
|
|
101
|
+
|
|
102
|
+
## Nutzungskontext
|
|
103
|
+
[Antwort]
|
|
104
|
+
|
|
105
|
+
## Mobile-Typ
|
|
106
|
+
[Antwort]
|
|
107
|
+
|
|
108
|
+
## Nutzungsfrequenz
|
|
109
|
+
[Antwort]
|
|
110
|
+
|
|
111
|
+
## Implikationen für Tech-Stack
|
|
112
|
+
[2–3 Sätze: Was bedeutet das für die Platform-Entscheidung?
|
|
113
|
+
z.B.: "Primär Mobile + Native gewünscht → React Native oder Flutter statt Next.js prüfen"
|
|
114
|
+
z.B.: "Desktop-fokussiert + täglicher Workflow → Web-App mit Keyboard-Shortcuts, Performance-Budget beachten"]
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Phase 2b: Dokumente einlesen (falls vorhanden)
|
|
18
120
|
|
|
19
121
|
Frage den User:
|
|
20
122
|
|
|
@@ -50,7 +152,109 @@ Gute Forschungsfragen sind:
|
|
|
50
152
|
- Verhaltensbezogen, nicht meinungsbezogen
|
|
51
153
|
- Relevant für Produkt-Entscheidungen
|
|
52
154
|
|
|
53
|
-
|
|
155
|
+
Entwickle 5–8 Forschungsfragen. Nummeriere sie klar (1. / 2. / ...) und präsentiere sie im Chat.
|
|
156
|
+
|
|
157
|
+
Frage den User ob etwas fehlt oder falsch priorisiert ist – passe die Liste an bis sie stimmt.
|
|
158
|
+
|
|
159
|
+
## Phase 3b: Beantwortung der Forschungsfragen
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
AskUserQuestion({
|
|
163
|
+
questions: [
|
|
164
|
+
{
|
|
165
|
+
question: "Die Forschungsfragen sind bereit. Wie möchtest du vorgehen?",
|
|
166
|
+
header: "Research-Methode",
|
|
167
|
+
options: [
|
|
168
|
+
{
|
|
169
|
+
label: "Jetzt interaktiv beantworten",
|
|
170
|
+
description: "Ich führe dich Frage für Frage durch – du antwortest direkt im Chat auf Basis deiner Annahmen, Erfahrungen oder vorhandenem Wissen"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
label: "Pause – echten Research durchführen",
|
|
174
|
+
description: "Ich speichere die offenen Fragen. Du führst Interviews, Umfragen oder Beobachtungen durch und rufst /red:proto-research danach erneut auf"
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
multiSelect: false
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
})
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**Bei "Pause – echten Research durchführen":**
|
|
184
|
+
|
|
185
|
+
Speichere die Forschungsfragen in `research/research-questions.md`:
|
|
186
|
+
|
|
187
|
+
```markdown
|
|
188
|
+
# Forschungsfragen
|
|
189
|
+
*Erstellt von: /red:proto-research — [Datum]*
|
|
190
|
+
*Status: Offen – noch nicht beantwortet*
|
|
191
|
+
|
|
192
|
+
## Offene Fragen
|
|
193
|
+
|
|
194
|
+
1. [Frage 1]
|
|
195
|
+
2. [Frage 2]
|
|
196
|
+
...
|
|
197
|
+
|
|
198
|
+
## Methoden-Empfehlung
|
|
199
|
+
- Nutzerinterviews (30–45 min, 3–5 Teilnehmer)
|
|
200
|
+
- Kontextuelle Beobachtung wenn möglich
|
|
201
|
+
- Kurze Online-Umfrage für quantitative Einschätzung
|
|
202
|
+
|
|
203
|
+
## Nächster Schritt
|
|
204
|
+
Beantworte diese Fragen durch echten User Research.
|
|
205
|
+
Danach: `/red:proto-research` erneut aufrufen – ich verarbeite deine Antworten.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Dann stoppen und dem User sagen:
|
|
209
|
+
```
|
|
210
|
+
Forschungsfragen gespeichert in research/research-questions.md.
|
|
211
|
+
|
|
212
|
+
Führe deinen Research durch (Interviews, Umfragen, Beobachtungen) und trage
|
|
213
|
+
die Antworten direkt in die Datei ein – oder beschreibe sie mir beim nächsten Aufruf.
|
|
214
|
+
|
|
215
|
+
Wenn du fertig bist: /red:proto-research erneut aufrufen.
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Bei "Jetzt interaktiv beantworten":**
|
|
219
|
+
|
|
220
|
+
Gehe jede Frage einzeln durch. Stelle eine Frage im Chat und warte auf die Antwort bevor du zur nächsten gehst:
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
Frage 1 von [N]:
|
|
224
|
+
[Vollständiger Fragetext]
|
|
225
|
+
|
|
226
|
+
(Deine Antwort kann eine Vermutung, eine Beobachtung oder eine Erfahrung sein –
|
|
227
|
+
kein perfektes Research nötig, wir arbeiten mit dem was du weißt)
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Sammle alle Antworten. Speichere danach `research/research-questions.md`:
|
|
231
|
+
|
|
232
|
+
```markdown
|
|
233
|
+
# Forschungsfragen & Antworten
|
|
234
|
+
*Erstellt von: /red:proto-research — [Datum]*
|
|
235
|
+
*Status: Interaktiv beantwortet (Hypothesen)*
|
|
236
|
+
|
|
237
|
+
## Fragen & Antworten
|
|
238
|
+
|
|
239
|
+
### 1. [Frage 1]
|
|
240
|
+
**Antwort:** [Antwort des Users]
|
|
241
|
+
|
|
242
|
+
### 2. [Frage 2]
|
|
243
|
+
**Antwort:** [Antwort des Users]
|
|
244
|
+
|
|
245
|
+
...
|
|
246
|
+
|
|
247
|
+
## Hinweis
|
|
248
|
+
Diese Antworten basieren auf Annahmen und Hypothesen, nicht auf echtem User Research.
|
|
249
|
+
Sie sind ein valider Ausgangspunkt – können aber durch spätere echte Interviews ergänzt werden.
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Danach dem User mitteilen:
|
|
253
|
+
```
|
|
254
|
+
Antworten gespeichert. Weiter mit Phase 4 – Problem Statement Map.
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Und direkt mit Phase 4 fortfahren.
|
|
54
258
|
|
|
55
259
|
## Phase 4: Problem Statement Map erstellen
|
|
56
260
|
|
|
@@ -122,7 +326,7 @@ AskUserQuestion({
|
|
|
122
326
|
question: "Sind Research-Grundlagen vollständig?",
|
|
123
327
|
header: "Review",
|
|
124
328
|
options: [
|
|
125
|
-
{ label: "Approved
|
|
329
|
+
{ label: "Approved", description: "Alle Artefakte sind vollständig" },
|
|
126
330
|
{ label: "Anpassungen nötig", description: "Feedback im Chat" }
|
|
127
331
|
],
|
|
128
332
|
multiSelect: false
|
|
@@ -142,6 +346,43 @@ git commit -m "docs: add user research, personas and problem statement"
|
|
|
142
346
|
git push
|
|
143
347
|
```
|
|
144
348
|
|
|
145
|
-
|
|
349
|
+
Prüfe den aktuellen Stand:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
DEV_SETUP_DONE=$([ -f project-config.md ] && echo "ja" || echo "nein")
|
|
353
|
+
FEATURES_EXIST=$(ls features/FEAT-*.md 2>/dev/null | wc -l)
|
|
354
|
+
echo "Dev-Setup: $DEV_SETUP_DONE | Feature-Specs: $FEATURES_EXIST"
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
**Modus A (Dev-Setup noch nicht gemacht):**
|
|
358
|
+
|
|
359
|
+
Sage dem User:
|
|
360
|
+
```
|
|
361
|
+
Research gespeichert.
|
|
362
|
+
|
|
363
|
+
Die Platform- und Nutzungskontext-Erkenntnisse stehen jetzt für den Tech-Stack bereit.
|
|
364
|
+
Nächster Schritt: /red:proto-dev-setup – ich berücksichtige research/platform-context.md bei der Stack-Empfehlung.
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**Modus B, keine Features vorhanden:**
|
|
368
|
+
|
|
369
|
+
Sage dem User:
|
|
370
|
+
```
|
|
371
|
+
Research nachgeholt. Personas und Problem Statement stehen allen Agents zur Verfügung.
|
|
372
|
+
Nächster Schritt: /red:proto-requirements – Feature Specs definieren.
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
**Modus B, Features bereits vorhanden:**
|
|
376
|
+
|
|
377
|
+
Sage dem User:
|
|
378
|
+
```
|
|
379
|
+
Research nachgeholt.
|
|
380
|
+
|
|
381
|
+
Da bereits Feature-Specs existieren: Bitte /red:proto-requirements erneut aufrufen –
|
|
382
|
+
im Review-Modus prüfen wir ob die bestehenden Specs mit den neuen Research-Erkenntnissen
|
|
383
|
+
noch übereinstimmen oder angepasst werden müssen.
|
|
384
|
+
|
|
385
|
+
Nächster Schritt: /red:proto-requirements (Review bestehender Specs)
|
|
386
|
+
```
|
|
146
387
|
|
|
147
|
-
|
|
388
|
+
Öffne requirements und informiere es explizit, dass es im **Review-Modus** läuft: bestehende Specs gegen Research-Erkenntnisse prüfen, nicht neu schreiben.
|
|
@@ -111,16 +111,14 @@ else
|
|
|
111
111
|
fi
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
Zeige dem User die vollständige Pipeline als Orientierung:
|
|
115
115
|
|
|
116
116
|
```
|
|
117
|
-
PRD gespeichert.
|
|
117
|
+
PRD gespeichert. Die empfohlene Reihenfolge:
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
→ /red:proto-research Für wen bauen wir? Personas, Nutzungskontext, Plattform-Entscheidungen
|
|
120
|
+
↓ informiert den Tech-Stack
|
|
120
121
|
→ /red:proto-dev-setup Tech-Stack wählen, Projekt scaffolden, Git einrichten
|
|
121
|
-
|
|
122
|
-
DANACH (Reihenfolge wichtig):
|
|
123
|
-
→ /red:proto-research Personas + Problem Statement (optional, aber empfohlen)
|
|
124
122
|
→ /red:proto-requirements Feature Specs – einmal pro Feature, für ALLE Features
|
|
125
123
|
↓ wenn ALLE Features Specs haben:
|
|
126
124
|
→ /red:proto-flows Screen-Inventar + Transitions (einmalig, vor UX)
|
|
@@ -133,6 +131,30 @@ PRD gespeichert. Dein Weg von hier:
|
|
|
133
131
|
Nach einer Pause: /red:proto-workflow zeigt dir exakt wo du stehst.
|
|
134
132
|
```
|
|
135
133
|
|
|
134
|
+
Dann frage:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
AskUserQuestion({
|
|
138
|
+
questions: [
|
|
139
|
+
{
|
|
140
|
+
question: "Wie möchtest du weitermachen?",
|
|
141
|
+
header: "Nächster Schritt",
|
|
142
|
+
options: [
|
|
143
|
+
{
|
|
144
|
+
label: "Weiter zu /red:proto-research",
|
|
145
|
+
description: "Empfohlen – Research klärt Zielgruppe und Nutzungskontext, bevor der Tech-Stack gewählt wird"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
label: "Direkt zu /red:proto-dev-setup",
|
|
149
|
+
description: "Research überspringen – Tech-Stack jetzt wählen. Research kann später noch nachgeholt werden (ohne Einfluss auf Stack-Entscheidungen)"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
multiSelect: false
|
|
153
|
+
}
|
|
154
|
+
]
|
|
155
|
+
})
|
|
156
|
+
```
|
|
157
|
+
|
|
136
158
|
## Wichtig
|
|
137
159
|
|
|
138
160
|
- Kein Tech-Design, keine Lösungsarchitektur – das ist nicht deine Aufgabe
|
package/commands/red:proto-ux.md
CHANGED
|
@@ -14,6 +14,9 @@ Falls keine FEAT-ID in der Anfrage: `ls features/` und nachfragen welches Featur
|
|
|
14
14
|
## Phase 1: Kontext lesen
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
+
RESEARCH_DONE=$(ls research/personas.md 2>/dev/null && echo "ja" || echo "nein")
|
|
18
|
+
echo "Research: $RESEARCH_DONE"
|
|
19
|
+
|
|
17
20
|
cat prd.md 2>/dev/null
|
|
18
21
|
cat research/personas.md 2>/dev/null
|
|
19
22
|
cat research/problem-statement.md 2>/dev/null
|
|
@@ -21,42 +24,23 @@ cat features/FEAT-[X].md
|
|
|
21
24
|
cat flows/product-flows.md 2>/dev/null || echo "HINWEIS: Kein Flows-Dokument gefunden. /red:proto-flows ausführen bevor Screen Transitions definiert werden."
|
|
22
25
|
```
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
cat design-system/components/*.md 2>/dev/null
|
|
28
|
-
cat design-system/patterns/*.md 2>/dev/null
|
|
29
|
-
ls design-system/screens/ 2>/dev/null
|
|
30
|
-
ls design-system/screens/*/ 2>/dev/null
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Erstelle intern eine Liste aller verfügbaren Komponenten aus `design-system/components/`.
|
|
34
|
-
|
|
35
|
-
## Phase 3: UX-Entscheidungen klären
|
|
27
|
+
Wenn Research noch nicht gemacht:
|
|
36
28
|
|
|
37
29
|
```typescript
|
|
38
30
|
AskUserQuestion({
|
|
39
31
|
questions: [
|
|
40
32
|
{
|
|
41
|
-
question: "
|
|
42
|
-
header: "
|
|
33
|
+
question: "User Research fehlt noch. Personas helfen beim Treffen von UX-Entscheidungen die zur Zielgruppe passen.",
|
|
34
|
+
header: "Research nachholen?",
|
|
43
35
|
options: [
|
|
44
|
-
{
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
question: "Welches primäre Interaktionsmuster passt?",
|
|
53
|
-
header: "Interaktion",
|
|
54
|
-
options: [
|
|
55
|
-
{ label: "Formular", description: "User gibt Daten ein und submitted" },
|
|
56
|
-
{ label: "Liste + Detailansicht", description: "Übersicht → Drill-Down" },
|
|
57
|
-
{ label: "Wizard / Schritt-für-Schritt", description: "Geführter Prozess" },
|
|
58
|
-
{ label: "Dashboard / Übersicht", description: "Informationsanzeige" },
|
|
59
|
-
{ label: "Inline-Editing", description: "Direkte Bearbeitung" }
|
|
36
|
+
{
|
|
37
|
+
label: "Jetzt /red:proto-research nachholen",
|
|
38
|
+
description: "Danach zurück zu /red:proto-ux für dieses Feature. Hinweis: Tech-Stack ist gesetzt, Research fokussiert sich auf Nutzerverhalten und Personas"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
label: "Ohne Research weitermachen",
|
|
42
|
+
description: "UX-Entscheidungen direkt aus Feature Spec und PRD ableiten"
|
|
43
|
+
}
|
|
60
44
|
],
|
|
61
45
|
multiSelect: false
|
|
62
46
|
}
|
|
@@ -64,30 +48,32 @@ AskUserQuestion({
|
|
|
64
48
|
})
|
|
65
49
|
```
|
|
66
50
|
|
|
67
|
-
## Phase
|
|
68
|
-
|
|
69
|
-
**Du fragst – der Designer entscheidet:**
|
|
51
|
+
## Phase 2: Design System laden – PFLICHT
|
|
70
52
|
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
header: "Komponenten",
|
|
77
|
-
options: [
|
|
78
|
-
{ label: "Ich nenne sie im Chat", description: "Liste alle Komponenten die du brauchst" }
|
|
79
|
-
],
|
|
80
|
-
multiSelect: false
|
|
81
|
-
}
|
|
82
|
-
]
|
|
83
|
-
})
|
|
53
|
+
```bash
|
|
54
|
+
cat design-system/components/*.md 2>/dev/null
|
|
55
|
+
cat design-system/patterns/*.md 2>/dev/null
|
|
56
|
+
ls design-system/screens/ 2>/dev/null
|
|
57
|
+
ls design-system/screens/*/ 2>/dev/null
|
|
84
58
|
```
|
|
85
59
|
|
|
86
|
-
|
|
60
|
+
Erstelle intern eine Liste aller verfügbaren Komponenten aus `design-system/components/`.
|
|
61
|
+
|
|
62
|
+
## Phase 3: Autonome UX-Analyse
|
|
63
|
+
|
|
64
|
+
**Du entscheidest – nicht der Nutzer.** Leite alle UX-Entscheidungen selbst aus dem gelesenen Kontext ab: PRD, Personas, Feature-Spec, Design System, Flows.
|
|
65
|
+
|
|
66
|
+
Analysiere und dokumentiere intern:
|
|
67
|
+
|
|
68
|
+
**Einbettung:** Wo lebt das Feature im Produkt? Leite ab aus: Feature-Scope, bestehenden Flows, Navigation-Struktur im DS. Begründe deine Wahl (z.B. "Modal, weil der Feature-Scope eng ist und kein eigener Navigation-Eintrag gerechtfertigt ist").
|
|
69
|
+
|
|
70
|
+
**Interaktionsmuster:** Welches primäre Pattern passt? Leite ab aus: Feature-Ziel, Persona-Verhalten, Datenmenge, Mobile-Kontext. Begründe deine Wahl (z.B. "Liste + Detailansicht, weil Personas täglich zwischen mehreren Einträgen navigieren müssen").
|
|
87
71
|
|
|
88
|
-
|
|
72
|
+
**Komponenten-Auswahl:** Wähle alle benötigten Komponenten eigenständig aus `design-system/components/`. Begründe jede Wahl kurz. Prüfe dann:
|
|
89
73
|
|
|
90
|
-
|
|
74
|
+
## Phase 4: DS-Validierung
|
|
75
|
+
|
|
76
|
+
Prüfe für jede selbst gewählte Komponente ob eine Spec in `design-system/components/` existiert:
|
|
91
77
|
|
|
92
78
|
```bash
|
|
93
79
|
ls design-system/components/ 2>/dev/null
|
|
@@ -141,7 +127,9 @@ AskUserQuestion({
|
|
|
141
127
|
- **Fortfahren mit Tokens:** Notiere genehmigte Lücken für Phase 6 (DS-Status).
|
|
142
128
|
- **Bewusste Abweichung:** Frage nach dem Testgrund und notiere ihn für Phase 6.
|
|
143
129
|
|
|
144
|
-
## Phase 5:
|
|
130
|
+
## Phase 5: Navigation nach Aktionen definieren
|
|
131
|
+
|
|
132
|
+
*(Was passiert nach welcher Nutzer-Aktion? Z.B. nach "Speichern" → Wo landet der Nutzer? Nach "Abbrechen" → Zurück wohin?)*
|
|
145
133
|
|
|
146
134
|
**Guard – Flows-Dokument prüfen:**
|
|
147
135
|
|
|
@@ -160,11 +148,11 @@ AskUserQuestion({
|
|
|
160
148
|
options: [
|
|
161
149
|
{
|
|
162
150
|
label: "Jetzt /red:proto-flows ausführen",
|
|
163
|
-
description: "Empfohlen – definiert
|
|
151
|
+
description: "Empfohlen – definiert übergreifend wo Nutzer nach jeder Aktion landen"
|
|
164
152
|
},
|
|
165
153
|
{
|
|
166
|
-
label: "
|
|
167
|
-
description: "Nur die
|
|
154
|
+
label: "Nur für dieses Feature definieren",
|
|
155
|
+
description: "Nur die Navigations-Abfolge dieses Features wird dokumentiert – ohne übergreifenden Kontext"
|
|
168
156
|
}
|
|
169
157
|
],
|
|
170
158
|
multiSelect: false
|
|
@@ -173,27 +161,13 @@ AskUserQuestion({
|
|
|
173
161
|
})
|
|
174
162
|
```
|
|
175
163
|
|
|
176
|
-
**
|
|
164
|
+
**Navigation eigenständig ableiten:**
|
|
177
165
|
|
|
178
|
-
|
|
166
|
+
Leite alle Navigations-Abfolgen aus `flows/product-flows.md` und dem Feature-Scope ab: Welche Aktionen führt der Nutzer aus? Wo landet er danach jeweils? Definiere dies selbst und dokumentiere es in Phase 6.
|
|
179
167
|
|
|
180
|
-
|
|
181
|
-
AskUserQuestion({
|
|
182
|
-
questions: [
|
|
183
|
-
{
|
|
184
|
-
question: "Welche Screen Transitions gehören zu diesem Feature? (Von welchem Screen, welcher Trigger, zu welchem Ziel?)",
|
|
185
|
-
header: "Transitions",
|
|
186
|
-
options: [
|
|
187
|
-
{ label: "Ich definiere sie im Chat", description: "Format: Von Screen → Trigger → Ziel-Screen (+ Bedingung falls nötig)" },
|
|
188
|
-
{ label: "Keine Transitions – Feature ist in-page", description: "Keine Navigationsänderungen" }
|
|
189
|
-
],
|
|
190
|
-
multiSelect: false
|
|
191
|
-
}
|
|
192
|
-
]
|
|
193
|
-
})
|
|
194
|
-
```
|
|
168
|
+
Nur wenn genuiner Interpretations-Spielraum bleibt (z.B. ob ein Fehler als Inline-Meldung oder auf einer eigenen Seite erscheint), stelle diese eine gezielte Frage im Chat.
|
|
195
169
|
|
|
196
|
-
Wenn Flows-Dokument vorhanden: Trage alle
|
|
170
|
+
Wenn Flows-Dokument vorhanden: Trage alle Navigations-Abfolgen in `flows/product-flows.md` ein.
|
|
197
171
|
|
|
198
172
|
## Skill: UI/UX Design Guidelines
|
|
199
173
|
|
|
@@ -241,13 +215,15 @@ Route (falls neu): `/[pfad]`
|
|
|
241
215
|
| [Name] | ⚠ Tokens-Build | Keine Spec – genehmigt [Datum] |
|
|
242
216
|
| [Name] | 🧪 Hypothesentest | Abweichung von [Pattern] – Grund: [...] |
|
|
243
217
|
|
|
244
|
-
###
|
|
245
|
-
|
|
218
|
+
### Navigation nach Aktionen (verbindlich)
|
|
219
|
+
*Was passiert nach welcher Nutzer-Aktion?*
|
|
220
|
+
|
|
221
|
+
| Ausgangs-Screen | Aktion des Nutzers | Ziel | Bedingung |
|
|
246
222
|
|------------------|--------------------------|------------------|------------------------|
|
|
247
223
|
| [Screen] | "[Aktion]" | [Ziel-Screen] | – |
|
|
248
|
-
| [Screen] |
|
|
224
|
+
| [Screen] | Speichern (mit Fehler) | gleiche Seite | Inline-Fehlermeldung |
|
|
249
225
|
|
|
250
|
-
*(Vollständige
|
|
226
|
+
*(Vollständige Navigations-Abfolgen auch in flows/product-flows.md eingetragen)*
|
|
251
227
|
|
|
252
228
|
### DS-Status dieser Implementierung
|
|
253
229
|
- **Konforme Komponenten:** [Liste]
|
package/commands/red:proto.md
CHANGED
|
@@ -64,6 +64,52 @@ mkdir -p design-system/screens
|
|
|
64
64
|
[ ! -f project-config.md ] && mkdir -p projekt
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
**Schritt 2b – Terminal-Permissions einrichten (.claude/settings.json):**
|
|
68
|
+
|
|
69
|
+
Damit du nicht bei jedem Bash-, Git- oder Node-Befehl manuell zustimmen musst, werden die Permissions einmalig gesetzt.
|
|
70
|
+
|
|
71
|
+
**Wichtig:** Falls bereits eine `.claude/settings.json` existiert (z.B. durch MCP-Einstellungen), wird sie **erweitert**, nicht überschrieben.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
if [ -f .claude/settings.json ]; then
|
|
75
|
+
echo "settings.json existiert bereits – wird erweitert"
|
|
76
|
+
cat .claude/settings.json
|
|
77
|
+
else
|
|
78
|
+
echo "Keine settings.json vorhanden – wird neu erstellt"
|
|
79
|
+
fi
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Wenn die Datei **nicht existiert**: erstelle `.claude/settings.json` mit folgendem Inhalt:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"permissions": {
|
|
87
|
+
"allow": [
|
|
88
|
+
"Bash(*)",
|
|
89
|
+
"Read(*)",
|
|
90
|
+
"Write(*)",
|
|
91
|
+
"Edit(*)",
|
|
92
|
+
"Glob(*)",
|
|
93
|
+
"Grep(*)"
|
|
94
|
+
],
|
|
95
|
+
"deny": []
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Wenn die Datei **bereits existiert**: lies sie vollständig, prüfe ob ein `permissions`-Block vorhanden ist:
|
|
101
|
+
- Falls **kein** `permissions`-Block → füge ihn zum bestehenden JSON hinzu (JSON korrekt mergen, alle anderen Felder erhalten)
|
|
102
|
+
- Falls `permissions`-Block **bereits vorhanden** → nichts ändern, dem User mitteilen dass Permissions bereits konfiguriert sind
|
|
103
|
+
|
|
104
|
+
Zeige dem User danach den aktuellen Stand der settings.json:
|
|
105
|
+
```
|
|
106
|
+
✅ Terminal-Permissions gesetzt – du wirst nicht mehr bei jedem Befehl gefragt.
|
|
107
|
+
Bash, Git, Read, Write und Edit sind für dieses Projekt vorab genehmigt.
|
|
108
|
+
(Konfiguriert in .claude/settings.json – jederzeit anpassbar)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
67
113
|
**Schritt 3a – Nur fehlende Dateien kopieren** (Modus: "Nur fehlende"):
|
|
68
114
|
|
|
69
115
|
```bash
|