kimal3 0.6.4 → 0.7.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/README.md +10 -4
- package/claude-plugins/.claude-plugin/marketplace.json +2 -1
- package/claude-plugins/README.md +2 -0
- package/claude-plugins/kimal3-logo/.claude-plugin/plugin.json +1 -1
- package/claude-plugins/kimal3-logo/hooks/ablage.ts +8 -0
- package/claude-plugins/kimal3-logo/hooks/app-oeffnen.ts +37 -9
- package/claude-plugins/kimal3-logo/hooks/register.tsx +42 -18
- package/claude-plugins/kimal3-logo/hooks/update-rechnung.ts +175 -0
- package/claude-plugins/kimal3-logo/hooks/update.ts +244 -0
- package/claude-plugins/kimal3-logo/types/index.d.ts +4 -0
- package/claude-plugins/kimal3-plan/.claude-plugin/plugin.json +7 -0
- package/claude-plugins/kimal3-plan/hooks/erinnerung.ts +79 -0
- package/claude-plugins/kimal3-plan/hooks/fehlerzeile.ts +41 -0
- package/claude-plugins/kimal3-plan/hooks/hooks.json +1 -0
- package/claude-plugins/kimal3-plan/hooks/lauf.ts +143 -0
- package/claude-plugins/kimal3-plan/hooks/lebenszeichen.ts +197 -0
- package/claude-plugins/kimal3-plan/hooks/ordner.ts +141 -0
- package/claude-plugins/kimal3-plan/hooks/register.tsx +22 -0
- package/claude-plugins/kimal3-plan/hooks/spec-text.ts +45 -0
- package/claude-plugins/kimal3-plan/types/index.d.ts +10 -0
- package/coach/de/kimal3-coach.md +33 -0
- package/coach/en/kimal3-coach.md +33 -0
- package/dist/argumente.js +12 -0
- package/dist/atomar.js +22 -0
- package/dist/befehle/einrichten.js +4 -4
- package/dist/befehle/login.js +2 -2
- package/dist/befehle/plan-hoch.js +8 -0
- package/dist/befehle/plan-melde.js +105 -0
- package/dist/befehle/plan-senden.js +149 -0
- package/dist/befehle/plan.js +45 -10
- package/dist/befehle/projekt-verbinden.js +141 -0
- package/dist/befehle/skill-install.js +2 -2
- package/dist/befehle-katalog-en.js +6 -6
- package/dist/befehle-katalog.js +8 -7
- package/dist/befehlswoerter.js +9 -0
- package/dist/einstellungen-schreiben.js +1 -1
- package/dist/kimal3.js +22 -0
- package/dist/meldungen-speicher.js +189 -0
- package/dist/{logo-ablegen.js → mods-ablegen.js} +87 -20
- package/dist/plugins-mischen.js +7 -2
- package/dist/projekt-ordner.js +189 -0
- package/dist/texte/einrichten.js +3 -1
- package/dist/texte/meldungen.js +127 -0
- package/dist/texte/plan.js +42 -22
- package/dist/texte/wache.js +4 -4
- package/dist/wache-rechnung.js +3 -1
- package/package.json +1 -1
- package/skill/commands/k3feierabend.md +20 -0
- package/skill/commands/k3plan.md +151 -211
- package/skill/en/commands/k3plan.md +157 -219
- package/skill/en/commands/k3wrapup.md +19 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
const de = {
|
|
2
|
+
// ── projekt verbinden ──
|
|
3
|
+
connectHelp: `
|
|
4
|
+
kimal3 projekt verbinden [--neu] [--projekt <nummer>] [--firma "<Name>"]
|
|
5
|
+
|
|
6
|
+
Verbindet den Projektordner, in dem du stehst, mit seinem Projekt in der
|
|
7
|
+
App und schreibt den Ordnerzettel plan/projekt.json. Gibt es noch kein
|
|
8
|
+
Projekt mit dem Namen des Ordners, legt es eins an.
|
|
9
|
+
|
|
10
|
+
Liegt der Zettel schon da und gibt es das Projekt, passiert nichts.
|
|
11
|
+
|
|
12
|
+
--neu Das Projekt zum Zettel wurde gelöscht: ein neues anlegen.
|
|
13
|
+
--projekt <n> Es gibt mehrere gleichnamige: Nummer n aus der Liste.
|
|
14
|
+
`,
|
|
15
|
+
connected: (titel) => `Ich habe diesen Ordner mit dem Projekt ‚${titel}‘ verbunden.`,
|
|
16
|
+
created: (titel) => `Ich habe das Projekt ‚${titel}‘ in der App angelegt.`,
|
|
17
|
+
deleted: "Das Projekt zu diesem Ordner gibt es in der App nicht mehr. Soll ich ein neues anlegen?",
|
|
18
|
+
deletedHow: " Ein neues legt `kimal3 projekt verbinden --neu` an.",
|
|
19
|
+
candidate: (nummer, titel, projektId) => ` ${nummer} · ${titel} · ${projektId}`,
|
|
20
|
+
chooseHow: " Wähle mit `kimal3 projekt verbinden --projekt <nummer>`.",
|
|
21
|
+
noSuchCandidate: (nummer, anzahl) => `Eine Nummer ${nummer} gibt es nicht — wähle eine von 1 bis ${anzahl}.`,
|
|
22
|
+
noProfile: "Für ein Projekt in der App brauchst du ein Erfolgsprofil — das bekommst du nach dem Kurs.",
|
|
23
|
+
notProjectFolder: "Hier ist kein Projektordner (einer direkt in werkbank-…/projekte/). In diesem Ordner gehört kein Projekt in die App.",
|
|
24
|
+
noteNotWritten: (titel, projektId) => `⚠ Das Projekt ‚${titel}‘ steht in der App, aber plan/projekt.json ließ sich nicht schreiben. Leg die Datei selbst an: {"format": 1, "projekt_id": "${projektId}", "titel": "${titel}"}`,
|
|
25
|
+
// ── plan melde / plan senden ──
|
|
26
|
+
reportHelp: `
|
|
27
|
+
kimal3 plan melde
|
|
28
|
+
|
|
29
|
+
Meldet der Projektseite eine Änderung: liest eine Meldung oder eine Liste
|
|
30
|
+
von Meldungen als JSON von der Eingabe, zum Beispiel
|
|
31
|
+
echo '{"art":"story","spec":"testmonat","story":"US-2","stand":"in_arbeit"}' | kimal3 plan melde
|
|
32
|
+
Arten: spec, story, thema, uebernommen, eingeordnet.
|
|
33
|
+
|
|
34
|
+
--ohne-sitzung Meldet ohne die Nummer der Claude-Sitzung (für das
|
|
35
|
+
Prüfen von Specs): Auf dem Board leuchtet kein Punkt.
|
|
36
|
+
|
|
37
|
+
Ist die Projektseite nicht erreichbar, merkt es sich die Meldung und
|
|
38
|
+
schickt sie beim nächsten Befehl mit.
|
|
39
|
+
`,
|
|
40
|
+
sendHelp: `
|
|
41
|
+
kimal3 plan senden
|
|
42
|
+
|
|
43
|
+
Schickt die gemerkten Meldungen, die offline nicht ankamen. Das passiert
|
|
44
|
+
sonst von selbst vor jedem Befehl, der die App erreicht.
|
|
45
|
+
`,
|
|
46
|
+
notConnected: "Dieser Ordner ist noch mit keinem Projekt in der App verbunden. Verbinde ihn zuerst: `kimal3 projekt verbinden`.",
|
|
47
|
+
noInput: "`kimal3 plan melde` liest die Meldung als JSON von der Eingabe. Hilfe: `kimal3 plan melde --help`.",
|
|
48
|
+
inputNoJson: "Die Eingabe ist kein JSON. Geschickt wurde nichts.",
|
|
49
|
+
reportUnreadable: (nummer, feld) => `Meldung Nr. ${nummer} ist nicht lesbar (${feld}). Geschickt wurde nichts.`,
|
|
50
|
+
stored: "Die Projektseite ist gerade nicht erreichbar — ich habe die Meldung gemerkt und schicke sie beim nächsten Mal.",
|
|
51
|
+
storedSignIn: "Du bist bei kimal3 nicht mehr angemeldet — `kimal3 login`. Ich habe die Meldung gemerkt und schicke sie danach.",
|
|
52
|
+
notStored: "Die Projektseite ist gerade nicht erreichbar, und die Meldung ließ sich auch nicht merken. Schick sie gleich noch einmal.",
|
|
53
|
+
specTextFailed: (datei) => `Die Meldung ist angekommen, der Text von ${datei} aber nicht. Schick die Meldung noch einmal — doppelt schadet nicht.`,
|
|
54
|
+
sentStored: (anzahl) => (anzahl === 1 ? "1 gemerkte Meldung nachgeschickt." : `${anzahl} gemerkte Meldungen nachgeschickt.`),
|
|
55
|
+
nothingStored: "Keine gemerkten Meldungen.",
|
|
56
|
+
refusedStored: (anzahl) => (anzahl === 1 ? "1 gemerkte Meldung hat die App abgesagt:" : `${anzahl} gemerkte Meldungen hat die App abgesagt:`),
|
|
57
|
+
unreadableStored: (dateien, ordner) => `${dateien.length === 1 ? "1 gemerkte Meldung lässt sich nicht lesen und bleibt" : `${dateien.length} gemerkte Meldungen lassen sich nicht lesen und bleiben`} liegen (${ordner}): ${dateien.join(", ")}`,
|
|
58
|
+
storedPartly: (gemerkt, gesamt) => `Die Projektseite ist gerade nicht erreichbar — von ${gesamt} Meldungen habe ich nur ${gemerkt} gemerkt; die übrigen ${gesamt - gemerkt} schick noch einmal.`,
|
|
59
|
+
specTextSignIn: (datei) => `Die Meldung ist angekommen, der Text von ${datei} aber nicht: Du bist bei kimal3 nicht mehr angemeldet — \`kimal3 login\`, dann die Meldung noch einmal.`,
|
|
60
|
+
specTextTooBig: (datei) => `Die Meldung ist angekommen, der Text von ${datei} aber nicht: Er passt nicht mehr auf die Projektseite (eine Spec höchstens 300 KB, alle zusammen 4 MB). Ein zweiter Versuch hilft nicht.`,
|
|
61
|
+
stillStored: (anzahl) => `Die Projektseite ist gerade nicht erreichbar — ${anzahl === 1 ? "1 Meldung bleibt" : `${anzahl} Meldungen bleiben`} gemerkt.`,
|
|
62
|
+
};
|
|
63
|
+
const en = {
|
|
64
|
+
connectHelp: `
|
|
65
|
+
kimal3 project connect [--new] [--project <number>] [--company "<Name>"]
|
|
66
|
+
|
|
67
|
+
Connects the project folder you're in with its project in the app and
|
|
68
|
+
writes the folder note plan/projekt.json. If there's no project named
|
|
69
|
+
like the folder yet, it creates one.
|
|
70
|
+
|
|
71
|
+
If the note is already there and the project exists, nothing happens.
|
|
72
|
+
|
|
73
|
+
--new The note's project was deleted: create a new one.
|
|
74
|
+
--project <n> There are several with that name: number n from the list.
|
|
75
|
+
|
|
76
|
+
The German option names (--neu, --projekt, --firma) work too.
|
|
77
|
+
`,
|
|
78
|
+
connected: (titel) => `I connected this folder to the project ‘${titel}’.`,
|
|
79
|
+
created: (titel) => `I created the project ‘${titel}’ in the app.`,
|
|
80
|
+
deleted: "The project for this folder no longer exists in the app. Shall I create a new one?",
|
|
81
|
+
deletedHow: " `kimal3 project connect --new` creates a new one.",
|
|
82
|
+
candidate: (nummer, titel, projektId) => ` ${nummer} · ${titel} · ${projektId}`,
|
|
83
|
+
chooseHow: " Choose with `kimal3 project connect --project <number>`.",
|
|
84
|
+
noSuchCandidate: (nummer, anzahl) => `There's no number ${nummer} — choose one from 1 to ${anzahl}.`,
|
|
85
|
+
noProfile: "For a project in the app you need a success profile — you get it after the course.",
|
|
86
|
+
notProjectFolder: "This isn't a project folder (one directly inside workbench-…/projects/). No project in the app belongs to this folder.",
|
|
87
|
+
noteNotWritten: (titel, projektId) => `⚠ The project ‘${titel}’ is in the app, but plan/projekt.json couldn't be written. Create the file yourself: {"format": 1, "projekt_id": "${projektId}", "titel": "${titel}"}`,
|
|
88
|
+
reportHelp: `
|
|
89
|
+
kimal3 plan report
|
|
90
|
+
|
|
91
|
+
Reports a change to the project page: reads one report or a list of
|
|
92
|
+
reports as JSON from the input, for example
|
|
93
|
+
echo '{"art":"story","spec":"testmonat","story":"US-2","stand":"in_arbeit"}' | kimal3 plan report
|
|
94
|
+
Kinds (field "art"): spec, story, thema, uebernommen, eingeordnet.
|
|
95
|
+
|
|
96
|
+
--no-session Reports without the Claude session number (for checking
|
|
97
|
+
specs): no dot lights up on the board.
|
|
98
|
+
|
|
99
|
+
The German option name (--ohne-sitzung) works too.
|
|
100
|
+
|
|
101
|
+
If the project page can't be reached, it keeps the report and sends it
|
|
102
|
+
along with the next command.
|
|
103
|
+
`,
|
|
104
|
+
sendHelp: `
|
|
105
|
+
kimal3 plan send
|
|
106
|
+
|
|
107
|
+
Sends the kept reports that didn't arrive while offline. Otherwise this
|
|
108
|
+
happens on its own before every command that reaches the app.
|
|
109
|
+
`,
|
|
110
|
+
notConnected: "This folder isn't connected to a project in the app yet. Connect it first: `kimal3 project connect`.",
|
|
111
|
+
noInput: "`kimal3 plan report` reads the report as JSON from the input. Help: `kimal3 plan report --help`.",
|
|
112
|
+
inputNoJson: "The input isn't JSON. Nothing was sent.",
|
|
113
|
+
reportUnreadable: (nummer, feld) => `Report no. ${nummer} can't be read (${feld}). Nothing was sent.`,
|
|
114
|
+
stored: "The project page can't be reached right now — I've kept the report and will send it next time.",
|
|
115
|
+
storedSignIn: "You're no longer signed in to kimal3 — `kimal3 login`. I've kept the report and will send it afterwards.",
|
|
116
|
+
notStored: "The project page can't be reached right now, and the report couldn't be kept either. Send it again in a moment.",
|
|
117
|
+
specTextFailed: (datei) => `The report arrived, but the text of ${datei} didn't. Send the report again — sending twice does no harm.`,
|
|
118
|
+
sentStored: (anzahl) => (anzahl === 1 ? "Sent 1 kept report." : `Sent ${anzahl} kept reports.`),
|
|
119
|
+
nothingStored: "No kept reports.",
|
|
120
|
+
refusedStored: (anzahl) => (anzahl === 1 ? "The app refused 1 kept report:" : `The app refused ${anzahl} kept reports:`),
|
|
121
|
+
unreadableStored: (dateien, ordner) => `${dateien.length === 1 ? "1 kept report can't be read and stays where it is" : `${dateien.length} kept reports can't be read and stay where they are`} (${ordner}): ${dateien.join(", ")}`,
|
|
122
|
+
storedPartly: (gemerkt, gesamt) => `The project page can't be reached right now — of ${gesamt} reports I could only keep ${gemerkt}; send the other ${gesamt - gemerkt} again.`,
|
|
123
|
+
specTextSignIn: (datei) => `The report arrived, but the text of ${datei} didn't: you're no longer signed in to kimal3 — \`kimal3 login\`, then send the report again.`,
|
|
124
|
+
specTextTooBig: (datei) => `The report arrived, but the text of ${datei} didn't: it no longer fits on the project page (at most 300 KB per spec, 4 MB altogether). Trying again won't help.`,
|
|
125
|
+
stillStored: (anzahl) => `The project page can't be reached right now — ${anzahl === 1 ? "1 report stays" : `${anzahl} reports stay`} kept.`,
|
|
126
|
+
};
|
|
127
|
+
export const MELDUNGEN_TEXTE = { de, en };
|
package/dist/texte/plan.js
CHANGED
|
@@ -3,13 +3,14 @@ const de = {
|
|
|
3
3
|
listHelp: `
|
|
4
4
|
kimal3 plan
|
|
5
5
|
|
|
6
|
-
Holt
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Holt den Stand deiner Planung aus der App: jede Spec mit ihren Stories
|
|
7
|
+
(Stand und Runde), danach die offenen Rückmeldungen -- jedes „passt
|
|
8
|
+
nicht“ und jedes notierte Thema mit seiner Nummer -- und die bestätigten
|
|
9
|
+
Stories der aktuellen Runden.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
Das Projekt steht im Ordnerzettel plan/projekt.json. Ändert nichts.
|
|
11
12
|
`,
|
|
12
|
-
fileMissing: "Im Ordner liegt keine plan/stand.json.
|
|
13
|
+
fileMissing: "Im Ordner liegt keine plan/stand.json. Seit 0.7.0 meldet Claude jede Änderung einzeln; den Stand zeigt `kimal3 plan`.",
|
|
13
14
|
noJson: "Der Plan ist nicht lesbar: plan/stand.json enthält kein gültiges JSON-Objekt.",
|
|
14
15
|
openVerdict: (nummer, spec, story, runde, notiz) => `#${nummer} · passt nicht · ${spec} / ${story} (Runde ${runde}): ${notiz}`,
|
|
15
16
|
openTopic: (nummer, notiz) => `#${nummer} · Thema: ${notiz}`,
|
|
@@ -17,18 +18,28 @@ const de = {
|
|
|
17
18
|
confirmed: (liste) => `Bestätigt: ${liste}`,
|
|
18
19
|
confirmedItem: (spec, story, runde) => `${spec} / ${story} (Runde ${runde})`,
|
|
19
20
|
view: (adresse) => `Ansehen: ${adresse}`,
|
|
21
|
+
// Board in Echtzeit (US-1): der ganze Stand aus der App, eine Zeile je Spec und je Story.
|
|
22
|
+
specLine: (schluessel, titel, datei) => `Spec ${schluessel} · ${titel}${datei === null ? "" : ` (${datei})`}`,
|
|
23
|
+
storyLine: (schluessel, stand, runde, titel) => ` ${schluessel} · ${stand} · Runde ${runde} · ${titel}`,
|
|
24
|
+
storyStand: (stand) => (stand === "in_arbeit" ? "in Arbeit" : stand === "gebaut" ? "gebaut" : stand === "weggelassen" ? "weggelassen" : "offen"),
|
|
25
|
+
topicLine: (schluessel, text) => `Notiertes Thema ${schluessel}: ${text}`,
|
|
26
|
+
noPlanning: "Noch keine Planung in der App.",
|
|
20
27
|
// ── plan-hoch.ts ──
|
|
21
28
|
uploadHelp: `
|
|
22
|
-
kimal3 plan hoch
|
|
29
|
+
kimal3 plan hoch --ueberschreiben [--probe]
|
|
23
30
|
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
Seit 0.7.0 nicht mehr nötig: Claude meldet jede Änderung einzeln
|
|
32
|
+
(kimal3 plan melde), den Stand zeigt kimal3 plan.
|
|
26
33
|
|
|
27
|
-
|
|
34
|
+
Nur noch mit --ueberschreiben: Schickt plan/stand.json als Ganzes an
|
|
35
|
+
dein Projekt in der App und ersetzt den Stand dort -- für eine Planung,
|
|
36
|
+
die sich anders nicht mehr lesen lässt. Danach trägt es projekt_id und
|
|
37
|
+
basis in die Datei ein und leert uebernommen.
|
|
28
38
|
|
|
29
|
-
--
|
|
30
|
-
neuerer Plan liegt (zwei Arbeitskopien).
|
|
39
|
+
--probe Prüft alles wie beim Hochladen und speichert nichts.
|
|
31
40
|
`,
|
|
41
|
+
// Ruling Task 7: `plan hoch` ohne --ueberschreiben (0.7.0).
|
|
42
|
+
uploadNotNeeded: "Nicht mehr nötig: Seit 0.7.0 meldet Claude jede Änderung einzeln. Den Stand zeigt `kimal3 plan`.",
|
|
32
43
|
uploaded: (titel, stories, deinTest) => `✓ Planung für „${titel}“ hochgeladen: ${stories === 1 ? "1 Story" : `${stories} Stories`}, ` +
|
|
33
44
|
`${deinTest === 1 ? "1 wartet" : `${deinTest} warten`} auf deinen Test.`,
|
|
34
45
|
dryRun: (stories, uebernommen) => `Probelauf: würde ${stories === 1 ? "1 Story" : `${stories} Stories`} hochladen, ` +
|
|
@@ -50,13 +61,14 @@ const en = {
|
|
|
50
61
|
listHelp: `
|
|
51
62
|
kimal3 plan
|
|
52
63
|
|
|
53
|
-
Fetches the
|
|
54
|
-
|
|
55
|
-
|
|
64
|
+
Fetches the state of your planning from the app: every spec with its
|
|
65
|
+
stories (state and round), then the open responses -- every “doesn't
|
|
66
|
+
work” and every noted topic with its number -- and the confirmed
|
|
67
|
+
stories of the current rounds.
|
|
56
68
|
|
|
57
|
-
|
|
69
|
+
The project is named in the folder note plan/projekt.json. Changes nothing.
|
|
58
70
|
`,
|
|
59
|
-
fileMissing: "There's no plan/stand.json in this folder.
|
|
71
|
+
fileMissing: "There's no plan/stand.json in this folder. Since 0.7.0 Claude reports every change on its own; `kimal3 plan` shows the state.",
|
|
60
72
|
noJson: "The plan can't be read: plan/stand.json doesn't contain a valid JSON object.",
|
|
61
73
|
openVerdict: (nummer, spec, story, runde, notiz) => `#${nummer} · doesn't work · ${spec} / ${story} (round ${runde}): ${notiz}`,
|
|
62
74
|
openTopic: (nummer, notiz) => `#${nummer} · Topic: ${notiz}`,
|
|
@@ -64,19 +76,27 @@ const en = {
|
|
|
64
76
|
confirmed: (liste) => `Confirmed: ${liste}`,
|
|
65
77
|
confirmedItem: (spec, story, runde) => `${spec} / ${story} (round ${runde})`,
|
|
66
78
|
view: (adresse) => `View: ${adresse}`,
|
|
79
|
+
specLine: (schluessel, titel, datei) => `Spec ${schluessel} · ${titel}${datei === null ? "" : ` (${datei})`}`,
|
|
80
|
+
storyLine: (schluessel, stand, runde, titel) => ` ${schluessel} · ${stand} · round ${runde} · ${titel}`,
|
|
81
|
+
storyStand: (stand) => (stand === "in_arbeit" ? "in progress" : stand === "gebaut" ? "built" : stand === "weggelassen" ? "left out" : "open"),
|
|
82
|
+
topicLine: (schluessel, text) => `Noted topic ${schluessel}: ${text}`,
|
|
83
|
+
noPlanning: "No planning in the app yet.",
|
|
67
84
|
uploadHelp: `
|
|
68
|
-
kimal3 plan upload
|
|
85
|
+
kimal3 plan upload --overwrite [--dry-run]
|
|
69
86
|
|
|
70
|
-
|
|
71
|
-
|
|
87
|
+
No longer needed since 0.7.0: Claude reports every change on its own
|
|
88
|
+
(kimal3 plan report), kimal3 plan shows the state.
|
|
72
89
|
|
|
73
|
-
--
|
|
90
|
+
Only with --overwrite: Sends plan/stand.json as a whole to your project
|
|
91
|
+
in the app and replaces the state there -- for a planning that can't be
|
|
92
|
+
read any other way. After that it enters projekt_id and basis in the
|
|
93
|
+
file and empties uebernommen.
|
|
74
94
|
|
|
75
|
-
--
|
|
76
|
-
(two working copies).
|
|
95
|
+
--dry-run Checks everything like an upload and saves nothing.
|
|
77
96
|
|
|
78
97
|
The German option names (--ueberschreiben, --probe) work too.
|
|
79
98
|
`,
|
|
99
|
+
uploadNotNeeded: "No longer needed: since 0.7.0 Claude reports every change on its own. `kimal3 plan` shows the state.",
|
|
80
100
|
uploaded: (titel, stories, deinTest) => `✓ Planning for "${titel}" uploaded: ${stories === 1 ? "1 story" : `${stories} stories`}, ${deinTest} waiting for your test.`,
|
|
81
101
|
dryRun: (stories, uebernommen) => `Dry run: would upload ${stories === 1 ? "1 story" : `${stories} stories`} and mark ` +
|
|
82
102
|
`${uebernommen === 1 ? "1 response" : `${uebernommen} responses`} as handled. Nothing was saved.`,
|
package/dist/texte/wache.js
CHANGED
|
@@ -2,8 +2,8 @@ const de = {
|
|
|
2
2
|
accessExpired: (login) => "🔴🔴🔴 kimal3: Dein Zugang ist abgelaufen — zum Beispiel nach einem neuen Passwort " +
|
|
3
3
|
`oder einer längeren Pause. Melde dich neu an mit: ${login} 🔴🔴🔴`,
|
|
4
4
|
messageFromKimal3: (text) => `Nachricht von kimal3: „${text}“`,
|
|
5
|
-
newVersion: (neu, eigene) => `🟡🟡🟡 kimal3: Es gibt eine neuere Version: ${neu} (du hast ${eigene}). ` +
|
|
6
|
-
`Holen mit: ! npm install -g kimal3@${neu} 🟡🟡🟡`,
|
|
5
|
+
newVersion: (neu, eigene, skill) => `🟡🟡🟡 kimal3: Es gibt eine neuere Version: ${neu} (du hast ${eigene}). ` +
|
|
6
|
+
`Holen mit: ! npm install -g kimal3@${neu} — danach: ${skill} 🟡🟡🟡`,
|
|
7
7
|
skillsOld: (befehl) => "🟡🟡🟡 kimal3: Deine /k3-Befehle in Claude sind veraltet oder in einer anderen Sprache als dein Konto. " +
|
|
8
8
|
`Auffrischen: ${befehl} 🟡🟡🟡`,
|
|
9
9
|
instructionToClaude: "Anweisung an Claude: Gib die Zeilen oben dem Menschen als ERSTE Zeilen deiner nächsten " +
|
|
@@ -20,8 +20,8 @@ const en = {
|
|
|
20
20
|
accessExpired: (login) => "🔴🔴🔴 kimal3: Your sign-in has expired, for example after a new password " +
|
|
21
21
|
`or a long break. Sign in again with: ${login} 🔴🔴🔴`,
|
|
22
22
|
messageFromKimal3: (text) => `Message from kimal3: “${text}”`,
|
|
23
|
-
newVersion: (neu, eigene) => `🟡🟡🟡 kimal3: A newer version is available: ${neu} (you have ${eigene}). ` +
|
|
24
|
-
`Install it with: ! npm install -g kimal3@${neu} 🟡🟡🟡`,
|
|
23
|
+
newVersion: (neu, eigene, skill) => `🟡🟡🟡 kimal3: A newer version is available: ${neu} (you have ${eigene}). ` +
|
|
24
|
+
`Install it with: ! npm install -g kimal3@${neu} — then: ${skill} 🟡🟡🟡`,
|
|
25
25
|
skillsOld: (befehl) => "🟡🟡🟡 kimal3: Your /k3 commands in Claude are out of date or in a different language from your account. " +
|
|
26
26
|
`Update them: ${befehl} 🟡🟡🟡`,
|
|
27
27
|
instructionToClaude: "Instruction to Claude: Show the lines above to the person verbatim, in bold, as the FIRST lines of " +
|
package/dist/wache-rechnung.js
CHANGED
|
@@ -49,7 +49,9 @@ export function wacheBefunde(lage, s) {
|
|
|
49
49
|
istAelter(lage.eigeneVersion, lage.neuesteVersion)) {
|
|
50
50
|
befunde.push({
|
|
51
51
|
art: "version",
|
|
52
|
-
|
|
52
|
+
// Zwei Befehle GETRENNT, nie mit `&&` verbunden: Die Windows-PowerShell 5.1 kennt `&&` nicht, und
|
|
53
|
+
// ohne `skill install` bleiben Claudes /k3-Befehle auf der alten Fassung (Spec Update in der Leiste, E-4).
|
|
54
|
+
zeile: T.newVersion(lage.neuesteVersion, lage.eigeneVersion, tippen("skill install", s)), // kein-anzeigetext: Befehlsname
|
|
53
55
|
});
|
|
54
56
|
}
|
|
55
57
|
if (lage.skillVeraltet) {
|
package/package.json
CHANGED
|
@@ -18,6 +18,26 @@ und überspring ihn — kein Leerlauf.
|
|
|
18
18
|
- Ist es ein Git-Repo? Dann `git status` + `git diff --stat`: Was wurde in dieser Sitzung
|
|
19
19
|
geändert? Fass es in 1–2 Sätzen zusammen.
|
|
20
20
|
- Kein Git-Repo? Sag das kurz und biete an, eins einzurichten (Sicherheitsnetz) — erzwing nichts.
|
|
21
|
+
- **Das Board abgleichen — nur in einem Projektordner mit Projekt in der App** (sonst überspring
|
|
22
|
+
es und sag nichts). `kimal3 plan` zeigt den Stand, den die App kennt; halt ihn gegen das, was
|
|
23
|
+
heute wirklich passiert ist. Was fertig ist und dessen Gegenproben in dieser Sitzung gelaufen
|
|
24
|
+
sind, steht als `gebaut` mit Kriterien und `testen`-Satz; was angefangen und nicht fertig ist,
|
|
25
|
+
bleibt `in_arbeit`; was heute aufgefallen ist und keine Spec verspricht, kommt als `thema` hinein.
|
|
26
|
+
Melde nur, was vom Stand abweicht, in einer Liste mit `kimal3 plan melde` (Aufbau und Rückgabewerte:
|
|
27
|
+
Coach, Abschnitt 3.6, und `/k3plan`, Abschnitt 6; was ein Rückgabewert heißt, steht in
|
|
28
|
+
`~/.claude/skills/kimal3/SKILL.md`):
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
[ { "art": "story", "spec": "2026-10-24-testmonat", "story": "US-1", "stand": "gebaut",
|
|
32
|
+
"kriterien": [ { "text": "Startet Sabine am 1.11., endet er am 30.11.", "gegenprobe": "bestanden" } ],
|
|
33
|
+
"testen": "Öffne /testmonat und klick „Starten“ — darunter steht „Endet am 30.11.“." },
|
|
34
|
+
{ "art": "story", "spec": "2026-10-24-testmonat", "story": "US-2", "stand": "in_arbeit" } ]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Bei Erfolg sagst du dazu nichts. Nennst du im Abschluss (Schritt 6) etwas zum Board, dann nur,
|
|
38
|
+
was **nicht** geklappt hat (eine Absage, oder gemerkt, weil die App nicht erreichbar war).
|
|
39
|
+
Der Punkt am Projekt auf der Projektseite bleibt, solange das Fenster offen ist; schließt der
|
|
40
|
+
Mensch es, ist er in unter einer Sekunde weg.
|
|
21
41
|
|
|
22
42
|
## 2. Status-Datei nachziehen — und aufräumen
|
|
23
43
|
Die Status-Datei (`WEITER-HIER.md` oder `ROADMAP.md`) ist der Zettel für den nächsten Start. Sie
|