kimal3 0.4.0 → 0.6.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.
@@ -0,0 +1,347 @@
1
+ ---
2
+ description: Die Specs gegen den Code prüfen und die Planung in die App hochladen
3
+ ---
4
+
5
+ <!-- kimal3:erzeugt — diese Datei wird von `kimal3 skill install` gepflegt und bei
6
+ jedem Update ueberschrieben. Eigene Aenderungen gehen dabei verloren; wer sie
7
+ behalten will, kopiert die Datei unter einem anderen Namen. -->
8
+ # Planung prüfen und hochladen
9
+
10
+ ## 1. Wozu
11
+
12
+ Du prüfst die User Stories in den Specs dieses Projekts gegen den Code und lädst **nur das
13
+ Ergebnis** in die App hoch — nie den Code. Dort sieht der Mensch auf der Projektseite (Reiter
14
+ „Planung"), was offen ist, was auf seinen Test wartet und was fertig ist, und urteilt mit
15
+ „Passt" oder „Passt nicht".
16
+
17
+ Arbeite die Abschnitte der Reihe nach ab. Die Regeln (Abschnitt 5) und das Dateiformat
18
+ (Abschnitt 6) brauchst du schon ab Abschnitt 2 — lies sie zuerst. Was ein Rückgabewert von
19
+ `kimal3` heißt, steht in **`~/.claude/skills/kimal3/SKILL.md`, Abschnitt „Rückgabewerte"**;
20
+ diese Datei wiederholt es nicht.
21
+
22
+ 🔑 **`/k3plan` prüft, ordnet ein und lädt hoch — es baut nichts.** Was nachzubessern ist, steht
23
+ danach als Befund an der Story; gebaut wird, wenn der Mensch es sagt.
24
+
25
+ ## 2. Rückmeldungen holen
26
+
27
+ Arbeite im **Projektordner** (dort, wo Specs und Code liegen). Die Datei heißt immer
28
+ `plan/stand.json`, relativ zu diesem Ordner.
29
+
30
+ ```
31
+ kimal3 plan
32
+ ```
33
+
34
+ **Kommt `Im Ordner liegt keine plan/stand.json.`**, ist es das erste Mal (oder du stehst im
35
+ falschen Ordner — prüf das zuerst):
36
+
37
+ 1. `kimal3 projekt liste` — such das Projekt, um das es hier geht. Gibt es **kein** passendes,
38
+ frag den Menschen, welches gemeint ist, und schlag `/k3projekt <was du gebaut hast>` vor:
39
+ Ohne Eintrag im Erfolgsprofil gibt es keine Projektseite. Hier aufhören, nichts erfinden.
40
+ 2. Leg `plan/stand.json` an, mit dem Namen **genau so, wie die Liste ihn schreibt**:
41
+
42
+ ```json
43
+ {
44
+ "format": 1,
45
+ "projekt": "LinkedIn Content-App",
46
+ "projekt_id": null,
47
+ "basis": null,
48
+ "geprueft_am": "2026-10-21T22:10:00+02:00",
49
+ "specs": [],
50
+ "themen": [],
51
+ "uebernommen": []
52
+ }
53
+ ```
54
+
55
+ (Name und Zeitpunkt sind ein Beispiel.) `projekt_id` und `basis` trägt `kimal3 plan hoch`
56
+ nach dem ersten Hochladen selbst ein — **lass sie bei `null`**.
57
+ 3. `kimal3 plan` noch einmal.
58
+
59
+ **Was die Ausgabe heißt** (Beispiel, erfundene Werte):
60
+
61
+ ```
62
+ #12 · passt nicht · 2026-09-23-content-planer / US-2 (Runde 1): Beim Ziehen springt er auf Dienstag
63
+ #13 · Thema: Kalender soll Feiertage zeigen
64
+ Bestätigt: 2026-09-23-content-planer / US-1 (Runde 1)
65
+ Ansehen: https://app.kimal3.de/projekt/…
66
+ ```
67
+
68
+ - `#12 · passt nicht · <Spec> / <Story> (Runde n): <Satz>` — der Mensch hat die Story getestet,
69
+ sie hält nicht. → Regel 1 in Abschnitt 5. Die Nummer brauchst du später für `uebernommen`.
70
+ - `#13 · Thema: <Satz>` — etwas Neues, das er in der App notiert hat. → Regel 3.
71
+ - `Bestätigt: …` — für diese Stories hat er in **dieser** Runde „Passt" gesagt; sie sind fertig.
72
+ Ein „Passt" musst du nicht übernehmen.
73
+ - `Ansehen: …` — der Link zur Planung. Merk ihn dir für den Bericht.
74
+ - `Keine offenen Rückmeldungen.` — nichts zu übernehmen; weiter mit Abschnitt 3.
75
+
76
+ **Absagen:**
77
+ - `Kein Projekt heißt „…“. Deine Projekte: … Trag den Namen in plan/stand.json genau so ein.` —
78
+ übernimm den passenden Namen **wörtlich** aus der Liste in `"projekt"`. Passen zwei, frag.
79
+ - `Mehrere deiner Projekte heißen „…“ (Nummern: …).` — frag den Menschen, welches gemeint ist, und
80
+ trag dessen Nummer als `"projekt_id"` ein.
81
+ - `Die Projektnummer in plan/stand.json gehört zu keinem deiner Projekte.` — die Nummer stammt aus
82
+ einem kopierten Ordner oder einem gelöschten Projekt. Setz `"projekt_id"` auf `null` (die Zeile
83
+ bleibt stehen, das Feld ist Pflicht); dann sucht kimal3 nach dem Namen. Das ist der **einzige**
84
+ Fall, in dem du `projekt_id` selbst änderst.
85
+ - `Der Plan ist nicht lesbar: plan/stand.json enthält kein gültiges JSON-Objekt.` — Klammern oder
86
+ Kommas in der Datei reparieren.
87
+
88
+ ## 3. Specs finden
89
+
90
+ Such im Projektordner in **`docs/superpowers/specs/`**, **`plan/`** und **`docs/specs/`** nach
91
+ Markdown-Dateien mit User Stories („Als … will ich … damit …", oft `US-1`, `US-2`, mit
92
+ Akzeptanzkriterien und Gegenprobe). `plan/stand.json` selbst, Statuszettel und Aufgabenlisten
93
+ sind keine Specs.
94
+
95
+ Je Spec ein Eintrag in `specs`, je User Story ein Eintrag in `stories`, je Akzeptanzkriterium
96
+ ein Eintrag in `kriterien` (kurz gefasst, höchstens 500 Zeichen: Ausgangslage → Handlung →
97
+ Ergebnis).
98
+
99
+ 🔴 **Die Schlüssel sind bindend.** Die App hängt jedes „Passt" und „Passt nicht" an
100
+ Spec-Schlüssel + Story-Schlüssel + Runde. Steht eine Spec oder Story schon in `plan/stand.json`,
101
+ **übernimm ihren Schlüssel unverändert** — ein umbenannter Schlüssel lässt das Urteil des
102
+ Menschen verschwinden. Neu: Spec-Schlüssel = Dateiname ohne `.md`; Story-Schlüssel = die Nummer
103
+ aus der Spec (`US-3`); nummeriert die Spec nicht, zähl selbst `US-1`, `US-2` … in ihrer
104
+ Reihenfolge.
105
+
106
+ - `titel`: die Überschrift der Spec bzw. der Story. `datei`: der Pfad der Spec im Projektordner (relativ, endet auf `.md`; sonst `null`). Den **Text** der Spec
107
+ liest `kimal3 plan hoch` aus dieser Datei und schickt ihn mit — Pfade außerhalb des Projektordners
108
+ liest es nicht.
109
+ - Der Story-Schlüssel ist **derselbe wie in der Überschrift der Spec**, wo die Spec ihre Stories
110
+ nummeriert (`### US-3 · …` → `US-3`): Die App findet die Story im Spec-Text über diesen Schlüssel.
111
+ - Eine Spec ohne Stories kommt mit `"stories": []` hinein; sag es im Bericht.
112
+ - Grenzen: höchstens 50 Specs, 60 Stories je Spec, 400 zusammen. Sind es mehr, frag den
113
+ Menschen, welche Specs hineingehören.
114
+
115
+ **Der Stand je Story:**
116
+ - `offen` — noch nichts gebaut.
117
+ - `in_arbeit` — teilweise gebaut, oder ein Befund ist offen. `gebaut_am` ist dann `null`.
118
+ - `gebaut` — gebaut. `gebaut_am`: das Datum, an dem **diese Runde** fertig wurde (`JJJJ-MM-TT`);
119
+ dazu ein `testen`-Satz (Abschnitt 4).
120
+ - `weggelassen` — bewusst nicht gebaut, `grund` ist Pflicht (Regel 8). Nur, wenn die Spec oder
121
+ der Mensch das so entschieden hat — nie von dir allein, um aufzuräumen. Im Zweifel: `offen`
122
+ lassen und im Bericht fragen.
123
+
124
+ ## 4. Gegen den Code prüfen
125
+
126
+ Führ je Kriterium seine Gegenprobe aus, **wo es geht**: die Wächter oder Tests des Projekts
127
+ (`npm test`, `npm run …`), einen Befehl, die App starten und die Adresse aufrufen, eine Datei
128
+ lesen.
129
+
130
+ - `bestanden` — **nur**, wenn die Gegenprobe in dieser Sitzung gelaufen ist und das erwartete
131
+ Ergebnis gezeigt hat. Nie aus dem Gedächtnis, nie vom letzten Mal, nie weil der Code „richtig
132
+ aussieht".
133
+ - `gescheitert` — sie ist gelaufen und hat etwas anderes gezeigt. Das ist ein Befund (Regel 1);
134
+ die App stellt die Story und ihre Spec damit nach „In Arbeit".
135
+ - `offen` — alles, was nicht gelaufen ist: braucht einen Browser, eine Anmeldung, echte Daten
136
+ oder einen Menschen. Lesen zählt nur, wenn das Kriterium etwas über die Datei selbst sagt (eine
137
+ Datei gibt es, ein Text steht so da) — ein Verhalten beweist Lesen nicht.
138
+
139
+ ⚠️ Eine Story mit einem `offen`-Kriterium steht in „Claude-Test offen", und der Mensch kann sie
140
+ noch nicht testen. Sag im Bericht, was fehlt, damit die Gegenprobe laufen kann.
141
+
142
+ **Der `testen`-Satz** (bei jeder `gebaut`-Story, höchstens 1000 Zeichen) nennt die **Adresse oder
143
+ den Befehl** und **was dort zu sehen sein muss**, zum Beispiel: „Starte `npm run dev`, öffne
144
+ http://localhost:3000/kalender und zieh den Beitrag vom Montag auf den Mittwoch — er steht danach
145
+ am Mittwoch." Ohne ihn zeigt die App: „Claude hat nicht aufgeschrieben, wie man das testet".
146
+
147
+ **Befunde** (`befunde`): nur **offene**. `quelle: "claude"` für etwas, das die Story verspricht und
148
+ nicht tut, und das kein Kriterium abdeckt. `seit`: das Datum, an dem der Befund entstand — steht
149
+ er schon in der Datei, bleibt sein altes Datum.
150
+
151
+ **Die Runde** bindet ein Urteil an einen Bau-Stand — wie ein Stempel auf einer Fassung:
152
+ - Sie beginnt bei `1` und wird **nie** kleiner.
153
+ - **Um genau 1 erhöhen**, wenn eine Story mit einem Befund des Menschen (`quelle: "mensch"`)
154
+ seitdem nachgebessert wurde (Git-Verlauf, und die Gegenproben bestehen jetzt): dann
155
+ `befunde: []`, `stand: "gebaut"`, neues `gebaut_am`, neuer `testen`-Satz. Der Mensch testet neu.
156
+ Ist unklar, ob nachgebessert wurde: Befund stehen lassen und im Bericht fragen.
157
+ - **Auch erhöhen**, wenn du eine **bestätigte** Story so geändert hast, dass der Mensch es merken
158
+ würde — sein altes „Passt" gilt dann nicht mehr (Regel 7).
159
+ - Sonst **nicht anfassen**: Eine bestätigte Story bleibt fertig, solange ihre Runde gleich bleibt.
160
+
161
+ ## 5. Die acht Regeln
162
+
163
+ Die App zeigt sie dem Menschen in genau diesem Wortlaut („So bleibt die Planung kurz"):
164
+
165
+ 1. **Ein Befund ist keine neue Karte.** Hält eine Story nicht, was sie verspricht — Claudes Gegenprobe scheitert oder du sagst „Passt nicht" —, hängt der Befund an **dieser** Story, und ihre Spec geht zurück nach „In Arbeit“.
166
+ 2. **Neu ist nur, was niemand versprochen hat. Das kommt in den Eingang, und der hat fünf Plätze.**
167
+ 3. **Claude ordnet jedes Thema beim nächsten `/k3plan` ein:** als neue Story in eine Spec, als Befund an eine Story, oder gestrichen mit Begründung. „Für später" gibt es nicht. Was daraus wurde, steht unter „Zuletzt eingeordnet".
168
+ 4. **Nichts liegt länger als 14 Tage im Eingang.**
169
+ 5. **Höchstens eine Spec gleichzeitig in Arbeit** („In Arbeit“ und „Claude-Test offen“ zusammen). Erst fertig machen, dann die nächste beginnen.
170
+ 6. **Höchstens fünf Stories warten auf deinen Test.** Sind es mehr, fängt Claude nichts Neues an, bis du getestet hast.
171
+ 7. **Fertig heißt zweimal geprüft:** Claudes Gegenproben bestanden, und du hast „Passt" gesagt — für genau diesen Stand.
172
+ 8. **Eine Spec ist erst abgeschlossen, wenn jede Story fertig oder bewusst weggelassen ist** — mit Grund. Einen stillen Rest gibt es nicht.
173
+
174
+ **Was du danach tust:**
175
+
176
+ - **Regel 1 — jedes `passt nicht` aus `kimal3 plan`:** Gibt es die Story noch, häng den Satz des
177
+ Menschen als Befund an sie (`{ "text": "<sein Satz>", "quelle": "mensch", "seit": "<heute>" }`),
178
+ `stand: "in_arbeit"`, `gebaut_am: null`. Ist sie seitdem schon nachgebessert, stattdessen
179
+ Runde + 1 und `befunde: []` (Abschnitt 4). Dazu in `uebernommen`:
180
+ `{ "rueckmeldung": 12, "antwort": "Befund an US-2" }`. Gibt es die Story nicht mehr, sagt die
181
+ `antwort`, warum. ⚠️ Ohne Befund von `mensch` und ohne höhere Runde lehnt der Server das
182
+ Hochladen ab.
183
+ - **Regel 2 — Neues:** Was dir beim Prüfen auffällt oder der Mensch im Gespräch sagt und was
184
+ **keine** Spec verspricht, kommt nach `themen`:
185
+ `{ "schluessel": "T-1", "text": "…", "quelle": "claude" | "mensch", "seit": "<heute>" }`.
186
+ Die fünf Plätze teilen sich `themen` und die offenen Notizen aus der App.
187
+ - **Regel 3 — einordnen:** Jedes `Thema` aus `kimal3 plan` **und** jedes Thema, das schon von
188
+ früher in `themen` steht, ordnest du **jetzt** ein — eins von dreien:
189
+ - **neue Story:** schreib sie in die Spec, zu der sie gehört (User Story, Akzeptanzkriterium mit
190
+ Gegenprobe), und in `plan/stand.json` mit `stand: "offen"`. Passt keine Spec, frag, wohin.
191
+ Antwort: `neue Story US-7 in „Content-Planer“`.
192
+ - **Befund an eine Story:** wie bei Regel 1. Antwort: `Befund an US-2 in „Content-Planer“`.
193
+ - **gestrichen:** Antwort `gestrichen: <Grund in einem Satz>`, zum Beispiel
194
+ `gestrichen: Feiertage stehen schon im Kalender-Werkzeug.`
195
+
196
+ Für eine Notiz aus der App gehört die Antwort als **ein Satz** in `uebernommen` (die App zeigt
197
+ sie unter „Zuletzt eingeordnet" als `<Notiz> → <Antwort>`); schreib sie darum **ohne** Pfeil
198
+ am Anfang. Ein Thema aus der Datei nimmst du aus `themen` heraus und nennst seine Einordnung im
199
+ Bericht.
200
+ - **Regel 4:** Weil du bei jedem `/k3plan` alles einordnest, liegt nichts lange. Ein Thema mit
201
+ `seit` vor mehr als 14 Tagen ordnest du **auf jeden Fall** jetzt ein.
202
+ - **Regel 5 und 6 — keine neue Spec beginnen**, solange eine andere Spec in Arbeit ist (eine ihrer
203
+ Stories ist `in_arbeit`, hat einen Befund oder eine gescheiterte Gegenprobe, oder ist `gebaut`
204
+ mit einem `offen`-Kriterium oder ganz ohne Kriterien), oder solange mehr als fünf Stories auf den Test des Menschen
205
+ warten (`gebaut`, alles bestanden, kein Befund, noch nicht bestätigt). **Sag dem Menschen
206
+ stattdessen, was er testen soll** — mit den `testen`-Sätzen. Ordnest du ein Thema als neue Story
207
+ in eine Spec ein, beginnst du sie damit nicht: Sie steht `offen`, und die Spec gilt nicht als in
208
+ Arbeit.
209
+ - **Regel 7:** „Fertig" setzt nur der Mensch mit „Passt" in der App; in der Datei gibt es dafür kein
210
+ Feld. Du hältst nur die Runde stabil (Abschnitt 4).
211
+ - **Regel 8:** `weggelassen` nur mit `grund` (Abschnitt 3).
212
+
213
+ ## 6. Die Datei
214
+
215
+ `plan/stand.json` steht unter Git. Beispiel, gekürzt:
216
+
217
+ ```json
218
+ {
219
+ "format": 1,
220
+ "projekt": "LinkedIn Content-App",
221
+ "projekt_id": null,
222
+ "basis": null,
223
+ "geprueft_am": "2026-10-21T22:10:00+02:00",
224
+ "specs": [
225
+ {
226
+ "schluessel": "2026-09-23-content-planer",
227
+ "titel": "Content-Planer als Seite",
228
+ "datei": "plan/2026-09-23-content-planer-seite-spec.md",
229
+ "stories": [
230
+ {
231
+ "schluessel": "US-2",
232
+ "titel": "Beiträge im Kalender verschieben",
233
+ "stand": "gebaut",
234
+ "runde": 1,
235
+ "gebaut_am": "2026-10-21",
236
+ "kriterien": [
237
+ { "text": "Beitrag vom Montag auf Mittwoch ziehen → steht am Mittwoch", "gegenprobe": "bestanden" }
238
+ ],
239
+ "befunde": [],
240
+ "testen": "Öffne /kalender, zieh den Beitrag vom Montag auf den Mittwoch.",
241
+ "grund": null
242
+ }
243
+ ]
244
+ }
245
+ ],
246
+ "themen": [
247
+ { "schluessel": "T-1", "text": "Kalender soll Feiertage zeigen", "quelle": "mensch", "seit": "2026-10-21" }
248
+ ],
249
+ "uebernommen": [
250
+ { "rueckmeldung": 12, "antwort": "Befund an US-2" }
251
+ ]
252
+ }
253
+ ```
254
+
255
+ **Die Felder** — jedes muss da sein, auch wenn es `null` oder leer ist; ein unbekanntes Feld
256
+ (ein Tippfehler wie `"befund"`) lehnt der Server ab:
257
+
258
+ - `format`: genau `1`.
259
+ - `projekt`: der Name wie in der App, 1–200 Zeichen.
260
+ - `projekt_id`, `basis`: am Anfang `null`; danach schreibt sie `kimal3 plan hoch` — **nie von Hand
261
+ ändern**. Einzige Ausnahme: die Absage „Die Projektnummer in plan/stand.json gehört zu keinem
262
+ deiner Projekte." — dann `projekt_id` auf `null` setzen (Abschnitt 2).
263
+ - `geprueft_am`: jetzt, mit Zeitzone (`date +%Y-%m-%dT%H:%M:%S%:z` in der Bash, `Get-Date -Format
264
+ "yyyy-MM-ddTHH:mm:sszzz"` in PowerShell).
265
+ - `specs[]`: `schluessel` (eindeutig, 1–80 Zeichen), `titel` (1–200), `datei` (Pfad oder `null`),
266
+ `stories[]`.
267
+ - `stories[]`: `schluessel` (eindeutig in ihrer Spec), `titel`, `stand` (`offen` · `in_arbeit` ·
268
+ `gebaut` · `weggelassen`), `runde` (1–999), `gebaut_am` (`JJJJ-MM-TT` bei `gebaut`, sonst
269
+ `null`), `kriterien[]`, `befunde[]`, `testen` (Satz oder `null`), `grund` (Pflicht bei
270
+ `weggelassen`, sonst `null`).
271
+ - `kriterien[]`: `{ "text", "gegenprobe": "bestanden" | "gescheitert" | "offen" }`, höchstens 30
272
+ je Story.
273
+ - `befunde[]`: `{ "text", "quelle": "claude" | "mensch", "seit": "JJJJ-MM-TT" }` — nur offene,
274
+ höchstens 20.
275
+ - `themen[]`: `{ "schluessel", "text", "quelle", "seit" }`, höchstens 50 (der Eingang hat fünf
276
+ Plätze, Regel 2).
277
+ - `uebernommen[]`: `{ "rueckmeldung": <Nummer aus kimal3 plan>, "antwort": "<ein Satz>" }`. Leert
278
+ `kimal3 plan hoch` nach dem Hochladen selbst.
279
+ - Die ganze Datei: höchstens 300 KB.
280
+
281
+ ## 7. Hochladen
282
+
283
+ Erst der Probelauf — er prüft alles und speichert nichts:
284
+
285
+ ```
286
+ kimal3 plan hoch --probe
287
+ ```
288
+
289
+ `Probelauf: würde 9 Stories hochladen, 2 Rückmeldungen als übernommen melden. Gespeichert wurde
290
+ nichts.` (Zahlen als Beispiel.) **Vergleich die zweite Zahl** mit den offenen Rückmeldungen aus
291
+ `kimal3 plan`: Ist sie kleiner, hast du eine vergessen — sie bliebe in der App unter „Wartet auf
292
+ Claude".
293
+
294
+ Dann:
295
+
296
+ ```
297
+ kimal3 plan hoch
298
+ ```
299
+
300
+ Geklappt hat es bei `✓ Planung für „…“ hochgeladen: … Stories, … warten auf deinen Test.` und
301
+ `Ansehen: …`; beim ersten Mal zusätzlich `projekt_id und basis stehen jetzt in plan/stand.json.`
302
+ Die CLI hat `projekt_id` und `basis` eingetragen und `uebernommen` geleert — lass die Datei so.
303
+ Sag dem Menschen, dass `plan/stand.json` geändert ist und in den nächsten Commit gehört.
304
+
305
+ Danach steht eine Zeile `Spec-Texte hochgeladen: 1 von 3. Ohne Text: …` — der Text der Specs geht mit hoch.
306
+ Eine Spec ohne Text ist ein **Hinweis, kein Fehlschlag** (Rückgabewert `0`): Nenn dem Menschen die
307
+ Specs, die in der Klammer stehen, und was zu tun ist (Pfad in `datei` berichtigen; über 300 KB
308
+ lässt sich nicht hochladen).
309
+
310
+ **Absagen — die Meldung lesen, beheben, Probelauf, noch einmal:**
311
+
312
+ | Meldung beginnt mit | Was du tust |
313
+ |---|---|
314
+ | `Der Plan ist nicht lesbar: <Ort> …` | Die Stelle (`specs[0].stories[2].stand`) in der Datei reparieren. |
315
+ | `Kein Projekt heißt …` · `Mehrere deiner Projekte heißen …` · `Die Projektnummer in plan/stand.json gehört zu keinem deiner Projekte.` | Wie in Abschnitt 2. Bei der Projektnummer darfst du `projekt_id` auf `null` setzen — nur hier. |
316
+ | `<Spec> / <Story> hat Runde 1, gespeichert ist schon Runde 2.` | Die Datei ist älter als der gespeicherte Stand. Runde auf den gespeicherten Wert setzen — nie kleiner. |
317
+ | `Rückmeldung 12 gibt es in diesem Projekt nicht oder steht zweimal …` | Nur Nummern aus `kimal3 plan`, jede einmal. |
318
+ | `Rückmeldung 12 („…“) ist als übernommen gemeldet, aber US-2 hat keinen Befund von dir …` | Den Befund mit `quelle: "mensch"` an die Story hängen (Regel 1) — oder Runde + 1, wenn nachgebessert ist. |
319
+ | `In der App liegt ein neuerer Plan (hochgeladen …).` | Eine andere Arbeitskopie hat hochgeladen. **Nicht überschreiben.** Sag es dem Menschen und frag, ob ihr deren Stand erst holt (Git) und neu prüft. `kimal3 plan hoch --ueberschreiben` **nur nach seinem ausdrücklichen Ja.** |
320
+ | `Die gespeicherte Planung in der App ist beschädigt …` | Auch hier `--ueberschreiben` **nur nach seinem Ja.** |
321
+ | `Die Planung ist gespeichert, aber die Rückmeldungen sind noch nicht als übernommen markiert.` | `kimal3 plan hoch` **unverändert** noch einmal — das ist harmlos, die CLI hat `basis` schon nachgetragen und `uebernommen` stehen lassen. |
322
+ | ``Die Planung ist gespeichert, aber die Spec-Texte nicht. Führ `kimal3 plan hoch` noch einmal aus.`` | `kimal3 plan hoch` **unverändert** noch einmal — der Plan steht schon in der App, die CLI hat `basis` nachgetragen. |
323
+ | `⚠ Die Planung ist gespeichert, aber plan/stand.json ließ sich nicht nachtragen. Trag selbst ein: …` | Genau diese Werte in die Datei schreiben. |
324
+ | `… ließ sich gerade nicht laden` / `… nicht speichern` | Einmal wiederholen; klappt es dann nicht, dem Menschen sagen. |
325
+
326
+ 🔴 **`--ueberschreiben` ersetzt, was ein anderer hochgeladen hat.** Nie aus eigenem Entschluss,
327
+ auch nicht, wenn die Meldung es vorschlägt.
328
+
329
+ ## 8. Dem Menschen berichten
330
+
331
+ **Höchstens fünf Zeilen**, ohne Fachjargon:
332
+
333
+ - was **fertig** wurde (seit dem letzten Mal bestätigt),
334
+ - was **auf seinen Test wartet** — mit dem `testen`-Satz, damit er gleich loslegen kann,
335
+ - was im **Eingang** entschieden wurde (jedes Thema mit seiner Antwort),
336
+ - eine **Warnung**, wenn Regel 5 oder 6 verletzt ist: „Teste zuerst …" statt einer neuen Story,
337
+ - der **Link** aus `Ansehen: …`.
338
+
339
+ Beispiel (erfundene Werte):
340
+
341
+ ```
342
+ Fertig: US-1 „Beiträge anlegen“.
343
+ Dein Test: US-2 — öffne /kalender und zieh den Beitrag vom Montag auf den Mittwoch.
344
+ Eingang: „Kalender soll Feiertage zeigen“ → neue Story US-7 in „Content-Planer“.
345
+ Claude-Test offen: US-4 braucht einen Browser, den ich hier nicht habe.
346
+ Planung: https://app.kimal3.de/projekt/…
347
+ ```
@@ -24,7 +24,7 @@ nicht relevant, sag das kurz und überspring ihn — kein Leerlauf.
24
24
  - Gibt es ein Status-Doc (`WEITER-HIER.md` oder `ROADMAP.md`) — eine kleine Datei, in der der
25
25
  letzte Stand und der nächste Schritt festgehalten sind? Dann lies es.
26
26
  - **Wo der Statuszettel liegt und wie er heißt.** Die Projektregel gilt **nur innerhalb eines Arbeitsplatzes**: Liegt ein Ordner `projekte/` oder `projects/` direkt in einem Ordner `werkbank-…` oder `workbench-…` (beide Schreibweisen kommen vor, auch gemischt) und steht die Sitzung in oder unter einem Ordner darin, ist dieser **Projektordner** der Ort. Name dort: unter `projekte/` `WEITER-HIER.md`, unter `projects/` `NEXT-STEPS.md`. **Überall sonst** (Starter-Paket, eigene Repos, auch ein Ordner `~/projects/mein-repo`) bleibt es wie bisher: Der Zettel liegt im Startordner, liegt einer da, nimm ihn; muss einer neu entstehen, heißt er `WEITER-HIER.md` — oder `NEXT-STEPS.md`, wenn der Ordner englisch angelegt wurde. Liegen beide da, frag, welcher gilt, und schreib in keinen, bevor die Antwort da ist. **Welcher gilt (im Arbeitsplatz):** Hat das Projekt einen, gilt der des Projekts. Sonst gilt ein vorhandener Werkbank-Zettel (`werkbank-…/WEITER-HIER.md` oder `workbench-…/NEXT-STEPS.md` aus der alten Vorlage) — den liest und pflegst du weiter. Gibt es keinen von beiden, entsteht er **im Projekt**. **Leg nie einen neuen Zettel in der Werkbank an.**
27
- - **Stehst du in der Werkbank selbst (`werkbank-…` oder `workbench-…`), nicht in einem Projekt?** Steht in ihrer `CLAUDE.md` der Abschnitt „Erste Sitzung“ (englisch „First session“), folge **ihm** — er hat Vorrang vor allem Folgenden. Steht er nicht (mehr) da, zeig die Projekte in `projekte/` bzw. `projects/` (ohne `beispiel-rechnungen-erfassen` und `example-capture-invoices`) mit je der **ersten Stand-Zeile** ihres Zettels, oder „noch kein Zettel“, wenn keiner da ist; ein vorhandener Werkbank-Zettel (`WEITER-HIER.md` oder `NEXT-STEPS.md`) steht darüber. Empfiehl daraus **eines** und stell **eine** Frage dazu.
27
+ - **Stehst du in der Werkbank selbst (`werkbank-…` oder `workbench-…`), nicht in einem Projekt?** Steht in ihrer `CLAUDE.md` der Abschnitt „Erste Sitzung“ (englisch „First session“), folge **ihm** — er hat Vorrang vor allem Folgenden. Steht er nicht (mehr) da, zeig die Projekte in `projekte/` bzw. `projects/` (ohne `beispiel-rechnungen-erfassen` und `example-capture-invoices`) mit je der **ersten Stand-Zeile** ihres Zettels, oder „noch kein Zettel“, wenn keiner da ist; ein vorhandener Werkbank-Zettel (`WEITER-HIER.md` oder `NEXT-STEPS.md`) steht darüber. Empfiehl daraus **eines** und stell **eine** Frage dazu. Wählt der Mensch ein Projekt aus der Liste oder nennt eine neue Aufgabe (dann legst du erst Ordner und Statuszettel im Projekt an, nie in der Werkbank), bring die Sitzung in den Projektordner: mit `change_directory` (steht es nur als Name in deiner Werkzeugliste, lade es über die Werkzeugsuche) — und sag vorher: „Gleich fragt dich die Claude-App, ob ich den Ordner wechseln darf, und danach, ob du ihm vertraust — beides ist richtig so, klick jeweils auf Erlauben. Landest du danach in einem leeren Gespräch, tipp dort `/k3start`; dieses Gespräch findest du links in der Liste wieder.“ Ohne das Werkzeug oder wenn der Mensch ablehnt: nenne den genauen Projektordner (nicht die Werkbank darüber) — in der App „Ordner wählen“ und diesen Ordner nehmen, im Terminal `/exit`, `cd '‹Pfad›'`, `claude` — und dann `/k3start`. Bei einem neuen Projekt lies vorher `projekte/CLAUDE.md` (englisch `projects/CLAUDE.md`): ab jetzt gilt sie.
28
28
  - Kein Status-Doc? **Sieh erst nach, ob ein `.git`-Ordner im Zettel-Ort liegt** (im Arbeitsplatz der Projektordner, sonst der Startordner). Wenn ja, führt dieses
29
29
  Projekt eine Versionsgeschichte, und `git log --oneline -10` plus `git status` zeigen dir den
30
30
  letzten Stand.