kimal3 0.8.0 → 0.9.1

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/package.json CHANGED
@@ -1,30 +1,30 @@
1
- {
2
- "name": "kimal3",
3
- "version": "0.8.0",
4
- "description": "Trag deine KI-Projekte dort ein, wo sie entstehen: im Terminal. · Log your AI projects where they happen: in the terminal.",
5
- "type": "module",
6
- "bin": {
7
- "kimal3": "dist/kimal3.js"
8
- },
9
- "files": [
10
- "dist",
11
- "skill",
12
- "claude-plugins",
13
- "coach",
14
- "zeigen",
15
- "README.md"
16
- ],
17
- "engines": {
18
- "node": ">=20"
19
- },
20
- "scripts": {
21
- "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json",
22
- "prepublishOnly": "npm run build"
23
- },
24
- "keywords": [
25
- "kimal3",
26
- "cli"
27
- ],
28
- "homepage": "https://app.kimal3.de/pro",
29
- "license": "SEE LICENSE IN README.md"
30
- }
1
+ {
2
+ "name": "kimal3",
3
+ "version": "0.9.1",
4
+ "description": "Trag deine KI-Projekte dort ein, wo sie entstehen: im Terminal. · Log your AI projects where they happen: in the terminal.",
5
+ "type": "module",
6
+ "bin": {
7
+ "kimal3": "dist/kimal3.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "skill",
12
+ "claude-plugins",
13
+ "coach",
14
+ "zeigen",
15
+ "README.md"
16
+ ],
17
+ "engines": {
18
+ "node": ">=20"
19
+ },
20
+ "scripts": {
21
+ "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.json",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "keywords": [
25
+ "kimal3",
26
+ "cli"
27
+ ],
28
+ "homepage": "https://app.kimal3.de/pro",
29
+ "license": "SEE LICENSE IN README.md"
30
+ }
@@ -28,7 +28,7 @@ und überspring ihn — kein Leerlauf.
28
28
  `~/.claude/skills/kimal3/SKILL.md`):
29
29
 
30
30
  ```json
31
- [ { "art": "story", "spec": "2026-10-24-testmonat", "story": "US-1", "stand": "gebaut",
31
+ [ { "art": "story", "spec": "2026-10-24-testmonat-design", "story": "US-1", "stand": "gebaut",
32
32
  "kriterien": [ { "text": "Startet Sabine am 1.11., endet er am 30.11.", "gegenprobe": "bestanden" } ],
33
33
  "testen": "1. Öffne /testmonat.\n2. Klick „Starten“.\n3. Darunter steht „Endet am 30.11.“.\nPasst nicht, wenn: dort ein anderes Datum steht." } ]
34
34
  ```
@@ -36,7 +36,7 @@ und überspring ihn — kein Leerlauf.
36
36
  Und was unfertig bleibt, getrennt davon, mit dem Schalter:
37
37
 
38
38
  ```json
39
- [ { "art": "story", "spec": "2026-10-24-testmonat", "story": "US-2", "stand": "in_arbeit" } ]
39
+ [ { "art": "story", "spec": "2026-10-24-testmonat-design", "story": "US-2", "stand": "in_arbeit" } ]
40
40
  ```
41
41
 
42
42
  ```
@@ -43,7 +43,7 @@ Du löschst sie nicht selbst.
43
43
  **Was die Ausgabe heißt** (Beispiel, erfundene Werte):
44
44
 
45
45
  ```
46
- Spec 2026-09-23-content-planer · Content-Planer als Seite (plan/2026-09-23-content-planer-seite-spec.md)
46
+ Spec 2026-09-23-content-planer · Content-Planer als Seite (plan/2026-09-23-content-planer.md)
47
47
  US-1 · gebaut · Runde 1 · Beiträge anlegen
48
48
  US-2 · in Arbeit · Runde 1 · Beiträge im Kalender verschieben
49
49
  Notiertes Thema T-3: Export als PDF
@@ -130,7 +130,7 @@ Gegenprobe laufen kann.
130
130
 
131
131
  **Der `testen`-Text** (bei jeder `gebaut`-Story, höchstens 1000 Zeichen) ist eine Anleitung für jemanden ohne Technik. Steht die Story in einer Spec mit der Kiste „So testest du es“, nimmst du ihn von dort, wörtlich; fehlt die Kiste, schreibst du ihn selbst. **Eine Zeile je Schritt** — wo man es findet, was man tut, was dann zu sehen ist —, **ohne** Kistenüberschrift, und **zuletzt** die Zeile „Passt nicht, wenn: …“. Im JSON trennst du die Zeilen mit `\n`: Ein echter Zeilenumbruch im Text bricht das JSON, und `kimal3 plan melde` liest die Meldung nicht. Ist der Text länger als 1000 Zeichen, kürze die Schritte — nie mitten im Satz abschneiden, die Zeile „Passt nicht, wenn: …“ muss am Ende stehen bleiben. Ein Befehl nur, wenn es keinen anderen Weg gibt — dann sagst du, wo man ihn eingibt (in Claude Code im Projektordner, mit `!` davor), und setzt ihn in Backticks. Fehlt der Text, zeigt die App: „Claude hat nicht aufgeschrieben, wie man das testet".
132
132
 
133
- **Prüfen ist Arbeit.** Bevor du eine Story mit offenen Gegenproben (Spalte „Claude-Test offen“) gegen den Code prüfst, meldest du sie als `in_arbeit` **mit** der Sitzung (also ohne `--ohne-sitzung`): Solange du prüfst, leuchtet der Punkt am Projekt. Nach der Prüfung meldest du das Ergebnis (`gebaut`, oder `in_arbeit` mit Befund). Stories in „Dein Test“ oder „Fertig“ meldest du beim Abgleich **nicht** neu, auch wenn du sie durchsiehst: `in_arbeit` und danach `gebaut` setzt ihr Baudatum auf heute, und jede Meldung zeigt das Etikett „geändert“ und bei zwei Sitzungen das ⚠ „gleichzeitig geändert“. Was am Ende von `/k3plan` unfertig bleibt, meldest du mit `--ohne-sitzung` (Abschnitt 6).
133
+ **Prüfen ist Arbeit.** Bevor du eine Story mit offenen Gegenproben (Spalte „Claude-Test offen“) gegen den Code prüfst, meldest du sie als `in_arbeit` **mit** der Sitzung (also ohne `--ohne-sitzung`) **und mit `"pruefen": true`**: Solange du prüfst, leuchtet der Punkt am Projekt, aber die Karte kommt dadurch nicht ins Gespräch — ohne das Feld wanderte der blaue Rahmen durch jede Spec, die du prüfst. Nach der Prüfung meldest du das Ergebnis (`gebaut`, oder `in_arbeit` mit Befund — jede `in_arbeit`-Meldung aus `/k3plan` trägt `"pruefen": true`). Stories in „Dein Test“ oder „Fertig“ meldest du beim Abgleich **nicht** neu, auch wenn du sie durchsiehst: `in_arbeit` und danach `gebaut` setzt ihr Baudatum auf heute, und jede Meldung zeigt das Etikett „geändert“ und bei zwei Sitzungen das ⚠ „gleichzeitig geändert“. Was am Ende von `/k3plan` unfertig bleibt, meldest du mit `--ohne-sitzung` (Abschnitt 6).
134
134
 
135
135
  **Wie eine Spec aufgebaut ist.** Findest du beim Prüfen eine Spec, die nicht so gebaut ist, sag es im Bericht — du schreibst sie nicht um. Eine Story steht darin in vier Kisten: **User Story** (der Titel nennt das Ziel des Menschen) · **Akzeptanzkriterium** (mit Gegenprobe) · **So testest du es** (nummerierte Schritte, darunter „Passt nicht, wenn: …“) · **Technische Notiz**.
136
136
 
@@ -165,7 +165,7 @@ Die App zeigt sie dem Menschen in genau diesem Wortlaut („So bleibt die Planun
165
165
  **Was du danach tust** (jedes Mal eine Meldung, Abschnitt 6):
166
166
 
167
167
  - **Regel 1 — jedes `passt nicht` aus `kimal3 plan`:** Gibt es die Story noch, melde sie mit dem Satz
168
- des Menschen als Befund (`quelle: "mensch"`, `seit: "<heute>"`) und `stand: "in_arbeit"`, und
168
+ des Menschen als Befund (`quelle: "mensch"`, `seit: "<heute>"`), `stand: "in_arbeit"` und `"pruefen": true`, und
169
169
  gleich dahinter in derselben Liste `uebernommen` mit der Nummer: `{ "art": "uebernommen",
170
170
  "rueckmeldung": 12, "antwort": "Befund an US-2" }`. Ist sie seitdem schon nachgebessert,
171
171
  stattdessen `runde` + 1, `befunde: []` und `stand: "gebaut"` (Abschnitt 4). Gibt es die Story
@@ -207,7 +207,7 @@ Die App zeigt sie dem Menschen in genau diesem Wortlaut („So bleibt die Planun
207
207
 
208
208
  Jede Meldung ist ein JSON-Objekt, mehrere eine Liste. Sie geht über die Eingabe an
209
209
  `kimal3 plan melde`; das Programm setzt die Zeit selbst, das Projekt kommt vom Ordnerzettel
210
- `plan/projekt.json`. Prüfen ist Arbeit — mit der Sitzung gemeldet leuchtet auf dem Board der Punkt, solange du prüfst.
210
+ `plan/projekt.json`. Prüfen ist Arbeit — mit der Sitzung gemeldet leuchtet auf dem Board der Punkt, solange du prüfst; `"pruefen": true` an jeder `in_arbeit`-Meldung hält die Karte dabei aus dem Gespräch.
211
211
 
212
212
  ```
213
213
  echo '[ … ]' | kimal3 plan melde
@@ -229,17 +229,21 @@ echo '[ … ]' | kimal3 plan melde --ohne-sitzung
229
229
  **Eine Spec** — beim Prüfen und wenn Stories dazukommen:
230
230
 
231
231
  ```json
232
- { "art": "spec", "schluessel": "2026-10-24-testmonat", "titel": "Testmonat",
232
+ { "art": "spec", "schluessel": "2026-10-24-testmonat-design", "titel": "Testmonat",
233
233
  "datei": "docs/superpowers/specs/2026-10-24-testmonat-design.md",
234
234
  "stories": [ { "schluessel": "US-1", "titel": "Der Testmonat startet" },
235
235
  { "schluessel": "US-2", "titel": "Der Testmonat endet" },
236
236
  { "schluessel": "US-3", "titel": "Export des Testmonats" } ] }
237
237
  ```
238
238
 
239
+ Lass dabei `wartet_auf_lesen` weg: Fehlt das Feld, bleibt das Etikett „Wartet auf dein Lesen“, wie es ist. Gesetzt und
240
+ weggenommen wird es, wenn du eine Spec dem Menschen zum Lesen vorlegst und er sie freigibt (Coach, Abschnitt 3.6) — genauso die Meldung
241
+ `gespraech`; `/k3plan` schickt keine.
242
+
239
243
  **Eine Story** — eine Abweichung, ein Eintrag. Gebaut, mit Gegenprobe:
240
244
 
241
245
  ```json
242
- { "art": "story", "spec": "2026-10-24-testmonat", "story": "US-1", "stand": "gebaut",
246
+ { "art": "story", "spec": "2026-10-24-testmonat-design", "story": "US-1", "stand": "gebaut",
243
247
  "kriterien": [ { "text": "Startet Sabine am 1.11., endet der Testmonat am 30.11.", "gegenprobe": "bestanden" } ],
244
248
  "testen": "1. Öffne in der App ‚Testmonat‘.\n2. Klick „Starten“.\n3. Darunter steht ‚Endet am 30.11.‘.\nPasst nicht, wenn: dort ein anderes Datum steht." }
245
249
  ```
@@ -247,14 +251,14 @@ echo '[ … ]' | kimal3 plan melde --ohne-sitzung
247
251
  Mit einem offenen Befund (hier von dir; `quelle: "mensch"` nur für den Satz des Menschen):
248
252
 
249
253
  ```json
250
- { "art": "story", "spec": "2026-10-24-testmonat", "story": "US-2", "stand": "in_arbeit",
254
+ { "art": "story", "spec": "2026-10-24-testmonat-design", "story": "US-2", "stand": "in_arbeit", "pruefen": true,
251
255
  "befunde": [ { "text": "Am 30.11. fehlt die Erinnerungsmail, die die Spec verspricht.", "quelle": "claude", "seit": "2026-10-23" } ] }
252
256
  ```
253
257
 
254
258
  Bewusst weggelassen (`grund` ist Pflicht):
255
259
 
256
260
  ```json
257
- { "art": "story", "spec": "2026-10-24-testmonat", "story": "US-3", "stand": "weggelassen", "grund": "Die Spec streicht den Export." }
261
+ { "art": "story", "spec": "2026-10-24-testmonat-design", "story": "US-3", "stand": "weggelassen", "grund": "Die Spec streicht den Export." }
258
262
  ```
259
263
 
260
264
  **Ein Thema** (Regel 2), **ein Thema von dir einordnen** (Regel 3), **eine Rückmeldung des Menschen
@@ -284,6 +288,8 @@ angemeldet: Sag dem Menschen `kimal3 login`; die Meldung ist gemerkt.
284
288
  | `Rückmeldung 12 gibt es in diesem Projekt nicht oder steht zweimal …` | Nur Nummern aus `kimal3 plan`, jede einmal. |
285
289
  | `Rückmeldung 12 („…“) ist als übernommen gemeldet, aber US-2 hat keinen Befund von dir …` | Erst die Story mit dem Befund `quelle: "mensch"` melden (Regel 1) — oder `runde` + 1, wenn nachgebessert ist — dann `uebernommen`. |
286
290
  | `Der Plan ist nicht lesbar: <Ort> …` | Die genannte Stelle der Meldung berichtigen (Länge, `grund` bei `weggelassen`, doppelter Schlüssel). |
291
+ | `Die Meldung „Im Gespräch“ braucht den Chat, aus dem sie kommt.` | Mit Sitzung noch einmal melden, nicht mit `--ohne-sitzung`. |
292
+ | `Über diese Karte spricht gerade ein anderer Chat.` | Nichts tun: Das Gespräch trägt ein anderer Chat. |
287
293
  | `Die Meldung ist angekommen, der Text von <Datei> aber nicht …` | Die Meldung noch einmal schicken — doppelt schadet nicht. Passt der Text nicht mehr (über 300 KB), sag es dem Menschen. |
288
294
  | `Die Meldungen sind gespeichert, aber noch nicht ganz vermerkt.` | Noch einmal schicken — doppelt schadet nicht. |
289
295
  | `Die gespeicherte Planung in der App ist beschädigt …` | Sag es dem Menschen. `kimal3 plan hoch --ueberschreiben` ersetzt die Planung durch eine ganze Datei `plan/stand.json` — **nur nach seinem ausdrücklichen Ja.** |
@@ -41,7 +41,7 @@ not needed any more — the state is in the app. You can delete it." You do not
41
41
  **What the output means** (example, made-up values):
42
42
 
43
43
  ```
44
- Spec 2026-09-23-content-planner · Content planner as a page (plan/2026-09-23-content-planner-page-spec.md)
44
+ Spec 2026-09-23-content-planner · Content planner as a page (plan/2026-09-23-content-planner.md)
45
45
  US-1 · built · round 1 · Create posts
46
46
  US-2 · in progress · round 1 · Move posts in the calendar
47
47
  Noted topic T-3: Export as PDF
@@ -125,7 +125,7 @@ run.
125
125
 
126
126
  **The `testen` text** (on every `gebaut` story, at most 1000 characters) is a guide for someone without technical knowledge. If the story sits in a spec with the box "How you test it", you take it from there, word for word; if the box is missing, you write it yourself. **One line per step** — where to find it, what to do, what must appear —, **without** the box heading, and **last** the line "Doesn't work if: …". In the JSON you separate the lines with `\n`: a real line break inside the text breaks the JSON, and `kimal3 plan report` cannot read the report. If the text is longer than 1000 characters, shorten the steps — never cut off in the middle of a sentence; the line "Doesn't work if: …" must stay at the end. A command only if there is no other way - then say where to type it (in Claude Code in the project folder, with `!` in front) and put it in backticks. If the text is missing, the app shows: "Claude didn't write down how to test this".
127
127
 
128
- **Checking is work.** Before you check a story with pending counter-checks (column "Claude test pending") against the code, you report it as `in_arbeit` **with** the session (so without `--no-session`): while you check, the dot at the project glows. After the check you report the result (`gebaut`, or `in_arbeit` with a finding). Stories under "Your test" or "Done" you do **not** report again during the reconciliation, even if you look through them: `in_arbeit` followed by `gebaut` sets their build date to today, and every report shows the label "changed" and, with two sessions, the ⚠ "changed at the same time". What stays unfinished at the end of `/k3plan`, you report with `--no-session` (section 6).
128
+ **Checking is work.** Before you check a story with pending counter-checks (column "Claude test pending") against the code, you report it as `in_arbeit` **with** the session (so without `--no-session`) **and with `"pruefen": true`**: while you check, the dot at the project glows, but the card doesn't come into discussion — without the field the blue frame would wander through every spec you check. After the check you report the result (`gebaut`, or `in_arbeit` with a finding — every `in_arbeit` report from `/k3plan` carries `"pruefen": true`). Stories under "Your test" or "Done" you do **not** report again during the reconciliation, even if you look through them: `in_arbeit` followed by `gebaut` sets their build date to today, and every report shows the label "changed" and, with two sessions, the ⚠ "changed at the same time". What stays unfinished at the end of `/k3plan`, you report with `--no-session` (section 6).
129
129
 
130
130
  **How a spec is built.** If you find a spec while checking that is not built like this, say so in the report — you do not rewrite it. A story in it sits in four boxes: **User story** (the title names the person's goal) · **Acceptance criterion** (with counter-check) · **How you test it** (numbered steps, below them "Doesn't work if: …") · **Technical note**.
131
131
 
@@ -160,8 +160,8 @@ The app shows them to the person in exactly this wording ("How planning stays sh
160
160
  **What you do with them** (every time a report, section 6):
161
161
 
162
162
  - **Rule 1 — every `doesn't work` from `kimal3 plan`:** if the story still exists, report it with
163
- the person's sentence as a finding (`quelle: "mensch"`, `seit: "<today>"`) and
164
- `stand: "in_arbeit"`, and right behind it in the same list `uebernommen` with the number:
163
+ the person's sentence as a finding (`quelle: "mensch"`, `seit: "<today>"`),
164
+ `stand: "in_arbeit"` and `"pruefen": true`, and right behind it in the same list `uebernommen` with the number:
165
165
  `{ "art": "uebernommen", "rueckmeldung": 12, "antwort": "Finding on US-2" }`. If it has already
166
166
  been fixed since, raise `runde` by 1 instead, with `befunde: []` and `stand: "gebaut"`
167
167
  (section 4). If the story no longer exists, the `antwort` says why. ⚠️ Without a finding from
@@ -202,7 +202,7 @@ The app shows them to the person in exactly this wording ("How planning stays sh
202
202
 
203
203
  A report is a JSON object, several are a list. It goes through the input to `kimal3 plan report`;
204
204
  the program sets the time itself, and the project comes from the folder note
205
- `plan/projekt.json`. Checking is work — reported with the session, the dot on the board glows while you check.
205
+ `plan/projekt.json`. Checking is work — reported with the session, the dot on the board glows while you check; `"pruefen": true` on every `in_arbeit` report keeps the card out of discussion meanwhile.
206
206
 
207
207
  ```
208
208
  echo '[ … ]' | kimal3 plan report
@@ -224,17 +224,21 @@ echo '[ … ]' | kimal3 plan report --no-session
224
224
  **A spec** — when checking, and when stories are added:
225
225
 
226
226
  ```json
227
- { "art": "spec", "schluessel": "2026-10-24-test-month", "titel": "Test month",
227
+ { "art": "spec", "schluessel": "2026-10-24-test-month-design", "titel": "Test month",
228
228
  "datei": "docs/superpowers/specs/2026-10-24-test-month-design.md",
229
229
  "stories": [ { "schluessel": "US-1", "titel": "The test month starts" },
230
230
  { "schluessel": "US-2", "titel": "The test month ends" },
231
231
  { "schluessel": "US-3", "titel": "Export of the test month" } ] }
232
232
  ```
233
233
 
234
+ Leave out `wartet_auf_lesen` here: if the field is missing, the label "Waiting for you to read" stays as it is. It is set
235
+ and removed when you hand a spec to the person to read and they approve it (coach, section 3.6) — the same goes for the report
236
+ `gespraech`; `/k3plan` sends none.
237
+
234
238
  **A story** — one deviation, one entry. Built, with a counter-check:
235
239
 
236
240
  ```json
237
- { "art": "story", "spec": "2026-10-24-test-month", "story": "US-1", "stand": "gebaut",
241
+ { "art": "story", "spec": "2026-10-24-test-month-design", "story": "US-1", "stand": "gebaut",
238
242
  "kriterien": [ { "text": "If Sabine starts on 1 Nov, the test month ends on 30 Nov.", "gegenprobe": "bestanden" } ],
239
243
  "testen": "1. In the app open 'Test month'.\n2. Click Start.\n3. Below it says 'Ends on 30 Nov'.\nDoesn't work if: it shows another date." }
240
244
  ```
@@ -242,14 +246,14 @@ echo '[ … ]' | kimal3 plan report --no-session
242
246
  With an open finding (here from you; `quelle: "mensch"` only for the person's sentence):
243
247
 
244
248
  ```json
245
- { "art": "story", "spec": "2026-10-24-test-month", "story": "US-2", "stand": "in_arbeit",
249
+ { "art": "story", "spec": "2026-10-24-test-month-design", "story": "US-2", "stand": "in_arbeit", "pruefen": true,
246
250
  "befunde": [ { "text": "On 30 Nov the reminder mail the spec promises is missing.", "quelle": "claude", "seit": "2026-10-23" } ] }
247
251
  ```
248
252
 
249
253
  Deliberately left out (`grund` is required):
250
254
 
251
255
  ```json
252
- { "art": "story", "spec": "2026-10-24-test-month", "story": "US-3", "stand": "weggelassen", "grund": "The spec drops the export." }
256
+ { "art": "story", "spec": "2026-10-24-test-month-design", "story": "US-3", "stand": "weggelassen", "grund": "The spec drops the export." }
253
257
  ```
254
258
 
255
259
  **A topic** (rule 2), **sorting a topic of yours** (rule 3), **handing on a response from the
@@ -278,6 +282,8 @@ send it again. `2` — no longer signed in: tell the person `kimal3 login`; the
278
282
  | `Response 12 doesn't exist in this project or is listed twice …` | Only numbers from `kimal3 plan`, each once. |
279
283
  | `Response 12 ("…") is marked as handled, but US-2 has no finding from you …` | Report the story with the finding `quelle: "mensch"` first (rule 1) — or `runde` + 1 if it has been fixed — then `uebernommen`. |
280
284
  | `The plan can't be read: <place> …` | Correct the named place in the report (length, `grund` on `weggelassen`, duplicate key). |
285
+ | `The “in discussion” report needs the chat it comes from.` | Report again with the session, not with `--no-session`. |
286
+ | `Another chat is discussing this card right now.` | Do nothing: another chat carries the discussion. |
281
287
  | `The report arrived, but the text of <file> didn't …` | Send the report again — sending twice does no harm. If the text no longer fits (over 300 KB), tell the person. |
282
288
  | `The reports are saved, but not fully recorded yet.` | Send again — sending twice does no harm. |
283
289
  | `The planning saved in the app is damaged …` | Tell the person. `kimal3 plan upload --overwrite` replaces the planning with a whole file `plan/stand.json` — **only after their explicit yes.** |
@@ -27,7 +27,7 @@ and skip it — no filler.
27
27
  `/k3plan`, section 6; what an exit code means is in `~/.claude/skills/kimal3/SKILL.md`):
28
28
 
29
29
  ```json
30
- [ { "art": "story", "spec": "2026-10-24-test-month", "story": "US-1", "stand": "gebaut",
30
+ [ { "art": "story", "spec": "2026-10-24-test-month-design", "story": "US-1", "stand": "gebaut",
31
31
  "kriterien": [ { "text": "If Sabine starts on 1 Nov, it ends on 30 Nov.", "gegenprobe": "bestanden" } ],
32
32
  "testen": "1. Open /test-month.\n2. Click Start.\n3. Below it says Ends on 30 Nov.\nDoesn't work if: it shows another date." } ]
33
33
  ```
@@ -35,7 +35,7 @@ and skip it — no filler.
35
35
  And what stays unfinished, separately, with the flag:
36
36
 
37
37
  ```json
38
- [ { "art": "story", "spec": "2026-10-24-test-month", "story": "US-2", "stand": "in_arbeit" } ]
38
+ [ { "art": "story", "spec": "2026-10-24-test-month-design", "story": "US-2", "stand": "in_arbeit" } ]
39
39
  ```
40
40
 
41
41
  ```