From 8033e76a5c07908725b6b6690f7496132d870345 Mon Sep 17 00:00:00 2001 From: Brady Gaster <41929050+bradygaster@users.noreply.github.com> Date: Fri, 7 Aug 2026 19:19:15 +0000 Subject: [PATCH 1/2] feat(gh-aw): use parent issue as casting brief for /squad cast Adds a Brief Resolution step (Step 0) before repo analysis that evaluates both the parent issue content and repository state to determine the primary casting input. Implements a priority cascade: empty+empty=noop, issue-only=issue wins, both=merge, repo-only=repo wins, explicit SOT signal=issue overrides. Closes #1634 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- workflows/squad.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/workflows/squad.md b/workflows/squad.md index 7bf8d9439..51c3032f7 100644 --- a/workflows/squad.md +++ b/workflows/squad.md @@ -110,6 +110,35 @@ Cast mode analyzes the target repository, composes a specialist team, assigns character names from a fictional universe, generates full `.squad/` scaffolding, and opens a PR introducing the new team. +##### Step 0: Brief Resolution + +Before analyzing the repo, determine the **primary casting input** by evaluating +two signals: the parent issue body (`github.event.issue.body`) and the repository +content (README, file structure, etc.). + +**Priority cascade:** + +| Repo Signal | Issue Signal | Result | +|-------------|-------------|--------| +| Empty/bare | Empty/no body | **Noop** — post a comment (see below), stop | +| Empty/bare | Has content | **Issue wins** — cast from the issue description | +| Has content | Has content | **Merge** — repo is base context, issue augments or overrides | +| Has content | Empty/minimal | **Repo wins** — standard cast behavior | +| Any | Explicit SOT signal | **Issue is SOT** — user intent overrides, repo validates only | + +"Explicit SOT signal" means the issue body reads like a team spec — explicit role +lists, team-size declarations, operating-model descriptions, or language that +signals "this is what I want." Infer this from structure and detail level. + +**Noop handling:** When both inputs are empty, use the `add-comment` safe-output +to post: "Nothing to cast from — the repo has no substantive content and the +issue has no casting brief. Add a README describing your project, or write your +desired team composition in this issue body, then re-run `/squad cast`." Then +stop — do not proceed to Step 1 or open a PR. + +Carry the cascade result forward: it determines whether Step 1's repo analysis +is the primary input, an augmenting signal, or a validation-only pass. + ##### Step 1: Repo Analysis Analyze the repository to understand what kind of team it needs: From 87804b1085167150a67b84d719aa3d3c832534d3 Mon Sep 17 00:00:00 2001 From: Brady Gaster <41929050+bradygaster@users.noreply.github.com> Date: Fri, 7 Aug 2026 19:45:28 +0000 Subject: [PATCH 2/2] =?UTF-8?q?fix(gh-aw):=20address=20Copilot=20review=20?= =?UTF-8?q?=E2=80=94=20include=20issue=20title=20in=20brief,=20expand=20SO?= =?UTF-8?q?T=20acronym?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- workflows/squad.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/workflows/squad.md b/workflows/squad.md index 51c3032f7..b73a0a946 100644 --- a/workflows/squad.md +++ b/workflows/squad.md @@ -113,8 +113,10 @@ and opens a PR introducing the new team. ##### Step 0: Brief Resolution Before analyzing the repo, determine the **primary casting input** by evaluating -two signals: the parent issue body (`github.event.issue.body`) and the repository -content (README, file structure, etc.). +two signals: the parent issue title and body (`github.event.issue.title` + +`github.event.issue.body`) and the repository content (README, file structure, +etc.). Both title and body contribute to the casting brief — a non-empty title +with an empty body is still a valid issue signal. **Priority cascade:** @@ -124,9 +126,9 @@ content (README, file structure, etc.). | Empty/bare | Has content | **Issue wins** — cast from the issue description | | Has content | Has content | **Merge** — repo is base context, issue augments or overrides | | Has content | Empty/minimal | **Repo wins** — standard cast behavior | -| Any | Explicit SOT signal | **Issue is SOT** — user intent overrides, repo validates only | +| Any | Explicit source-of-truth signal | **Issue is source of truth** — user intent overrides, repo validates only | -"Explicit SOT signal" means the issue body reads like a team spec — explicit role +"Explicit source-of-truth signal" means the issue body reads like a team spec — explicit role lists, team-size declarations, operating-model descriptions, or language that signals "this is what I want." Infer this from structure and detail level.