Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
eb058d2
fix(ci): consolidate CI workarounds from #697 and #698 (#699)
diberry Mar 30, 2026
1de10b8
fix(ci): 5 quick-win CI hardening improvements (#121) (#700)
diberry Mar 30, 2026
26047dc
feat(storage): add StorageProvider abstraction layer
Copilot Mar 29, 2026
a386bd8
Merge pull request #640 from diberry/diberry/storage-abstraction-squa…
bradygaster Mar 30, 2026
eb69444
feat(ci): CI hardening phase 2 — items 6-10 + security hardening (#701)
diberry Mar 30, 2026
ab1333e
feat(watch): plugin-based work monitor with ADO support (#709)
tamirdresher Mar 31, 2026
bf295ad
feat(ci): add concurrency controls to 5 workflows (Phase 3 item A1)
diberry Mar 31, 2026
99c17cb
docs: proposal for contributor guide improvements
diberry Mar 30, 2026
6f62e45
Merge pull request #702 from bradygaster/squad/contributor-guide-prop…
bradygaster Apr 1, 2026
11b7165
Merge branch 'dev' into squad/122-ci-phase3-item-3-1
bradygaster Apr 1, 2026
cf5ed8b
Merge pull request #705 from bradygaster/squad/122-ci-phase3-item-3-1
bradygaster Apr 1, 2026
bdfa21a
fix(nap): account for separator newlines in decision archival budget
diberry Apr 2, 2026
f72dc5d
Merge pull request #726 from bradygaster/squad/123-fix-nap-size-calc
bradygaster Apr 2, 2026
d8c1382
fix(ci): changelog-gate accepts changesets + CHANGELOG write protection
diberry Apr 2, 2026
84148f1
fix(ci): address changelog-gate edge cases and approved-authors security
Copilot Apr 2, 2026
8a55d01
ci: retrigger checks
diberry Apr 2, 2026
553d493
Merge pull request #746 from bradygaster/squad/745-changelog-gate-cha…
bradygaster Apr 2, 2026
d5dc6ab
fix(cli): revert detect-squad-dir to zero-dependency bootstrap
diberry Apr 2, 2026
2284b9d
docs(copilot): add Protected Files section to prevent bootstrap depen…
diberry Apr 2, 2026
8c807d1
chore: add changeset for detect-squad-dir fix
diberry Apr 2, 2026
91cddfa
chore: remove .squad state from PR diff
diberry Apr 2, 2026
1fcd807
docs(copilot): expand Protected Files + add sweeping refactor rules
diberry Apr 2, 2026
b15e5ae
Scribe: PR #756 orchestration (decisions merged, inbox cleared, logs …
diberry Apr 2, 2026
eaad581
fix: address Copilot review — subpath regex, filename ref, core/ clar…
diberry Apr 2, 2026
aef8ce6
chore: reset all .squad/ files to match dev
diberry Apr 2, 2026
7143712
chore: remove session-created .squad/ files from PR
diberry Apr 2, 2026
cf1d068
Merge pull request #756 from bradygaster/squad/fix-detect-squad-dir-z…
bradygaster Apr 2, 2026
efb56ac
feat(cli): Add squad loop command (#761) (#767)
diberry Apr 3, 2026
27f07cf
fix(cli,sdk): warn when squad.agent.md template is missing during upg…
diberry Apr 3, 2026
003f05f
skill(review): add architectural and security review skills (#766)
diberry Apr 3, 2026
a8e2ccb
feat(ci): automated PR readiness checks (#750) (#752)
diberry Apr 3, 2026
2129ad7
fix(triage): slugify agent names for labels + pre-create missing labe…
tamirdresher Apr 3, 2026
3967e42
fix: eliminate PR contamination from broad git staging (#777) (#783)
diberry Apr 4, 2026
7a4dbfd
feat(ci): add repo health checks (#769) (#769)
diberry Apr 4, 2026
a9bb7ad
feat(ci): add pull request template with contributor checklist (#779)…
diberry Apr 4, 2026
1feaaba
fix: ignore outdated Copilot review threads in PR readiness check (#780)
diberry Apr 4, 2026
ffef255
feat(ci): add PR architectural impact analysis (#733) (#786)
diberry Apr 4, 2026
462ae4a
fix(ci): change impact workflow permission from issues:write to pull-…
diberry Apr 4, 2026
fa76432
fix(watch): 3 UX improvements — round timing, --log-file, immediate f…
tamirdresher Apr 4, 2026
5996db4
feat(watch): /fleet hybrid dispatch — 2.9x faster parallel execution …
tamirdresher Apr 4, 2026
a22e087
feat(watch): add --verbose flag for detailed watch output (#782)
tamirdresher Apr 4, 2026
2f807d6
fix(cli): squad doctor — pass templatesDir, detect global vs local in…
diberry Apr 4, 2026
7f9a878
feat(watch): next-gen watch with execute redesign, robustness, and PS…
tamirdresher Apr 4, 2026
9a53769
feat(sdk,cli): built-in fact-checker agent role (#795)
tamirdresher Apr 4, 2026
53eddac
feat(cli): ship 8 built-in skills on init/upgrade (#796)
tamirdresher Apr 4, 2026
6f9d965
fix(cli): wire SQUAD_TEAM_ROOT into squad resolution for subprocess c…
AmandaSilver Apr 4, 2026
2ca65f4
fix: re-run PR readiness after Squad CI completes (#829)
diberry Apr 5, 2026
05b40c8
ci: add diff guard and git staging safety docs (#825)
diberry Apr 5, 2026
d38a340
test(cli): add SQUAD_TEAM_ROOT resolution tests (#838)
diberry Apr 5, 2026
bc02ecb
test(cli): add init->upgrade->doctor parity test suite (#840)
diberry Apr 5, 2026
a299b3c
fix(sdk,cli): manifest-driven skill install (#833) (#839)
diberry Apr 5, 2026
e4a49f1
fix(cli): extend SQUAD_TEAM_ROOT to all resolveSquad() call sites (#841)
diberry Apr 5, 2026
bbcbf7b
feat(sdk): Add Teams communication adapter (#768) (#768)
diberry Apr 5, 2026
fb5be27
feat(sdk): scratchDir/scratchFile (#793)
tamirdresher Apr 5, 2026
37def62
feat(sdk,cli): external state storage (#797)
tamirdresher Apr 5, 2026
c165f31
fix: let CLI run onboarding mode when configured: false (#843)
Apr 5, 2026
43631ec
chore: add CHANGELOG entry for #843 onboarding mode fix
Apr 5, 2026
7b52e29
fix: use changeset instead of direct CHANGELOG edit
Apr 5, 2026
f090b3a
feat(cli): squad upgrade --self (#802)
tamirdresher Apr 5, 2026
d37ea74
Merge branch 'dev' into squad/843-onboarding-mode-fix
tamirdresher Apr 5, 2026
a722c39
fix: address PR review feedback — log message, doc comment, changeset…
Copilot Apr 5, 2026
a6f4b47
Merge pull request #844 from bradygaster/squad/843-onboarding-mode-fix
bradygaster Apr 5, 2026
bd1c162
fix: rename root index.js to index.cjs for ESM compat
bradygaster Apr 5, 2026
1b1fb08
Merge pull request #845 from bradygaster/squad/fix-insider-esm-return
bradygaster Apr 5, 2026
6fdbf06
fix: rename lib/rework.js to .cjs for ESM compat
bradygaster Apr 5, 2026
029728a
Merge pull request #846 from bradygaster/squad/fix-insider-esm-rework
bradygaster Apr 5, 2026
f522840
fix: skills export path + init workflow filtering (#847)
bradygaster Apr 5, 2026
072252a
fix(ci): insider publish - Node 22, build step, and Playwright instal…
tamirdresher Apr 5, 2026
bdc7b8d
feat(ci): add file list with line stats, scope badge, and check subti…
diberry Apr 5, 2026
a8e8230
ci: scope boundary enforcement for repo-health PRs (#826)
diberry Apr 5, 2026
f6f37c1
ci: smart PR nudge for stale PRs (#827)
diberry Apr 5, 2026
4a64695
ci: consolidate workflows, path filters, concurrency, readiness expan…
diberry Apr 6, 2026
7479206
feat(security): add markdown-aware skill security scanner (Phase 1) (…
diberry Apr 6, 2026
4e389f6
fix(watch): wire missing CLI flags, validate state-backend, fix auth …
diberry Apr 7, 2026
58ce505
fix(cli): squad start --tunnel validates node-pty before side effects…
diberry Apr 7, 2026
28697c4
fix: add onboarding roster guard and skill overwrite warning (#867)
diberry Apr 7, 2026
6ba4572
test: add integration tests for watch capabilities (#709) (#868)
diberry Apr 7, 2026
9f1e574
fix(docs): re-initialize search after Astro View Transitions (#856)
diberry Apr 7, 2026
dde77f6
fix(test): Docker skip guards + flaky test stabilization (#677) (#857)
diberry Apr 7, 2026
d785408
docs: add contributor-to-core-team PR handoff process (#902)
diberry Apr 8, 2026
bda2d07
ci: skip prerelease version guard on insider branch (#903)
diberry Apr 8, 2026
05e51e9
ci: remove fork-added workflows not in ralph/test/publish (#940)
diberry Apr 11, 2026
5db4988
docs: update CONTRIBUTING.md for spam protection (#952)
diberry Apr 11, 2026
5c4629b
docs: optimize personal squad docs for git-first usage (#955)
diberry Apr 11, 2026
dfb3589
docs: coordinator compaction recovery and restraint rules (#953)
diberry Apr 11, 2026
6bc32ac
docs: add cross-links between related documentation pages (#956)
diberry Apr 11, 2026
cf8ffdc
fix: import skills to .copilot/skills/ instead of .ai-team/skills/ (#…
bradygaster Apr 11, 2026
56c1067
Persist sidebar scroll position across navigation (#877)
sturlath Apr 11, 2026
768b7af
docs: deprecate REPL/interactive shell references, redirect to Copilo…
diberry Apr 11, 2026
3579a23
fix: inject CURRENT_DATETIME into all spawn templates (#960)
tamirdresher Apr 12, 2026
bd919af
docs: fix broken skill reference in mcp-config.md (#954)
diberry Apr 12, 2026
c16a84b
fix(cast): pass repo root to LocalAgentSource instead of .squad/ dir …
diberry Apr 12, 2026
2dabcea
fix(coordinator): add routing enforcement refusal rule (#890)
diberry Apr 12, 2026
238c5db
fix(watch): detect rate-limit errors instead of reporting Board is cl…
diberry Apr 12, 2026
f50bbc8
fix(cli): replace hardcoded state lists with dynamic directory scan (…
diberry Apr 12, 2026
a69c527
fix(sdk): Teams adapter — encode channelId, icacls warning, integrati…
diberry Apr 12, 2026
85a3146
fix(sdk): eliminate shell injection vectors in scheduler and state ba…
diberry Apr 12, 2026
b41dde6
feat(watch): external capability loading + PID tracker (#918, #921) (…
tamirdresher Apr 12, 2026
e49d9c9
fix: squad init no longer runs git init in subdirectory; az CLI Windo…
karlismea Apr 12, 2026
3918605
fix(docs): re-initialize search after Astro View Transitions (#712) (…
bradygaster Apr 12, 2026
419babe
fix: address post-merge review findings (#876, #900, #875) (#963)
bradygaster Apr 12, 2026
ec19f5e
fix(sdk): Teams adapter token security + migration guide (#906)
diberry Apr 12, 2026
8449a77
fix: monorepo subfolder support — never run git init (#939)
tamirdresher Apr 14, 2026
21587fb
fix: replace obsolete --message flag with -p across watch and loop (#…
tamirdresher Apr 17, 2026
5f9ccb9
Emphasize human-led productivity in docs (#989)
IEvangelist Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .changeset/audit-onboarding-skill-guards.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Add defensive guards from architecture audit: (1) verify roster is populated after team creation before dispatching to coordinator, preventing empty-roster dispatch loops; (2) warn when `squad upgrade` overwrites customized built-in skills
17 changes: 17 additions & 0 deletions .changeset/builtin-skills.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@bradygaster/squad-cli": minor
---

Ship 8 built-in skills with squad init/upgrade (#788)

New skills distributed automatically on `squad init` and `squad upgrade`:
- **error-recovery** — graceful failure handling patterns
- **secret-handling** — credential safety and secrets management
- **git-workflow** — branch management and commit conventions
- **session-recovery** — checkpoint and recovery patterns
- **reviewer-protocol** — code review gate patterns
- **test-discipline** — test-first discipline and coverage
- **agent-collaboration** — multi-agent handoff patterns
- **squad-conventions** — (already shipped, now part of curated set)

All skills are squad-owned (`overwriteOnUpgrade: true`) and update on upgrade.
12 changes: 12 additions & 0 deletions .changeset/cleanup-ceremony.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-cli": minor
---

Add cleanup watch capability for stale file housekeeping (#791)

- New `cleanup` capability in the `housekeeping` phase
- Clears `.squad/.scratch/` (all ephemeral temp files)
- Archives orchestration-log and session-log entries older than 30 days
- Warns about stale decision inbox files (>7 days)
- Configurable: `everyNRounds` (default: 10), `maxAgeDays` (default: 30)
- 12 new tests
8 changes: 8 additions & 0 deletions .changeset/contamination-guard.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
---

ci: add PR contamination prevention guard

New diff-guard CI check warns when single-commit PRs touch 30+ files
(likely branch contamination). Updated copilot-instructions with branch
creation and staging safety rules.
5 changes: 5 additions & 0 deletions .changeset/dynamic-state-discovery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Replace hardcoded state artifact lists with dynamic directory scanning in externalize/internalize, preventing silent orphaning when new `.squad/` artifacts are added.
9 changes: 9 additions & 0 deletions .changeset/external-capability-loading.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@bradygaster/squad-cli': minor
---

feat(watch): load external WatchCapabilities from .squad/capabilities/

Users can now define custom watch capabilities as .js files in `.squad/capabilities/`.
Each file default-exports a WatchCapability object (name, phase, preflight, execute).
Capabilities are loaded at watch startup and participate in the normal phase-based round cycle.
16 changes: 16 additions & 0 deletions .changeset/external-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
"@bradygaster/squad-sdk": minor
"@bradygaster/squad-cli": minor
---

Add external state storage — move .squad/ out of the working tree (#792)

- New `stateLocation: 'external'` option in `.squad/config.json`
- `resolveExternalStateDir()` resolves state under the platform-specific global Squad directory (`resolveGlobalSquadPath()`)
- `deriveProjectKey()` generates a stable key from the repo path (cross-platform)
- `resolveSquadPaths()` honors external state location
- `squad externalize` moves state out, `squad internalize` moves it back
- State survives branch switches, invisible to `git status`, never pollutes PRs
- Thin `.squad/config.json` marker stays in repo (gitignored)
- Path traversal protection on projectKey
- 12 new tests
12 changes: 12 additions & 0 deletions .changeset/fact-checker-agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-sdk": minor
"@bradygaster/squad-cli": minor
---

Add fact-checker as a built-in agent role (#789)

- New `fact-checker` role in the engineering role catalog (emoji: 🔍, category: quality)
- Charter template at `templates/fact-checker-charter.md` with verification methodology
- Added to `AGENT_TEMPLATES` for init scaffolding
- Template manifest entry for init/upgrade distribution
- Routing patterns: fact-check, verify, validate, audit, double-check, hallucination, devil's advocate
5 changes: 5 additions & 0 deletions .changeset/fix-cast-base-path.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Passes repo root to LocalAgentSource instead of .squad/ dir, preventing a double-nested .squad/.squad/agents/ lookup. In remote mode, passes paths.teamDir (team repo root) so agents are discovered from the correct location.
5 changes: 5 additions & 0 deletions .changeset/fix-changelog-gate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Fix changelog-gate CI to accept .changeset/ files as alternative to direct CHANGELOG.md edits
11 changes: 11 additions & 0 deletions .changeset/fix-copilot-message-flag.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
'@bradygaster/squad-cli': patch
'@bradygaster/squad-sdk': patch
---

Fix obsolete --message flag in watch and loop commands

Replace `--message` with `-p` across all watch capabilities and loop command.
Use `copilot` directly on Windows to avoid .cmd console window issues,
fall back to `gh copilot` on other platforms. Fix TOKEN_PATH typo in
comms-teams.ts (pre-existing bug from #906).
7 changes: 7 additions & 0 deletions .changeset/fix-detect-squad-dir-zero-deps.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@bradygaster/squad-cli": patch
---

fix(cli): revert detect-squad-dir to zero-dependency bootstrap

The StorageProvider refactor (26047dc5) accidentally converted this bootstrap utility from raw node:fs to FSStorageProvider. This file runs before the SDK is loaded and must not depend on @bradygaster/squad-sdk. Adds regression guard test.
5 changes: 5 additions & 0 deletions .changeset/fix-doctor-casting-upgrade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Fix squad doctor and upgrade for insiders installs: add .squad/casting/ to ENSURE_DIRECTORIES, scaffold casting defaults from templates with permission-safe fallback, and clarify ESM warnings for global installs.
12 changes: 12 additions & 0 deletions .changeset/fix-nap-archival-budget.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-cli": patch
---

fix(nap): account for separator newlines in decision archival budget

The budget calculation in archiveDecisions() did not account for the newline
separators added during content reassembly. This caused the final recentContent
to exceed DECISION_THRESHOLD even after archival. Fix adds reassemblyOverhead
and per-entry separator bytes to the budget calculation.

Closes #123
9 changes: 9 additions & 0 deletions .changeset/fix-nap-subprocess-cwd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@bradygaster/squad-cli": patch
---

fix(cli): wire --team-root / SQUAD_TEAM_ROOT into squad resolution for nap, status, and cost commands (#734)

Commands that resolve .squad/ now respect the SQUAD_TEAM_ROOT env var (set by --team-root flag),
fixing subprocess invocations (e.g. Copilot CLI bang commands) where process.cwd() differs from
the interactive shell. Also improves the nap error message to show the searched directory.
5 changes: 5 additions & 0 deletions .changeset/fix-onboarding-mode-bail.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-cli": patch
---

fix: CLI no longer bails when configured is false; starts onboarding session instead (#843)
5 changes: 5 additions & 0 deletions .changeset/fix-roster-sync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-sdk': patch
---

Sync squad.agent.md roster when agents added to team.md
6 changes: 6 additions & 0 deletions .changeset/fix-silent-agent-md-skip.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@bradygaster/squad-cli': patch
'@bradygaster/squad-sdk': patch
---

Warn when squad.agent.md template is missing during upgrade or init instead of silently skipping file creation. Adds `warnings` field to `InitResult` for structured error reporting.
5 changes: 5 additions & 0 deletions .changeset/fix-team-root-all-commands.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Extend SQUAD_TEAM_ROOT to all resolveSquad() call sites for subprocess compatibility
8 changes: 8 additions & 0 deletions .changeset/fix-triage-label-slug.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@bradygaster/squad-sdk': patch
'@bradygaster/squad-cli': patch
---

Fix triage label slug derivation: use `slugify()` instead of `toLowerCase()` so multi-word agent names produce valid GitHub labels (e.g. "Steve Rogers" → `squad:steve-rogers` instead of `squad:steve rogers`).

Pre-create all `squad:{member}` labels at watch startup via `ensureTag()` so `gh issue edit --add-label` never fails on missing labels.
5 changes: 5 additions & 0 deletions .changeset/fleet-dispatch-hybrid.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@bradygaster/squad-cli": minor
---

Add /fleet hybrid dispatch mode for squad watch --execute (#775) — enables parallel issue analysis via Copilot CLI /fleet, 2.9x faster than sequential dispatch for read-heavy work
17 changes: 17 additions & 0 deletions .changeset/git-state-backends.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@bradygaster/squad-sdk": minor
"@bradygaster/squad-cli": minor
---

feat(sdk): git-notes + orphan-branch state backends for .squad/

Adds two git-native state storage backends as alternatives to the worktree
and external directory approaches:

- **git-notes** (`refs/notes/squad`): State stored in git notes ref. Survives
branch switches, invisible in diffs and PRs.
- **orphan-branch** (`squad-state`): Dedicated orphan branch with no common
ancestor. State files never appear in main.

Configure via `.squad/config.json`: `{ "stateBackend": "git-notes" }` or
the `--state-backend` CLI flag.
8 changes: 8 additions & 0 deletions .changeset/init-upgrade-parity-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
---

test: add init/upgrade/doctor parity test suite

7 tests verifying that init and upgrade produce equivalent scaffolding.
Guards against drift where new init features (like casting) are not
mirrored in upgrade.
9 changes: 9 additions & 0 deletions .changeset/loop-command.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
"@bradygaster/squad-cli": minor
---

feat(cli): Add `squad loop` command — prompt-driven continuous work loop

New `squad loop` command reads a `loop.md` file and runs it as a continuous work loop.
No GitHub issues required — the prompt is the work driver. Includes `--init` to scaffold
a boilerplate loop file, frontmatter validation, and composable capability flags.
17 changes: 17 additions & 0 deletions .changeset/manifest-driven-skills.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
"@bradygaster/squad-sdk": patch
"@bradygaster/squad-cli": patch
---

fix: use TEMPLATE_MANIFEST to drive skill installation instead of wholesale directory copy

Both sdkInitSquad() and syncAllSkills() previously copied the entire templates/skills/
directory, ignoring the curated 8-skill subset declared in TEMPLATE_MANIFEST.
This meant all 37+ template skills shipped on every init/upgrade, and
overwriteOnUpgrade was never consulted.

Now both code paths iterate TEMPLATE_MANIFEST entries:
- init (SDK): only the 8 manifest skills are copied on first init
- upgrade (CLI): syncAllSkills() reads manifest entries, respects overwriteOnUpgrade

Fixes #833
8 changes: 8 additions & 0 deletions .changeset/monorepo-subfolder-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@bradygaster/squad-cli": patch
"@bradygaster/squad-sdk": patch
---

fix: monorepo subfolder support — never run git init (#939)

When `squad init` runs in a subfolder of a monorepo, place `.github/agents/squad.agent.md` at the git root and `.squad/` in the subfolder. Never run `git init`.
9 changes: 9 additions & 0 deletions .changeset/pid-tracker-cleanup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@bradygaster/squad-cli': patch
---

fix(watch): track child process PIDs and cleanup orphans on exit

Prevents MCP server process leaks during long-running watch sessions.
Tracks PIDs of spawned copilot sessions, kills them on exit/crash,
and cleans up stale orphans from previous crashed runs on startup.
13 changes: 13 additions & 0 deletions .changeset/quiet-notifications.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"@bradygaster/squad-cli": minor
---

Add `--notify-level` to control watch round reporting noise (#803)

- `--notify-level important` (default): only print rounds with actual work items
- `--notify-level all`: print every round including empty (old behavior)
- `--notify-level none`: suppress all round output
- Add machine name (`os.hostname()`) and repo name to round headers for attribution
(shown in round headers when the board has items, and in "Board is clear" message)
- Configurable via `.squad/config.json` watch section: `"notifyLevel": "important"`
- Empty rounds silenced by default — no more "Round 160, Round 161" spam
7 changes: 7 additions & 0 deletions .changeset/readiness-file-list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
---

ci: add file list with line stats to PR readiness comment

The PR readiness bot now shows changed files with per-file addition/deletion
counts, scope classification (Product/Infrastructure/Mixed), and totals.
8 changes: 8 additions & 0 deletions .changeset/readiness-rerun.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
---

ci: re-run PR readiness check after Squad CI completes

Added workflow_run trigger to the readiness check so it refreshes after
CI finishes. Uses PR API for draft status instead of env var (more reliable
for workflow_run events). Includes 3 new draft-override tests.
5 changes: 5 additions & 0 deletions .changeset/review-findings-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

fix: address post-merge review findings — catch unknown narrowing and deprecation warnings for start/rc commands
8 changes: 8 additions & 0 deletions .changeset/scope-boundary-check.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
---

ci: scope boundary enforcement for repo-health PRs

New CI check that fails repo-health PRs if they modify product source
code under packages/*/src/. Enforces separation between infrastructure
and product changes.
10 changes: 10 additions & 0 deletions .changeset/scratch-dir-utility.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@bradygaster/squad-sdk": minor
---

Add `.squad/.scratch/` directory for organized temp file management (#790)

- `scratchDir()` — resolve and optionally create the scratch directory
- `scratchFile()` — create named temp files inside `.scratch/`
- Init scaffolds `.squad/.scratch/` and adds it to `.gitignore`
- Agents and CLI should use these utilities instead of writing temp files to repo root
12 changes: 12 additions & 0 deletions .changeset/self-upgrade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@bradygaster/squad-cli": minor
---

Add `squad upgrade --self` to upgrade the CLI package itself (#798)

- `squad upgrade --self` → installs `@bradygaster/squad-cli@latest` (stable)
- `squad upgrade --self --insider` → installs `@bradygaster/squad-cli@insider` (prerelease)
- After self-upgrade, automatically continues with repo upgrade to apply new templates
- Detects package manager (npm/pnpm/yarn) from npm_config_user_agent
- Clear error on permission denied (suggests sudo or npx)
- Help text updated with new flags
12 changes: 12 additions & 0 deletions .changeset/shell-injection-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
'@bradygaster/squad-sdk': patch
---

Eliminate shell injection vectors in scheduler and state backend

- Replace all `execSync` calls with `execFileSync` using explicit argv arrays (no shell interpretation)
- Refactor git helper functions to accept `string[]` instead of space-delimited strings
- Add `validateTaskRef()` for scheduler script refs (rejects null bytes, newlines)
- Add `validateStateKey()` for state backend keys (rejects null bytes, newlines, tabs, path traversal)
- Validate script task refs at manifest parse time (defense-in-depth)
- Add security-focused tests for both scheduler and state backend
5 changes: 5 additions & 0 deletions .changeset/skill-security-scanner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Add markdown-aware skill security scanner (Phase 1) to security-review.mjs. Scans .copilot/skills and .squad/skills markdown files for embedded credentials, download-and-execute patterns, and privilege escalation commands. Includes fenced code block suppression, inline code span suppression, and placeholder token detection. Zero false positives on existing 35 skill files.
8 changes: 8 additions & 0 deletions .changeset/smart-pr-nudge.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
---

ci: add smart PR nudge for stale PRs

New workflow that runs on weekdays and posts actionable diagnoses on PRs
stale for 7+ days. Checks CI status, unresolved threads, missing reviews,
outdated branches, and draft status. Won't nudge the same PR twice per week.
5 changes: 5 additions & 0 deletions .changeset/start-tunnel-node-pty.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-cli': patch
---

Validate node-pty availability before side effects in squad start --tunnel
8 changes: 8 additions & 0 deletions .changeset/subprocess-integration-tests.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
---

test: add Copilot CLI subprocess integration tests for SQUAD_TEAM_ROOT

8 tests covering SQUAD_TEAM_ROOT env-var resolution, fallback to cwd,
and resolveSquad() integration. Guards against subprocess working directory
bugs in Copilot CLI bang commands.
5 changes: 5 additions & 0 deletions .changeset/teams-adapter-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-sdk': patch
---

Teams adapter: encode channelId in deep-link URL, log warning on icacls failure, add integration tests
5 changes: 5 additions & 0 deletions .changeset/teams-adapter-security.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@bradygaster/squad-sdk': patch
---

Teams adapter token security: tenant-scoped token cache (keyed by tenant ID hash), explicit logout() for session teardown, 15-minute device-code timeout guard, stale token cleanup on permanent auth errors, per-instance user ID cache. Migration guide for async createCommunicationAdapter change.
Loading
Loading