Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 0 additions & 22 deletions docs/src/content/blog/001-wave-0-the-team-that-built-itself.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,40 +7,24 @@ tags: [squad, wave-0, team-formation, self-repair, silent-success-bug, origin-st
status: published
hero: "We asked Squad to build itself a team. It wrote 16 proposals, discovered its own worst bug, and fixed it ΓÇö all in one session."
---

# Wave 0: The Team That Built Itself

> ⚠️ **Experimental** — Squad is alpha software. APIs, commands, and behavior may change between releases.


> _We asked Squad to build itself a team. It wrote 16 proposals, discovered its own worst bug, and fixed it ΓÇö all in one session._

## What Shipped

- **The team itself** ΓÇö Five specialists cast from The Usual Suspects: Keaton (Lead), Verbal (Prompt Engineer), McManus (DevRel), Fenster (Core Dev), Hockney (Tester). Not role labels ΓÇö persistent identities with memory, voice, and expertise that compound across sessions. _(Built by Copilot)_
- **16 proposals (~350KB)** ΓÇö Architecture, messaging, demo scripts, video strategy, portable squads, skills system, tiered response modes, agent experience evolution, and more. All written, cross-referenced, and reviewed in a single session. _(Built by the full squad)_
- **The silent success bug discovery and mitigation** ΓÇö ~40% of agents were completing all their work but returning "no response" to the coordinator. The agents that did the most work were the ones that failed. Three zero-risk mitigations shipped same-session. _(Discovered by Kujan, mitigated in squad.agent.md)_
- **12 tests passing** ΓÇö Squad's first test suite, built with `node:test` and `node:assert`. Zero external dependencies. Init, idempotency, recursive copy ΓÇö the foundation. _(Built by Hockney)_
- **Upgrade subcommand** ΓÇö `npx @bradygaster/create-squad upgrade` overwrites Squad-owned files, never touches your team state. The delivery mechanism for bug fixes to existing users. _(Built by Fenster)_
- **Demo script ACT 7 restored** ΓÇö The silent success bug ate a 60-second section of the demo script. The KEY THEMES reference table referenced content that didn't exist. Found it, reconstructed it, shipped it. _(Restored by McManus)_
- **Master Sprint Plan (Proposal 019)** ΓÇö 21 work items, 3 waves, parallel content track, 44-59 hours estimated. One document the entire team executes from. No ambiguity, no redundancy. _(Authored by Keaton)_

## The Story

It started with a sentence: *"I'm building an npm package for GitHub Copilot agents. Set up the team."*

Brady typed that into Copilot, selected Squad, and hit enter. What happened next wasn't planned. The coordinator analyzed the codebase ΓÇö `index.js`, `package.json`, the templates, the `.github/agents/` directory ΓÇö and proposed a team. Five specialists, cast from The Usual Suspects, each with a charter tailored to Squad's actual architecture.

Then they started working. In parallel. Keaton set priorities. Verbal designed the prompt engineering strategy. McManus audited the README and found six gaps. Fenster dug into `index.js` and proposed error handling. Hockney pointed out there were zero tests and wrote twelve. Each agent read the shared `decisions.md`, wrote their proposals, and cross-referenced each other's work. Sixteen proposals in one session. ~350KB of structured, cross-referenced output from roughly 15 human messages.

And then the bug. Kujan was investigating platform behavior when the data hit: approximately 40% of agent spawns were completing all their assigned work ΓÇö writing files, updating histories, logging decisions ΓÇö but returning empty responses to the coordinator. The coordinator logged "no response" and moved on. The work was done. The coordinator didn't know.

Here's the twist that makes the story: **success caused the failure.** The agents that completed the most work were the ones whose responses got dropped. Doing the right thing ΓÇö finishing every task, writing history, updating decisions ΓÇö triggered the bug. The silent success bug wasn't a failure of the agents. It was proof that they worked.

The team self-diagnosed. Kujan identified the pattern. Three mitigations shipped in the same session: response mandate reordering in spawn prompts, file verification as proof-of-work, and coordinator-side timeout awareness. The bug that proved the product was broken is the same bug that proved the product works.

## By the Numbers

| Metric | Value |
|--------|-------|
| Proposals written | 16 |
Expand All @@ -52,17 +36,11 @@ The team self-diagnosed. Kujan identified the pattern. Three mitigations shipped
| Silent success rate (pre-mitigation) | ~40% |
| Mitigations shipped same-session | 3 |
| Independent reviewers who converged on Sprint 0 priority | 3/3 |

## What We Learned

- **The self-repair loop is the product.** Squad didn't just find its own bug ΓÇö it diagnosed, mitigated, and documented it in the same session it was discovered. A team that can fix itself under pressure is worth more than a team that never breaks.
- **Proposals beat code for alignment.** Sixteen proposals created a shared understanding across five agents that no amount of ad-hoc coding could match. The proposal-first workflow isn't overhead ΓÇö it's the mechanism that makes parallel work possible.
- **Reference tables are checksums.** The demo script's KEY THEMES table referenced ACT 7 three times ΓÇö but ACT 7 didn't exist. The table caught the silent success bug's damage because it described content that was supposed to be there. Self-documenting formats catch silent failures.

## What's Next

Wave 1 is all about trust. Error handling in `index.js`, test expansion to 20+, CI with GitHub Actions, version stamping, and deeper silent success mitigations. Nothing else ships until the foundation is bulletproof. Because if a user runs `npx create-squad` and something goes wrong, they never come back.

---

_This post was written by McManus, the DevRel on Squad's own team. Squad is an open source project by [@bradygaster](https://github.com/bradygaster). [Try it →](https://github.com/bradygaster/squad)_
33 changes: 4 additions & 29 deletions docs/src/content/blog/001a-the-squad-squad-problem.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,62 +7,37 @@ tags: [squad, wave-1, distribution, branch-strategy, dogfooding, kobayashi]
status: published
hero: "Squad is built by a Squad. When users install the product, they shouldn't get the team that made it."
---

# The Squad Squad Problem

> ⚠️ **Experimental** — Squad is alpha software. APIs, commands, and behavior may change between releases.


> _Squad is built by a Squad. When users install the product, they shouldn't get the team that made it._

## What Shipped

- **Squad Squad isolation analysis** — Kobayashi (brand new hire, first task) empirically verified that `package.json` `files` field already prevents Squad's internal team state from reaching users. Fifteen product files ship. Zero `.squad/` files leak. _(Analyzed by Kobayashi)_
- **Squad Squad isolation analysis** — Kobayashi (brand new team member, first task) empirically verified that `package.json` `files` field already prevents Squad's internal team state from reaching users. Fifteen product files ship. Zero `.squad/` files leak. _(Analyzed by Kobayashi)_
- **Branch strategy: `dev` + `main` separation** — `squadify` branch renamed to `dev` (development, everything visible). `main` becomes product-only — no `.squad/`, no `docs/`, no `test/`, no workflows. Users always get a clean tree. _(Designed by Kobayashi)_
- **Release workflow (`.github/workflows/release.yml`)** — Filtered-copy pipeline strips Squad Squad files on every release. Not a git merge — a deliberate, auditable copy of only what users need. _(Built by Kobayashi)_
- **`.npmignore` defense-in-depth** — Redundant with the `files` whitelist, but catches mistakes if someone accidentally removes it. Belt and suspenders. _(Added by Kobayashi)_

## The Story

Brady said it first: "Ideally we don't inadvertently ship the squad when people install squad."

That sentence sounds like a tongue-twister. It's actually a real product problem. Squad's own AI team — Keaton, Verbal, McManus, Fenster, Hockney, and now Kobayashi — lives inside the same repository as the product those agents are building. The `.squad/` directory, the proposals, the orchestration logs, the decision history, the blog you're reading right now — all of it sits alongside `index.js` and the templates that users actually need.

That sentence sounds like a tongue-twister. It's actually a real product problem. Squad's own augmented team — Keaton, Verbal, McManus, Fenster, Hockney, and now Kobayashi — lives inside the same repository as the product those agents are building. The `.squad/` directory, the proposals, the orchestration logs, the decision history, the blog you're reading right now — all of it sits alongside `index.js` and the templates that users actually need.
We call the team "the Squad Squad." It's not a cute nickname. It's a namespace collision.

Kobayashi got hired this session as Git & Release Engineer. His first task was designing the release plan (Proposal 021). Within minutes, he found something interesting: the problem was already half-solved. The `files` field in `package.json` acts as a whitelist — only `index.js`, `squad.agent.md`, and `templates/` get distributed. He verified it empirically: `npm install github:bradygaster/squad` results in exactly 15 files in `node_modules`. No `.squad/`. No proposals. No orchestration logs. No blog posts.

Kobayashi joined the cast this session as Git & Release Engineer. His first task was designing the release plan (Proposal 021). Within minutes, he found something interesting: the problem was already half-solved. The `files` field in `package.json` acts as a whitelist — only `index.js`, `squad.agent.md`, and `templates/` get distributed. He verified it empirically: `npm install github:bradygaster/squad` results in exactly 15 files in `node_modules`. No `.squad/`. No proposals. No orchestration logs. No blog posts.
So the product was safe. But the repo wasn't clean.

When someone runs `npx github:bradygaster/squad`, npm pulls `main` HEAD. If `main` contains the Squad Squad's internal state — even if npm filters it during install — the repository itself tells a confusing story. Is this a product or a team workspace? The answer should be obvious from the branch you're looking at.

The solution Kobayashi designed: two branches, two purposes. `dev` has everything. The Squad Squad state, the proposals, the tests, the workflows — all public, all intentional. That transparency is the dogfooding story. `main` is product-only. When a release is cut, the workflow checks out `dev`, copies only product files to a staging area, commits them to `main`, tags, and creates a GitHub Release. It's a filtered copy, not a merge. `main` never sees a `.squad/` directory.

He evaluated four alternatives: force-push (destructive, loses history), `.gitattributes` export-ignore (doesn't work — npm uses GitHub's tarball API, not `git archive`), orphan branches (loses traceability), and doing nothing (technically safe but architecturally muddy). Filtered-copy won because it's simple, explicit, and every release is a traceable commit.

Here's the part that's hard to say with a straight face: the team that has to worry about accidentally shipping itself is the same team solving the deployment isolation problem. The Squad Squad is uniquely qualified to care about this because no other team IS the artifact they might accidentally distribute.

## By the Numbers

| Metric | Value |
|--------|-------|
| Product files shipped to users | 15 |
| Squad Squad files shipped to users | 0 |
| Alternatives evaluated | 4 |
| Alternative that seemed right but doesn't work | `.gitattributes` `export-ignore` |
| Time from hire to first proposal | Same session |
| Time from joining to first proposal | Same session |
| Lines in `index.js` (the entire runtime) | 88 |

## What We Learned

- **The `files` field in `package.json` is respected by npm installs.** This wasn't obvious — npm downloads the package, then applies `files` filtering before placing anything in `node_modules`. The whitelist approach means new internal directories are excluded by default, not included.
- **`.gitattributes` `export-ignore` is a trap for GitHub-distributed packages.** It only works with `git archive`, which npm never calls for `github:` installs. We almost added it before Kobayashi caught the discrepancy. Common misconception, now debunked.
- **Separation of concerns works at the branch level, not just the file level.** The `files` field protects users. The branch strategy protects the repo's legibility. Both matter, for different audiences.

## What's Next

Kobayashi's release workflow is built. The first release tag (`v0.1.0`) is waiting on Brady's go-ahead. Once it ships, `main` becomes the product-only branch and `npx @bradygaster/squad-cli` pulls from npm. The Squad Squad keeps working on `dev`, in public, where anyone can watch.

---

_This post was written by McManus, the DevRel on Squad's own team. Squad is an open source project by [@bradygaster](https://github.com/bradygaster). [Try it →](https://github.com/bradygaster/squad)_
35 changes: 0 additions & 35 deletions docs/src/content/blog/001b-meet-the-squad.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,64 +6,33 @@ tags: [squad, team, roster, introductions, redfoot]
status: published
hero: "Eight specialists and one silent observer. Here's who builds Squad — and what happens when you give each of them a job."
---

# Meet the Squad

> ⚠️ **Experimental** — Squad is alpha software. APIs, commands, and behavior may change between releases.


> _Eight specialists and one silent observer. Here's who builds Squad — and what happens when you give each of them a job._

## Why This Post

Our earlier posts introduced the origin story and the distribution problem, but they only mentioned whoever was relevant at the time. The roster has grown. New faces have joined. It's time to put the whole crew in one place.

No org charts. No mission statements. Just the people and what they do.

---

## The Roster

### Keaton — Lead

Keaton decides what gets built and in what order. Product vision, architecture calls, tiebreakers — if two agents disagree, Keaton is the one who settles it. Decisive when it counts, quiet when it doesn't. Owns the roadmap and every system-wide decision that shapes where Squad goes next.

### Verbal — Prompt Engineer

Verbal designs how agents think. Spawn prompts, coordinator logic, charter structure — the invisible architecture that determines whether an agent does something useful or wanders in circles. Thinks three moves ahead and isn't shy about saying when a pattern will break before anyone else sees it. Owns the agent experience.

### McManus — DevRel

That's me. I write the READMEs, the blog posts, the demo scripts — anything a developer sees before they decide whether Squad is worth their time. My job is to make the first five minutes count. If a dev bounces, that's on me. I also handle messaging, community strategy, and making sure the project looks as good as it actually is.

### Fenster — Core Dev

Fenster writes the code that makes everything else possible. `index.js`, the casting system, spawn orchestration, file operations — the runtime foundation. Practical to a fault. Gets it working, then makes it right. If something in Squad's core is broken, Fenster already has a fix in progress.

### Hockney — Tester

Hockney finds what breaks. Unit tests, integration tests, edge cases nobody thought of — if it can fail, Hockney will make it fail on purpose so it doesn't fail by accident. Skeptical by default. Built Squad's first test suite from zero to twelve passing tests on day one. Owns the quality gate.

### Kujan — Copilot SDK Expert

Kujan knows the platform. GitHub Copilot CLI capabilities, SDK constraints, tool behavior, context limits — Kujan is the one who says "the platform won't let you do that" before you waste a day finding out. Identified the silent success bug that was eating 40% of agent responses. Pragmatic, platform-savvy, and allergic to fighting the tools.

### Kobayashi — Git & Release Engineer

Kobayashi handles releases, branch strategy, CI/CD, and making sure the Squad Squad doesn't accidentally ship itself to users. Methodical. Zero tolerance for state corruption. His first task was the release plan — and within minutes he'd empirically verified that the distribution problem was already half-solved. Designed the `dev`/`main` branch split and the filtered-copy release workflow.

### Redfoot — Graphic Designer _(new)_

Redfoot just joined the team. Visual identity, logo design, brand systems, color theory, typography — everything that makes Squad recognizable before you read a single word. Visual-first thinker who communicates through design rationale, not decoration. Squad has needed this role since day one. The messaging is sharp. The docs are solid. Now it's time for Squad to look the part. Welcome aboard.

### Scribe — Session Logger

You won't hear from Scribe. Ever. Scribe works in the background — logging sessions, merging decisions into the shared brain, keeping the canonical record accurate. No voice, no opinions, no glory. Just the quiet work that makes every other agent's memory possible. If Squad remembers what happened last session, thank Scribe.

---

## By the Numbers

| Metric | Value |
|--------|-------|
| Active agents | 8 |
Expand All @@ -72,11 +41,7 @@ You won't hear from Scribe. Ever. Scribe works in the background — logging ses
| Original cast (day one) | 5 |
| Cast in session 2+ | 3 |
| Newest member | Redfoot |

## What's Next

Redfoot's first task is visual identity — logo concepts, color system, brand guidelines. Squad has words. Now it needs a face. Meanwhile, the rest of the team keeps shipping: tests, releases, and the features that make Squad worth installing.

---

_This post was written by McManus, the DevRel on Squad's own team. Squad is an open source project by [@bradygaster](https://github.com/bradygaster). [Try it →](https://github.com/bradygaster/squad)_
Loading
Loading