PR Babysitter
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
Enlist a repository into Squad by installing the supported GitHub Agentic Workflows (gh-aw) bootstrap — with strict compilation, an explicit safe-update allowlist, and a human-reviewed bootstrap PR.
$ npx skills add bradygaster/squad --skill gh-aw-enlistment -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bradygaster/squad gh-aw-enlistment --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/bradygaster/squad.git skills-src && mkdir -p .claude/skills && cp -r skills-src/workflows/skills/gh-aw-enlistment .claude/skills/gh-aw-enlistment && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "gh-aw-enlistment" agent skill from https://github.com/bradygaster/squad/tree/dev/workflows/skills/gh-aw-enlistment into .claude/skills/gh-aw-enlistment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gh-aw-enlistment", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/bradygaster/squad/tree/dev/workflows/skills/gh-aw-enlistmentType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add bradygaster/squad --skill gh-aw-enlistment -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bradygaster/squad gh-aw-enlistment --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bradygaster/squad.git skills-src && mkdir -p .agents/skills && cp -r skills-src/workflows/skills/gh-aw-enlistment .agents/skills/gh-aw-enlistment && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "gh-aw-enlistment" agent skill from https://github.com/bradygaster/squad/tree/dev/workflows/skills/gh-aw-enlistment into .agents/skills/gh-aw-enlistment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gh-aw-enlistment", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bradygaster/squad --skill gh-aw-enlistment -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bradygaster/squad gh-aw-enlistment --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bradygaster/squad.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/workflows/skills/gh-aw-enlistment .cursor/skills/gh-aw-enlistment && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "gh-aw-enlistment" agent skill from https://github.com/bradygaster/squad/tree/dev/workflows/skills/gh-aw-enlistment into .cursor/skills/gh-aw-enlistment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gh-aw-enlistment", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/bradygaster/squad.git --path workflows/skills/gh-aw-enlistment--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add bradygaster/squad --skill gh-aw-enlistment -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bradygaster/squad gh-aw-enlistment --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bradygaster/squad.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/workflows/skills/gh-aw-enlistment .gemini/skills/gh-aw-enlistment && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "gh-aw-enlistment" agent skill from https://github.com/bradygaster/squad/tree/dev/workflows/skills/gh-aw-enlistment into .gemini/skills/gh-aw-enlistment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gh-aw-enlistment", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install bradygaster/squad gh-aw-enlistmentInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add bradygaster/squad --skill gh-aw-enlistment -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/bradygaster/squad.git skills-src && mkdir -p .github/skills && cp -r skills-src/workflows/skills/gh-aw-enlistment .github/skills/gh-aw-enlistment && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "gh-aw-enlistment" agent skill from https://github.com/bradygaster/squad/tree/dev/workflows/skills/gh-aw-enlistment into .github/skills/gh-aw-enlistment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gh-aw-enlistment", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bradygaster/squad --skill gh-aw-enlistment -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bradygaster/squad gh-aw-enlistment --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bradygaster/squad.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/workflows/skills/gh-aw-enlistment .opencode/skills/gh-aw-enlistment && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "gh-aw-enlistment" agent skill from https://github.com/bradygaster/squad/tree/dev/workflows/skills/gh-aw-enlistment into .opencode/skills/gh-aw-enlistment/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "gh-aw-enlistment", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
gh-aw-enlistmentEnlist a repository into Squad by installing the supported GitHub Agentic Workflows (gh-aw) bootstrap — with strict compilation, an explicit safe-update allowlist, and a human-reviewed bootstrap PR.
Gh Aw Enlistment is an agent skill from bradygaster/squad. Enlist a repository into Squad by installing the supported GitHub Agentic Workflows (gh-aw) bootstrap — with strict compilation, an explicit safe-update allowlist, and a human-reviewed bootstrap PR. Never auto-merges.
Its SKILL.md is about 7.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with GitHub. The repository describes itself as: Squad: AI agent teams for any project. The licence is MIT.
11 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e0c84dd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
ghgitnodeFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
bradygaster.github.ioFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
GITHUB_TOKENSQUAD_GITHUB_TOKENSQUAD_GITHUB_APP_PRIVATE_KEYACME_DEPLOY_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Gh Aw Enlistment loads about 7.5k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 2,585 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from bradygaster/squad at commit e0c84dd, republished under its MIT licence (© bradygaster). 2,585 words, ~7,454 tokens.
.claude/skills/gh-aw-enlistment/SKILL.md (or your agent's skills folder).Use this skill when a user wants to enlist a repository into Squad through
GitHub Agentic Workflows (gh aw) — e.g. "set up Squad agentic workflows",
"enlist this repo in Squad", or "install Squad gh-aw workflows". The end state is
the /squad slash command being live on the repo, delivered as a human-reviewed
bootstrap pull request — never an auto-merge.
This skill operationalizes the supported bootstrap path. It does not summarize
it: each step below is a gate with explicit success evidence and STOP conditions.
The authoritative source is docs/src/content/docs/guide/gh-aw.md (mirrored at
https://bradygaster.github.io/squad/docs/guide/gh-aw/). If that guide and this
skill ever disagree, the guide wins — re-read it before proceeding.
GitHub Issues are a hard prerequisite: /squad commands arrive as issue
comments, and the merged bootstrap creates a research/proposals issue. Detect
and enable Issues before creating the bootstrap branch or installing workflows,
so the install cannot produce a PR whose post-merge bootstrap is unable to
complete.
Portability contract: resolve every target repository identifier (owner, repo,
default branch) at runtime. Never hardcode a placeholder like {owner}/{repo}.
Resolve the supported Squad channel once to a 40-character commit SHA, then use
that one immutable revision for the complete package.
Idempotency contract: the bootstrap is re-runnable. Never clobber existing workflows, prefer detecting prior state over duplicating it, and stop clearly on any unsafe or ambiguous condition rather than guessing.
Run these steps in order. Treat every "STOP" as a hard halt: report the exact condition and wait for a human decision — do not work around it.
# gh is authenticated
gh auth status
# Prove the exact package-capable compiler version before creating artifacts
# gh-aw-exact-version-start
required_gh_aw_version="v0.91.5"
gh_aw_version_output="$(gh aw --version 2>&1)" || gh_aw_version_output=""
gh_aw_version="$(printf '%s\n' "${gh_aw_version_output}" | awk 'END {print $NF}')"
if [ "${gh_aw_version}" != "${required_gh_aw_version}" ]; then
echo "Installing exact supported gh-aw ${required_gh_aw_version}."
gh extension remove gh-aw >/dev/null 2>&1 || true
gh extension install --pin "${required_gh_aw_version}" github/gh-aw
gh_aw_version_output="$(gh aw --version 2>&1)" || {
echo "STOP: gh-aw version could not be verified after clean installation." >&2
exit 1
}
gh_aw_version="$(printf '%s\n' "${gh_aw_version_output}" | awk 'END {print $NF}')"
fi
test "${gh_aw_version}" = "${required_gh_aw_version}" || {
echo "STOP: required gh-aw v0.91.5, but found ${gh_aw_version:-unavailable} after clean installation." >&2
exit 1
}
# gh-aw-exact-version-end
# Capture repository identity and default branch AT RUNTIME
owner_repo="$(gh repo view --json nameWithOwner --jq '.nameWithOwner')"
default_branch="$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')"
echo "Repo: ${owner_repo} Default branch: ${default_branch}"
# Git state must be understood and clean enough to isolate the install
git status --shortPortability — compiler check: use the equivalent PowerShell commands to capture both output streams from
gh aw --version. On any mismatch, removegithub/gh-aw, cleanly install the exactv0.91.5pin, and verify both streams again. Stop before branch creation or file generation unless that second check proves exactlyv0.91.5; never select a newer release.
gh auth status is not logged in, or is logged in as the wrong
identity for this repo (see the gh-auth-isolation skill to operate as a
specific account without switching the global default).owner_repo or default_branch cannot be resolved.v0.91.5 cannot be proven after the clean pinned
reinstall. Do not create a branch or generate repository files.@copilot review both depend on it.Check the REST API's has_issues field first. If Issues are disabled, enable
them before touching the install:
issues_enabled="$(gh api "repos/${owner_repo}" --jq '.has_issues')"
if [ "${issues_enabled}" != "true" ]; then
echo "GitHub Issues are disabled; enabling them before workflow installation."
if ! gh api --method PATCH "repos/${owner_repo}" \
-F has_issues=true --silent; then
echo "STOP: GitHub Issues are disabled and could not be enabled." >&2
echo "A repository administrator must enable Settings > General > Features > Issues, then rerun enlistment." >&2
exit 1
fi
fi
test "$(gh api "repos/${owner_repo}" --jq '.has_issues')" = "true" || {
echo "STOP: GitHub Issues must be enabled before installing Squad workflows." >&2
exit 1
}Reading .has_issues is non-mutating. Updating it through
PATCH /repos/{owner}/{repo} requires repository administration permission.
If the PATCH fails, STOP before branch creation or gh aw add and ask an
administrator to enable Settings → General → Features → Issues. Do not
continue with a bootstrap PR that cannot complete after merge.
Squad also opens PRs through GitHub Actions. Enable that without widening the default workflow token:
gh api --method PUT "repos/${owner_repo}/actions/permissions/workflow" \
-f default_workflow_permissions=read \
-F can_approve_pull_request_reviews=falsecan_approve_pull_request_reviews is a single, combined GitHub toggle: it
does not just govern whether GITHUB_TOKEN can submit an approving review
— the same switch also gates whether GITHUB_TOKEN is permitted to create
pull requests at all (GitHub returns the literal error "GitHub Actions is not
permitted to create or approve pull requests" for both operations; they
cannot be separated via job-level permissions: alone). GitHub's own API
reference calls enabling it a security risk, so Squad keeps it false for
least privilege and never relies on GITHUB_TOKEN to self-approve.
With it false, the bootstrap job's own github.rest.pulls.create call will
fail with that exact error. Squad's bootstrap workflow catches only that
specific error and falls back automatically: it still pushes the
squad/bootstrap-cast branch (the Cast PR's own branch — distinct from the
chore/squad-gh-aw-bootstrap branch you create by hand in step 2 below),
then opens (or, on a rerun, reuses) a tracking issue containing a
ready-to-click GitHub compare URL
(.../compare/<base>...squad/bootstrap-cast?expand=1&title=...) so a
human can open the PR manually in one click. Any other pull-request creation
error (for example, a PR that already exists) still fails the job normally —
only this one documented, exact permission error is treated as expected.
Every bootstrap and Cast PR, whichever way it is opened, still requires an
independent human (or @copilot) approving review before merge. Keep
default_workflow_permissions=read; do not set it to write.
git switch -c chore/squad-gh-aw-bootstrap.github/workflows/*.md or *.lock.yml that is
not part of the Squad set. gh aw add is additive; if you see it about to
replace an unrelated workflow, STOP.SQUAD_SHA must be supplied by the caller before this step — a specific,
already-reviewed 40-character commit SHA. Never derive it by resolving the
dev branch's current tip: dev is a continuously moving integration branch,
so resolving it at install time installs whatever happens to be on it at that
exact moment, with no maintainer vetting of that specific revision. Obtain the
current supported revision from the Squad maintainers or the project's
published release guidance, then set it once:
# SQUAD_SHA="<40-character commit SHA supplied by the maintainers>"
: "${SQUAD_SHA:?STOP: set SQUAD_SHA to an explicit, maintainer-approved 40-character Squad commit SHA before installing.}"
[[ "${SQUAD_SHA}" =~ ^[0-9a-f]{40}$ ]] || {
echo "STOP: SQUAD_SHA must be the exact 40-character commit SHA, not a branch name or shortened hash." >&2
exit 1
}
gh aw add "bradygaster/squad/workflows@${SQUAD_SHA}"
rm -f .github/skills/agentic-workflows/SKILL.mdThe nested workflows/aw.yml is the only supported distribution registration.
It isolates package auto-discovery from unrelated repository skills and agents,
and installs exactly eight workflows, seventeen runtime resources, and one
gh-aw-enlistment skill at the same resolved revision:
squad.md + squad.lock.ymlsquad-implement-worker.md + squad-implement-worker.lock.ymlsquad-review.md + squad-review.lock.ymlsquad-deps-worker.md + squad-deps-worker.lock.ymlsquad-retro.md + squad-retro.lock.ymlsquad-improvement-worker.md + squad-improvement-worker.lock.ymlsquad-bootstrap.md + squad-bootstrap.lock.ymlsquad-command-router.md + squad-command-router.lock.ymlsquad-improvement-worker is part of the standard, coherent install above —
not a separate opt-in add-on. It stays dormant until a maintainer approves a
governance-scoped retrospective proposal (see the gh-aw guide's retrospective
auto-implementation section); installing it alongside the other seven keeps the
full stack consistent and avoids a second bootstrap pass later.
gh-aw v0.91.5 also materializes
.github/skills/agentic-workflows/SKILL.md. That generic tool-owned router is
not part of the Squad package and directs agents to mutable prompts from the
current github/gh-aw repository rather than the pinned Squad revision. Remove
that exact file after every gh aw add. Keep
.github/skills/gh-aw-enlistment/SKILL.md: it is the one Squad-owned skill and
the verifier requires its exact package bytes. Do not adopt or vendor the rest
of gh-aw's generic scaffold.
Report/proposal-only is the default. Ordinary fixes require the explicit
"squadRetroAutoImplement": "allow" setting in .squad/config.json;
five action issues and three dispatches per wake-up remain separate caps.
An improvement requires /squad approve-improvement, Approved-Revision:
and exact Approved-Path: lines from a human with write/maintain/admin access.
The dispatcher sends nested issue and approval-comment IDs to the worker;
manual retries use those same IDs. /squad revoke-improvement is reserved
without dispatch and is rechecked before outputs. Draft PRs and human merge
remain mandatory; closed-unmerged PRs never cause automatic replacements.
See the guide for content-hash calculation and the one-retry recovery policy.
SQUAD_SHA is supplied explicitly by the caller, never resolved from dev's
moving tip; the install itself only ever installs that one immutable,
already-approved revision.
On a clean repo, gh aw add reports these expected safe updates and nothing else:
<!-- allowlist-start -->
SQUAD_GITHUB_APP_PRIVATE_KEY and SQUAD_GITHUB_TOKENbradygaster/squad/.github/actions/squad-init<!-- allowlist-end -->
These are referenced names, not prerequisites.
gh aw addlists the secrets the workflows reference so you can approve that surface — it is not asking you to supply them. Both secrets are optional, they need not exist, and neither is required to enlist a repository. Single-repo activation runs on the built-ingithub.token. Configure them only for cross-repo access or elevated permissions. Auth precedence: GitHub App token, then the PAT, thengithub.token. Never block an enlistment waiting for a credential.
If — and only if — the report contains exactly those documented entries, complete the one-time approval:
gh aw compile --strict --approve # first install only, when the safe-update warning appears--approve step is only the first-install unblock. It is not a
substitute for the final strict compile in the next step.--approvenode .github/workflows/shared/squad-install-verifier.mjs --materialize-runtime
gh aw compile --strict
node .github/workflows/shared/squad-install-verifier.mjs \
--verify-install \
--source-revision "${SQUAD_SHA}" \
--strict-compileThis must run after any first-install approval and before committing. Success criteria:
<!-- compile-warning-allowlist-start -->
.github/workflows/squad-review.md: warning: pull_request_target is a very dangerous trigger.
.github/workflows/squad.md: warning: Both slash_command and bots triggers are configured. If a bot listed in bots: posts a comment that starts with the slash command text (e.g., /command-name), it will trigger the workflow and occupy the concurrency slot, potentially blocking simultaneous manual invocations. To ensure the workflow only runs on explicit user commands, remove the 'bots:' field.<!-- compile-warning-allowlist-end -->
The native review advisory includes the compiler's standard explanation and
Security Lab link. The following guard-policy dry-run lines are informational,
not another warning. The bot-trigger warning is expected because
github-actions[bot] enables controlled worker-continuation dispatches.
Accept the native review advisory only while all existing controls remain:
same-repository head restriction, base-controlled workflow source,
checkout: false agent path, API-only inspection, exact run/head/attempt guard,
least-privilege jobs, advisory verdict, and independent human approval.
pull_request_target is not generally safe; this narrow exception neither
weakens those controls nor authorizes PR-head execution.
STOP on any error, or on any additional warning beyond these two exact
documented diagnostics. Also STOP if either warning is missing, duplicated,
changed, or attributed to another path, if the summary is not
Compiled 8 workflows: 8 succeeded, 2 warnings, or if any required control is
absent. Do not suppress warnings or use --approve to bypass this gate.
Downloaded workflow audit data is local diagnostic output — do not commit it.
If .github/aw/logs/ lacks a .gitignore, add one there:
# Ignore all downloaded workflow logs
*
# But keep this file
!.gitignoregh aw add may also create .vscode/settings.json (enables Copilot for Markdown
workflow files). This is an optional editor setting — the stage command below
intentionally leaves it untracked. Delete it if unwanted, or stage it explicitly
if your team wants to share it. Decide deliberately; do not stage it by accident.
Stage only the documented generated surfaces, then verify the staged set:
git add -- .gitattributes .github/aw/ .github/workflows/ .github/skills/
node .github/workflows/shared/squad-install-verifier.mjs \
--verify-staged-install --stage-ownership --source-revision "${SQUAD_SHA}" || exit 1
git diff --cached --stat
unexpected_deletions="$(
git diff --cached --diff-filter=D --name-only |
grep -vxF '.github/skills/agentic-workflows/SKILL.md' || true
)"
test -z "${unexpected_deletions}" || {
printf 'STOP: unexpected staged deletions:\n%s\n' "${unexpected_deletions}" >&2
exit 1
}.github/skills/agentic-workflows/SKILL.md, when upgrading a repository that
previously committed gh-aw's mutable router.git add -- <path> — never git add ., git add -A, or git commit -a.Consumer rules such as packages/ can silently ignore the required ownership
JSON under .github/aw/packages/. The staged verifier force-adds only the exact
native package ownership JSON when it is ignored and untracked. It then verifies
every manifest-required source, lock, runtime, skill, manifest and ownership
file against the validated working-tree bytes in a snapshot of the Git index.
STOP before commit/push on missing metadata, a staging failure, an omitted
required file or a staged digest mismatch. Never force-add a directory or glob.
Rerun this gate after changing or restaging any installation file.
git commit -m "ci: add Squad agentic workflow"
git push -u origin HEAD
gh pr create \
--base "${default_branch}" \
--title "ci: add Squad agentic workflow" \
--body "Installs and strictly compiles the supported Squad GH-AW workflows."
# Copilot's review identity is a GraphQL Bot, not a User/Team — the REST
# `gh pr edit --add-reviewer @copilot` path silently no-ops for it. Request the
# review through the verified GraphQL path instead:
pr_node_id="$(gh pr view --json id --jq '.id')"
gh api graphql -f query='
mutation($pr: ID!) {
requestReviewsByLogin(input: { pullRequestId: $pr, botLogins: ["copilot-pull-request-reviewer"] }) {
pullRequest { number }
}
}' -f pr="${pr_node_id}" || echo "Could not request a Copilot review via GraphQL; open the PR in the GitHub UI and add Copilot as a reviewer manually (Reviewers -> Copilot)." >&2
gh pr checks --watch${default_branch}, not a hardcoded
main.requestReviewsByLogin mutation
(never the REST --add-reviewer shortcut, which silently no-ops for the
Copilot Bot reviewer), address feedback, and wait for required checks. If
the GraphQL call fails, add Copilot as a reviewer manually from the PR's
GitHub UI.The installation PR remains an explicit human trust boundary. After a human
merges it, inspect the Cast PR — automatically opened, or manually opened by a
human from the bootstrap fallback issue's compare-URL link when
GITHUB_TOKEN cannot create it directly — and require the native
Squad Review / review job from the base-controlled pull_request_target
workflow to succeed. Verify the exact workflow path, immutable base/workflow
SHA, PR base/head, run ID and attempt, successful review job, and exact-head
GitHub Actions check-run binding.
This review path uses only the native GitHub Actions/gh-aw runtime identity.
Never request or provision a reviewer PAT, GitHub App, private key, secret,
environment, hosted attestor, callback, or external service. The optional
SQUAD_GITHUB_APP_* and SQUAD_GITHUB_TOKEN activation credentials remain
unrelated to reviewer authority.
For authoritative merge enforcement, use a source-bound required-workflow or
equivalent ruleset when available. A context-only requirement for
Squad Review / review is advisory because a PR-controlled workflow may be
able to emit the same workflow/job name through the shared GitHub Actions
identity. If source-bound enforcement is unavailable, retain independent human
review rather than relying on that context alone or adding a credential-based
publisher. Require branches to be up to date before merge (or use an equivalent
merge-queue freshness guarantee), and enable the required context only after
the workflow installation is merged and the post-merge Cast canary succeeds.
squad-bootstrap normally creates one draft,
human-reviewed Cast PR and one linked
[Research Proposals] Agent-discovered repo opportunities issue from the
same validated repository analysis. If can_approve_pull_request_reviews
is false (the recommended, least-privilege setting from step 4),
GITHUB_TOKEN cannot open that PR either; squad-bootstrap instead opens a
bot-authored fallback issue carrying a signed provenance record and a
ready-to-click compare URL, and Squad Review accepts the resulting
manually-opened PR in that one narrowly-scoped case (see "Optional: PAT
fallback" and the fallback-issue provenance contract in
docs/src/content/docs/guide/gh-aw.md for the exact trust conditions).
On the fallback path, no automatic trigger re-runs squad-bootstrap at any
point — not when the human opens that compare-URL PR, and not when
they later merge it either: squad-bootstrap's push trigger only watches
the Squad workflow-source paths (for example .github/workflows/squad*.md),
and the manually-opened PR never touches any of those paths. The fallback
issue itself tells the user to manually re-run the Squad Bootstrap workflow
(workflow_dispatch) — either now, while the PR is still open, or anytime
after merging it — which deterministically detects the PR (open or merged)
and creates the linked research-proposals issue; no automatic trigger ever
does this for them. Either way, the user reviews and merges the Cast PR, then follows the
research issue's /squad research, /squad triage, /squad plan, and
/squad activate instructions until assignable implementation issues exist.owner_repo="$(gh repo view --json nameWithOwner --jq '.nameWithOwner')"
default_branch="$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')"
issues_enabled="$(gh api "repos/${owner_repo}" --jq '.has_issues')"
if [ "${issues_enabled}" != "true" ]; then
if ! gh api --method PATCH "repos/${owner_repo}" \
-F has_issues=true --silent; then
echo "STOP: GitHub Issues are disabled and could not be enabled." >&2
echo "A repository administrator must enable Settings > General > Features > Issues, then rerun enlistment." >&2
exit 1
fi
fi
test "$(gh api "repos/${owner_repo}" --jq '.has_issues')" = "true" || {
echo "STOP: GitHub Issues must be enabled before installing Squad workflows." >&2
exit 1
}
gh api --method PUT "repos/${owner_repo}/actions/permissions/workflow" \
-f default_workflow_permissions=read -F can_approve_pull_request_reviews=false
git switch -c chore/squad-gh-aw-bootstrap
# SQUAD_SHA is supplied explicitly (maintainer-approved), never resolved from dev's tip
: "${SQUAD_SHA:?STOP: set SQUAD_SHA to an explicit, maintainer-approved 40-character Squad commit SHA.}"
[[ "${SQUAD_SHA}" =~ ^[0-9a-f]{40}$ ]] || {
echo "STOP: SQUAD_SHA must be an explicit, maintainer-approved 40-character lowercase hex commit SHA." >&2
exit 1
}
gh aw add "bradygaster/squad/workflows@${SQUAD_SHA}"
rm -f .github/skills/agentic-workflows/SKILL.md
# Safe-update report shows ONLY the two documented secrets + squad-init → approve once
gh aw compile --strict --approve
node .github/workflows/shared/squad-install-verifier.mjs --materialize-runtime
gh aw compile --strict # final, no --approve; exactly the two documented warnings remain
node .github/workflows/shared/squad-install-verifier.mjs \
--verify-install --source-revision "${SQUAD_SHA}" --strict-compile
git add -- .gitattributes .github/aw/ .github/workflows/ .github/skills/
node .github/workflows/shared/squad-install-verifier.mjs \
--verify-staged-install --stage-ownership --source-revision "${SQUAD_SHA}" || exit 1
git commit -m "ci: add Squad agentic workflow"
git push -u origin HEAD
gh pr create --base "${default_branch}" \
--title "ci: add Squad agentic workflow" \
--body "Installs and strictly compiles the supported Squad GH-AW workflows."
pr_node_id="$(gh pr view --json id --jq '.id')"
gh api graphql -f query='
mutation($pr: ID!) {
requestReviewsByLogin(input: { pullRequestId: $pr, botLogins: ["copilot-pull-request-reviewer"] }) {
pullRequest { number }
}
}' -f pr="${pr_node_id}" # Bot-aware review request; then wait for review + checks; DO NOT mergegh aw add reports a third secret: `ACME_DEPLOY_KEY`.
→ This is NOT in the allowlist (SQUAD_GITHUB_APP_PRIVATE_KEY, SQUAD_GITHUB_TOKEN)
and is NOT the squad-init action. Do NOT run `--approve`.
Halt, report "unexpected safe-update entry: ACME_DEPLOY_KEY", and wait.# BAD: hardcoded owner/repo and default branch
gh api --method PUT "repos/acme/widgets/actions/permissions/workflow" ...
gh pr create --base main ... # wrong if the default branch isn't `main`
# BAD: blanket staging captures logs, editor settings, and unrelated changes
# Stage only the generated bootstrap paths listed above.gh aw compile --strict --approve # approved first install...
# ...then committed WITHOUT the final `gh aw compile --strict` (no --approve). WRONG.
gh pr merge --squash # auto-merge before human review. NEVER.owner/repo and the
default branch at runtime with gh repo view./squad commands and the
bootstrap research/proposals issue require Issues. Enable them first, or stop
before installation if repository administration permission is unavailable.git add . / -A / git commit -a). Stage only
.gitattributes, .github/aw/, .github/workflows/, .github/skills/, by path..github/skills/agentic-workflows/SKILL.md; keep the exact Squad-owned
.github/skills/gh-aw-enlistment/SKILL.md.SQUAD_GITHUB_APP_PRIVATE_KEY,
SQUAD_GITHUB_TOKEN, and bradygaster/squad/.github/actions/squad-init. Anything
else is a STOP.--approve as the final compile. Always finish with a plain
gh aw compile --strict (no --approve).squad-review.md
pull_request_target advisory and squad.md bot-trigger warning are allowed;
every other warning or error halts the run..github/aw/logs/ output; add the
log .gitignore if missing..github/workflows/ files.default_workflow_permissions=read.© bradygaster, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in workflows/skills/gh-aw-enlistment of bradygaster/squad.
Open the folder on GitHubat commit e0c84dd
Gh Aw Enlistment next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Gh Aw Enlistment this skillbradygaster/squad | 3.3k | — | ~7.5k | Automated safety check: Pass | MIT | |
| PR Babysitteropeninterpreter/openinterpreter | 69k | 3 repos | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Greplooponyx-dot-app/onyx | 32k | 4 repos | ~3.3k | Automated safety check: Pass | MIT | |
| GitHub Deep Researchbytedance/deer-flow | 84k | 4 repos | ~1.3k | Automated safety check: Pass | MIT | |
| Diagnosing Superpowers Sessionsobra/superpowers | 297k | 3 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Update V8 Versionopeninterpreter/openinterpreter | 69k | 2 repos | ~845 | Automated safety check: Pass | Apache-2.0 |
openinterpreter/openinterpreter
Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.
onyx-dot-app/onyx
Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.
bytedance/deer-flow
Researches a GitHub repository over four rounds using the GitHub API and web search, then writes a structured markdown report with timeline, metrics and Mermaid diagrams.
obra/superpowers
Investigates a session where Superpowers went wrong, reads the transcripts on disk and produces an evidence-cited report, optionally prepared as a bug report for the maintainers.
openinterpreter/openinterpreter
Bumps the pinned v8 and rusty_v8 versions in Codex, validates the release-candidate path with the v8-canary check, and traces failures to upstream build changes.
mvanhorn/last30days-skill
Research what people actually say about any topic in the last 30 days.
bradygaster/squad
Review and validate claims using counter-hypothesis testing.
bradygaster/squad
How to review PRs for architectural quality — module boundaries, dependency direction, export surface, pattern consistency
bradygaster/squad
Preserve content when moving entries between tracked Squad state files
bradygaster/squad
Defensive CI/CD patterns: semver validation, token checks, retry logic, and draft detection
bradygaster/squad
Checklist and patterns for wiring new CLI commands into cli-entry.ts
bradygaster/squad
Enables squad agents on different machines to share work via git-based task queuing
Works with
Enlist a repository into Squad by installing the supported GitHub Agentic Workflows (gh-aw) bootstrap — with strict compilation, an explicit safe-update allowlist, and a human-reviewed bootstrap PR. Gh Aw Enlistment is an agent skill from bradygaster/squad. Enlist a repository into Squad by installing the supported GitHub Agentic Workflows (gh-aw) bootstrap — with strict compilation, an explicit safe-update allowlist, and a human-reviewed bootstrap PR.
Run `npx skills add bradygaster/squad --skill gh-aw-enlistment -a claude-code`. Or copy the skill folder (workflows/skills/gh-aw-enlistment in bradygaster/squad) into .claude/skills/gh-aw-enlistment in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bradygaster/squad --skill gh-aw-enlistment -a codex`. Or copy the skill folder (workflows/skills/gh-aw-enlistment in bradygaster/squad) into .agents/skills/gh-aw-enlistment in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bradygaster/squad --skill gh-aw-enlistment -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/gh-aw-enlistment, .gemini/skills/gh-aw-enlistment, .github/skills/gh-aw-enlistment and .opencode/skills/gh-aw-enlistment in your project.
Going by SKILL.md and its folder, Gh Aw Enlistment needs the command-line tools its instructions call (gh, git and node) and credentials named GITHUB_TOKEN, SQUAD_GITHUB_TOKEN, SQUAD_GITHUB_APP_PRIVATE_KEY and ACME_DEPLOY_KEY. Our summary lists: A credential in GITHUB_TOKEN.
SKILL.md names 1 domain. In commands or code: bradygaster.github.io; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Gh Aw Enlistment is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 7.5k tokens (SKILL.md is roughly 30k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Gh Aw Enlistment: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Greploop (onyx-dot-app/onyx, 32k stars), GitHub Deep Research (bytedance/deer-flow, 84k stars) and Diagnosing Superpowers Sessions (obra/superpowers, 297k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bradygaster (a GitHub user) maintains it in bradygaster/squad, which has 3,261 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on October 10, 2026.
Source: bradygaster/squad on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.