CtrlK
BlogDocsLog inGet started
Tessl Logo

cli-wiring

Checklist and patterns for wiring new CLI commands into cli-entry.ts

65

Quality

78%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./.copilot/skills/cli-wiring/SKILL.md
SKILL.md
Quality
Evals
Security

Skill: CLI Command Wiring

Bug class: Commands implemented in packages/squad-cli/src/cli/commands/ but never routed in cli-entry.ts.

Checklist — Adding a New CLI Command

  1. Create command file in packages/squad-cli/src/cli/commands/<name>.ts

    • Export a run<Name>(cwd, options) async function (or class with static methods for utility modules)
  2. Add routing block in packages/squad-cli/src/cli-entry.ts inside main():

    if (cmd === '<name>') {
      const { run<Name> } = await import('./cli/commands/<name>.js');
      // parse args, call function
      await run<Name>(process.cwd(), options);
      return;
    }
  3. Add help text in the help section of cli-entry.ts (search for Commands:):

    console.log(`  ${BOLD}<name>${RESET}     <description>`);
    console.log(`             Usage: <name> [flags]`);
  4. Verify both exist — the recurring bug is doing step 1 but missing steps 2-3.

Wiring Patterns by Command Type

TypeExampleHow to wire
Standard commandexport.ts, build.tsrun*() function, parse flags from args
Placeholder commandloop, cast (alias: hire)Inline in cli-entry.ts, prints pending message
Utility/check modulerc-tunnel.ts, copilot-bridge.tsWire as diagnostic check (e.g., isDevtunnelAvailable())
Subcommand of anotherinit-remote.tsAlready used inside parent + standalone alias

Common Import Pattern

import { BOLD, RESET, DIM, RED, GREEN, YELLOW } from './cli/core/output.js';

Use dynamic await import() for command modules to keep startup fast (lazy loading).

History

  • #237 / PR #244: 4 commands wired (rc, copilot-bridge, init-remote, rc-tunnel). aspire, link, loop, cast (née hire) were already present.
Repository
bradygaster/squad
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.