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/claude-plugins/kimal3-plan/.claude-plugin/plugin.json +7 -7
- package/claude-plugins/kimal3-plan/hooks/gespraech.ts +141 -0
- package/claude-plugins/kimal3-plan/hooks/lauf.ts +50 -1
- package/claude-plugins/kimal3-plan/hooks/lebenszeichen.ts +61 -8
- package/claude-plugins/kimal3-plan/hooks/register.tsx +5 -2
- package/claude-plugins/kimal3-plan/hooks/spec-text.ts +8 -3
- package/claude-plugins/kimal3-plan/types/index.d.ts +4 -0
- package/coach/de/kimal3-coach.md +32 -11
- package/coach/en/kimal3-coach.md +30 -11
- package/dist/anmeldung.js +0 -4
- package/dist/arbeitsplatz-dateien.js +8 -8
- package/dist/befehle/arbeitsplatz.js +11 -91
- package/dist/befehle/firma-daten.js +5 -67
- package/dist/befehle/kontext-gemeinsam.js +7 -40
- package/dist/befehle/name-und-firma.js +81 -0
- package/dist/befehle/skill-install.js +3 -2
- package/dist/befehle/werkbank.js +7 -75
- package/dist/firmen-liste.js +11 -4
- package/dist/meldungen-speicher.js +5 -1
- package/dist/texte/meldungen.js +2 -2
- package/dist/wache-schalter.js +0 -8
- package/package.json +30 -30
- package/skill/commands/k3feierabend.md +2 -2
- package/skill/commands/k3plan.md +14 -8
- package/skill/en/commands/k3plan.md +15 -9
- package/skill/en/commands/k3wrapup.md +2 -2
package/package.json
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "kimal3",
|
|
3
|
-
"version": "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
|
```
|
package/skill/commands/k3plan.md
CHANGED
|
@@ -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
|
|
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>"`)
|
|
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
|
|
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>"`)
|
|
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
|
```
|