Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
207adaa
fix: getPersonalSquadRoot() returns correct personal-squad path (#590…
bradygaster Mar 26, 2026
dfc0a59
fix: add count-based fallback to archiveDecisions() (#626) (#627)
bradygaster Mar 26, 2026
c10abb6
fix: rename template copies to prevent CLI instruction merging (#613)…
bradygaster Mar 26, 2026
4a878b7
docs: TypeDoc API reference — build pipeline, tests, navigation (#611)
diberry Mar 26, 2026
a696b02
fix: platform-neutral routing enforcement for VS Code (#613) (#617)
bradygaster Mar 26, 2026
d4d9248
chore(prompts): update model catalog to current platform offerings (#…
bradygaster Mar 26, 2026
a9c06b0
feat(skills): add notification-routing skill -- pub-sub channel routi…
tamirdresher Mar 26, 2026
5bc9612
Revise security policy with reporting and disclosure info (#608)
eric-vanartsdalen Mar 26, 2026
2d8eeb1
chore(squad): crash recovery complete — 10 PRs merged, 3 dupes closed
Copilot Mar 26, 2026
e3cfcd5
chore: remove leaked test fixture, gitignore .test-setup-* and .test-…
Copilot Mar 26, 2026
fd1a49a
chore: repo root cleanup — remove one-off publish scripts, export art…
Copilot Mar 26, 2026
3e688ec
fix(ci): remove deprecated --exclude-mail flag from lychee link checker
Copilot Mar 26, 2026
49a196b
feat(cli): add squad config model command for model pinning (#618) (#…
bradygaster Mar 26, 2026
28ea025
docs(squad): log mega triage session
Copilot Mar 26, 2026
1ab2f5c
fix(docs): fix broken link to tour-github-issues.md in tour-first-ses…
Copilot Mar 26, 2026
8017c31
docs(squad): log #631 investigation session
bradygaster Mar 26, 2026
f5769ca
Revert "fix(docs): fix broken link to tour-github-issues.md in tour-f…
bradygaster Mar 26, 2026
ac3dafe
Revert "fix(docs): fix broken link to tour-github-issues.md in tour-f…
bradygaster Mar 26, 2026
cf843b8
fix(ci): add deletion guard and source tree canary check (#631)
bradygaster Mar 26, 2026
1700cbe
fix(security): add git safety rules to copilot-instructions.md (#631)
bradygaster Mar 26, 2026
30148bd
docs(squad): close #631 incident response — revert, CI guards, git sa…
bradygaster Mar 26, 2026
d1b9c13
Merge PR #634: CI deletion guard and source tree canary
bradygaster Mar 26, 2026
328e1df
Merge PR #635: Add git safety rules to copilot-instructions.md
bradygaster Mar 26, 2026
27e272c
fix(scribe): add HARD GATE archival with two-tier thresholds to Scrib…
Copilot Mar 26, 2026
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
6 changes: 6 additions & 0 deletions .changeset/notification-routing-skill.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@bradygaster/squad-cli": minor
"@bradygaster/squad-sdk": minor
---

feat: add notification-routing skill for pub-sub channel routing
85 changes: 56 additions & 29 deletions .github/agents/squad.agent.md

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,35 @@

You are working on a project that uses **Squad**, an AI team framework. When picking up issues autonomously, follow these guidelines.

## Git Safety — Mandatory Rules

**These rules are non-negotiable. Violating them risks deleting production source code.**

### Staging
- ❌ **NEVER** use `git add .` or `git add -A` — these stage unintended deletions from incomplete working trees
- ❌ **NEVER** use `git commit -a` — same risk
- ✅ **ALWAYS** stage specific files: `git add path/to/file1.ts path/to/file2.ts`
- ✅ **ALWAYS** review before committing: run `git diff --cached --stat` and verify the file count matches your intent

### Pushing
- ❌ **NEVER** push directly to `dev` or `main` — always open a PR
- ❌ **NEVER** force push (`git push --force` or `--force-with-lease`) to shared branches
- ✅ **ALWAYS** work on a feature branch: `git checkout -b squad/{issue-number}-{slug}`
- ✅ **ALWAYS** open a PR: `gh pr create --base dev --draft`

### Pre-Push Checklist
Before pushing any commit, verify:
1. `git diff --cached --stat` — file count matches intent (expect ≤10 files for most fixes)
2. `git diff --cached --diff-filter=D --name-only` — NO unintended deletions
3. `npm run build` — build succeeds with your changes
4. Commit message references the issue: `Closes #N`

### Red Flags — STOP and Ask
If you see any of these, STOP immediately and comment on the issue asking for guidance:
- More than 20 files in your diff
- ANY file deletions you didn't explicitly intend
- Changes outside the scope of your assigned issue

## Team Context

Before starting work on any issue:
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/squad-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,43 @@ jobs:
- name: Install Playwright browsers
run: npx playwright install chromium --with-deps

- name: "🔒 Source tree canary check"
run: |
echo "Verifying critical source files exist..."
MISSING=0
for f in \
"packages/squad-sdk/src/index.ts" \
"packages/squad-cli/src/cli/index.ts" \
"packages/squad-sdk/package.json" \
"packages/squad-cli/package.json"; do
if [ ! -f "$f" ]; then
echo "::error::MISSING critical file: $f"
MISSING=$((MISSING + 1))
fi
done
if [ $MISSING -gt 0 ]; then
echo "::error::$MISSING critical source files missing — possible accidental deletion"
exit 1
fi
echo "✅ All critical source files present"

- name: "🔒 Large deletion guard"
if: github.event_name == 'pull_request'
run: |
DELETED=$(git diff --diff-filter=D --name-only origin/${{ github.base_ref }}...HEAD | wc -l)
echo "Files deleted in this PR: $DELETED"
if [ "$DELETED" -gt 50 ]; then
echo "::error::This PR deletes $DELETED files (threshold: 50). If intentional, add the 'large-deletion-approved' label."
LABELS=$(gh pr view ${{ github.event.pull_request.number }} --json labels --jq '.labels[].name' 2>/dev/null || echo "")
if echo "$LABELS" | grep -q "large-deletion-approved"; then
echo "✅ Large deletion approved via label"
else
exit 1
fi
fi
env:
GH_TOKEN: ${{ github.token }}

- name: Build
run: npm run build

Expand Down
1 change: 0 additions & 1 deletion .github/workflows/squad-docs-links.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ jobs:
args: >-
--verbose
--no-progress
--exclude-mail
--timeout 30
--max-retries 3
--accept 200..=299,403,429
Expand Down
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,14 @@ coverage/
.squad/decisions/inbox/
.squad/sessions/
.squad/config.json
.test-cli-*
# Test temp dirs (created in cwd by vitest tests, cleaned in afterEach)
.test-*
# Docs site generated files
docs/dist/
docs/src/content/docs/reference/api/

# Docs test screenshots (local verification only)
docs/tests/screenshots/
# Squad: SubSquad activation file (local to this machine)
.squad-workstream
.squad/.first-run
Expand Down
4 changes: 4 additions & 0 deletions .squad-templates/scribe-charter.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
- `.squad/decisions.md` — the shared decision log all agents read (canonical, merged)
- `.squad/decisions/inbox/` — decision drop-box (agents write here, I merge)
- Cross-agent context propagation — when one agent's decision affects another
- Decision archival — **HARD GATE**: enforce two-tier ceiling on decisions.md before every merge:
- **Tier 1 (30-day):** If >20KB, archive entries older than 30 days
- **Tier 2 (7-day):** If still >50KB after Tier 1, archive entries older than 7 days
- Emit HEALTH REPORT to session log after archival runs

## How I Work

Expand Down
Loading
Loading