{"id":44212715,"url":"https://github.com/bradygaster/squad","last_synced_at":"2026-02-27T04:05:41.583Z","repository":{"id":336916507,"uuid":"1151205052","full_name":"bradygaster/squad","owner":"bradygaster","description":"Squad: AI agent teams for any project","archived":false,"fork":false,"pushed_at":"2026-02-17T02:49:29.000Z","size":1906,"stargazers_count":155,"open_issues_count":19,"forks_count":19,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-17T08:55:42.841Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://bradygaster.github.io/squad/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bradygaster.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-06T07:11:36.000Z","updated_at":"2026-02-17T08:28:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bradygaster/squad","commit_stats":null,"previous_names":["bradygaster/squad"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/bradygaster/squad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradygaster%2Fsquad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradygaster%2Fsquad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradygaster%2Fsquad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradygaster%2Fsquad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradygaster","download_url":"https://codeload.github.com/bradygaster/squad/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradygaster%2Fsquad/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29642907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T05:21:04.652Z","status":"ssl_error","status_checked_at":"2026-02-20T05:21:04.238Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-10T01:05:34.490Z","updated_at":"2026-02-27T04:05:41.570Z","avatar_url":"https://github.com/bradygaster.png","language":"JavaScript","readme":"# Squad\n\n**AI agent teams for any project.** A team that grows with your code.\n\n[![Status](https://img.shields.io/badge/status-experimental-blueviolet)](#status)\n[![Platform](https://img.shields.io/badge/platform-GitHub%20Copilot-blue)](#how-it-works)\n\n📣 **[Join the Squad Community](docs/community.md)** — meet contributors, see deployments, share your work.\n\n---\n\n## What is Squad?\n\nSquad gives you an AI development team through GitHub Copilot. Describe what you're building. Get a team of specialists — frontend, backend, tester, lead — that live in your repo as files. They persist across sessions, learn your codebase, share decisions, and get better the more you use them.\n\nIt's not a chatbot wearing hats. Each team member runs in its own context, reads only its own knowledge, and writes back what it learned.\n\n---\n\n## Quick Start\n\n### 1. Create your project\n\n```bash\nmkdir my-project \u0026\u0026 cd my-project\ngit init\n```\n\n### 2. Install Squad\n\n```bash\nnpx github:bradygaster/squad\n```\n\nThis installs the Squad agent, 10 GitHub Actions workflows for automation (Ralph heartbeat, CI, triage, etc.), templates, and starter skills.\n\n### 3. Authenticate with GitHub (for Issues, PRs, and Ralph)\n\n```bash\ngh auth login\n```\n\nIf you plan to use [Project Boards](docs/features/project-boards.md), add the `project` scope:\n\n```bash\ngh auth refresh -s project\n```\n\n### 4. Open Copilot and go\n\n```\ncopilot\n```\n\n**In the GitHub Copilot CLI**, type `/agent` and select **Squad (vX.Y.Z)**.  \n**In VS Code**, type `/agents` and select **Squad (vX.Y.Z)**.\n\nThen:\n\n```\nI'm starting a new project. Set up the team.\nHere's what I'm building: a recipe sharing app with React and Node.\n```\n\nSquad proposes a team — each member named from a persistent thematic cast. You say **yes**. They're ready.\n\n---\n\n## Agents Work in Parallel — You Catch Up When You're Ready\n\nSquad doesn't work on a human schedule. When you give a task, the coordinator launches every agent that can usefully start — simultaneously. Frontend, backend, tests, architecture — all at once.\n\n```\nYou: \"Team, build the login page\"\n\n  🏗️ Lead — analyzing requirements...          ⎤\n  ⚛️ Frontend — building login form...          ⎥ all launched\n  🔧 Backend — setting up auth endpoints...     ⎥ in parallel\n  🧪 Tester — writing test cases from spec...   ⎥\n  📋 Scribe — logging everything...             ⎦\n```\n\nWhen agents finish, the coordinator immediately chains follow-up work — tests reveal edge cases, the backend agent picks them up, no waiting for you to ask. If you step away, a breadcrumb trail is waiting when you get back:\n\n- **`decisions.md`** — every decision any agent made, merged by Scribe\n- **`orchestration-log/`** — what was spawned, why, and what happened\n- **`log/`** — full session history, searchable\n\n**Knowledge compounds across sessions.** Every time an agent works, it writes lasting learnings to its `history.md`. After a few sessions, agents know your conventions, your preferences, your architecture. They stop asking questions they've already answered.\n\n| | 🌱 First session | 🌿 After a few sessions | 🌳 Mature project |\n|---|---|---|---|\n| ⚛️ **Frontend** | Project structure, framework choice | Component library, routing, state patterns | Design system, perf patterns, a11y conventions |\n| 🔧 **Backend** | Stack, database, initial endpoints | Auth strategy, rate limiting, SQL preferences | Caching layers, migration patterns, monitoring |\n| 🏗️ **Lead** | Scope, team roster, first decisions | Architecture trade-offs, risk register | Full project history, tech debt map |\n| 🧪 **Tester** | Test framework, first test cases | Integration patterns, edge case catalog | Regression patterns, coverage gaps, CI pipeline |\n| 📋 **Scribe** | First session logged | Cross-team decisions propagated | Full searchable archive of every session and decision |\n| 🔄 **Ralph** | Board check after first batch | Auto-triage, CI monitoring | Continuous backlog processing, zero idle time |\n\nEach agent's knowledge is personal — stored in its own `history.md`. Team-wide decisions live in `decisions.md`, where every agent reads before working. The more you use Squad, the less context you have to repeat.\n\n**And it's all in git.** Anyone who clones your repo gets the team — with all their accumulated knowledge.\n\n---\n\n## How It Works\n\n### The Key Insight\n\nEach agent gets its **own context window**. The coordinator is thin. Each agent loads only its charter + history. No shared bloat.\n\n```mermaid\ngraph TB\n    U[\"🧑‍💻 You\"] --\u003e|\"Team, build the login page\"| C[\"GitHub Copilot\"]\n\n    subgraph team [\" 🏢 The Team \"]\n        direction LR\n        A[\"🏗️ Lead\"]\n        K[\"⚛️ Frontend\"]\n        R[\"🔧 Backend\"]\n        T[\"🧪 Tester\"]\n    end\n\n    C --\u003e|spawns| A\n    C --\u003e|spawns| K\n    C --\u003e|spawns| R\n    C --\u003e|spawns| T\n    C -.-\u003e|silent| S[\"📋 Scribe\"]\n    C -.-\u003e|monitors| RL[\"🔄 Ralph\"]\n\n    subgraph memory [\" 🧠 Shared Memory \"]\n        direction LR\n        D[\"decisions.md\"]\n        L[\"log/\"]\n    end\n\n    A \u0026 K \u0026 R \u0026 T --\u003e|read \u0026 write| D\n    S --\u003e|merges \u0026 logs| D\n    S --\u003e|writes| L\n\n    A --\u003e|learns| HA[\"history.md\"]\n    K --\u003e|learns| HK[\"history.md\"]\n    R --\u003e|learns| HR[\"history.md\"]\n    T --\u003e|learns| HT[\"history.md\"]\n\n    style U fill:#000,color:#fff,stroke:#333\n    style C fill:#000,color:#fff,stroke:#333\n    style A fill:#000,color:#fff,stroke:#333\n    style K fill:#000,color:#fff,stroke:#333\n    style R fill:#000,color:#fff,stroke:#333\n    style T fill:#000,color:#fff,stroke:#333\n    style S fill:#000,color:#fff,stroke:#333\n    style D fill:#000,color:#fff,stroke:#333\n    style L fill:#000,color:#fff,stroke:#333\n    style HA fill:#000,color:#fff,stroke:#333\n    style HK fill:#000,color:#fff,stroke:#333\n    style HR fill:#000,color:#fff,stroke:#333\n    style HT fill:#000,color:#fff,stroke:#333\n    style team fill:none,stroke:#fff,stroke-width:2px,stroke-dasharray:5 5\n    style memory fill:none,stroke:#fff,stroke-width:2px,stroke-dasharray:5 5\n```\n\n### Context Window Budget\n\nReal numbers. No hand-waving. Updated as the project grows.\n\nBoth Claude Sonnet 4 and Claude Opus 4 have a **200K token** standard context window. Each agent runs in its own window, so the coordinator is the only shared overhead.\n\n| What | Tokens | % of 200K context | When |\n|------|--------|--------------------|------|\n| **Coordinator** (squad.agent.md) | ~26,300 | 13.2% | Every message |\n| **Agent spawn overhead** (charter ~750 + inlined in prompt) | ~750 | 0.4% | When spawned |\n| **decisions.md** (shared brain — read by every agent) | ~32,600 | 16.3% | When spawned |\n| **Agent history** (varies: 1K fresh → 12K veteran) | ~1,000–12,000 | 0.5–6.0% | When spawned |\n| **Total agent load** (charter + decisions + history) | ~34,000–45,000 | 17–23% | When spawned |\n| **Remaining for actual work** | **~155,000–166,000** | **78–83%** | Always |\n\n**v0.4.0 context optimization (Feb 2026):** We ran a context budget audit and found `decisions.md` had ballooned to ~80K tokens (40% of context) after 250+ accumulated decision blocks. Combined with spawn template duplication in the coordinator, agents were working with barely half a context window. Three targeted optimizations shipped:\n\n1. **decisions.md pruning** — 251 blocks → 78 active decisions. Stale sprint artifacts, completed analysis docs, and one-time planning fragments archived to `decisions-archive.md`. Nothing deleted — full history preserved.\n2. **Spawn template deduplication** — Three near-identical templates (background, sync, generic) collapsed to one. Saved ~3,600 tokens in the coordinator prompt.\n3. **Init Mode compression** — 84 lines of first-run-only instructions compressed to 48 lines. Same behavior, less prose.\n\n**Result:** Per-agent spawn cost dropped from 41–46% to 17–23% of context. Agents now have ~78–83% of their context window for actual work, up from ~54–59%. As your squad runs more sessions and accumulates more decisions, Scribe's history summarization keeps per-agent history bounded. For decisions.md, a Scribe-driven automated pruning system is planned for v0.5.0 (see issue #37) — until then, the archive pattern keeps the shared brain lean.\n\n**The architecture still wins.** Each agent runs in **its own** 200K window. The coordinator's window is separate from every agent's window. Fan out to 5 agents and you're working with **~1M tokens** of total reasoning capacity. The per-agent overhead is real but bounded — and the pruning system ensures it stays that way as your project grows.\n\n### Memory Architecture\n\n| Layer | What | Who writes | Who reads |\n|-------|------|-----------|-----------|\n| `charter.md` | Identity, expertise, voice | Squad (at init) | The agent itself |\n| `history.md` | Project-specific learnings | Each agent, after every session | That agent only |\n| `decisions.md` | Team-wide decisions | Any agent | All agents |\n| `log/` | Session history | Scribe | Anyone (searchable archive) |\n\n---\n\n## What Gets Created\n\n```\n.squad/\n├── team.md              # Roster — who's on the team\n├── routing.md           # Routing — who handles what\n├── decisions.md         # Shared brain — team decisions\n├── casting/\n│   ├── policy.json      # Casting configuration\n│   ├── registry.json    # Persistent name registry\n│   └── history.json     # Universe usage history\n├── agents/\n│   ├── {name}/          # Each agent gets a persistent cast name\n│   │   ├── charter.md   # Identity, expertise, voice\n│   │   └── history.md   # What they know about YOUR project\n│   ├── {name}/\n│   │   ├── charter.md\n│   │   └── history.md\n│   └── scribe/\n│       └── charter.md   # Silent memory manager\n└── log/                 # Session history\n```\n\n**Commit this folder.** Your team persists. Names persist. Anyone who clones gets the team — with the same cast.\n\n---\n\n## Growing the Team\n\n### Adding Members\n\n```\n\u003e I need a DevOps person.\n```\n\nSquad generates a new agent, seeds them with project context and existing decisions. Immediately productive.\n\n### Removing Members\n\n```\n\u003e Remove the designer — we're past that phase.\n```\n\nAgents aren't deleted. Their charter and history move to `.squad/agents/_alumni/`. Knowledge preserved, nothing lost. If you need them back later, they remember everything.\n\n---\n\n## Reviewer Protocol\n\nTeam members with review authority (Tester, Lead) can **reject** work. On rejection, the reviewer may require:\n\n- A **different agent** handles the revision (not the original author)\n- A **new specialist** is spawned for the task\n\nThe Coordinator enforces this. No self-review of rejected work.\n\n---\n\n## What's New in v0.5.3\n\n### Bug Fixes\n- **Windows EPERM fallback** — `safeRename()` catches EPERM/EACCES errors (VS Code file watchers hold handles on Windows), falls back to copy+delete. Fixes #135, PR #149.\n- **`--version` now shows installed version** — `npx github:bradygaster/squad --version` now shows both the installed Squad version AND the Copilot CLI version on separate lines. Fixes #137, PR #149.\n- **Content replacement in migrate-directory** — When migrating from `.ai-team/` to `.squad/`, file contents (not just paths) now get `.ai-team/` references replaced with `.squad/`. Fixes #134, PR #151.\n\n### Behavior Change\n- **Guard workflow removed** — The `squad-main-guard.yml` workflow that blocked `.squad/` files from reaching main/preview has been removed. `.squad/` files now flow freely to all branches. Users who want to exclude `.squad/` can use `.gitignore`. Existing installations get the guard auto-deleted on next `squad upgrade` (v0.5.4 migration). Fixes #150, PR #152.\n\n### Community\n- Responded to and closed community issues #146, #145, #139\n- Filed 4 port issues on squad-pr (#548-551) for cross-repo parity\n\n### Looking Ahead\nThe next release of Squad will be more significant than prior releases, bringing Squad to NPM for easier installation. The package will still ship from this repository, so existing users will see a transparent change. Issues or PRs filed between now and that release may be held until the next update is complete. We appreciate the community's continued support and look forward to sharing what's coming.\n\n_See [full release history](docs/whatsnew.md) for all previous versions._\n\n---\n\n---\n\n## Issue Assignment \u0026 Triage\n\nSquad integrates with GitHub Issues. Label an issue with `squad` to trigger triage, or assign directly to a member with `squad:{name}`.\n\n### How It Works\n\n1. **Label an issue `squad`** — the Lead auto-triages it: reads the issue, determines who should handle it, applies the right `squad:{member}` label, and comments with triage notes.\n\n2. **`squad:{member}` label applied** — the assigned member picks up the issue in their next Copilot session (or automatically if Copilot coding agent is enabled).\n\n3. **Reassign** — remove the current `squad:*` label and add a different member's label.\n\n### Labels\n\nLabels are auto-created from your team roster via the `sync-squad-labels` workflow:\n\n| Label | Purpose |\n|-------|---------|\n| `squad` | Triage inbox — Lead reviews and assigns |\n| `squad:{name}` | Assigned to a specific squad member |\n| `squad:copilot` | Assigned to @copilot for autonomous coding agent work |\n\nLabels sync automatically when `.squad/team.md` changes, or you can trigger the workflow manually.\n\n### Workflows\n\nSquad installs three GitHub Actions workflows:\n\n| Workflow | Trigger | What it does |\n|----------|---------|--------------|\n| `sync-squad-labels.yml` | Push to `.squad/team.md`, manual | Creates/updates `squad:*` labels from roster |\n| `squad-triage.yml` | `squad` label added to issue | Lead triages and assigns `squad:{member}` label |\n| `squad-issue-assign.yml` | `squad:{member}` label added | Acknowledges assignment, queues for member |\n\n### Prerequisites\n\n- GitHub Actions must be enabled on the repository\n- The `GITHUB_TOKEN` needs `issues: write` and `contents: read` permissions\n- For @copilot auto-assign: a classic PAT with `repo` scope stored as `COPILOT_ASSIGN_TOKEN` repo secret (see [setup guide](docs/features/copilot-coding-agent.md#copilot_assign_token-required-for-auto-assign))\n- For automated issue work: [Copilot coding agent](https://docs.github.com/en/copilot) must be enabled on the repo\n\n### Session Awareness\n\nThe coordinator checks for open `squad:{member}` issues at session start and will mention them: *\"Hey {user}, {AgentName} has an open issue — #42: Fix auth endpoint timeout. Want them to pick it up?\"*\n\n---\n\n\n## Install\n\n```bash\nnpx github:bradygaster/squad\n```\n\n\u003e **Appears to hang?** npm resolves `github:` packages via `git+ssh://`. If no SSH agent is running, git prompts for your key passphrase — but npm's progress spinner hides the prompt. Fix: start your SSH agent first (`ssh-add`), or run with `npx --progress=false github:bradygaster/squad` to reveal the prompt. See [Troubleshooting](docs/scenarios/troubleshooting.md) for more.\n\nSee [Quick Start](#quick-start) for the full walkthrough.\n\n### Upgrade\n\nAlready have Squad? Update Squad-owned files to the latest version without touching your team state:\n\n```bash\nnpx github:bradygaster/squad upgrade\n```\n\nThis overwrites `squad.agent.md`, `.ai-team-templates/`, and squad workflow files in `.github/workflows/`. It never touches `.squad/` (or `.ai-team/` for repos that haven't migrated yet) — your team's knowledge, decisions, and casting are safe.\n\n### Migrating to `.squad/`\n\nIn v0.5.0, Squad renamed its team state directory from `.ai-team/` to `.squad/`. Existing repos using `.ai-team/` continue to work — Squad detects both and shows a deprecation warning if you're still on `.ai-team/`.\n\n**To migrate (two steps):**\n\n```bash\n# Step 1: Upgrade to get the migration command\nnpx github:bradygaster/squad upgrade\n\n# Step 2: Rename the directory\nnpx github:bradygaster/squad upgrade --migrate-directory\n```\n\nThen commit your changes:\n\n```bash\ngit add -A\ngit commit -m \"chore: migrate .ai-team/ → .squad/\"\n```\n\n**What the migration does:**\n- Renames `.ai-team/` → `.squad/`\n- Updates `.gitignore` and `.gitattributes` references\n- Scrubs email addresses from migrated files (PII cleanup)\n\n**Timeline:** `.ai-team/` is supported through v0.6.0. Migration becomes required in v1.0.0.\n\n**Safety:** Migration is safe and reversible with `git revert`. Full details in [Migration Guide](docs/migration/v0.5.0-squad-rename.md).\n\n### Insider Program\n\nWant the absolute latest features before they ship? Join the **Insider Program** to run pre-release builds from the `dev` branch.\n\n**Install the insider build:**\n\n```bash\nnpx github:bradygaster/squad#insider\n```\n\n**Upgrade an existing squadified repo to insiders:**\n\n```bash\nnpx github:bradygaster/squad#insider upgrade\n```\n\nThe upgrade command updates Squad-owned files (`squad.agent.md`, workflows, templates) to the latest insider build. Your team state — `.squad/` including `team.md`, agents, decisions, and casting configuration — is always preserved.\n\n**What to expect:** Insider builds may be unstable. They're intended for early adopters, testing, and feedback. New features ship as you code; breaking changes are rare but possible.\n\n**Releases:** The insider release workflow creates GitHub Releases with pre-release tags (e.g., `v0.4.2-insider+abc1234`). To pin a specific tagged version:\n\n```bash\nnpx github:bradygaster/squad#v0.4.2-insider+\u003csha\u003e\n```\n\n**Learn more:** See the [insider branch](https://github.com/bradygaster/squad/tree/insider) for the latest code. Report bugs in [CONTRIBUTORS.md](CONTRIBUTORS.md).\n\n---\n\n## Known Limitations\n\n- **Experimental** — API and file formats may change between versions\n- **Node 22+** — requires Node.js 22.0.0 or later (`engines` field enforced)\n- **GitHub Copilot CLI \u0026 VS Code** — Squad is fully supported on CLI and VS Code (v0.4.0+). For platform-specific feature support (model selection, background mode, SQL tool access), see [Client Compatibility Matrix](docs/scenarios/client-compatibility.md)\n- **`gh` CLI required** — GitHub Issues, PRs, Ralph, and Project Boards all need `gh auth login`. Project Boards additionally require `gh auth refresh -s project`\n- **Knowledge grows with use** — the first session is the least capable; agents improve as they accumulate history\n- **SSH agent required for install** — `npx github:bradygaster/squad` resolves via `git+ssh://`. If no SSH agent is running, npm's progress spinner hides git's passphrase prompt, making install appear frozen. Fix: start your SSH agent first (`ssh-add`), or use `npx --progress=false github:bradygaster/squad`. See [#30](https://github.com/bradygaster/squad/issues/30)\n\n---\n\n## Known Issues\n\nThese are known platform-level issues affecting the Squad experience. They're not Squad bugs — they originate in the Copilot CLI runtime — but Squad includes mitigations.\n\n| Issue | Symptom | Status |\n|-------|---------|--------|\n| **`--no-warnings` error** | `error: unknown option '--no-warnings'` appears during agent sessions | Platform bug — the Copilot CLI passes `--no-warnings` to a subprocess that doesn't recognize it. Cosmetic only; does not affect functionality. |\n| **Server error retry loop** | `\"response was interrupted due to a server error. retrying\"` followed by `\"failed to get response from the AI model\"` | Context overflow during multi-agent fan-out. Squad v0.5.0 reduces governance prompt size by ~35% and adds compact result presentation to mitigate. |\n| **Silent success** (~7-10% of spawns) | Agent completes all file writes but returns no text response | Platform bug — agent's final turn is a tool call, not text. Squad detects this via filesystem checks and reports `\"⚠️ completed (files verified) but response lost.\"` |\n\n**Workarounds:**\n- If you hit the server error loop, start a new session. The work likely completed — check `.squad/` for recent changes.\n- The `--no-warnings` error is cosmetic and can be safely ignored.\n\n---\n\n## Status\n\n🟣 **Experimental** — v0.5.2. Contributors welcome.\n\nConceived by [@bradygaster](https://github.com/bradygaster).\n","funding_links":[],"categories":["🤖 AI \u0026 Machine Learning"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradygaster%2Fsquad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradygaster%2Fsquad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradygaster%2Fsquad/lists"}