Skip to content

RFC: Expose /squad SDLC lifecycle commands in the Copilot app chat #1738

Closed

Description

@bradygaster

Standalone — deliberately not a child of #1729 (review gate). Different axis, no shared work.

Problem

The /squad SDLC lifecycle verbs — cast, research, plan, plan revise, triage, accept, activate, implement — are reachable only by commenting on a GitHub issue, where they are parsed and executed by workflows/squad.md running as a gh-aw agentic workflow.

A user working in the GitHub Copilot app cannot open a repo and type /squad research … in the chat. They must go to GitHub, find or create an issue, and comment. For read-and-reason operations that produce planning artifacts, that round trip is pure friction.

What already exists

A /squad slash command ships as a skill template at packages/squad-cli/templates/skills/squad/SKILL.md with user-invocable: true. Its catalog covers operational commands only:

  • Install & Upgrade, Team Management, Issues & PRs, Plugins & Skills, Model & Cost, Sessions & State

None of the SDLC lifecycle verbs appear in it. So the slash-command surface exists; the lifecycle semantics are simply absent from it.

Side finding: .github/skills/squad/ is not installed in this repository, even though the coordinator instructions direct agents to read .github/skills/squad/SKILL.md when a user asks for squad commands. The template exists but this repo never received it. Worth fixing regardless of the outcome of this issue.

Substrate difference

gh-aw /squad research App chat /squad research
Trigger issue comment chat slash command
Executor Actions runner, pinned copilot engine local agent session
Auth GITHUB_TOKEN + minted tokens the user's own gh login
Effects safe-outputs, capped and bounded direct tool calls
State artifacts uploaded/restored per run live .squad/ on disk
Audit immutable workflow run logs session log

Proposal

The mode table, the longest-prefix-first parser rules, and the artifact schemas in workflows/shared/planning-ontology.md and workflows/shared/planning-policy.md are all substrate-agnostic. What is not portable is the effector layer: safe-output emissions and the typed dispatch to squad-implement-worker.

Extract the shared semantics once; give each substrate its own thin effector.

workflows/shared/planning-ontology.md   ← semantics (already shared)
workflows/shared/planning-policy.md     ← policy (already shared)
workflows/shared/squad-modes.md         ← NEW: mode table + parser rules
        │
        ├── workflows/squad.md          ← effector: safe-outputs
        └── .github/skills/squad-sdlc/  ← effector: local tool calls

gh-aw already supports imports for this, so workflows/squad.md gets thinner rather than duplicated. This matches the earlier decomposition conclusion: keep semantics in one place, split only at the effector/authority boundary.

Value by verb

Verb Local parity value Rationale
cast, research, plan, plan revise, triage High Read-and-reason operations producing artifacts. Instant and iterative in chat; no issue required.
accept, activate Medium These create real GitHub issues. Local execution needs the same guardrails — the fast path has no undo.
implement Low as re-implementation Locally this is just ordinary agent work in a worktree. The gh-aw version's value is bounded authority running unattended.

Better shape for implement: local /squad implement dispatches the existing workflow via gh workflow run and reports back. Start from chat, let CI execute under the file allowlist and protected-file rules. No duplicated implementation authority.

Blocking question — verify before designing

Does the Copilot app pass trailing text through to a matched skill (/squad research auth patterns → skill receives research auth patterns), or is slash matching name-only?

  • If trailing text passes: the local skill can reuse the exact longest-prefix-first parser from workflows/squad.md, and the UX matches the issue-comment surface one-to-one.
  • If name-only: the pattern degrades to /squad → menu → pick a lifecycle operation, which is a materially worse fit for the "just type it" scenario and changes the design.

This should be a short spike before any implementation work.

Acceptance criteria

  • Spike resolves the trailing-text question and records the answer
  • Mode table and parser rules extracted to a shared import consumed by workflows/squad.md
  • workflows/squad.md verified to still compile and stay within prompt budget after extraction
  • Local SDLC skill installed to .github/skills/ and added to CLI templates
  • cast, research, plan, plan revise, triage work locally
  • accept and activate carry the same confirmation guardrails as the workflow path
  • implement dispatches the gh-aw workflow rather than re-implementing it
  • .github/skills/squad/ installed in this repo (side finding above)
  • Docs updated to describe both invocation surfaces and when to use each

Non-goals

Activity

  1. added
    squadSquad triage inbox — Lead will assign to a member
    on Aug 17, 2026
  2. bradygaster commented on Aug 20, 2026

    @bradygaster
    CollaboratorAuthor

    Closing — premature: �ctivate stage never exercised.

    Flight's verdict from the 2026-08-20 triage: this RFC proposes exposing /squad SDLC lifecycle commands in the Copilot app chat surface. That work depends on the core SDLC path being proven reliable end-to-end first. The \�ctivate\ stage has never been successfully exercised in a real run — it exists in the workflow source but carries no E2E evidence. Specifying a second invocation surface for a stage we cannot yet describe behaviorally would produce a spec for an unobserved system.

    When to refile: After the 2026-08-21 E2E series produces observed behavior for each lifecycle stage. If \�ctivate\ is tagged WORKING with a run ID as evidence, refile with that run as the anchor.

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

    gh-awGitHub Agentic Workflows integrationpriority:p2Next sprintsquadSquad triage inbox — Lead will assign to a membertriagedIssue has been triagedtype:rfcRFCwave:3-laterWave 3 — backlog, future

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions