Skip to content

feat: Issue Assignment & Auto-Triage for Squad Members#5

Merged
bradygaster merged 2 commits intobradygaster:mainfrom
spboyer:feature/issue-assignment-triage
Feb 10, 2026
Merged

feat: Issue Assignment & Auto-Triage for Squad Members#5
bradygaster merged 2 commits intobradygaster:mainfrom
spboyer:feature/issue-assignment-triage

Conversation

@spboyer
Copy link
Copy Markdown
Contributor

@spboyer spboyer commented Feb 10, 2026

Summary

Adds label-based issue assignment and auto-triage for squad members, enabling GitHub Issues to be routed to specific squad agents for automated work.

Closes #4

Changes

New Workflow Templates (templates/workflows/)

  • sync-squad-labels.yml — Reads .ai-team/team.md roster and auto-creates/updates squad:{name} labels via GitHub API. Triggers on push to team.md or manual dispatch.
  • squad-triage.yml — Triggered when squad label is added to an issue. Lead agent triages the issue, assigns the correct squad:{member} label, and comments with triage notes.
  • squad-issue-assign.yml — Triggered when squad:{member} label is added. Acknowledges assignment and queues for the member's next Copilot session.

Init Script (index.js)

  • Copies workflow templates to .github/workflows/ during init (additive — skips existing files)
  • Overwrites workflow files during upgrade

Coordinator Prompt (squad.agent.md)

  • Added Issue Awareness section: coordinator checks for open squad:{member} issues at session start
  • Proactively mentions pending issues to the user
  • Documents triage routing flow

Routing Template (templates/routing.md)

  • Added issue routing table and rules for squad and squad:{member} labels

Documentation (README.md)

  • New "Issue Assignment & Triage" section with workflow descriptions, label conventions, and prerequisites
  • Updated upgrade description to mention workflow files

Tests

  • 5 new tests for workflow copy during init/upgrade
  • Fixed 2 existing tests that broke when templates/workflows/ subdirectory was added (they tried to readFileSync on a directory)
  • All 33 tests pass

Label Scheme

Label Purpose
squad Triage inbox — Lead reviews and assigns
squad:{name} Assigned to a specific squad member

How It Works

  1. Squad init installs 3 workflow files + creates labels from the team roster
  2. User adds squad label to an issue → Lead triages and assigns squad:{member}
  3. Member picks up the issue in their next Copilot session
  4. Members can reassign by swapping labels

- Add 3 GitHub Actions workflow templates (sync-squad-labels, squad-triage, squad-issue-assign)

- Update index.js to copy workflow files during init/upgrade

- Update coordinator prompt with issue awareness at session start

- Update routing template with issue routing rules

- Update README with issue assignment documentation

- Add 5 new tests for workflow copy functionality

Closes bradygaster#4
- Keep upstream v0.2.0 What's New section alongside our Issue Assignment section in README

- Restore test/index.test.js (deleted upstream) with our workflow tests

- Fix upgrade tests to simulate older version (upstream added version-check short-circuit)
@bradygaster bradygaster merged commit 931f711 into bradygaster:main Feb 10, 2026
chilipadi added a commit to chilipadi/squadro-5 that referenced this pull request Mar 8, 2026
Add a new "Mambo bradygaster#5" universe inspired by the Lou Bega song, featuring 7 characters each mapped to development roles:

- Monica (Lead) - "A little bit of Monica in my life"
- Erica (Developer) - "A little bit of Erica by my side"
- Rita (Tester/Reviewer) - "A little bit of Rita is all I need"
- Tina (Prompt Engineer/Scribe) - "A little bit of Tina is what I see"
- Sandra (Designer/DevRel) - "A little bit of Sandra in the sun"
- Mary (Security) - "A little bit of Mary can move my data safely"
- Jessica (DevOps) - "A little bit of Jessica is what I need"

Changes:
- Added "Mambo bradygaster#5" to allowlist_universes in all casting policy templates
- Set universe capacity to 7 (matching the song's characters)
- Added character definitions with themed personalities and backstories
- Updated UniverseId type to include 'mambo-five'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chilipadi added a commit to chilipadi/squadro-5 that referenced this pull request Mar 8, 2026
Add a new "Mambo bradygaster#5" universe inspired by the Lou Bega song, featuring 7 characters each mapped to development roles:

- Monica (Lead) - "A little bit of Monica in my life"
- Erica (Developer) - "A little bit of Erica by my side"
- Rita (Tester/Reviewer) - "A little bit of Rita is all I need"
- Tina (Prompt Engineer/Scribe) - "A little bit of Tina is what I see"
- Sandra (Designer/DevRel) - "A little bit of Sandra in the sun"
- Mary (Security) - "A little bit of Mary can move my data safely"
- Jessica (DevOps) - "A little bit of Jessica is what I need"

Changes:
- Added "Mambo bradygaster#5" to allowlist_universes in all casting policy templates
- Set universe capacity to 7 (matching the song's characters)
- Added character definitions with themed personalities and backstories
- Updated UniverseId type to include 'mambo-five'

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
chilipadi added a commit to chilipadi/squadro-5 that referenced this pull request Mar 8, 2026
Sync changes from original Squad repository (upstream) including:
- v0.8.24 release with ADO adapter, CommunicationAdapter, SubSquads
- Azure DevOps platform adapter for enterprise
- CommunicationAdapter for platform-agnostic agent-human communication
- Workstreams renamed to SubSquads
- Security hardening and ESM runtime fixes
- Various documentation improvements and bug fixes

This brings Squadro-5 up to date with upstream main branch while preserving
the Mambo bradygaster#5 universe additions.
chilipadi added a commit to chilipadi/squadro-5 that referenced this pull request Mar 8, 2026
Add a featured section highlighting the Mambo bradygaster#5 universe as Squadro-5's signature addition. The new section appears right after "What is Squadro-5?" and includes:

- Musical note emoji header for thematic consistency
- Positioning as the key differentiator for this fork
- Complete character roster with roles and song lyrics
- Playful closing line tying the theme together

This makes the Mambo bradygaster#5 universe immediately visible to README visitors, establishing Squadro-5 as a fun riff on the original Squad with the Lou Bega-inspired casting system as the star feature.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chilipadi added a commit to chilipadi/squadro-5 that referenced this pull request Mar 8, 2026
Add a featured section highlighting the Mambo bradygaster#5 universe as Squadro-5's signature addition. The new section appears right after "What is Squadro-5?" and includes:

- Musical note emoji header for thematic consistency
- Positioning as the key differentiator for this fork
- Complete character roster with roles and song lyrics
- Playful closing line tying the theme together

This makes the Mambo bradygaster#5 universe immediately visible to README visitors, establishing Squadro-5 as a fun riff on the original Squad with the Lou Bega-inspired casting system as the star feature.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
chilipadi added a commit to chilipadi/squadro-5 that referenced this pull request Mar 8, 2026
Add a featured section highlighting the Mambo bradygaster#5 universe as Squadro-5's signature addition. The new section appears right after "What is Squadro-5?" and includes:

- Musical note emoji header for thematic consistency
- Positioning as the key differentiator for this fork
- Complete character roster with roles and song lyrics
- Playful closing line tying the theme together

This makes the Mambo bradygaster#5 universe immediately visible to README visitors, establishing Squadro-5 as a fun riff on the original Squad with the Lou Bega-inspired casting system as the star feature.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chilipadi added a commit to chilipadi/squadro-5 that referenced this pull request Mar 9, 2026
Update the "What is Squadro-5?" section to properly attribute Squad as the original project. Squadro-5 is now clearly positioned as a fun fork with a single tongue-in-cheek addition (the Mambo bradygaster#5 universe) rather than claiming to be a new or superior product.

Changes:
- Add direct link to original Squad repository
- Clarify that Squad provides the core functionality
- Add humble closing: "No new features, no superiority claims — just a playful addition to an already great tool"
- Ensure proper attribution to Brady Gaster's original project

This maintains transparency about Squadro-5 being a playful tribute rather than an improvement upon the original Squad.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
jagilber referenced this pull request in jagilber/squad Mar 15, 2026
Subagent sessions can trigger context compaction but the coordinator
never subscribes to compaction events. The UI sees a 'busy' agent
with no indication of degraded state. Needs verification.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
jagilber referenced this pull request in jagilber/squad Mar 23, 2026
…compaction (#5)

Add 12 new RED tests proving two bugs exist:

- hung-agent-watchdog.test.ts (5 tests, 4 RED):
  spawnSingle() has no timeout on createSession — hangs forever.
  SessionPool health check doesn't detect stuck active sessions.
  Idle checker marks agents idle but doesn't abort hung operations.

- subagent-compaction.test.ts (7 tests, all RED):
  aggregateSessionEvents doesn't subscribe to compaction events.
  spawnSingle doesn't wire up event aggregation for spawned sessions.
  SquadEventType missing compaction event types.
  No per-agent context utilization tracking.

Fix vitest config: add deps.inline for @github/copilot-sdk and
resolve.alias for vscode-jsonrpc/node to fix ESM subpath resolution.
This unblocks 15 test files that previously couldn't load.

Update PR draft with new test counts and results.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
atuannguyen1101 pushed a commit to atuannguyen1101/squad that referenced this pull request Mar 24, 2026
Implements Sprint 2 self-improve pair (Issues bradygaster#2 and bradygaster#5).

## Proposals Pipeline (bradygaster#2)

- Risk classifier: classifyProposalRisk() categorizes proposals as
  auto-apply, surface-to-user, or needs-review based on category,
  priority, and target file sensitivity
- Auto-apply engine: safely appends content to existing files in
  safe paths (.squad/skills/, .squad/agents/, .copilot/skills/)
- Surface-to-user: formats proposals as pulse questions for human review
- Effectiveness tracking: records applied proposals in effectiveness.json,
  checks on next auto-sage run whether same detector fired again
- squad_proposals tool: new tool with create/list/update/apply operations
  added to ToolRegistry (6 tools total)

New file: packages/squad-sdk/src/mcp/proposal-pipeline.ts

## Ceremony Execution Engine (bradygaster#5)

- CeremonyRunner class: replaces simple dispatch with structured execution,
  builds role-appropriate prompts, collects responses, saves reports
- Retrospective ceremony: built-in type with classic retro template
  (what went well / what didn't / what to change), enhanced with pulse
  data, error summaries, and applied proposal effectiveness
- Manual trigger API: triggerCeremonyManually() for CLI/REPL use
- Ceremony reports saved to .squad/ceremonies/retros/{timestamp}.md

New files:
  packages/squad-sdk/src/server/ceremony-runner.ts
  packages/squad-sdk/src/server/ceremonies/retrospective.ts

## Integration

- Both systems are aware of each other: retrospectives review which
  proposals were applied and their effectiveness
- CeremonyConfig extended with type, trigger, and idleTimeoutMs fields
- All new types exported from package index and subpath exports
- No cron, no new dependencies, strict mode, ESM-only

## Tests

- 47 proposal pipeline tests (risk classifier, auto-apply, effectiveness)
- 28 ceremony runner tests (dispatch, prompts, reports, manual trigger)
- Updated existing tools.test.ts (56 tools)
- All 105 tests pass
joniba pushed a commit to joniba/squad that referenced this pull request Mar 26, 2026
Add two scripts for Teams watchdog daily execution (bradygaster#5):

- run-pipeline.ps1: Orchestrates probe → filter → extract → format
  via file-based I/O between steps. Stops on first failure.
- watchdog.ps1: Scheduling wrapper with lockfile, heartbeat file,
  structured logging, and consecutive failure alerting (≥3).
  Uses 24h scan window (not 48h) to avoid duplicate summaries.

Both scripts stay under 50 lines, composable by design.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
atuannguyen1101 pushed a commit to atuannguyen1101/squad that referenced this pull request Mar 29, 2026
…lti-run support

Implements foundational multi-run isolation architecture:

NEW FILES:
- packages/squad-sdk/src/mcp/run-context.ts: RunContext interface and RunContextManager for per-run state isolation (pulseCollector, intentGraph, pendingUserQuestions, activePipelines, waitResolvers)
- packages/squad-sdk/src/mcp/dispatch-utils.ts: DispatchSemaphore (max 1 concurrent sendAndWait) and safeSendAndWait wrapper with Promise.race + settled flag
- TODO-MULTI-RUN.md: Comprehensive implementation checklist and landmine documentation

MODIFIED FILES:
- packages/squad-sdk/src/server/agent-lifecycle.ts:
  * Added runId field to AgentSessionEntry and ActiveSessionInfo
  * Session keys now use format agentName::runId for isolation
  * Added makeSessionKey() helper function
  * Updated getOrCreateSession() to accept optional runId parameter
  * Updated dispatch() and sendFollowUp() to use safeSendAndWait + semaphore
  * Added closeRunSessions() for bulk session cleanup by runId
  * All session map operations now use composite keys

- packages/squad-sdk/src/mcp/server.ts:
  * Added RunContextManager import and instantiation
  * Creates RunContext on squad_run (currently tracked but not fully wired)

LANDMINES ADDRESSED:
- Landmine bradygaster#2 (sendAndWait timeout unreliable): Fixed with safeSendAndWait using Promise.race (90s timeout) + settled flag to prevent duplicate message pushes
- Landmine bradygaster#5 (concurrent sendAndWait stalls backend): Fixed with DispatchSemaphore limiting to 1 concurrent call
- Landmine bradygaster#4 (SessionPool.findByAgent name collisions): Avoided by using explicit session keys, not pool lookup

REMAINING WORK (Phase 2):
- Complete server.ts tool handler refactoring (squad_ask, squad_respond, squad_wait, squad_cancel all need runId parameters)
- Wire runId through waitForResponse and pipeline callbacks
- Implement auto-close sessions on pipeline completion
- Fix waitForDonePulse deadlock (landmine bradygaster#1)
- Update dashboard for run grouping (Phase 3)

Build:  Passes
Tests:  Pending (Phase 2 completion)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Issue Assignment & Auto-Triage for Squad Members

2 participants