Skip to content

feat: \squad init --sdk\ flag for SDK-First mode opt-in #249

Closed

Description

@bradygaster

Summary

\squad init\ currently hardcodes \configFormat: 'typescript'\ and generates the old \SquadConfig\ format. Users who want the new SDK-First builder syntax (\defineSquad(), \defineAgent(), etc.) have no way to opt in during initialization.

Proposed Behavior

\\�ash
squad init # default: markdown-only (current behavior)
squad init --sdk # opt-in: generates squad.config.ts with defineSquad() builders
\\

When --sdk\ is passed:

  • Generate \squad.config.ts\ using the new builder syntax from @bradygaster/squad-sdk/builders\
  • Import \defineSquad, \defineTeam, \defineAgent, \defineRouting, \defineCasting\
  • Still generate .squad/\ markdown files (runtime format), but also the TS source of truth
  • Include a \squad build\ step in the init output so users know how to regenerate

Files to Change

  • \packages/squad-cli/src/cli/core/init.ts\ — add --sdk\ flag, branch config generation
  • \packages/squad-cli/src/cli/cli-entry.ts\ — wire the flag
  • \packages/squad-sdk/src/builders/\ — may need a scaffolding helper

Context

  • SDK builders are fully implemented (\defineSquad, etc.)
  • \squad build\ already compiles TS → markdown
  • \docs/sdk-first-mode.md\ (705 lines) documents the feature
  • This is the missing init-time entry point

Acceptance Criteria

  • \squad init --sdk\ generates \squad.config.ts\ with \defineSquad()\ syntax
  • Generated config imports from @bradygaster/squad-sdk\
  • \squad build\ on the generated config produces identical .squad/\ output
  • Documentation updated with SDK init path
  • Tests cover both \squad init\ (default) and \squad init --sdk\ paths

Deferred from v0.8.21 to avoid release risk. Related: #231 (migrate command).

Activity

  1. github-actions commented on Mar 7, 2026

    @github-actions
    Contributor

    📋 Assigned to Fenster (Core Dev)

    Issue: #249 — feat: \squad init --sdk\ flag for SDK-First mode opt-in

    Fenster will pick this up in the next Copilot session.

    For Copilot coding agent: If enabled, this issue will be worked automatically.
    Otherwise, start a Copilot session and say:
    Fenster, work on issue #249

  2. github-actions commented on Mar 7, 2026

    @github-actions
    Contributor

    🏗️ Squad Triage — Keaton (Lead)

    Issue: #249 — feat: \squad init --sdk\ flag for SDK-First mode opt-in
    Assigned to: Hockney (Tester)
    Reason: Issue relates to testing/quality work

    @copilot evaluation: No strong capability match — routed to squad member.

    Team roster:

    • Keaton (Lead) → label: squad:keaton
    • Verbal (Prompt Engineer) → label: squad:verbal
    • Fenster (Core Dev) → label: squad:fenster
    • Hockney (Tester) → label: squad:hockney
    • McManus (DevRel) → label: squad:mcmanus
    • Kujan (SDK Expert) → label: squad:kujan
    • Edie (TypeScript Engineer) → label: squad:edie
    • Kobayashi (Git & Release) → label: squad:kobayashi
    • Fortier (Node.js Runtime) → label: squad:fortier
    • Rabin (Distribution) → label: squad:rabin
    • Baer (Security) → label: squad:baer
    • Redfoot (Graphic Designer) → label: squad:redfoot
    • Strausz (VS Code Extension) → label: squad:strausz
    • Saul (Aspire & Observability) → label: squad:saul
    • Kovash (REPL & Interactive Shell) → label: squad:kovash
    • Marquez (CLI UX Designer) → label: squad:marquez
    • Cheritto (TUI Engineer) → label: squad:cheritto
    • Breedan (E2E Test Engineer) → label: squad:breedan
    • Nate (Accessibility Reviewer) → label: squad:nate
    • Waingro (Product Dogfooder) → label: squad:waingro
    • Ralph (Work Monitor) → label: squad:ralph
    • @copilot (Coding Agent) → label: squad:copilot

    To reassign, remove the current squad:* label and add the correct one.

  3. bradygaster commented on Mar 7, 2026

    @bradygaster
    CollaboratorAuthor

    ✅ Implemented in commit 412ce58 on dev.

    What shipped:

    • \squad init\ defaults to markdown-only (no config file)
    • \squad init --sdk\ generates \squad.config.ts\ with \defineSquad()\ builder syntax
    • ConfigFormat now supports 'sdk'\ and 'markdown'\ in addition to legacy 'typescript'\ and 'json'\
    • Help text updated with --sdk\ flag documentation

    Files changed:

    • \packages/squad-cli/src/cli-entry.ts\ — --sdk\ flag parsing
    • \packages/squad-cli/src/cli/core/init.ts\ — sdk option passthrough
    • \packages/squad-sdk/src/config/init.ts\ — \generateSDKBuilderConfig()\ + format routing

    Tests: 7 new tests in \ est/init-sdk.test.ts\ covering both paths. All 3768 tests passing.

    — Fenster 🔧

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or improvementgo:needs-researchNeeds investigationrelease:v0.8.22Release v0.8.22squadSquad triage inbox — Lead will assign to a member

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions