ha-inlite

Home Assistant integration for in-lite
git clone https://git.stephank.nl/ha-inlite
Log | Files | Refs | README | LICENSE | ZIP

SKILL.md (1863B)


      1 # Skill: CLI Command Wiring
      2 
      3 **Bug class:** Commands implemented in `packages/squad-cli/src/cli/commands/` but never routed in `cli-entry.ts`.
      4 
      5 ## Checklist — Adding a New CLI Command
      6 
      7 1. **Create command file** in `packages/squad-cli/src/cli/commands/<name>.ts`
      8    - Export a `run<Name>(cwd, options)` async function (or class with static methods for utility modules)
      9 
     10 2. **Add routing block** in `packages/squad-cli/src/cli-entry.ts` inside `main()`:
     11    ```ts
     12    if (cmd === '<name>') {
     13      const { run<Name> } = await import('./cli/commands/<name>.js');
     14      // parse args, call function
     15      await run<Name>(process.cwd(), options);
     16      return;
     17    }
     18    ```
     19 
     20 3. **Add help text** in the help section of `cli-entry.ts` (search for `Commands:`):
     21    ```ts
     22    console.log(`  ${BOLD}<name>${RESET}     <description>`);
     23    console.log(`             Usage: <name> [flags]`);
     24    ```
     25 
     26 4. **Verify both exist** — the recurring bug is doing step 1 but missing steps 2-3.
     27 
     28 ## Wiring Patterns by Command Type
     29 
     30 | Type | Example | How to wire |
     31 |------|---------|-------------|
     32 | Standard command | `export.ts`, `build.ts` | `run*()` function, parse flags from `args` |
     33 | Placeholder command | `loop`, `hire` | Inline in cli-entry.ts, prints pending message |
     34 | Utility/check module | `rc-tunnel.ts`, `copilot-bridge.ts` | Wire as diagnostic check (e.g., `isDevtunnelAvailable()`) |
     35 | Subcommand of another | `init-remote.ts` | Already used inside parent + standalone alias |
     36 
     37 ## Common Import Pattern
     38 
     39 ```ts
     40 import { BOLD, RESET, DIM, RED, GREEN, YELLOW } from './cli/core/output.js';
     41 ```
     42 
     43 Use dynamic `await import()` for command modules to keep startup fast (lazy loading).
     44 
     45 ## History
     46 
     47 - **#237 / PR #244:** 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, hire were already present.