From 552080b630beb418cbc0fb6792bd4c863c894261 Mon Sep 17 00:00:00 2001 From: McAmner Date: Sat, 13 Jun 2026 17:31:20 +0200 Subject: [PATCH 1/4] update project files --- .claude/commands/mqlaunch-command-surface.md | 66 +++++ skills/mqlaunch-menu-template/SKILL.md | 248 +++++++++++++++++++ 2 files changed, 314 insertions(+) create mode 100644 .claude/commands/mqlaunch-command-surface.md create mode 100644 skills/mqlaunch-menu-template/SKILL.md diff --git a/.claude/commands/mqlaunch-command-surface.md b/.claude/commands/mqlaunch-command-surface.md new file mode 100644 index 0000000..fd7fd3b --- /dev/null +++ b/.claude/commands/mqlaunch-command-surface.md @@ -0,0 +1,66 @@ +# mqlaunch Command Surface + +Use the local `mqlaunch-command-surface` skill before changing mqlaunch +commands, menus, aliases, HAL routing, help text, or CLI/TUI command behavior. + +Primary skill file: + +```text +skills/mqlaunch-command-surface/SKILL.md +``` + +First read that file completely and follow its workflow. + +Default inspection pass: + +```bash +git status --short +sed -n '1,220p' skills/mqlaunch-command-surface/SKILL.md +sed -n '1,220p' docs/COMMANDS.md +sed -n '1,260p' terminal/launchers/mqlaunch-command-mode.sh +sed -n '1,220p' terminal/launchers/mqlaunch.sh +``` + +For menu work, inspect the relevant menu module under: + +```text +terminal/menus/ +``` + +Use these references for the current menu architecture: + +```text +terminal/menus/mq-hal-menu.sh +ui/terminal-ui/mq-ui.sh +terminal/menus/README.md +terminal/launchers/README.md +``` + +Core rules: + +* Keep direct CLI commands and interactive menu routes consistent. +* Keep user-facing commands discoverable from help, docs, or menus. +* Use the existing `surface_*` terminal UI helpers for new menu panels. +* Keep business logic in tools, bridges, or command handlers; menus should route and present. +* Update docs and smoke tests when command behavior changes. + +Preferred checks, scoped to the files changed: + +```bash +bash -n terminal/launchers/mqlaunch-command-mode.sh +bash -n terminal/launchers/mqlaunch.sh +bash -n terminal/menus/.sh +./tests/hal-command-surface-smoke.sh +./tests/hal-menu-smoke.sh +./tests/hal-menu-layout-smoke.sh +``` + +User request: + +```text +$ARGUMENTS +``` + +After inspecting, do the smallest grounded action that keeps mqlaunch coherent. +Report command/menu surfaces touched, docs updated, checks run, and anything left +unverified. diff --git a/skills/mqlaunch-menu-template/SKILL.md b/skills/mqlaunch-menu-template/SKILL.md new file mode 100644 index 0000000..6dccd11 --- /dev/null +++ b/skills/mqlaunch-menu-template/SKILL.md @@ -0,0 +1,248 @@ +--- +name: mqlaunch-menu-template +description: > + Mall för att bygga mqlaunch-menyer med korrekt box-rendering, tvålinjig prompt + och konsekvent UI-mönster. Använd när Codex, Claude Code eller Claude ska skapa + en ny mqlaunch-meny (t.ex. mq-workflows-menu.sh, mq-system-menu.sh). Triggas av + fraser som "bygg en ny mqlaunch-meny", "lägg till ett menyval", "skapa submeny + för X i mqlaunch", eller "ny menu-modul i macos-scripts". +--- + +# mqlaunch-menu-template + +## Syfte + +Denna skill definierar hur alla mqlaunch-menyer ska vara byggda — +box-layout, UI-funktioner, prompt-format och loopstruktur — så att +Codex och Claude Code kan generera konsekventa, fungerande menyfiler +utan att gissa sig till mönstret. + +--- + +## 1. Kärnkoncept + +### BOX_INNER = 88 + +Alla rader i boxen är exakt 88 tecken breda innanför ramarna. +`row()` fyller ut till exakt den bredden automatiskt. +Ändra **aldrig** BOX_INNER per meny — det är ett globalt konstant i `mqlaunch.sh`. + +### UI-bibliotek + +Varje menyfil **sourcear inte** UI-biblioteket själv. Menyfilen är en modul +som sourceas av `mqlaunch.sh` (som redan har laddat `mq-ui.sh`). Alla +UI-funktioner är alltså tillgängliga utan extra source-anrop. + +Tillgängliga UI-funktioner (definierade i `mq-ui.sh`): + +| Funktion | Effekt | +|---|---| +| `print_header` | Renderar dashboard-banner + tom rad | +| `print_footer` | Renderar underkant på boxen | +| `row "text"` | En rad innanför boxen, vänsterjusterad, paddar till BOX_INNER | +| `row_bold "text"` | Som `row` men med bold/neon-färg | +| `empty_row` | Tom rad innanför boxen (mellanrum) | +| `pause_enter` | Väntar på Enter — "Tryck Enter för att fortsätta" | + +--- + +## 2. Menystruktur — Tvålinjig prompt + +Alla mqlaunch-menyer använder **tvålinjig prompt**: + +``` +┌─────────── Rad 1: Menyval (numrerade) ───────────┐ +│ 1. Alternativ A 2. Alternativ B │ +│ 3. Alternativ C 4. Alternativ D │ +│ │ +│ b. Tillbaka q. Avsluta │ +└───────────────────────────────────────────────────┘ + +Välj [1-4 / b / q]: +> +``` + +Prompten är alltid två rader: +* Rad 1: `"Välj [1-N / b / q]:"` (eller anpassad text) +* Rad 2: `"> "` (inmatningsrad) + +Detta är det enda godkända prompt-formatet för mqlaunch-menyer. + +--- + +## 3. Komplett menytemplate + +```bash +#!/bin/zsh +# mq-NAMN-menu.sh — Kort beskrivning av menyn +# Sourceas av mqlaunch.sh — kräver inte eget source av mq-ui.sh + +# Öppnar NAMN-menyn. +open_NAMN_menu() { + while true; do + print_header + row_bold "NAMN" # Rubrik i versaler + empty_row + row " 1. Första alternativet" + row " 2. Andra alternativet" + row " 3. Tredje alternativet" + empty_row + row " b. Tillbaka" + row " q. Avsluta" + print_footer + + printf '\nVälj [1-3 / b / q]:\n> ' + read -r choice + + case "$choice" in + 1) action_ett ;; + 2) action_tva ;; + 3) action_tre ;; + b|B) return 0 ;; + q|Q) exit 0 ;; + *) + print_header + row "Ogiltigt val: $choice" + print_footer + pause_enter + ;; + esac + done +} + +# Kör första alternativet. +action_ett() { + print_header + row_bold "FÖRSTA ALTERNATIVET" + empty_row + row "Beskrivning av vad som händer här." + print_footer + pause_enter +} + +# Kör andra alternativet. +action_tva() { + print_header + row_bold "ANDRA ALTERNATIVET" + empty_row + row "Beskrivning av vad som händer här." + print_footer + pause_enter +} + +# Kör tredje alternativet. +action_tre() { + print_header + row_bold "TREDJE ALTERNATIVET" + empty_row + row "Beskrivning av vad som händer här." + print_footer + pause_enter +} + +# Entry point — stöder direktanrop: bash mq-NAMN-menu.sh menu +if [[ "${1:-}" == "menu" ]]; then + open_NAMN_menu +fi +``` + +--- + +## 4. Tvåkolumns-layout (valfritt, för många val) + +Använd tvåkolumner när du har 6+ val. Placera valen i jämna kolumner +med fast padding så att kolumn 2 alltid börjar på teckenposition ~46. + +```bash +row " 1. Workflows 2. System" +row " 3. Dev 4. AI" +row " 5. Net 6. Apps" +row " 7. Git 8. Release" +empty_row +row " b. Tillbaka q. Avsluta" +``` + +Regel: Kolumn 1 börjar på position 2, kolumn 2 börjar på position 27 +(justera med blanksteg, aldrig med tab). + +--- + +## 5. Namnkonventioner + +| Vad | Konvention | +|---|---| +| Filnamn | `mq--menu.sh` | +| Entry-funktion | `open__menu()` | +| Action-funktioner | `action_()` eller `_()` | +| Rubrik i `row_bold` | VERSALER, max 40 tecken | +| Kommentar per funktion | `# Beskriver vad funktionen gör.` (punkt i slutet) | + +--- + +## 6. Registrering i mqlaunch.sh + +När en ny meny är skapad, lägg till i `mqlaunch.sh`: + +**Source-block** (i rätt ordning bland övriga menyer): + +```bash +if [[ -f "$BASE_DIR/terminal/menus/mq-NAMN-menu.sh" ]]; then + source "$BASE_DIR/terminal/menus/mq-NAMN-menu.sh" +fi +``` + +**Argument-dispatch** (i `run_arg_command` case-satsen): + +```bash +namn|namn-menu) open_NAMN_menu ;; +``` + +**Menyval i mq-main-menu.sh** (om det ska synas i huvudmenyn): + +```bash +row " N. NAMN" +``` + +Och i case-satsen: + +```bash +N|n) open_NAMN_menu ;; +``` + +--- + +## 7. Vanliga misstag att undvika + +* **Aldrig** `echo` direkt för UI — använd alltid `row()` innanför boxen +* **Aldrig** `read -p "Välj: "` — använd tvålinjig `printf + read` +* **Aldrig** hårdkoda `BOX_INNER` i menyfilen +* **Aldrig** source `mq-ui.sh` i menyfilen (görs av mqlaunch.sh) +* **Alltid** avsluta aktions med `pause_enter` om de visar output +* **Alltid** ha `b. Tillbaka` och `q. Avsluta` i varje meny +* **Alltid** ha ett `*)` wildcard-fall i case-satsen + +--- + +## 8. Exempelmenyer att studera + +Dessa filer i `$BASE_DIR/terminal/menus/` är referensimplementationer: + +* `mq-main-menu.sh` — Huvudmenystruktur, tvåkolumner +* `mq-system-menu.sh` — Enkla aktioner med pause_enter +* `mq-dev-menu.sh` — Git-integration och submenyer +* `mq-workflows-menu.sh` — Workflow-loop med statusvisning + +--- + +## 9. Snabbreferens — generera en meny + +När Codex eller Claude Code ska bygga en ny meny, följ dessa steg: + +1. Kopiera template från avsnitt 3 +2. Ersätt `NAMN` med menyns namn (snake_case) +3. Definiera action-funktioner för varje val +4. Spara som `$BASE_DIR/terminal/menus/mq--menu.sh` +5. Gör filen körbar: `chmod +x mq--menu.sh` +6. Lägg till source-block i `mqlaunch.sh` +7. Registrera argument i `run_arg_command` +8. Lägg till menyval i `mq-main-menu.sh` om relevant From aa0ff9685239bfbc41d9926bfed05c0a93adeb6a Mon Sep 17 00:00:00 2001 From: McAmner Date: Sat, 13 Jun 2026 17:35:41 +0200 Subject: [PATCH 2/4] update project files --- skills/mqlaunch-menu-template/SKILL.md | 132 ++++++++++++++++++------- 1 file changed, 94 insertions(+), 38 deletions(-) diff --git a/skills/mqlaunch-menu-template/SKILL.md b/skills/mqlaunch-menu-template/SKILL.md index 6dccd11..cad9953 100644 --- a/skills/mqlaunch-menu-template/SKILL.md +++ b/skills/mqlaunch-menu-template/SKILL.md @@ -1,7 +1,7 @@ --- name: mqlaunch-menu-template description: > - Mall för att bygga mqlaunch-menyer med korrekt box-rendering, tvålinjig prompt + Mall för att bygga mqlaunch-menyer med korrekt box-rendering, separator-prompt och konsekvent UI-mönster. Använd när Codex, Claude Code eller Claude ska skapa en ny mqlaunch-meny (t.ex. mq-workflows-menu.sh, mq-system-menu.sh). Triggas av fraser som "bygg en ny mqlaunch-meny", "lägg till ett menyval", "skapa submeny @@ -46,27 +46,38 @@ Tillgängliga UI-funktioner (definierade i `mq-ui.sh`): --- -## 2. Menystruktur — Tvålinjig prompt +## 2. Prompt-format — Separator-prompt -Alla mqlaunch-menyer använder **tvålinjig prompt**: +**Detta är det enda godkända prompt-formatet för mqlaunch-menyer.** + +Prompten består av tre delar i sekvens — utanför boxen, efter `print_footer`: ``` -┌─────────── Rad 1: Menyval (numrerade) ───────────┐ -│ 1. Alternativ A 2. Alternativ B │ -│ 3. Alternativ C 4. Alternativ D │ -│ │ -│ b. Tillbaka q. Avsluta │ -└───────────────────────────────────────────────────┘ - -Välj [1-4 / b / q]: -> +──────────────────────────────────────────────────────────────────────────────── + > +──────────────────────────────────────────────────────────────────────────────── +>> option, mqlaunch command, shell command, or x to exit ``` -Prompten är alltid två rader: -* Rad 1: `"Välj [1-N / b / q]:"` (eller anpassad text) -* Rad 2: `"> "` (inmatningsrad) +* Rad 1: horisontell separator (80 `─`-tecken, U+2500) +* Rad 2: ` >` — menyns titel i lowercase följt av ` > ` +* Rad 3: horisontell separator (80 `─`-tecken) +* Rad 4: `>> option, mqlaunch command, shell command, or x to exit` + +Sedan `read -r choice` på samma rad som `>>`-prompten, eller direkt efter. + +### Implementering i zsh + +```bash +# Separator-konstant (definiera en gång i toppen av menyfilen eller i UI-lib) +SEP="────────────────────────────────────────────────────────────────────────────────" + +# I menyloopen, efter print_footer: +printf '\n%s\n%s >\n%s\n>> ' "$SEP" "system" "$SEP" +read -r choice +``` -Detta är det enda godkända prompt-formatet för mqlaunch-menyer. +Byt ut `"system"` mot menyns faktiska namn (lowercase, t.ex. `"workflows"`, `"dev"`, `"net"`). --- @@ -77,21 +88,24 @@ Detta är det enda godkända prompt-formatet för mqlaunch-menyer. # mq-NAMN-menu.sh — Kort beskrivning av menyn # Sourceas av mqlaunch.sh — kräver inte eget source av mq-ui.sh +# Separator — 80 st U+2500 +MQ_NAMN_SEP="────────────────────────────────────────────────────────────────────────────────" + # Öppnar NAMN-menyn. open_NAMN_menu() { while true; do print_header - row_bold "NAMN" # Rubrik i versaler + row_bold "NAMN" empty_row row " 1. Första alternativet" row " 2. Andra alternativet" row " 3. Tredje alternativet" empty_row row " b. Tillbaka" - row " q. Avsluta" + row " x. Avsluta" print_footer - printf '\nVälj [1-3 / b / q]:\n> ' + printf '\n%s\nnamn >\n%s\n>> ' "$MQ_NAMN_SEP" "$MQ_NAMN_SEP" read -r choice case "$choice" in @@ -99,7 +113,8 @@ open_NAMN_menu() { 2) action_tva ;; 3) action_tre ;; b|B) return 0 ;; - q|Q) exit 0 ;; + x|X) exit 0 ;; + "") continue ;; *) print_header row "Ogiltigt val: $choice" @@ -150,8 +165,8 @@ fi ## 4. Tvåkolumns-layout (valfritt, för många val) -Använd tvåkolumner när du har 6+ val. Placera valen i jämna kolumner -med fast padding så att kolumn 2 alltid börjar på teckenposition ~46. +Använd tvåkolumner när du har 6+ val. Placera valen med fast kolumnbredd +så att kolumn 2 alltid börjar på teckenposition ~27. ```bash row " 1. Workflows 2. System" @@ -159,15 +174,53 @@ row " 3. Dev 4. AI" row " 5. Net 6. Apps" row " 7. Git 8. Release" empty_row -row " b. Tillbaka q. Avsluta" +row " b. Tillbaka x. Avsluta" ``` -Regel: Kolumn 1 börjar på position 2, kolumn 2 börjar på position 27 -(justera med blanksteg, aldrig med tab). +Regel: Kolumn 1 börjar på position 2, kolumn 2 börjar på position 27. +Justera med blanksteg — aldrig med tab. + +--- + +## 5. Separator-prompten — fullständig visuell representation + +S� här ser det ut i terminalen efter `print_footer`: + +``` +──────────────────────────────────────────────────────────────────────────────── +system > +──────────────────────────────────────────────────────────────────────────────── +>> option, mqlaunch command, shell command, or x to exit +``` + +Användaren kan skriva: +* Ett nummer (`1`, `2`, `3` …) → menyval +* Ett mqlaunch-kommando direkt (`git`, `dev`, `perf` …) → dispatchar till `run_arg_command` +* Ett shell-kommando → exekveras i subshell +* `x` → avslutar + +### Dispatcha fritt inmatade kommandon + +Om menyn ska stödja fri mqlaunch-dispatch (som huvudmenyn), lägg till +detta i case-satsen: + +```bash +*) + # Försök dispatcha som mqlaunch-kommando + if declare -f run_arg_command >/dev/null 2>&1; then + run_arg_command "$choice" + else + print_header + row "Ogiltigt val: $choice" + print_footer + pause_enter + fi + ;; +``` --- -## 5. Namnkonventioner +## 6. Namnkonventioner | Vad | Konvention | |---|---| @@ -175,15 +228,17 @@ Regel: Kolumn 1 börjar på position 2, kolumn 2 börjar på position 27 | Entry-funktion | `open__menu()` | | Action-funktioner | `action_()` eller `_()` | | Rubrik i `row_bold` | VERSALER, max 40 tecken | +| Promptnamn | lowercase, matchar filnamn utan `mq-` och `-menu.sh` | | Kommentar per funktion | `# Beskriver vad funktionen gör.` (punkt i slutet) | +| Exit-tangent | alltid `x` (inte `q`) — matchar separator-promptens text | --- -## 6. Registrering i mqlaunch.sh +## 7. Registrering i mqlaunch.sh När en ny meny är skapad, lägg till i `mqlaunch.sh`: -**Source-block** (i rätt ordning bland övriga menyer): +**Source-block** (bland övriga menyer, i rätt ordning): ```bash if [[ -f "$BASE_DIR/terminal/menus/mq-NAMN-menu.sh" ]]; then @@ -203,7 +258,7 @@ namn|namn-menu) open_NAMN_menu ;; row " N. NAMN" ``` -Och i case-satsen: +Och i case-satsen för huvudmenyns `read`: ```bash N|n) open_NAMN_menu ;; @@ -211,35 +266,36 @@ N|n) open_NAMN_menu ;; --- -## 7. Vanliga misstag att undvika +## 8. Vanliga misstag att undvika -* **Aldrig** `echo` direkt för UI — använd alltid `row()` innanför boxen -* **Aldrig** `read -p "Välj: "` — använd tvålinjig `printf + read` +* **Aldrig** `read -p "Välj: "` — använd `printf + read` med separator-formatet +* **Aldrig** `q` som exit-tangent — det är `x` i separator-prompten * **Aldrig** hårdkoda `BOX_INNER` i menyfilen * **Aldrig** source `mq-ui.sh` i menyfilen (görs av mqlaunch.sh) -* **Alltid** avsluta aktions med `pause_enter` om de visar output -* **Alltid** ha `b. Tillbaka` och `q. Avsluta` i varje meny +* **Alltid** avsluta aktioner med `pause_enter` om de visar output +* **Alltid** ha `b. Tillbaka` och `x. Avsluta` i varje meny * **Alltid** ha ett `*)` wildcard-fall i case-satsen +* **Alltid** definiera `SEP` lokalt i filen (inte global — den kan skilja sig) --- -## 8. Exempelmenyer att studera +## 9. Exempelmenyer att studera Dessa filer i `$BASE_DIR/terminal/menus/` är referensimplementationer: -* `mq-main-menu.sh` — Huvudmenystruktur, tvåkolumner +* `mq-main-menu.sh` — Huvudmenystruktur, tvåkolumner, separator-prompt * `mq-system-menu.sh` — Enkla aktioner med pause_enter * `mq-dev-menu.sh` — Git-integration och submenyer * `mq-workflows-menu.sh` — Workflow-loop med statusvisning --- -## 9. Snabbreferens — generera en meny +## 10. Snabbreferens — generera en meny När Codex eller Claude Code ska bygga en ny meny, följ dessa steg: 1. Kopiera template från avsnitt 3 -2. Ersätt `NAMN` med menyns namn (snake_case) +2. Ersätt `NAMN`/`namn` med menyns namn (snake_case / lowercase) 3. Definiera action-funktioner för varje val 4. Spara som `$BASE_DIR/terminal/menus/mq--menu.sh` 5. Gör filen körbar: `chmod +x mq--menu.sh` From 1078415a0dba8900f24067c4183ef780c33e7748 Mon Sep 17 00:00:00 2001 From: McAmner Date: Sat, 13 Jun 2026 17:55:21 +0200 Subject: [PATCH 3/4] fix(mqlaunch-template): repair U+FFFD mojibake in section 5 heading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 'Så här' rendered as 'S här' — restore the å so the separator-prompt walkthrough reads correctly. Co-Authored-By: Claude Opus 4.8 --- skills/mqlaunch-menu-template/SKILL.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skills/mqlaunch-menu-template/SKILL.md b/skills/mqlaunch-menu-template/SKILL.md index cad9953..20d0ffa 100644 --- a/skills/mqlaunch-menu-template/SKILL.md +++ b/skills/mqlaunch-menu-template/SKILL.md @@ -184,7 +184,7 @@ Justera med blanksteg — aldrig med tab. ## 5. Separator-prompten — fullständig visuell representation -S� här ser det ut i terminalen efter `print_footer`: +Så här ser det ut i terminalen efter `print_footer`: ``` ──────────────────────────────────────────────────────────────────────────────── @@ -194,6 +194,7 @@ system > ``` Användaren kan skriva: + * Ett nummer (`1`, `2`, `3` …) → menyval * Ett mqlaunch-kommando direkt (`git`, `dev`, `perf` …) → dispatchar till `run_arg_command` * Ett shell-kommando → exekveras i subshell From a292aea2911590854d0ec3c5f72f22f703bc031f Mon Sep 17 00:00:00 2001 From: McAmner Date: Sat, 13 Jun 2026 23:00:21 +0200 Subject: [PATCH 4/4] fix(skills): add Evals section to mqlaunch-menu-template + sync SKILLS.md check-skills.sh Quality gate failed: the template skill lacked the required '## Evals' section and the generated SKILLS.md table was out of sync. Add Evals (should/should-not trigger) and regenerate the table. Co-Authored-By: Claude Opus 4.8 --- SKILLS.md | 1 + skills/mqlaunch-menu-template/SKILL.md | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/SKILLS.md b/SKILLS.md index f5d6385..5d2bdcd 100644 --- a/SKILLS.md +++ b/SKILLS.md @@ -17,6 +17,7 @@ it documents actually live. | ----- | ----------- | | [docs-maintainer](skills/docs-maintainer/SKILL.md) | Use when keeping repository documentation consistent after code, CLI, release, workflow, README, wiki, or GitHub Pages changes. Helps update docs surfaces without inventing behavior. | | [mqlaunch-command-surface](skills/mqlaunch-command-surface/SKILL.md) | Use when changing macos-scripts mqlaunch commands, terminal GUI menus, HAL routing, command aliases, help text, or CLI/TUI command-surface behavior. | +| [mqlaunch-menu-template](skills/mqlaunch-menu-template/SKILL.md) | > | | [release-readiness](skills/release-readiness/SKILL.md) | Use when preparing a macos-scripts release. Validates git state, version sync, changelog, docs, smoke tests, the mqlaunch release-check gate, and the MQ stack contract. | | [repo-health-brief](skills/repo-health-brief/SKILL.md) | Use when asked for a quick health check, daily repo status, or before deciding what to work on next. Runs repo-signal brief and interprets the output. | | [terminal-ui-polisher](skills/terminal-ui-polisher/SKILL.md) | Improve terminal GUI menus, CLI, TUI, ASCII, ANSI, and command-surface interfaces with focus on clarity, hierarchy, keyboard flow, spacing, status feedback, and product-level polish. | diff --git a/skills/mqlaunch-menu-template/SKILL.md b/skills/mqlaunch-menu-template/SKILL.md index 20d0ffa..4d724c6 100644 --- a/skills/mqlaunch-menu-template/SKILL.md +++ b/skills/mqlaunch-menu-template/SKILL.md @@ -303,3 +303,21 @@ När Codex eller Claude Code ska bygga en ny meny, följ dessa steg: 6. Lägg till source-block i `mqlaunch.sh` 7. Registrera argument i `run_arg_command` 8. Lägg till menyval i `mq-main-menu.sh` om relevant + +--- + +## Evals + +### Should trigger + +* "bygg en ny mqlaunch-meny för X" +* "lägg till en submeny i mqlaunch" +* "skapa en ny menu-modul i macos-scripts" +* "den nya menyn renderar boxen fel — följ template-mönstret" + +### Should not trigger + +* "lägg till ett nytt kommando i en befintlig meny" → use `mqlaunch-command-surface` +* "gör doctor-outputen lättare att läsa" → use `terminal-ui-polisher` +* "synka docs/COMMANDS.md efter ändringen" → use `docs-maintainer` +* "är repot redo att släppas?" → use `release-readiness`