hmgr 0.0.4 → 0.0.6
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 -0
- package/dist/adapter/checkout-pfad.js +10 -2
- package/dist/adapter/claude-code.js +251 -23
- package/dist/adapter/composer.js +4 -3
- package/dist/adapter/datei-text.js +18 -0
- package/dist/adapter/dateisystem.js +146 -8
- package/dist/adapter/git.js +129 -17
- package/dist/adapter/hermes.js +235 -10
- package/dist/adapter/marketplace-json.js +2 -1
- package/dist/adapter/mcp-katalog.js +124 -0
- package/dist/adapter/quelle-text.js +10 -1
- package/dist/adapter/skill-md.js +96 -19
- package/dist/adapter/terminal.js +1 -1
- package/dist/adapter/umgebung.js +43 -0
- package/dist/adapter/vergleich.js +20 -0
- package/dist/adapter/zustand-json.js +6 -1
- package/dist/cli/hilfe.js +227 -26
- package/dist/cli/main.js +362 -20
- package/dist/gui/beobachter.js +108 -0
- package/dist/gui/icons.js +114 -0
- package/dist/gui/login-pfad.js +120 -0
- package/dist/gui/main.js +823 -0
- package/dist/gui/mcp-ansicht.js +57 -0
- package/dist/gui/oeffnen.js +33 -0
- package/dist/gui/preload.cjs +70 -0
- package/dist/gui/renderer/fonts/Inter-LICENSE.txt +92 -0
- package/dist/gui/renderer/fonts/InterVariable.woff2 +0 -0
- package/dist/gui/renderer/fonts/JetBrainsMono-Medium.woff2 +0 -0
- package/dist/gui/renderer/fonts/JetBrainsMono-OFL.txt +93 -0
- package/dist/gui/renderer/fonts/JetBrainsMono-Regular.woff2 +0 -0
- package/dist/gui/renderer/index.html +581 -0
- package/dist/gui/renderer/renderer.js +3227 -0
- package/dist/gui/renderer/styles.css +701 -0
- package/dist/kern/anwendungsfaelle.js +859 -65
- package/dist/kern/modell.js +297 -0
- package/dist/kern/quelle-ort.js +14 -1
- package/dist/ports/harness.js +16 -0
- package/dist/ports/mcp-katalog.js +1 -0
- package/dist/ports/umgebung.js +1 -0
- package/dist/ports/zustand.js +1 -1
- package/package.json +47 -2
package/dist/cli/hilfe.js
CHANGED
|
@@ -9,23 +9,35 @@ geklontes Vorhaben holt seinen Stand mit hmgr sync.
|
|
|
9
9
|
|
|
10
10
|
hmgr <kommando> [schalter]
|
|
11
11
|
|
|
12
|
-
source add <url|pfad>
|
|
13
|
-
source
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
dir
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
plugin
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
source add <url|pfad> Quelle hinzufügen (URL wird geklont, Pfad bleibt Arbeitskopie)
|
|
13
|
+
source rename <url|pfad> <name> Anzeigename der Quelle ändern
|
|
14
|
+
source remove <url|pfad> Quelle vergessen, Checkouts und Links bleiben liegen
|
|
15
|
+
source list Quellen zeigen
|
|
16
|
+
dir add <pfad> Arbeitsverzeichnis merken und an seinen Zeiger binden
|
|
17
|
+
dir forget <pfad> Arbeitsverzeichnis und Bindung vergessen, Links bleiben
|
|
18
|
+
dir list Arbeitsverzeichnisse mit ihrer Bindung zeigen
|
|
19
|
+
link <skill> Skill in ein Ziel verlinken
|
|
20
|
+
unlink <skill> Link entfernen
|
|
21
|
+
adopt [name] Fremde Links im Ziel durch eigene hmgr-Links ersetzen
|
|
22
|
+
plugin add <name> Plugin in ein Ziel legen (installieren oder Skills verlinken)
|
|
23
|
+
plugin remove <name> Plugin aus einem Ziel entfernen
|
|
24
|
+
plugin list Plugins der Marketplaces aller Quellen
|
|
25
|
+
mcp add <name> MCP-Server aus dem Katalog in ein Ziel einhängen
|
|
26
|
+
mcp remove <name> MCP-Server aus einem Ziel aushängen
|
|
27
|
+
mcp migrate <name> MCP-Server aus der geteilten .mcp.json in den privaten Scope übernehmen
|
|
28
|
+
mcp list Katalog-Einträge zeigen, mit wo sie eingehängt sind
|
|
29
|
+
sync [pfad] Ziel auf den Stand seines Zeigers bringen
|
|
30
|
+
update Alle Checkouts aktualisieren
|
|
31
|
+
status Ist-Zustand der Ziele
|
|
32
|
+
harness list Harness-Typen mit Stand aktiv/inaktiv und vorhanden
|
|
33
|
+
harness enable <name> Harness-Typ aktivieren, hmgr richtet ihn künftig ein
|
|
34
|
+
harness disable <name> Harness-Typ deaktivieren, mit Angebot zum Säubern
|
|
35
|
+
harness skills-dir <name> Verwalteten Skill-Ordner zeigen, festlegen oder entfernen
|
|
26
36
|
|
|
27
37
|
hmgr help <kommando> zeigt Schalter, Beispiele und Zusammenhänge.`;
|
|
28
|
-
const SOURCE = `hmgr source add <url|pfad>
|
|
38
|
+
const SOURCE = `hmgr source add <url|pfad> [--name <name>]
|
|
39
|
+
hmgr source rename <url|pfad> <name>
|
|
40
|
+
hmgr source remove <url|pfad>
|
|
29
41
|
hmgr source list
|
|
30
42
|
|
|
31
43
|
Eine Quelle ist ein Git-Repo mit Skills. source add prüft, ob sie erreichbar ist, liest ihre Skills
|
|
@@ -35,21 +47,45 @@ dort schon liegt, und wird von hmgr nicht verändert.
|
|
|
35
47
|
|
|
36
48
|
Welche Quelle gemeint ist, hängt an Host, Besitzer und Repo, nicht an der Schreibweise der URL. Ein
|
|
37
49
|
Repo in SSH- und in HTTPS-Form ist dieselbe Quelle, mit und ohne .git-Suffix ebenso. Gefetcht wird
|
|
38
|
-
unter der Schreibweise, die beim ersten source add stand.
|
|
50
|
+
unter der Schreibweise, die beim ersten source add stand. source remove trifft dieselbe Quelle auch
|
|
51
|
+
in anderer Schreibweise (E36).
|
|
52
|
+
|
|
53
|
+
Jede Quelle trägt einen Anzeigenamen (E59): ohne --name schlägt hmgr den Repo-Namen vor (letztes
|
|
54
|
+
Pfadsegment, bei einer lokalen Quelle der Ordnername) und speichert ihn. Namen sind eindeutig, trägt
|
|
55
|
+
eine andere geführte Quelle schon denselben, bricht source add ab. source rename ändert den Namen
|
|
56
|
+
später; die Identität der Quelle bleibt dabei ihre URL bzw. ihr Pfad, nicht der Name. Bei einer schon
|
|
57
|
+
bekannten Quelle (source add trifft sie erneut) bleibt ihr Name unverändert.
|
|
58
|
+
|
|
59
|
+
source remove vergisst die Quelle nur aus dem Zustand (E54), wie dir forget das
|
|
60
|
+
Arbeitsverzeichnis (E26): Checkouts und Links bleiben liegen, bestehende Links gelten danach als
|
|
61
|
+
„Link ohne bekannte Quelle" und tauchen so in hmgr status auf, hmgr update prüft sie nicht mehr. Ein
|
|
62
|
+
erneutes source add derselben Quelle macht sie wieder zu normalen Links.
|
|
63
|
+
|
|
64
|
+
Danach bietet hmgr als eigene Rückfrage an, die Skills dieser Quelle komplett vom Rechner zu löschen
|
|
65
|
+
(E58): alle ihre Links in allen Zielen und alle ihre Checkouts, alles oder nichts. Über die
|
|
66
|
+
Harness-CLI installierte Plugins deinstalliert hmgr dabei nicht, sie werden nur genannt, ebenso
|
|
67
|
+
Zeiger-Einträge (E57). Ohne Links und ohne Checkouts kommt die Rückfrage gar nicht erst. Ablehnen
|
|
68
|
+
lässt alles liegen wie bisher.
|
|
39
69
|
|
|
40
|
-
Schalter:
|
|
70
|
+
Schalter:
|
|
71
|
+
--name <name> nur bei add: Anzeigename statt des abgeleiteten Vorschlags
|
|
41
72
|
|
|
42
73
|
Beispiele:
|
|
43
74
|
hmgr source add https://github.com/tim/skills.git
|
|
44
|
-
hmgr source add ~/.skills/tim-skills
|
|
75
|
+
hmgr source add ~/.skills/tim-skills --name tim-skills
|
|
76
|
+
hmgr source rename https://github.com/tim/skills.git meine-skills
|
|
77
|
+
hmgr source remove https://github.com/tim/skills.git
|
|
45
78
|
hmgr source list
|
|
46
79
|
|
|
47
80
|
Häufige Fälle:
|
|
48
81
|
„Skill … liegt in keiner Quelle": die Quelle fehlt, erst source add, dann link.
|
|
49
82
|
Neue Commits einer bekannten Quelle holt hmgr update, nicht source add.
|
|
50
83
|
„Quelle ist schon bekannt": dasselbe Repo steht schon im Zustand, hier in anderer Schreibweise.
|
|
84
|
+
„Quelle … ist nicht bekannt": source remove und source rename kennen nur geführte Quellen,
|
|
85
|
+
hmgr source list zeigt sie.
|
|
86
|
+
„Name … ist schon vergeben": einen anderen Namen wählen, mit --name bzw. source rename.
|
|
51
87
|
|
|
52
|
-
Siehe auch: hmgr help link, hmgr help plugin, hmgr help update`;
|
|
88
|
+
Siehe auch: hmgr help link, hmgr help plugin, hmgr help update, hmgr help status`;
|
|
53
89
|
const DIR = `hmgr dir add <pfad> [--composer <pfad>]
|
|
54
90
|
hmgr dir forget <pfad>
|
|
55
91
|
hmgr dir list
|
|
@@ -57,7 +93,8 @@ hmgr dir list
|
|
|
57
93
|
Ein Arbeitsverzeichnis ist ein Verzeichnis, in dem ein Harness gestartet wird. dir add merkt es und
|
|
58
94
|
bindet es an seinen Zeiger, also an die composer.json, in deren extra-Abschnitt Quellen, Skills und
|
|
59
95
|
Plugins des Vorhabens stehen. Ohne Zeiger bleibt das Verzeichnis gemerkt und jeder Link dort lokal
|
|
60
|
-
(E26). dir forget löst Bindung und Eintrag, die gelegten Links bleiben liegen.
|
|
96
|
+
(E26). dir forget löst Bindung und Eintrag, die gelegten Links bleiben liegen. Gebunden wird nur für
|
|
97
|
+
Harnesses, die hmgr verwaltet: standardmäßig nur claude-code (E38).
|
|
61
98
|
|
|
62
99
|
Schalter:
|
|
63
100
|
--composer <pfad> nur bei add: composer.json wählen, wenn unter dem Verzeichnis mehrere in
|
|
@@ -74,13 +111,16 @@ Häufige Fälle:
|
|
|
74
111
|
link --ort dir:<pfad> merkt das Verzeichnis von selbst. dir add braucht es vorher nur, wenn die
|
|
75
112
|
composer.json mehrdeutig ist.
|
|
76
113
|
|
|
77
|
-
Siehe auch: hmgr help link, hmgr help sync`;
|
|
114
|
+
Siehe auch: hmgr help link, hmgr help sync, hmgr help harness`;
|
|
78
115
|
const LINK = `hmgr link <skill> [schalter]
|
|
79
116
|
|
|
80
117
|
Legt im Ziel einen Symlink auf den Skill an, der aus einer bekannten Quelle stammt, und trägt ihn
|
|
81
118
|
in den Zeiger des Ziels ein, damit hmgr sync ihn anderswo reproduzieren kann. Einen Zeiger gibt es
|
|
82
119
|
nur für ein Arbeitsverzeichnis mit composer.json, an Home und Profil bleibt jeder Link lokal.
|
|
83
120
|
|
|
121
|
+
Das Schreiben in einen Zeiger ist gesperrt, bis das Composer-Thema entschieden ist (E57): an einem
|
|
122
|
+
Arbeitsverzeichnis mit Zeiger bricht link ohne --local ab, der Link wird nicht gelegt.
|
|
123
|
+
|
|
84
124
|
Schalter:
|
|
85
125
|
--harness <name> claude-code, hermes oder agents, Standard claude-code
|
|
86
126
|
--ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
|
|
@@ -108,6 +148,9 @@ const UNLINK = `hmgr unlink <skill> [schalter]
|
|
|
108
148
|
Entfernt den Link aus dem Ziel und, wenn das Ziel an einen Zeiger gebunden ist, den Skill aus dem
|
|
109
149
|
Zeiger. Der Checkout unter ~/.hmgr bleibt liegen, Links anderer Ziele bleiben unberührt.
|
|
110
150
|
|
|
151
|
+
Das Schreiben in einen Zeiger ist gesperrt, bis das Composer-Thema entschieden ist (E57): an einem
|
|
152
|
+
Arbeitsverzeichnis mit Zeiger bricht unlink ohne --local ab, der Link bleibt liegen.
|
|
153
|
+
|
|
111
154
|
Schalter:
|
|
112
155
|
--harness <name> claude-code, hermes oder agents, Standard claude-code
|
|
113
156
|
--ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
|
|
@@ -130,6 +173,10 @@ ein Link stammt, nimmt deren remote.origin.url als Quelle, legt einen Checkout a
|
|
|
130
173
|
und verlinkt den Skill daraus. Ohne Namen laufen alle fremden Einträge des Ziels durch, mit Namen
|
|
131
174
|
nur dieser eine. Was sich nicht auflösen lässt, bleibt liegen und wird mit Grund gemeldet.
|
|
132
175
|
|
|
176
|
+
Das Schreiben in einen Zeiger ist gesperrt, bis das Composer-Thema entschieden ist (E57): an einem
|
|
177
|
+
Arbeitsverzeichnis mit Zeiger bricht adopt ohne --local ab, bevor etwas übernommen wird. Der
|
|
178
|
+
Probelauf bleibt frei, er schreibt ohnehin nichts.
|
|
179
|
+
|
|
133
180
|
Schalter:
|
|
134
181
|
--harness <name> claude-code, hermes oder agents, Standard claude-code
|
|
135
182
|
--ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
|
|
@@ -159,6 +206,10 @@ Plugin von dessen CLI installieren, sonst verlinkt es die flache Skill-Liste des
|
|
|
159
206
|
seinen Abhängigkeiten. In den Zeiger kommt das Plugin, nicht seine Einzelskills. plugin list zeigt
|
|
160
207
|
die Marketplaces aller bekannten Quellen mit ihren Plugins.
|
|
161
208
|
|
|
209
|
+
Das Schreiben in einen Zeiger ist gesperrt, bis das Composer-Thema entschieden ist (E57): an einem
|
|
210
|
+
Arbeitsverzeichnis mit Zeiger brechen add und remove ohne --local ab, nichts wird installiert,
|
|
211
|
+
verlinkt oder entfernt.
|
|
212
|
+
|
|
162
213
|
Schalter (add und remove):
|
|
163
214
|
--harness <name> claude-code, hermes oder agents, Standard claude-code
|
|
164
215
|
--ort <ort> home, dir:<pfad> oder profil:<name>, Standard home. profil kennt nur hermes
|
|
@@ -179,13 +230,107 @@ Häufige Fälle:
|
|
|
179
230
|
kann nur die Quelle beheben.
|
|
180
231
|
|
|
181
232
|
Siehe auch: hmgr help source, hmgr help sync`;
|
|
233
|
+
const MCP = `hmgr mcp add <name> [schalter]
|
|
234
|
+
hmgr mcp remove <name> [schalter]
|
|
235
|
+
hmgr mcp migrate <name> [schalter]
|
|
236
|
+
hmgr mcp list
|
|
237
|
+
|
|
238
|
+
Ein MCP-Server ist ein Eintrag im persönlichen Katalog ~/.hmgr/mcp.yaml, nicht in einer Quelle: kein
|
|
239
|
+
Download, keine Installation, kein Update. hmgr liest den Katalog nur, er wird von Hand oder von
|
|
240
|
+
einem LLM gepflegt, das den MCP ohnehin gerade einrichtet. mcp add hängt einen Katalog-Eintrag in
|
|
241
|
+
ein Ziel ein (Projekt oder global), mcp remove hängt ihn wieder aus, mcp list zeigt den Katalog mit
|
|
242
|
+
je Eintrag, wo er eingehängt ist, dazu Einträge, die in Harness-Konfigurationen liegen, aber nicht
|
|
243
|
+
im Katalog stehen (nur genannt, hmgr fasst sie nicht an). mcp list sieht dabei in den Homes und
|
|
244
|
+
Profilen der Harnesses nach und in den Arbeitsverzeichnissen, die hmgr kennt (hmgr dir add); ein
|
|
245
|
+
MCP in einem Verzeichnis, das hmgr nicht kennt, taucht dort nicht auf.
|
|
246
|
+
|
|
247
|
+
Format von ~/.hmgr/mcp.yaml: ein Objekt, Schlüssel ist der MCP-Name. Je Eintrag:
|
|
248
|
+
|
|
249
|
+
beschreibung Pflicht, kurzer Text
|
|
250
|
+
homepage optional, URL
|
|
251
|
+
notizen optional, mehrzeilig
|
|
252
|
+
konfig Pflicht: entweder command (Pflicht), optional args und env,
|
|
253
|
+
oder url (Pflicht), optional headers
|
|
254
|
+
|
|
255
|
+
Andere Schlüssel im konfig-Block sind ein Fehler, mit Eintrag und Feld in der Meldung. Secrets
|
|
256
|
+
stehen als \${VAR}- oder \${env:VAR}-Verweise im Block, nie im Klartext; aufgelöst werden sie vom
|
|
257
|
+
Harness gegen dessen Umgebung, hmgr prüft beim Einhängen nur, ob die Variablen gesetzt sind, und
|
|
258
|
+
warnt sonst. Fehlt die Datei, ist der Katalog leer, kein Fehler; kaputtes YAML ist ein Fehler mit
|
|
259
|
+
dem Dateipfad.
|
|
260
|
+
|
|
261
|
+
Beispiel:
|
|
262
|
+
|
|
263
|
+
teamwork:
|
|
264
|
+
beschreibung: Teamwork.com Projektmanagement
|
|
265
|
+
homepage: https://teamwork.com
|
|
266
|
+
notizen: |
|
|
267
|
+
Erfordert TEAMWORK_API_KEY, siehe Teamwork-Profil.
|
|
268
|
+
konfig:
|
|
269
|
+
command: npx
|
|
270
|
+
args: ["-y", "@teamwork/mcp-server"]
|
|
271
|
+
env:
|
|
272
|
+
TEAMWORK_API_KEY: \${TEAMWORK_API_KEY}
|
|
273
|
+
|
|
274
|
+
context7:
|
|
275
|
+
beschreibung: Context7 Doku-Suche
|
|
276
|
+
konfig:
|
|
277
|
+
url: https://mcp.context7.com/mcp
|
|
278
|
+
headers:
|
|
279
|
+
Authorization: Bearer \${env:CONTEXT7_TOKEN}
|
|
280
|
+
|
|
281
|
+
Die Fähigkeit hängt am Harness-Adapter, nicht am Namen (E16): claude-code kennt Projekt (Scope
|
|
282
|
+
local, nie die geteilte .mcp.json der Projektwurzel, das bleibt Team-Sache wie beim Zeiger, E57) und
|
|
283
|
+
global (Scope user). Hermes kennt nur global, mcp_servers in seiner config.yaml (Home oder Profil
|
|
284
|
+
mit --ort profil:<name>); ein Projekt-Ziel ist bei Hermes ein Fehler, es kennt keine Projektebene für
|
|
285
|
+
MCPs. agents kennt MCP-Server gar nicht.
|
|
286
|
+
|
|
287
|
+
mcp migrate ist der einzige Weg, auf dem hmgr die geteilte .mcp.json anfasst (E64): der Eintrag
|
|
288
|
+
wandert 1:1 aus der Datei in deinen privaten Scope am selben Ort und wird dort gelöscht. Auch ein
|
|
289
|
+
Eintrag, der nicht im Katalog steht, lässt sich so übernehmen — der Konfigblock kommt aus der Datei,
|
|
290
|
+
nicht aus dem Katalog. Ist die Datei mit dem Team geteilt, verlieren die anderen den Server, sobald
|
|
291
|
+
die Änderung committet ist. Nur claude-code hat eine solche Datei und nur an einem
|
|
292
|
+
Arbeitsverzeichnis. Gearbeitet wird in zwei Schritten, erst eintragen, dann entfernen: bricht der
|
|
293
|
+
zweite ab, steht der Eintrag doppelt statt gar nicht mehr, und die Meldung sagt, was zu tun bleibt.
|
|
294
|
+
|
|
295
|
+
Nach dem Einhängen/Aushängen nennt hmgr den Weg zur Wirkung: Claude Code übernimmt die Änderung erst
|
|
296
|
+
mit der nächsten Sitzung, Hermes lädt seine config.yaml selbst nach, dafür gibt es keinen Hinweis.
|
|
297
|
+
|
|
298
|
+
Fehlende \${VAR}-Verweise beim Einhängen sind kein Abbruch, nur eine Warnung (F39): hmgr kann nicht
|
|
299
|
+
wissen, was die Shell beim Start des Harness setzt. Geprüft wird gegen die eigene Prozess-Umgebung
|
|
300
|
+
und, bei einem Hermes-Ziel, zusätzlich gegen <hermes-home>/.env.
|
|
301
|
+
|
|
302
|
+
Schalter (add, remove und migrate):
|
|
303
|
+
--harness <name> claude-code oder hermes, Standard claude-code
|
|
304
|
+
--ort <ort> home, dir:<pfad> oder profil:<name>, Standard home
|
|
305
|
+
|
|
306
|
+
Beispiele:
|
|
307
|
+
hmgr mcp list
|
|
308
|
+
hmgr mcp add teamwork --ort dir:.
|
|
309
|
+
hmgr mcp add context7 --harness hermes --ort profil:researcher
|
|
310
|
+
hmgr mcp remove teamwork --ort dir:.
|
|
311
|
+
hmgr mcp migrate kollegen-tool --ort dir:.
|
|
312
|
+
|
|
313
|
+
Häufige Fälle:
|
|
314
|
+
„steht nicht im Katalog": hmgr mcp list zeigt die bekannten Namen, ~/.hmgr/mcp.yaml pflegt sie.
|
|
315
|
+
„kennt keine MCP-Server": nur claude-code und hermes haben diese Fähigkeit, agents nicht.
|
|
316
|
+
„kennt für MCP-Server den Ort … nicht – Hermes kennt keine Projektebene für MCPs": bei Hermes
|
|
317
|
+
--ort home oder --ort profil:<name> nutzen, kein dir:<pfad>.
|
|
318
|
+
„liegt schon ein MCP-Server …, der nicht von hmgr stammt oder vom Katalogblock abweicht": von Hand
|
|
319
|
+
angleichen oder hmgr mcp remove, dann erneut versuchen.
|
|
320
|
+
„steht in der geteilten …/.mcp.json": mcp remove fasst sie nicht an, hmgr mcp migrate <name> holt
|
|
321
|
+
den Eintrag in den privaten Scope und löscht ihn aus der Datei.
|
|
322
|
+
„gibt es keine geteilte Konfigurationsdatei": mcp migrate geht nur mit --harness claude-code und
|
|
323
|
+
--ort dir:<pfad>.
|
|
324
|
+
|
|
325
|
+
Siehe auch: hmgr help harness, hmgr help status`;
|
|
182
326
|
const SYNC = `hmgr sync [pfad]
|
|
183
327
|
|
|
184
328
|
Bringt ein Arbeitsverzeichnis auf den Stand seines Zeigers: fehlende Quellen übernehmen, fehlende
|
|
185
329
|
Links legen, Links auf einen anderen Ref umlegen, Plugins herstellen. Ohne Pfad gilt das aktuelle
|
|
186
330
|
Verzeichnis. Das ist der Befehl nach einem frischen Clone eines Vorhabens und nach jeder Änderung
|
|
187
331
|
am Zeiger. Eigene Links, die im Zeiger fehlen, werden als abweichend gemeldet und nicht entfernt,
|
|
188
|
-
fremde Einträge bleiben unberührt.
|
|
332
|
+
fremde Einträge bleiben unberührt. Eingerichtet wird nur für Harnesses, die hmgr verwaltet:
|
|
333
|
+
standardmäßig nur claude-code (E38).
|
|
189
334
|
|
|
190
335
|
Schalter: keine.
|
|
191
336
|
|
|
@@ -200,7 +345,7 @@ Häufige Fälle:
|
|
|
200
345
|
hmgr unlink <skill> --ort dir:<pfad> --local entfernen.
|
|
201
346
|
„Kein Harness auf diesem Rechner": weder ~/.claude noch ~/.hermes noch ~/.agents ist angelegt.
|
|
202
347
|
|
|
203
|
-
Siehe auch: hmgr help dir, hmgr help link, hmgr help update`;
|
|
348
|
+
Siehe auch: hmgr help dir, hmgr help link, hmgr help update, hmgr help harness`;
|
|
204
349
|
const UPDATE = `hmgr update
|
|
205
350
|
|
|
206
351
|
Holt für jeden Checkout unter ~/.hmgr den neuesten Stand seines Refs und zieht bei Harnesses mit
|
|
@@ -232,9 +377,11 @@ Siehe auch: hmgr help sync, hmgr help status`;
|
|
|
232
377
|
const STATUS = `hmgr status
|
|
233
378
|
|
|
234
379
|
Liest den Ist-Zustand vom Dateisystem: je Ziel eines vorhandenen Harness die Einträge mit Quelle
|
|
235
|
-
und Ref, davor die Versionseinschränkung, falls der Zeiger eine nennt.
|
|
236
|
-
|
|
237
|
-
|
|
380
|
+
und Ref, davor die Versionseinschränkung, falls der Zeiger eine nennt. Dahinter steht der
|
|
381
|
+
abgeleitete Grund des Links: das Plugin, zu dem er gehört, oder „über Zeiger", von Hand gelegte
|
|
382
|
+
Links bleiben ohne Zusatz. Fremde Einträge und Links ohne bekannte Quelle sind eigens
|
|
383
|
+
gekennzeichnet, dazu kommen die Plugins des Ziels. Am Ende stehen die Harnesses, die auf diesem
|
|
384
|
+
Rechner nicht liegen.
|
|
238
385
|
|
|
239
386
|
Schalter: keine.
|
|
240
387
|
|
|
@@ -249,6 +396,58 @@ Häufige Fälle:
|
|
|
249
396
|
überspringt seine Ziele.
|
|
250
397
|
|
|
251
398
|
Siehe auch: hmgr help adopt, hmgr help sync`;
|
|
399
|
+
const HARNESS = `hmgr harness list
|
|
400
|
+
hmgr harness enable <name>
|
|
401
|
+
hmgr harness disable <name>
|
|
402
|
+
hmgr harness skills-dir <name> [--profil <name>]
|
|
403
|
+
hmgr harness skills-dir <name> add <pfad> [--profil <name>]
|
|
404
|
+
hmgr harness skills-dir <name> remove [--profil <name>]
|
|
405
|
+
|
|
406
|
+
Welche Harness-Typen hmgr verwaltet, ist eine Einstellung, kein gescannter Zustand: nur für aktive
|
|
407
|
+
Harnesses richten dir add und sync Ziele ein, standardmäßig nur claude-code (E38). harness list zeigt
|
|
408
|
+
alle bekannten Harness-Typen mit ihrem Stand: aktiv oder inaktiv, dazu vorhanden oder nicht vorhanden
|
|
409
|
+
(auf diesem Rechner installiert oder nicht). enable und disable sind idempotent, ein zweites Mal
|
|
410
|
+
ändert nichts und ist kein Fehler.
|
|
411
|
+
|
|
412
|
+
disable säubert nicht von selbst: liegen noch eigene Links oder eine harness-eigene Konfiguration wie
|
|
413
|
+
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.
|
|
417
|
+
|
|
418
|
+
skills-dir zeigt, legt fest oder entfernt den Ordner, aus dem Hermes externe Skills liest
|
|
419
|
+
(skills.external_dirs in seiner config.yaml, E13, E56). hmgr verwaltet je Ziel (Home oder ein Profil
|
|
420
|
+
mit --profil) genau einen Eintrag, den ersten unterhalb des Hermes-Home, ohne Hermes' eigenen Ordner
|
|
421
|
+
„skills"; alle anderen Einträge der config.yaml rührt hmgr nicht an. add erlaubt nur einen Pfad
|
|
422
|
+
unterhalb des Hermes-Home und legt ihn an, falls er fehlt; ein zweiter add ohne vorheriges remove ist
|
|
423
|
+
ein Fehler. remove löscht nur den Eintrag aus der config.yaml, der Ordner bleibt liegen; danach fragt
|
|
424
|
+
hmgr (mit Inhaltsangabe), ob der Ordner samt Inhalt gelöscht werden soll. Ohne Terminal, etwa in einem
|
|
425
|
+
Script, gilt Nein und der Ordner bleibt liegen, ohne weitere Meldung. Ohne verwalteten Eintrag richtet
|
|
426
|
+
das nächste hmgr link wieder den Standard-Ordner external-skills ein (E13). Hermes übernimmt eine
|
|
427
|
+
Änderung an external_dirs ohne Neustart.
|
|
428
|
+
|
|
429
|
+
Schalter (nur skills-dir):
|
|
430
|
+
--profil <name> Ziel ist das genannte Profil statt Home
|
|
431
|
+
|
|
432
|
+
Beispiele:
|
|
433
|
+
hmgr harness list
|
|
434
|
+
hmgr harness enable hermes
|
|
435
|
+
hmgr harness disable hermes
|
|
436
|
+
hmgr harness skills-dir hermes
|
|
437
|
+
hmgr harness skills-dir hermes add ~/.hermes/external-skills
|
|
438
|
+
hmgr harness skills-dir hermes remove --profil researcher
|
|
439
|
+
|
|
440
|
+
Häufige Fälle:
|
|
441
|
+
„ist kein bekannter Harness-Typ": hmgr harness list zeigt die bekannten Namen.
|
|
442
|
+
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.
|
|
444
|
+
„kennt keinen verwalteten Skill-Ordner": skills-dir kennt heute nur hermes.
|
|
445
|
+
„ist schon ein Skill-Ordner verwaltet": erst hmgr harness skills-dir <name> remove, dann add.
|
|
446
|
+
„ist kein Skill-Ordner verwaltet": remove kennt nur einen vorhandenen Eintrag, add legt ihn fest.
|
|
447
|
+
„liegt nicht unterhalb des Hermes-Home" oder „ist Hermes' eigener Skill-Ordner": einen anderen
|
|
448
|
+
Pfad unter ~/.hermes (bzw. dem Profil-Ordner) nennen, nicht „skills" selbst.
|
|
449
|
+
|
|
450
|
+
Siehe auch: hmgr help dir, hmgr help sync, hmgr help status`;
|
|
252
451
|
/** Ebene 2, je Kommandofamilie ein Text. Unterkommandos teilen sich die Hilfe ihrer Familie. */
|
|
253
452
|
const THEMEN = new Map([
|
|
254
453
|
['source', SOURCE],
|
|
@@ -257,9 +456,11 @@ const THEMEN = new Map([
|
|
|
257
456
|
['unlink', UNLINK],
|
|
258
457
|
['adopt', ADOPT],
|
|
259
458
|
['plugin', PLUGIN],
|
|
459
|
+
['mcp', MCP],
|
|
260
460
|
['sync', SYNC],
|
|
261
461
|
['update', UPDATE],
|
|
262
462
|
['status', STATUS],
|
|
463
|
+
['harness', HARNESS],
|
|
263
464
|
['help', HILFE],
|
|
264
465
|
]);
|
|
265
466
|
/** Hilfetext zu einem Kommando, undefined für ein unbekanntes Thema. */
|