feat(skills): add notification-routing skill -- pub-sub channel routing to prevent alert fatigue#625
Conversation
chore: promote dev to main (docs dark mode fix)
… routing for agent notifications
… routing for agent notifications
🔍 Squad Team ReviewReviewed by: Procedures (Prompt Architect) — Pass 3 of consensus ceremony Review SummaryThis PR implements notification-routing improvements, a feature-class change that enables custom routing of system notifications based on skill category and urgency. Process NotePer our team's documented proposal-first policy (.squad/decisions.md): "Meaningful changes require a proposal in docs/proposals/ before execution." This is a feature-class change that needs a proposal document before merge. What's Needed
Thank you for the contribution! The implementation looks solid — we just need the process alignment. 🙏 ⏸️ Action: HOLD — awaiting proposal + retarget to dev |
bradygaster
left a comment
There was a problem hiding this comment.
FIDO Quality Review — PR #625: notification-routing skill
Verdict: ✅ MERGE
Findings
✅ Changeset package names correct: Uses @bradygaster/squad-cli and @bradygaster/squad-sdk — this is the only Tamir PR that gets this right.
✅ File paths correct: Files placed in packages/squad-cli/templates/skills/notification-routing/SKILL.md and packages/squad-sdk/templates/skills/notification-routing/SKILL.md — matches project conventions.
✅ SKILL.md format: Frontmatter has all required fields (name, description, domain, confidence, source). Has Context, Patterns, and Anti-Patterns sections per template.
✅ Additive: No breaking changes, no modifications to existing files beyond the changeset.
✅ Target branch: dev — correct for feature work.
Minor notes (non-blocking):
- Missing trailing newline at end of both SKILL.md files
- No explicit
Examplessection (template has one), but patterns section includes inline examples
Good contribution. Clean and well-structured.
Round 1 (Audit & Baseline): - Flight audited PR/issue state after CLI crash - FIDO verified baseline: 5,038 tests passing, dev green - Scribe merged stale decision inbox Round 2 (Execution): - Flight closed duplicate PRs #605, #604, #602 - Procedures rebased & merged PR #619 (model catalog) - FIDO reviewed 9 community PRs: approved 3, change-requested 6 Round 3 (Community Merges): - Coordinator merged 3 approved community PRs (#625, #603, #608) Outcomes: - 10 PRs merged total (6 merge-plan, 3 community, 1 legacy) - 3 PRs closed as duplicates - 6 PRs awaiting author changes - Dev green: 5,038 tests passing - All 6 original merge-plan PRs complete - Decision inbox merged & deleted Artifacts: - Orchestration logs for Flight, Procedures, FIDO - Session log: 2026-03-26T06:41:00Z-crash-recovery.md - Team history updated (Flight, FIDO, Procedures) - Decisions merged to decisions.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ng (bradygaster#624, bradygaster#625) (bradygaster#629) * fix: suppress ExperimentalWarning in SDK subprocesses (bradygaster#624) Add NODE_NO_WARNINGS=1 env var as first executable line in cli-entry.ts. This propagates to child processes spawned by the Copilot SDK, preventing SQLite ExperimentalWarning from leaking into the terminal via subprocess stderr forwarding. The existing process.emitWarning override is kept as belt-and-suspenders for the main process. Closes bradygaster#624 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: remove redundant 'squad init' messaging in first-run experience (bradygaster#625) - Remove duplicate init guidance from firstRunElement empty-roster branch (banner already handles this case) - Reword banner to prioritize /init (in-shell path) over exit-and-run - firstRunElement now only renders for roster-present first-run onboarding Closes bradygaster#625 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: add tests for bradygaster#624 and bradygaster#625 first-run fixes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ster#626, bradygaster#627) (bradygaster#630) * fix: simplify banner text and tighten layout (bradygaster#626, bradygaster#627) - Simplify empty-roster message to single /init CTA (remove dual-path confusion) - Standardize usage line with middle-dot separators and punchier copy - Remove unnecessary spacer between roster/init and usage line Closes bradygaster#626 Closes bradygaster#627 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: add banner simplification tests (bradygaster#626, bradygaster#627) - 5 new tests in 'Banner simplification (bradygaster#626, bradygaster#627)' describe block - Verify single /init CTA (no dual-path 'squad init') - Verify middle-dot separators in usage line - Verify concise 'Type naturally' prefix - Verify 'Ctrl+C to exit' formatting - Verify no redundant spacers between roster and usage line - Update bradygaster#625 test to align with new single-CTA behavior Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: update Hockney history with bradygaster#626/bradygaster#627 test learnings Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) * chore(squad): crash recovery complete — 10 PRs merged, 3 dupes closed Round 1 (Audit & Baseline): - Flight audited PR/issue state after CLI crash - FIDO verified baseline: 5,038 tests passing, dev green - Scribe merged stale decision inbox Round 2 (Execution): - Flight closed duplicate PRs #605, #604, #602 - Procedures rebased & merged PR #619 (model catalog) - FIDO reviewed 9 community PRs: approved 3, change-requested 6 Round 3 (Community Merges): - Coordinator merged 3 approved community PRs (#625, #603, #608) Outcomes: - 10 PRs merged total (6 merge-plan, 3 community, 1 legacy) - 3 PRs closed as duplicates - 6 PRs awaiting author changes - Dev green: 5,038 tests passing - All 6 original merge-plan PRs complete - Decision inbox merged & deleted Artifacts: - Orchestration logs for Flight, Procedures, FIDO - Session log: 2026-03-26T06:41:00Z-crash-recovery.md - Team history updated (Flight, FIDO, Procedures) - Decisions merged to decisions.md Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: remove leaked test fixture, gitignore .test-setup-* and .test-init-scaffold-* consult.test.ts creates .test-setup-{hash}/ dirs in cwd and init-scaffolding.test.ts creates .test-init-scaffold-{hash}/ dirs. If tests crash before afterEach cleanup, these get left behind. One .test-setup-* dir was accidentally committed and tracked. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: repo root cleanup — remove one-off publish scripts, export artifact, consolidate .gitignore Removed: - publish-0.8.21.ps1, publish-0.8.22.ps1 (version-pinned one-off release helpers) - PUBLISH-README.md (companion to publish scripts) - squad-export.json (generated export snapshot, not needed in repo) .gitignore: Consolidated 3 specific .test-* patterns into single .test-* glob to cover all 15+ test artifact naming patterns that create temp dirs in cwd. Also pruned 3 dead git worktrees (squad-337, squad-348, squad-356). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(cli): add squad config model command for model pinning (#618) Add a new 'squad config' CLI command with 'model' subcommand that lets users manage model configuration: - squad config model — show current model config - squad config model <name> — set default model for all agents - squad config model <name> --agent <a> — pin model to specific agent - squad config model --clear — clear default model override - squad config model --clear --agent <a> — clear agent override Validates model names against MODEL_CATALOG and agent names against the .squad/agents/ directory. Uses existing SDK functions for all config read/write operations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: add @latest to npm install commands in cli.js and package README (#597) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Adds the
notification-routingskill — a pub-sub channel routing pattern for agent notifications.This is an "earned" skill: battle-tested from running 8+ Ralph instances in production where a single notification channel became unusable due to alert fatigue.
Problem
When a Squad grows beyond a few agents, notifications flood a single channel:
This is the microservices equivalent of dumping every service's logs into one file.
Solution
Pub-sub topic routing — the same principle as Kafka topics, RabbitMQ routing keys, and AWS SNS topic filtering:
.squad/teams-channels.json— config mapping notification types to channel names/IDsCHANNEL:tag convention — agents prefix output with the target channel typeWhat's Included
packages/squad-cli/templates/skills/notification-routing/SKILL.mdpackages/squad-sdk/templates/skills/notification-routing/SKILL.md.changeset/notification-routing-skill.mdDesign Principles
.squad/file architectureRelated