hmgr 0.0.6 → 0.0.12

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/dist/cli/hilfe.js CHANGED
@@ -22,6 +22,10 @@ hmgr <kommando> [schalter]
22
22
  plugin add <name> Plugin in ein Ziel legen (installieren oder Skills verlinken)
23
23
  plugin remove <name> Plugin aus einem Ziel entfernen
24
24
  plugin list Plugins der Marketplaces aller Quellen
25
+ bundle add <name> Bundle als Ganzes in ein Ziel installieren
26
+ bundle remove <name> Bundle als Ganzes aus einem Ziel entfernen
27
+ bundle sync [name] Installierte Bundles gegen ihre Definition ziehen
28
+ bundle list Bundles der bekannten Quellen
25
29
  mcp add <name> MCP-Server aus dem Katalog in ein Ziel einhängen
26
30
  mcp remove <name> MCP-Server aus einem Ziel aushängen
27
31
  mcp migrate <name> MCP-Server aus der geteilten .mcp.json in den privaten Scope übernehmen
@@ -29,10 +33,13 @@ hmgr <kommando> [schalter]
29
33
  sync [pfad] Ziel auf den Stand seines Zeigers bringen
30
34
  update Alle Checkouts aktualisieren
31
35
  status Ist-Zustand der Ziele
36
+ log Verlauf der letzten Läufe (Changelog)
32
37
  harness list Harness-Typen mit Stand aktiv/inaktiv und vorhanden
33
38
  harness enable <name> Harness-Typ aktivieren, hmgr richtet ihn künftig ein
34
39
  harness disable <name> Harness-Typ deaktivieren, mit Angebot zum Säubern
40
+ harness home <name> Homedirs zeigen, umstellen oder ein zusätzliches eintragen
35
41
  harness skills-dir <name> Verwalteten Skill-Ordner zeigen, festlegen oder entfernen
42
+ --version Versionsnummer von hmgr ausgeben
36
43
 
37
44
  hmgr help <kommando> zeigt Schalter, Beispiele und Zusammenhänge.`;
38
45
  const SOURCE = `hmgr source add <url|pfad> [--name <name>]
@@ -123,7 +130,8 @@ Arbeitsverzeichnis mit Zeiger bricht link ohne --local ab, der Link wird nicht g
123
130
 
124
131
  Schalter:
125
132
  --harness <name> claude-code, hermes oder agents, Standard claude-code
126
- --ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
133
+ --ort <ort> home, wsl:<distro>, dir:<pfad> oder profil:<name>, Standard home. profil
134
+ kennt nur hermes, wsl:<distro> nur claude-code unter Windows (E78)
127
135
  --quelle <teil> Teilstring der Quelle, wenn der Skill-Name in mehreren Quellen vorkommt
128
136
  --version <spanne> Versionseinschränkung nach Composer-Regeln (etwa ^1.2) oder ein Tag- oder
129
137
  Branchname. Nur mit Zeiger, also dir:<pfad> ohne --local (E33)
@@ -141,8 +149,10 @@ Häufige Fälle:
141
149
  „liegt bereits ein fremder Eintrag": --ersetzen setzen oder vorher hmgr adopt <name>.
142
150
  „gibt es keinen Zeiger": --version braucht ein Arbeitsverzeichnis mit composer.json und kein
143
151
  --local. Ohne Zeiger den Link ohne --version legen.
152
+ „ist deaktiviert, hmgr legt dort keine Links an": erst hmgr harness enable <name>, dann erneut
153
+ link. Bestehende Links im deaktivierten Harness bleiben liegen (E76).
144
154
 
145
- Siehe auch: hmgr help unlink, hmgr help sync, hmgr help adopt`;
155
+ Siehe auch: hmgr help unlink, hmgr help sync, hmgr help adopt, hmgr help harness`;
146
156
  const UNLINK = `hmgr unlink <skill> [schalter]
147
157
 
148
158
  Entfernt den Link aus dem Ziel und, wenn das Ziel an einen Zeiger gebunden ist, den Skill aus dem
@@ -153,7 +163,8 @@ Arbeitsverzeichnis mit Zeiger bricht unlink ohne --local ab, der Link bleibt lie
153
163
 
154
164
  Schalter:
155
165
  --harness <name> claude-code, hermes oder agents, Standard claude-code
156
- --ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
166
+ --ort <ort> home, wsl:<distro>, dir:<pfad> oder profil:<name>, Standard home. profil
167
+ kennt nur hermes, wsl:<distro> nur claude-code unter Windows (E78)
157
168
  --composer <pfad> composer.json des Arbeitsverzeichnisses, wenn mehrere in Frage kommen
158
169
  --local nur den Link entfernen, den Eintrag im Zeiger stehen lassen
159
170
 
@@ -179,7 +190,8 @@ Probelauf bleibt frei, er schreibt ohnehin nichts.
179
190
 
180
191
  Schalter:
181
192
  --harness <name> claude-code, hermes oder agents, Standard claude-code
182
- --ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
193
+ --ort <ort> home, wsl:<distro>, dir:<pfad> oder profil:<name>, Standard home. profil
194
+ kennt nur hermes, wsl:<distro> nur claude-code unter Windows (E78)
183
195
  --composer <pfad> composer.json des Arbeitsverzeichnisses, wenn mehrere in Frage kommen
184
196
  --local Übernahme nicht in den Zeiger schreiben
185
197
  --probelauf nur melden, nichts schreiben
@@ -212,7 +224,9 @@ verlinkt oder entfernt.
212
224
 
213
225
  Schalter (add und remove):
214
226
  --harness <name> claude-code, hermes oder agents, Standard claude-code
215
- --ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
227
+ --ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes.
228
+ Ein zusätzliches Homedir (wsl:<distro>) kennt die claude-CLI nicht, dort
229
+ gibt es keine Plugins (E78)
216
230
  --composer <pfad> composer.json des Arbeitsverzeichnisses, wenn mehrere in Frage kommen
217
231
  --local Plugin nicht in den Zeiger schreiben
218
232
  --quelle <teil> nur bei add: Quelle eingrenzen, wenn der Name in mehreren Marketplaces steht
@@ -230,6 +244,90 @@ Häufige Fälle:
230
244
  kann nur die Quelle beheben.
231
245
 
232
246
  Siehe auch: hmgr help source, hmgr help sync`;
247
+ const BUNDLE = `hmgr bundle add <name> [schalter]
248
+ hmgr bundle remove <name> [schalter]
249
+ hmgr bundle sync [name] [schalter]
250
+ hmgr bundle list
251
+
252
+ Ein Bundle ist eine benannte Zusammenstellung von Skills über Quellen hinweg: was für ein Vorhaben
253
+ zusammengehört, liegt selten in einem Repo. Anders als ein Plugin (das lebt in einem Marketplace und
254
+ löst Abhängigkeiten nur dort auf) darf ein Bundle Skills aus beliebig vielen Quellen nennen.
255
+
256
+ Definiert wird es von Hand, als YAML-Datei in einer Quelle, Konvention bundles/<name>.yaml. hmgr
257
+ liest und validiert sie, schreibt sie nie — über die Quelle kommt sie versioniert auf alle
258
+ Maschinen. Es gibt keinen eigenen Katalog und keinen Pflegebefehl: bundle list zeigt, was beim
259
+ Quellen-Scan gefunden wurde.
260
+
261
+ Format der Datei:
262
+
263
+ name optional, sonst gilt der Dateiname ohne Endung
264
+ description Pflicht, kurzer Text
265
+ skills Pflicht, nicht leere Liste; je Eintrag source (URL oder Pfad der Quelle)
266
+ und path (Pfad des Skill-Ordners in dieser Quelle)
267
+
268
+ Beispiel bundles/wordpress.yaml:
269
+
270
+ name: wordpress
271
+ description: Alles für die WordPress-Arbeit
272
+ skills:
273
+ - source: git@gitea.example.com:tim/skills.git
274
+ path: skills/wp-core
275
+ - source: https://github.com/taquiri/skills
276
+ path: skills/tq-mailform
277
+
278
+ Ein Ref je Mitglied kennt die Definition nicht: der Link folgt dem Ref, mit dem die Quelle
279
+ eingerichtet ist. Angesprochen wird der Skill über seinen Pfad, nicht über seinen Namen — der Name
280
+ steht im Frontmatter und wird erst beim Lesen der Quelle bekannt.
281
+
282
+ Je Ziel ist das Bundle eine Einheit: add legt alle seine Links, remove nimmt alle wieder weg, sync
283
+ zieht Änderungen an der Definition nach. Nennt die Definition eine Quelle, die hmgr noch nicht
284
+ kennt, legt add sie an und sagt, welche neu sind. Lässt sich auch nur ein Mitglied nicht auflösen
285
+ oder liegt am Ziel ein Namenskonflikt, bricht add ab, bevor irgendetwas verlinkt oder eine Quelle
286
+ angelegt ist — ein halbes Bundle wäre stilles Fehlen von Skills. Wer nur einen Teil braucht,
287
+ verlinkt die erreichbaren Skills einzeln mit hmgr link.
288
+
289
+ Liegt am Ziel schon derselbe Skill aus derselben Quelle als hmgr-Link, wird er als Mitglied
290
+ übernommen: aus Bestand wird ein Bundle, ohne erst Links von Hand zu entfernen. Alles andere unter
291
+ demselben Namen ist ein Konflikt und wird genannt.
292
+
293
+ hmgr unlink <skill> auf ein einzelnes Mitglied zerbricht das Bundle in diesem Ziel: die übrigen
294
+ Links bleiben als einzelne Links liegen, der Bundle-Verweis fällt weg. Das ist kein Fehler, hmgr
295
+ sagt es nur.
296
+
297
+ Den Abgleich macht schon hmgr update für alle installierten Bundles mit, es ist derselbe Vorgang
298
+ und dieselbe Ausgabe (E69): eine geänderte Definition kommt also mit dem gewöhnlichen
299
+ Aktualisieren an, ohne dass man von der Änderung wissen müsste. bundle sync ist der gezielte Weg
300
+ daneben, wenn nur ein Bundle oder nur ein Ziel gemeint ist; ohne Namen und ohne Ziel-Schalter geht
301
+ es denselben Bestand durch wie update. Was sich nicht vollständig nachziehen lässt, bleibt in
302
+ seinem Ziel auf dem alten Stand und wird als fehlgeschlagen gemeldet.
303
+
304
+ Der Zeiger bleibt außen vor: die Zugehörigkeit der Links führt hmgr in seinem Zustand, nicht in der
305
+ composer.json. --local gibt es deshalb nicht, und die Sperre aus E57 trifft bundle nie.
306
+
307
+ Schalter (add, remove und sync):
308
+ --harness <name> claude-code, hermes oder agents, Standard claude-code
309
+ --ort <ort> home, wsl:<distro>, dir:<pfad> oder profil:<name>, Standard home. profil
310
+ kennt nur hermes, wsl:<distro> nur claude-code unter Windows (E78)
311
+ --composer <pfad> composer.json des Arbeitsverzeichnisses, wenn mehrere in Frage kommen
312
+ --quelle <teil> nur bei add: Quelle eingrenzen, wenn den Namen mehrere Quellen führen
313
+
314
+ Beispiele:
315
+ hmgr bundle list
316
+ hmgr bundle add wordpress --ort dir:.
317
+ hmgr bundle sync
318
+ hmgr bundle remove wordpress --ort dir:.
319
+
320
+ Häufige Fälle:
321
+ „steht in keiner Quelle": hmgr bundle list zeigt die bekannten Namen, sonst erst hmgr source add.
322
+ „liegt in mehreren Quellen": mit --quelle <teilstring> entscheiden.
323
+ „ist auf dieser Maschine nicht vollständig herstellbar": die Meldung nennt je Mitglied den Grund,
324
+ meist eine Quelle ohne Zugriff oder ein Pfad, an dem kein Skill (mehr) liegt.
325
+ „lässt sich in … nicht anlegen": die Meldung listet alle Namen, die am Ziel schon belegt sind.
326
+ „kein Bundle … installiert": hmgr status zeigt je Ziel seine Bundles.
327
+ „ist deaktiviert, hmgr legt dort keine Links an": bundle add braucht einen aktiven Harness, erst
328
+ hmgr harness enable <name>. bundle sync und bundle remove trifft die Sperre nicht (E76).
329
+
330
+ Siehe auch: hmgr help link, hmgr help plugin, hmgr help status, hmgr help harness`;
233
331
  const MCP = `hmgr mcp add <name> [schalter]
234
332
  hmgr mcp remove <name> [schalter]
235
333
  hmgr mcp migrate <name> [schalter]
@@ -353,6 +451,18 @@ Plugin-Fähigkeit deren Plugins nach (E14). Die Links zeigen weiter auf dieselbe
353
451
  nicht erneuert werden. Ein Checkout mit lokaler Änderung wird übersprungen und gemeldet (E15),
354
452
  damit nichts verloren geht. Lokale Quellen haben keinen Checkout und bleiben unberührt.
355
453
 
454
+ Unter jeder „aktualisiert"-Zeile steht, welche Skills der neue Stand geändert hat (E70): die Namen
455
+ kommen aus dem Vergleich von altem und neuem Commit, gezählt werden nur Skills, die in diesem
456
+ Checkout auch ausgecheckt sind. Berührt ein Commit nur Dateien daneben (README, CI), bleibt die
457
+ Zeile weg.
458
+
459
+ Im selben Lauf gleicht update die installierten Bundles gegen ihre Definitionen ab (E69): eine
460
+ Definition, die inzwischen ein Mitglied mehr oder weniger nennt, wird in jedem Ziel nachgezogen, in
461
+ dem das Bundle hängt. Das ist der Weg, auf dem eine Bundle-Änderung aus einer Quelle ankommt — ohne
462
+ ihn müsste man von seinen eigenen Änderungen wissen, um sie zu holen. Was sich nicht vollständig
463
+ nachziehen lässt, bleibt in seinem Ziel auf dem alten Stand und wird als fehlgeschlagen gemeldet,
464
+ ohne den übrigen Lauf aufzuhalten. hmgr bundle sync macht dasselbe für ein einzelnes Bundle.
465
+
356
466
  Danach räumt update verwaiste Ref-Verzeichnisse auf: Checkouts, in die kein Link mehr zeigt, weil
357
467
  ein Link inzwischen auf einen anderen Ref umgelegt wurde. Vor dem Löschen fragt hmgr einmal für
358
468
  alle Kandidaten. Ohne Bestätigung, also auch ohne Terminal, bleibt alles liegen und wird nur
@@ -361,6 +471,16 @@ gemeldet. Ein verwaister Checkout mit lokaler Änderung wird nie gelöscht (E15)
361
471
  So wird eine Änderung an einem Skill überall wirksam: in der Quelle committen und pushen, dann
362
472
  hmgr update.
363
473
 
474
+ Zum Schluss vergleicht update die eigene Version mit der auf npm veröffentlichten (E77). Ist dort
475
+ eine neuere, nennt eine letzte Zeile sie und den Befehl dazu (npm install -g hmgr@latest);
476
+ installiert wird nichts von selbst. Ohne Netz oder ohne neuere Version bleibt die Zeile weg.
477
+
478
+ Ergibt der Lauf mindestens ein Ereignis (aktualisierter Checkout, nachgezogenes Bundle,
479
+ aufgeräumter Checkout, ein Fehler), schreibt update denselben Eintrag auch in ~/.hmgr/verlauf.json
480
+ (E80) — dieselbe Datei, in die auch die GUI schreibt. hmgr log zeigt das Changelog. Plugins stehen
481
+ nicht im Verlauf: „claude plugin marketplace update" liefert keine Auskunft, ob sich etwas geändert
482
+ hat, eine Zeile dazu wäre geschönt.
483
+
364
484
  Schalter: keine.
365
485
 
366
486
  Beispiel:
@@ -373,10 +493,35 @@ Häufige Fälle:
373
493
  „liegen lassen … ohne Bestätigung nicht gelöscht": die Frage kam ohne Ja zurück, etwa in einer
374
494
  Pipe oder einem Composer-Script. In einem Terminal erneut hmgr update aufrufen.
375
495
 
376
- Siehe auch: hmgr help sync, hmgr help status`;
496
+ Siehe auch: hmgr help sync, hmgr help status, hmgr help log`;
497
+ const LOG = `hmgr log
498
+
499
+ Zeigt den Verlauf der letzten Läufe aus ~/.hmgr/verlauf.json (E80), neueste zuerst: dieselbe Datei,
500
+ die hmgr update schreibt und die GUI bei jedem automatischen und angestoßenen Lauf schreibt und
501
+ liest. Ein Lauf ohne Ereignis (nichts Neues) steht nicht drin, die Datei ist ein Changelog, keine
502
+ vollständige Historie — sie hält die letzten 20 Einträge.
503
+
504
+ Je Eintrag steht eine Kopfzeile mit Datum und Uhrzeit, darunter je Ereignis eine Zeile: ein
505
+ aktualisierter Checkout mit Quelle, Ref und Commit-Stand samt geänderten Skills (E70), ein
506
+ nachgezogenes Bundle mit gelegten und entfernten Links, ein aufgeräumter (gelöschter) Checkout, ein
507
+ Fehler zu einer Quelle oder einem Bundle, dazu hmgr-Ereignisse: ein Versionssprung von hmgr selbst
508
+ (GUI oder CLI, erkannt beim Start bzw. bei jedem CLI-Aufruf) oder ein gefundenes Update, das noch
509
+ nicht installiert ist. Plugins stehen nicht im Verlauf (siehe hmgr help update).
510
+
511
+ Der Verlauf ist je Rechner: mehrere Maschinen führen ihre eigene Datei, es gibt kein Zusammenführen.
512
+
513
+ Schalter: keine.
514
+
515
+ Beispiel:
516
+ hmgr log
517
+
518
+ Häufige Fälle:
519
+ „Noch keine Ereignisse": entweder frisch installiert, oder jeder bisherige Lauf war ohne Fund.
520
+
521
+ Siehe auch: hmgr help update, hmgr help status`;
377
522
  const STATUS = `hmgr status
378
523
 
379
- Liest den Ist-Zustand vom Dateisystem: je Ziel eines vorhandenen Harness die Einträge mit Quelle
524
+ Liest den Ist-Zustand vom Dateisystem: je Ziel eines vorhandenen, aktiven Harness die Einträge mit Quelle
380
525
  und Ref, davor die Versionseinschränkung, falls der Zeiger eine nennt. Dahinter steht der
381
526
  abgeleitete Grund des Links: das Plugin, zu dem er gehört, oder „über Zeiger", von Hand gelegte
382
527
  Links bleiben ohne Zusatz. Fremde Einträge und Links ohne bekannte Quelle sind eigens
@@ -394,11 +539,18 @@ Häufige Fälle:
394
539
  Zustand steht. Mit hmgr source add <url> die Quelle wieder eintragen.
395
540
  „Nicht vorhanden": der Harness hat sein Verzeichnis auf diesem Rechner nicht angelegt, hmgr
396
541
  überspringt seine Ziele.
542
+ Ein Ziel fehlt: Ziele inaktiver Harness-Typen zeigt status nicht, auch wenn dort noch Links
543
+ liegen. hmgr harness list zeigt den Stand, hmgr harness enable <name> holt die Ziele zurück.
397
544
 
398
545
  Siehe auch: hmgr help adopt, hmgr help sync`;
399
546
  const HARNESS = `hmgr harness list
400
547
  hmgr harness enable <name>
401
548
  hmgr harness disable <name>
549
+ hmgr harness home <name>
550
+ hmgr harness home <name> set <pfad>
551
+ hmgr harness home <name> reset
552
+ hmgr harness home <name> add wsl:<distro>
553
+ hmgr harness home <name> remove wsl:<distro>
402
554
  hmgr harness skills-dir <name> [--profil <name>]
403
555
  hmgr harness skills-dir <name> add <pfad> [--profil <name>]
404
556
  hmgr harness skills-dir <name> remove [--profil <name>]
@@ -411,9 +563,27 @@ alle bekannten Harness-Typen mit ihrem Stand: aktiv oder inaktiv, dazu vorhanden
411
563
 
412
564
  disable säubert nicht von selbst: liegen noch eigene Links oder eine harness-eigene Konfiguration wie
413
565
  Hermes' external_dirs-Eintrag, fragt hmgr, ob sie entfernt werden sollen. Ohne Terminal, etwa in einem
414
- Script, gilt Nein und die Konfiguration bleibt liegen. Ein Link mit ausdrücklich genanntem --harness
415
- (hmgr link, hmgr plugin add) legt weiterhin an jedem vorhandenen Harness an, aktiv oder nicht, das ist
416
- Sache des Nutzers.
566
+ Script, gilt Nein und die Konfiguration bleibt liegen. In ein Ziel eines inaktiven Harness legt hmgr
567
+ keine Links mehr an (E76): hmgr link und hmgr bundle add brechen ab und nennen hmgr harness enable
568
+ <name> als Weg, auch mit ausdrücklich genanntem --harness. Bestehende Links bleiben liegen, hmgr sync
569
+ und hmgr unlink trifft die Sperre nicht.
570
+
571
+ home zeigt die Homedirs eines Harness (E78). set stellt das primäre um: hmgr merkt sich nur den neuen
572
+ Pfad und zeigt ab dann ihn, was am alten Ort liegt, bleibt unberührt liegen — wer umziehen will,
573
+ verlinkt am neuen Ort neu, einen Umzugsassistenten gibt es nicht. reset nimmt die Umstellung zurück,
574
+ ebenfalls ohne etwas zu verschieben.
575
+
576
+ add trägt ein zusätzliches Homedir ein, heute nur eines in einer WSL-Distro: Adresse wsl:<distro>,
577
+ ohne Benutzer-Option, denn wsl.exe startet als Standardbenutzer der Distro — derselbe, der Claude Code
578
+ dort nutzt. Das Home wird einmal ermittelt (wsl -d <distro> /bin/sh -c 'echo $HOME'), angezeigt und
579
+ gespeichert. Jedes Homedir ist danach ein eigenständiges Ziel: es steht als eigene Zeile im status und
580
+ wird mit --ort wsl:<distro> angesprochen. Gespiegelt wird nichts, jedes Ziel wird einzeln verlinkt.
581
+ Links dort legt hmgr über wsl.exe an; das Linkziel bleibt der vorhandene Windows-Checkout, übersetzt
582
+ nach /mnt/c. MCP-Server und Plugins gibt es dort nicht: die claude-CLI dieses Rechners bedient nur das
583
+ primäre Homedir. remove lässt hmgr das Homedir vergessen, die Links dort bleiben liegen.
584
+
585
+ Zusätzliche Homedirs kennt bisher nur claude-code, und nur unter Windows. Steht eines im Zustand,
586
+ etwa weil er von einem Windows-Rechner kommt, zeigt hmgr sein Ziel auf anderen Plattformen nicht.
417
587
 
418
588
  skills-dir zeigt, legt fest oder entfernt den Ordner, aus dem Hermes externe Skills liest
419
589
  (skills.external_dirs in seiner config.yaml, E13, E56). hmgr verwaltet je Ziel (Home oder ein Profil
@@ -433,14 +603,28 @@ Beispiele:
433
603
  hmgr harness list
434
604
  hmgr harness enable hermes
435
605
  hmgr harness disable hermes
606
+ hmgr harness home claude-code
607
+ hmgr harness home claude-code set D:\\Profile\\tim
608
+ hmgr harness home claude-code add wsl:Ubuntu
609
+ hmgr link netzwerk --harness claude-code --ort wsl:Ubuntu
610
+ hmgr harness home claude-code remove wsl:Ubuntu
436
611
  hmgr harness skills-dir hermes
437
612
  hmgr harness skills-dir hermes add ~/.hermes/external-skills
438
613
  hmgr harness skills-dir hermes remove --profil researcher
439
614
 
440
615
  Häufige Fälle:
441
616
  „ist kein bekannter Harness-Typ": hmgr harness list zeigt die bekannten Namen.
617
+ „ist deaktiviert, hmgr legt dort keine Links an": hmgr harness enable <name>, dann erneut link
618
+ bzw. bundle add (E76).
442
619
  Konfiguration bleibt nach disable liegen, wenn die Rückfrage mit Nein oder ohne Terminal beantwortet
443
- wird. Ein erneutes hmgr harness disable <name> bietet das Säubern wieder an.
620
+ wird. hmgr status zeigt die Ziele des Typs dann nicht mehr (E74), sie erscheinen nach hmgr harness
621
+ enable <name> wieder. Ein erneutes hmgr harness disable <name> bietet das Säubern wieder an.
622
+ „ist keine Adresse für ein zusätzliches Homedir": add nimmt wsl:<distro>. Ein abweichender
623
+ normaler Pfad gehört an set, nicht an add.
624
+ „kennt keine zusätzlichen Homedirs": add und remove kennen heute nur claude-code.
625
+ „gibt es nur unter Windows": das WSL-Homedir wird auf dem Windows-Rechner eingetragen, auf dem
626
+ die Distro läuft.
627
+ „wsl.exe -d <distro> ließ sich nicht ausführen": wsl -l -q zeigt die installierten Distros.
444
628
  „kennt keinen verwalteten Skill-Ordner": skills-dir kennt heute nur hermes.
445
629
  „ist schon ein Skill-Ordner verwaltet": erst hmgr harness skills-dir <name> remove, dann add.
446
630
  „ist kein Skill-Ordner verwaltet": remove kennt nur einen vorhandenen Eintrag, add legt ihn fest.
@@ -456,10 +640,12 @@ const THEMEN = new Map([
456
640
  ['unlink', UNLINK],
457
641
  ['adopt', ADOPT],
458
642
  ['plugin', PLUGIN],
643
+ ['bundle', BUNDLE],
459
644
  ['mcp', MCP],
460
645
  ['sync', SYNC],
461
646
  ['update', UPDATE],
462
647
  ['status', STATUS],
648
+ ['log', LOG],
463
649
  ['harness', HARNESS],
464
650
  ['help', HILFE],
465
651
  ]);