Repository navigation
Description
Summary
Ralph's watch mode has platform abstraction (PlatformAdapter) and a working AzureDevOpsAdapter, but there's no way to use hybrid mode — where code lives on GitHub but work items live in Azure DevOps. The HybridPlatformConfig type exists in platform/types.ts but isn't wired into the watch loop.
Context
I'm evaluating Squad for a .NET CLI project where:
- Code is hosted on GitHub (
PolyphonyRequiem/twig) - Backlog is tracked in Azure DevOps (Epic → Issue → Task)
This is a common pattern in Microsoft-adjacent and enterprise teams — GitHub for source, ADO for project management.
What already works
The SDK has excellent platform abstractions:
PlatformAdapterinterface withlistWorkItems(),addTag(),addComment(), etc.AzureDevOpsAdapter— full implementation usingaz boardsCLIcreatePlatformAdapter()— auto-detects from git remote URLHybridPlatformConfigtype —{ repo: 'github', workItems: 'azure-devops' }detectWorkItemSource()— reads config to determine work item source- Watch loop already maps GitHub labels → ADO tags via
toWatchWorkItem()/editWorkItem()
What's missing
-
Watch loop doesn't use hybrid config.
createPlatformAdapter()returns a single adapter based on the git remote. The watch loop needs to use two adapters when hybrid mode is configured — one for PRs (GitHub) and one for work items (ADO). -
No config surface for hybrid mode. Users need a way to declare hybrid mode in
.squad/config.json:
json { "version": 1, "platform": { "repo": "github", "workItems": "azure-devops" }, "ado": { "org": "my-org", "project": "my-project", "defaultWorkItemType": "Issue" } } -
Triage tag format for ADO. The
squad:{member}label convention works as ADO tags (freeform strings), but this should be explicitly documented and tested.
Proposed approach
- In the watch loop, split the single
adapterintoworkItemAdapterandrepoAdapter - When
config.platform.workItems !== config.platform.repo, create two adapters listWatchWorkItems()andeditWorkItem()useworkItemAdapterlistWatchPullRequests()usesrepoAdapter- Default behavior (single platform) is unchanged — both point to the same adapter
Related
- fix: replace obsolete --message flag with -p in watch and loop #988 — Fixes core watch/loop execution bugs (prerequisite — watch doesn't work at all without these fixes)
- Bug: watch --execute fails — gh copilot --message is not a valid command #980 — Detailed bug report on watch execution issues
Environment
- Squad CLI: v0.9.1
- Platform: Windows 11
- Use case: .NET CLI project with GitHub repo + ADO backlog
Activity
PolyphonyRequiem commentedon Apr 16, 2026
One major reason this hybrid scenario exists is because Twig itself is an ADO work management tool, so it makes sense to dogfood work tracking in ADO with Twig to drive Twig development
bradygaster commentedon Jun 24, 2026
Closing candidate — stale issue with no activity in 4+ months and unclear current relevance. Reopen if this is still needed.
bradygaster commentedon Aug 3, 2026
Consolidating the hybrid GitHub/Azure DevOps scenario described here into the broader ADO PRD tracked by #581. All relevant context from this issue should be folded into that work item. Closing as not planned here.