@harness-lab/cli 0.3.1 → 0.3.2
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/assets/workshop-bundle/bundle-manifest.json +14 -14
- package/assets/workshop-bundle/content/challenge-cards/deck.md +1 -1
- package/assets/workshop-bundle/content/facilitation/master-guide.md +2 -3
- package/assets/workshop-bundle/content/project-briefs/code-review-helper.md +1 -1
- package/assets/workshop-bundle/content/project-briefs/doc-generator.md +2 -2
- package/assets/workshop-bundle/content/project-briefs/metrics-dashboard.md +1 -1
- package/assets/workshop-bundle/content/project-briefs/standup-bot.md +1 -1
- package/assets/workshop-bundle/content/talks/context-is-king.md +11 -3
- package/assets/workshop-bundle/materials/participant-resource-kit.md +1 -1
- package/assets/workshop-bundle/workshop-skill/closing-skill.md +1 -1
- package/assets/workshop-bundle/workshop-skill/follow-up-package.md +1 -1
- package/assets/workshop-bundle/workshop-skill/recap.md +1 -1
- package/assets/workshop-bundle/workshop-skill/reference.md +1 -1
- package/package.json +1 -1
- package/src/run-cli.js +72 -24
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifestVersion": 1,
|
|
3
3
|
"bundleName": "harness-lab-workshop",
|
|
4
|
-
"bundleVersion": "0.3.
|
|
5
|
-
"contentHash": "
|
|
4
|
+
"bundleVersion": "0.3.2",
|
|
5
|
+
"contentHash": "579eac8240790ff7974b9cfdfba7f4c2ae0c901fbf3bf312e1017ad258069174",
|
|
6
6
|
"files": [
|
|
7
7
|
{
|
|
8
8
|
"path": "content/challenge-cards/.gitkeep",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"path": "content/challenge-cards/deck.md",
|
|
13
|
-
"sha256": "
|
|
13
|
+
"sha256": "d2523b1fbedd84faef5327affe5a698f44b8634c9eb0da8320dc8339bc5158fc"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"path": "content/challenge-cards/locales/en/deck.md",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"path": "content/facilitation/master-guide.md",
|
|
37
|
-
"sha256": "
|
|
37
|
+
"sha256": "c5f3df56380b3df498a92dc6de55e922b2c7722e53e4f6f2efbef9b76de1d163"
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
"path": "content/project-briefs/.gitkeep",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
"path": "content/project-briefs/code-review-helper.md",
|
|
45
|
-
"sha256": "
|
|
45
|
+
"sha256": "faf51210e1305683432f3e96eec1e18f91cdb2f1fd086ff73aeb70b6d17895a0"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"path": "content/project-briefs/devtoolbox-cli.md",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
"path": "content/project-briefs/doc-generator.md",
|
|
53
|
-
"sha256": "
|
|
53
|
+
"sha256": "b4a3da683eba039f6009be61fe546ed1585341c82c3492f94add8363ad9496e3"
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
"path": "content/project-briefs/locales/en/code-review-helper.md",
|
|
@@ -74,11 +74,11 @@
|
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
"path": "content/project-briefs/metrics-dashboard.md",
|
|
77
|
-
"sha256": "
|
|
77
|
+
"sha256": "926dd8ccedab65a30b862bf4dc481f2c8054778e5668d97f5c8cf46665c60860"
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
"path": "content/project-briefs/standup-bot.md",
|
|
81
|
-
"sha256": "
|
|
81
|
+
"sha256": "c2f56513bf69dd92c95f3dbd68c5b0925d19faf17d9d42eb2ed40c7cc8e8839b"
|
|
82
82
|
},
|
|
83
83
|
{
|
|
84
84
|
"path": "content/talks/.gitkeep",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
"path": "content/talks/context-is-king.md",
|
|
93
|
-
"sha256": "
|
|
93
|
+
"sha256": "2f666585220c50901fe91443904a127e3357aa71a92e93b10eafa17100eb105c"
|
|
94
94
|
},
|
|
95
95
|
{
|
|
96
96
|
"path": "docs/harness-cli-foundation.md",
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
},
|
|
127
127
|
{
|
|
128
128
|
"path": "materials/participant-resource-kit.md",
|
|
129
|
-
"sha256": "
|
|
129
|
+
"sha256": "c9c58ebf3e66a6f6823a06b5d938bc930eb3a768d3d23a2b4f18fe99b4b85a47"
|
|
130
130
|
},
|
|
131
131
|
{
|
|
132
132
|
"path": "SKILL.md",
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
168
|
"path": "workshop-skill/closing-skill.md",
|
|
169
|
-
"sha256": "
|
|
169
|
+
"sha256": "f0ce3f0f4a515dff14dab77fd31317a73a489ee24ba536eb7dd20f0b13cff4ec"
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
"path": "workshop-skill/commands.md",
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
},
|
|
179
179
|
{
|
|
180
180
|
"path": "workshop-skill/follow-up-package.md",
|
|
181
|
-
"sha256": "
|
|
181
|
+
"sha256": "3299b0cf49e90f87ec3090ed934234d8c06e502fd3305c4e69c8aadfe1b42e7e"
|
|
182
182
|
},
|
|
183
183
|
{
|
|
184
184
|
"path": "workshop-skill/install.md",
|
|
@@ -206,11 +206,11 @@
|
|
|
206
206
|
},
|
|
207
207
|
{
|
|
208
208
|
"path": "workshop-skill/recap.md",
|
|
209
|
-
"sha256": "
|
|
209
|
+
"sha256": "c479b255b4ebd35dde9a1afbf7a174e3aa8b348ebed8e07187f641f5dcb1b143"
|
|
210
210
|
},
|
|
211
211
|
{
|
|
212
212
|
"path": "workshop-skill/reference.md",
|
|
213
|
-
"sha256": "
|
|
213
|
+
"sha256": "438cfc517d5ff707ce737e81a7ec3f8098c08f8fd2589ac105aea968da39f9a6"
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
216
|
"path": "workshop-skill/setup.md",
|
|
@@ -15,7 +15,7 @@ Karty nejsou body navíc. Jsou to malé zásahy, které zlepšují způsob prác
|
|
|
15
15
|
- `Rozdělte práci do více vláken` — zkuste dvě nezávislé linie práce a jednoho člověka na integraci.
|
|
16
16
|
- `Delegujte úkol a vraťte se ke kontrole za 10 minut` — neskákejte agentovi do každého kroku, kontrolujte až výsledek.
|
|
17
17
|
- `Přidejte nejmenší užitečné ověření` — zapište done criteria jako spustitelný check (unit test, tracer bullet nebo jednoduchý browser check) dřív, než agent dostane víc autonomie.
|
|
18
|
-
- `Napište diagnózu po handoffu` — pojmenujte, co pomohlo, co chybělo a jaký je další
|
|
18
|
+
- `Napište diagnózu po handoffu` — pojmenujte, co pomohlo, co chybělo a jaký je další bezpečný krok.
|
|
19
19
|
- `Opravte jeden slabý signál v repu` — README, AGENTS.md, plán, runbook nebo check.
|
|
20
20
|
|
|
21
21
|
## Advanced
|
|
@@ -24,7 +24,7 @@ Spustit den jako společný start pro celý workshop, ne jako provozní brief k
|
|
|
24
24
|
2. proč na tom záleží právě teď
|
|
25
25
|
3. analogie typu Lego duck: stejné ingredience, různé použitelné výsledky
|
|
26
26
|
4. krátká pohybová aktivace podle zkušenosti s AI agenty
|
|
27
|
-
5. první pracovní kontrakt pro
|
|
27
|
+
5. první pracovní kontrakt pro build fázi 1
|
|
28
28
|
|
|
29
29
|
### Lego-duck analogie
|
|
30
30
|
|
|
@@ -78,7 +78,7 @@ Do oběda má být vidět:
|
|
|
78
78
|
|
|
79
79
|
### Cíl
|
|
80
80
|
|
|
81
|
-
Proměnit energii z openingu v přesnou tezi a čistý most do
|
|
81
|
+
Proměnit energii z openingu v přesnou tezi a čistý most do build fáze 1.
|
|
82
82
|
|
|
83
83
|
### Klíčová message
|
|
84
84
|
|
|
@@ -232,7 +232,6 @@ Vést ho jako krátký checkpoint, ze kterého si týmy odnesou jednu věc, kter
|
|
|
232
232
|
|
|
233
233
|
- Začněte `README`, `AGENTS.md` a planem.
|
|
234
234
|
- Needitujte hned první soubor, který otevřete.
|
|
235
|
-
- Nejprve si udělejte mapu: co funguje, co chybí, co je rizikové.
|
|
236
235
|
- Nejdřív napište vlastní diagnózu: co pomáhá, co chybí, co je rizikové a jaký je další bezpečný krok.
|
|
237
236
|
- Když tým neví, po čem sáhnout, vraťte ho k learner kitu: `template-agents`, `reference`, `analyze-checklist` a challenge cards.
|
|
238
237
|
|
|
@@ -24,7 +24,7 @@ Vaším úkolem je navrhnout nástroj, který z diffu nebo změny vytvoří pou
|
|
|
24
24
|
- Nástroj vytvoří review checklist ze seed diffu.
|
|
25
25
|
- Výstup odlišuje jistá zjištění od doporučení, hypotéz a bodů pro lidský úsudek.
|
|
26
26
|
- Je jasné, jak přidat nové pravidlo nebo heuristiku bez dlouhého onboardingu.
|
|
27
|
-
- Další tým může během
|
|
27
|
+
- Další tým může během 10 minut pokračovat v rozvoji bez chaosu.
|
|
28
28
|
|
|
29
29
|
## První krok pro agenta
|
|
30
30
|
|
|
@@ -9,7 +9,7 @@ Vaším úkolem je navrhnout nástroj, který z projektu vygeneruje základní
|
|
|
9
9
|
## User stories
|
|
10
10
|
|
|
11
11
|
- Jako vývojář chci z projektu rychle získat základní technickou dokumentaci bez ručního sepisování všeho od nuly.
|
|
12
|
-
- Jako reviewer chci během
|
|
12
|
+
- Jako reviewer chci během 5 minut pochopit strukturu modulů a hlavní vstupní body.
|
|
13
13
|
- Jako tým po rotaci chci objevit architekturu projektu bez dlouhého pátrání po souvislostech.
|
|
14
14
|
|
|
15
15
|
## Architektonické poznámky
|
|
@@ -26,7 +26,7 @@ Vaším úkolem je navrhnout nástroj, který z projektu vygeneruje základní
|
|
|
26
26
|
- Je jasné, jak se nástroj spouští lokálně a nad jakým vstupem.
|
|
27
27
|
- Výstup odděluje fakta od odhadů nebo heuristik.
|
|
28
28
|
- Další tým umí přidat nový typ výstupu bez chaosu v repu.
|
|
29
|
-
- Reviewer během
|
|
29
|
+
- Reviewer během 10 minut pozná, odkud které tvrzení pochází.
|
|
30
30
|
|
|
31
31
|
## První krok pro agenta
|
|
32
32
|
|
|
@@ -10,7 +10,7 @@ Vaším úkolem je navrhnout jednoduchý dashboard, který z několika metrik v
|
|
|
10
10
|
|
|
11
11
|
- Jako tým chci zobrazit několik metrik na jedné obrazovce tak, aby z nich šlo rychle vyčíst stav.
|
|
12
12
|
- Jako facilitátor chci snadno měnit seed data bez zásahu do UI logiky.
|
|
13
|
-
- Jako tým po rotaci chci během
|
|
13
|
+
- Jako tým po rotaci chci během 10 minut pochopit strukturu dat, komponent i obrazovek.
|
|
14
14
|
|
|
15
15
|
## Architektonické poznámky
|
|
16
16
|
|
|
@@ -25,7 +25,7 @@ Vaším úkolem je navrhnout nástroj, který ze standup vstupů vytvoří přeh
|
|
|
25
25
|
- Nástroj umí ingestovat seed data a vytvořit čitelný souhrn.
|
|
26
26
|
- Výstup zvýrazní blokery nebo položky, které potřebují pozornost.
|
|
27
27
|
- Repo obsahuje instrukce, jak řešení napojit na reálný chat nebo jiný vstupní kanál.
|
|
28
|
-
- Po rotaci
|
|
28
|
+
- Po rotaci může nový tým pokračovat v práci z README a `AGENTS.md` bez ústního handoffu.
|
|
29
29
|
- Je jasné, co je jisté shrnutí a co je jen heuristika nebo návrh.
|
|
30
30
|
|
|
31
31
|
## První krok pro agenta
|
|
@@ -43,15 +43,23 @@ Vezmeme stejný malý task ve dvou podmínkách. Jedna varianta bude prompt blob
|
|
|
43
43
|
|
|
44
44
|
## Hlavní teze
|
|
45
45
|
|
|
46
|
+
### Kontext je páka
|
|
47
|
+
|
|
46
48
|
- Kontext je páka, ne kosmetika.
|
|
47
49
|
- `AGENTS.md`, skills a runbooky jsou týmová infrastruktura.
|
|
48
50
|
- `AGENTS.md` nemá být encyklopedie. Má to být mapa, která ukáže, kam sáhnout dál.
|
|
49
|
-
- Co není v repu, neexistuje. Slack, ústní dovysvětlení a
|
|
51
|
+
- Co není v repu, neexistuje. Slack, ústní dovysvětlení a „to si pamatujeme" se rozpadne, jakmile práci někdo převezme.
|
|
52
|
+
|
|
53
|
+
### Ověření je hranice důvěry
|
|
54
|
+
|
|
50
55
|
- Testy jsou hranice důvěry. Když agent pracuje samostatněji, musíte mnohem líp ověřovat, že udělal právě to, co jste chtěli.
|
|
51
56
|
- Jednoduché mantinely zrychlují práci. Agentovi pomáhá jasný build/test flow, viditelné hranice a předvídatelná struktura.
|
|
52
57
|
- U UI práce je výchozí pattern: agent exploration, potom repeatable browser test, potom lidské review.
|
|
53
58
|
- „Nech model jezdit v mém běžném přihlášeném browseru“ není výchozí doporučení. Bezpečnější je izolované lokální prostředí a jasné mantinely.
|
|
54
|
-
- Ověření napsané dřív, než pustíte agenta do většího kusu práce, není test-first dogma.
|
|
59
|
+
- Ověření napsané dřív, než pustíte agenta do většího kusu práce, není test-first dogma. Znamená to zapsat done criteria v takové formě, aby je agent i další tým uměl zkontrolovat. Iteraci to zrychluje, protože agent dostane přesné mantinely, ne další prompt.
|
|
60
|
+
|
|
61
|
+
### Repo se udržuje, ne jen plní
|
|
62
|
+
|
|
55
63
|
- Úklid není bonus po workshopu. Když narazíte na opakující se chaos, je čas ho proměnit v lepší template, ověření nebo runbook.
|
|
56
64
|
- Odpolední návaznost prověří, jestli váš kontext funguje i bez vás.
|
|
57
65
|
|
|
@@ -69,7 +77,7 @@ Po tomhle talku se tým nemá vracet k repu s pocitem, že potřebuje jen chyt
|
|
|
69
77
|
- pokud ještě nemá workshop skill, teď je chvíle na `harness skill install`, pak `Codex: $workshop setup` nebo `pi: /skill:workshop`
|
|
70
78
|
- nejdřív krátká mapa v repu
|
|
71
79
|
- potom krátký plán kroků
|
|
72
|
-
- potom první explicitní
|
|
80
|
+
- potom první explicitní ověření, že agent dělá, co jste čekali
|
|
73
81
|
- teprve potom další feature motion
|
|
74
82
|
|
|
75
83
|
## Závěr
|
|
@@ -77,7 +77,7 @@ Poznámka:
|
|
|
77
77
|
Codex a další kódovací agenti se mění měsíčně. Tenhle kit není zmrazená reference — je to startovní harness pro vaši vlastní čtecí praxi.
|
|
78
78
|
|
|
79
79
|
- **Codex CLI release notes** — čtěte při každém vydání. Změny v approval módech a sandboxingu jsou ty nejdůležitější.
|
|
80
|
-
- **Simon Willison's blog** ([simonwillison.net](https://simonwillison.net/)) —
|
|
80
|
+
- **Simon Willison's blog** ([simonwillison.net](https://simonwillison.net/)) — praktický zdroj o Codexu, Claude Code a dalších agentech. Píše z vlastní každodenní praxe.
|
|
81
81
|
- **OpenAI Harness Engineering articles** — viz `docs/learner-reference-gallery.md` pro odkazy.
|
|
82
82
|
- **Anthropic engineering blog** — když pracujete s Claude Code, sledujte oficiální posts.
|
|
83
83
|
- **Vlastní `AGENTS.md` jako živý dokument** — každé čtvrtletí si je znovu přečtěte skeptickým okem. Smažte, co už není nosné. Jednoduchost je součást harnessu.
|
|
@@ -32,7 +32,7 @@ Krátký navazující dotaz:
|
|
|
32
32
|
|
|
33
33
|
- Vytvořili jste `AGENTS.md` v reálném projektu?
|
|
34
34
|
- Přidali jste build/test příkazy nebo sekci `Done When`?
|
|
35
|
-
- Přidali jste další
|
|
35
|
+
- Přidali jste další bezpečný krok nebo krátký handoff runbook?
|
|
36
36
|
- Co vám pomohlo a co vás zablokovalo?
|
|
37
37
|
|
|
38
38
|
## W³ připomínka
|
|
@@ -26,4 +26,4 @@ Vraťte se ke sticky note z části `A teď?` a převeďte ji na první konkr
|
|
|
26
26
|
|
|
27
27
|
## Až si nebudete jistí
|
|
28
28
|
|
|
29
|
-
Začněte jednoduše: napište, co chcete udělat, kde je kontext, jaká jsou omezení, podle čeho poznáte hotovo a jaký je další
|
|
29
|
+
Začněte jednoduše: napište, co chcete udělat, kde je kontext, jaká jsou omezení, podle čeho poznáte hotovo a jaký je další bezpečný krok, když práce zůstane rozdělaná.
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
- V prvním buildu: `template-agents`, brief, plán a první ověření
|
|
37
37
|
- Před obědem: dopsat další bezpečný krok a použít `workshop analyze`, když si nejste jistí handoffem
|
|
38
38
|
- Po rotaci: `workshop analyze`, learner kit a challenge cards místo ústního rescue
|
|
39
|
-
-
|
|
39
|
+
- Po posledním bloku: `workshop recap` a `workshop follow-up`
|
|
40
40
|
|
|
41
41
|
## Doporučené příkazy
|
|
42
42
|
|
package/package.json
CHANGED
package/src/run-cli.js
CHANGED
|
@@ -202,39 +202,87 @@ function resolveCurrentInstanceTarget(session, env) {
|
|
|
202
202
|
};
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
+
function helpLine(command, description) {
|
|
206
|
+
return description ? `${command.padEnd(48)} ${description}` : ` ${command}`;
|
|
207
|
+
}
|
|
208
|
+
|
|
205
209
|
function printUsage(io, ui) {
|
|
206
210
|
ui.heading("Harness CLI");
|
|
207
|
-
ui.paragraph(`Version ${version}
|
|
211
|
+
ui.paragraph(`Workshop toolkit for teams working with AI coding agents. Version ${version}.`);
|
|
208
212
|
ui.blank();
|
|
213
|
+
|
|
209
214
|
ui.section("Usage");
|
|
215
|
+
ui.commandList(["harness <command> [flags]"]);
|
|
216
|
+
ui.blank();
|
|
217
|
+
|
|
218
|
+
ui.section("Participant");
|
|
219
|
+
ui.commandList([
|
|
220
|
+
helpLine("skill install [--target PATH] [--force]", "Install the workshop skill into your repo"),
|
|
221
|
+
]);
|
|
222
|
+
ui.blank();
|
|
223
|
+
|
|
224
|
+
ui.section("Authentication");
|
|
225
|
+
ui.commandList([
|
|
226
|
+
helpLine("auth login [--auth device|basic|neon]", "Authenticate as a facilitator"),
|
|
227
|
+
helpLine("auth logout", "End the current session"),
|
|
228
|
+
helpLine("auth status", "Check session status"),
|
|
229
|
+
]);
|
|
230
|
+
ui.blank();
|
|
231
|
+
|
|
232
|
+
ui.section("Workshop — inspect");
|
|
233
|
+
ui.commandList([
|
|
234
|
+
helpLine("workshop status", "Show current state and selected instance"),
|
|
235
|
+
helpLine("workshop current-instance", "Show the locally selected instance"),
|
|
236
|
+
helpLine("workshop select-instance <id> [--clear]", "Pin an instance for subsequent commands"),
|
|
237
|
+
helpLine("workshop list-instances", "List all facilitator-visible instances"),
|
|
238
|
+
helpLine("workshop show-instance <id>", "Inspect one instance in detail"),
|
|
239
|
+
]);
|
|
240
|
+
ui.blank();
|
|
241
|
+
|
|
242
|
+
ui.section("Workshop — lifecycle");
|
|
243
|
+
ui.commandList([
|
|
244
|
+
helpLine("workshop create-instance [<id>]", "Create a new workshop from a template"),
|
|
245
|
+
helpLine(" [--template-id ID] [--content-lang cs|en]", ""),
|
|
246
|
+
helpLine(" [--event-title TEXT] [--city CITY]", ""),
|
|
247
|
+
helpLine("workshop update-instance <id>", "Update event metadata for an instance"),
|
|
248
|
+
helpLine(" [--content-lang cs|en] [--event-title TEXT]", ""),
|
|
249
|
+
helpLine(" [--city CITY]", ""),
|
|
250
|
+
helpLine("workshop reset-instance <id> [--template-id ID]", "Reset an instance from the blueprint"),
|
|
251
|
+
helpLine("workshop prepare <id>", "Mark an instance as ready for participants"),
|
|
252
|
+
helpLine("workshop remove-instance <id>", "Soft-remove an instance from the list"),
|
|
253
|
+
helpLine("workshop archive [--notes TEXT]", "Snapshot runtime state before reset"),
|
|
254
|
+
]);
|
|
255
|
+
ui.blank();
|
|
256
|
+
|
|
257
|
+
ui.section("Workshop — live facilitation");
|
|
210
258
|
ui.commandList([
|
|
211
|
-
"
|
|
212
|
-
"
|
|
213
|
-
"
|
|
214
|
-
"
|
|
259
|
+
helpLine("workshop phase set <phase-id>", "Advance the agenda to a phase"),
|
|
260
|
+
helpLine("workshop participant-access [<id>]", "Inspect or rotate the event code"),
|
|
261
|
+
helpLine(" [--rotate] [--code VALUE]", ""),
|
|
262
|
+
helpLine("workshop learnings", "Query the cross-cohort learnings log"),
|
|
263
|
+
helpLine(" [--tag TAG] [--instance ID]", ""),
|
|
264
|
+
helpLine(" [--cohort NAME] [--limit N]", ""),
|
|
215
265
|
]);
|
|
216
266
|
ui.blank();
|
|
217
|
-
|
|
267
|
+
|
|
268
|
+
ui.section("Global flags");
|
|
218
269
|
ui.commandList([
|
|
219
|
-
"
|
|
220
|
-
"
|
|
221
|
-
"
|
|
222
|
-
"harness skill install [--target PATH] [--force]",
|
|
223
|
-
"harness workshop current-instance",
|
|
224
|
-
"harness workshop select-instance <instance-id> [--clear]",
|
|
225
|
-
"harness workshop status",
|
|
226
|
-
"harness workshop list-instances",
|
|
227
|
-
"harness workshop show-instance <instance-id>",
|
|
228
|
-
"harness workshop participant-access [<instance-id>] [--rotate] [--code VALUE]",
|
|
229
|
-
"harness workshop archive [--notes TEXT]",
|
|
230
|
-
"harness workshop create-instance [<instance-id>] [--template-id ID] [--content-lang cs|en] [--event-title TEXT] [--city CITY]",
|
|
231
|
-
"harness workshop update-instance <instance-id> [--content-lang cs|en] [--event-title TEXT] [--city CITY]",
|
|
232
|
-
"harness workshop reset-instance <instance-id> [--template-id ID]",
|
|
233
|
-
"harness workshop prepare <instance-id>",
|
|
234
|
-
"harness workshop remove-instance <instance-id>",
|
|
235
|
-
"harness workshop phase set <phase-id>",
|
|
236
|
-
"harness workshop learnings [--tag TAG] [--instance ID] [--cohort NAME] [--limit N]",
|
|
270
|
+
helpLine("--json", "Output machine-readable JSON"),
|
|
271
|
+
helpLine("--help", "Show this help"),
|
|
272
|
+
helpLine("--version", "Print version"),
|
|
237
273
|
]);
|
|
274
|
+
ui.blank();
|
|
275
|
+
|
|
276
|
+
ui.section("Examples");
|
|
277
|
+
ui.commandList([
|
|
278
|
+
helpLine("harness skill install", "Install workshop skill here"),
|
|
279
|
+
helpLine("harness auth login", "Start device-code login"),
|
|
280
|
+
helpLine("harness workshop status", "Check what instance you target"),
|
|
281
|
+
helpLine("harness workshop learnings --tag missing_runbook", "Search learnings by tag"),
|
|
282
|
+
]);
|
|
283
|
+
ui.blank();
|
|
284
|
+
|
|
285
|
+
ui.paragraph("Documentation: https://github.com/ondrej-svec/harness-lab");
|
|
238
286
|
}
|
|
239
287
|
|
|
240
288
|
function printVersion(io) {
|