Echolot - Azure DevOps PR Review Extension
Fast, AI-powered pull request reviews for Azure DevOps with T-shirt sizing and automated worktree management.
How it works
- Uses your Azure CLI login to request Azure DevOps PAT tokens on demand; no PATs are stored in settings.
- Talks to Azure DevOps REST APIs to list PRs, pull metadata, and sync review decisions.
- Manages isolated
git worktree checkouts per PR so you keep your main clone clean.
- Caches repo mappings locally so PRs from other projects can be opened without recloning.
- Runs entirely inside VS Code; no external services or data collection beyond Azure DevOps calls.
Features
- 🔍 Auto-fetch active PRs assigned to you from Azure DevOps
- 📏 T-shirt sizing (XS-XL) with color-coded badges based on lines changed
- 🌳 Automated git worktree management for isolated PR review
- 📝 Review Templates for consistent feedback
- ⚠️ Large PR warnings before creating worktrees for complex reviews
- 🎯 Smart filtering by size, status, and labels
- ⚡ Virtual scrolling for performance with large PR lists
- 🔔 Desktop notifications for new PRs (optional)
- 📊 Export reviews to JSON for reporting
- ⚙️ Automated cleanup with configurable policies
- 🔗 Work item integration showing linked items in PR details
Prerequisites
- Azure CLI (
az) - For authentication (Install)
- Git (v2.20+) - For worktree operations
- VS Code (1.80.0+) - Extension host
- Azure DevOps organization & project with Git repositories
- Single-repository workspace - One Git repo per VS Code window
Installation
- Install from VS Code Marketplace (search "Echolot")
- Reload VS Code
- The setup wizard will guide you through configuration
Quick Start
First-Time Setup
- Open a folder containing your Azure DevOps Git repository
- Echolot will detect missing configuration and launch the setup wizard
- Follow the steps:
- Authenticate with Azure CLI (
az login)
- Enter your organization name (e.g., "contoso")
- Select project(s) to monitor
- Choose worktree parent directory
- Click "Save & Continue"
Daily Workflow
- Open the Echolot sidebar (PR icon in Activity Bar)
- View your assigned PRs with size indicators
- Click a PR to create a worktree and open in new window
- Review code, view diffs, check linked work items
- Click "Approve" or "Reject" with optional notes
- Review syncs to Azure DevOps automatically
Worktree lifecycle
- Echolot creates a dedicated worktree per PR under your configured parent directory.
- When you close or finish a review, you can trigger cleanup from the command palette to remove the worktree safely.
- Auto-cleanup prompts prevent accidental deletion of in-progress work.
Configuration
Configure Echolot via VS Code settings (Ctrl+, → Extensions → Echolot):
| Setting |
Type |
Default |
Description |
echolot.organization |
string |
required |
Azure DevOps organization name |
echolot.projects |
array |
required |
Project names to monitor |
echolot.worktreeParentPath |
string |
parent of workspace |
Where to create PR worktrees |
echolot.repoMappings |
object |
{} |
Auto-managed map of "Project/Repository" → absolute path. Updated whenever you point Echolot to a repo outside the root. |
echolot.autoCleanupWorktrees |
enum |
prompt |
Cleanup policy: prompt/auto/never |
echolot.refreshInterval |
number |
300 |
Auto-refresh interval (60-3600 seconds) |
echolot.sortBy |
enum |
updatedDate |
Sort PRs by: updatedDate/createdDate |
echolot.showNotifications |
boolean |
true |
Show desktop notifications |
echolot.logLevel |
enum |
INFO |
Log level: DEBUG/INFO/WARN/ERROR |
Authentication & permissions
- Requires Azure CLI sign-in; Echolot reuses your CLI context.
- Needs Azure DevOps access to Git repositories and PRs in the selected projects.
- If your org enforces conditional access, ensure VS Code inherits the same network/device policies.
Working with multiple repositories
- When a PR targets a repository that isn’t the current workspace, Echolot immediately prompts you to pick the local clone folder.
- Your selection is stored in
echolot.repoMappings, so subsequent PRs from the same project reuse the saved path automatically.
- Stored mappings can be edited from VS Code Settings (
repoMappings) if you ever move repositories.
Keyboard Shortcuts
| Shortcut |
Action |
Ctrl+Shift+R |
Refresh pull requests |
Ctrl+Shift+E |
Focus PR view |
Enter (on PR) |
Open PR in worktree |
Commands
Echolot: Open PR in Worktree - Create worktree and open new window
Echolot: Refresh Pull Requests - Manually refresh PR list
Echolot: Show PR Details - Open PR detail webview
Echolot: Cleanup Worktree - Remove worktree for completed review
Echolot: Run Setup Wizard - Reconfigure extension
Echolot: Toggle Sort Order - Switch between date sorting
Echolot: Filter by Size - Filter PRs by size (XS-XL)
Echolot: Filter by Status - Filter PRs by status
Echolot: Export Reviews to JSON - Export review history
Status bar and notifications
- Status bar item shows current project context and last refresh time.
- Desktop notifications can be toggled per setting; they only include PR titles and IDs.
PR Size Categories
Echolot categorizes PRs based on total lines changed (added + deleted):
- XS (<50 lines) - 🟢 Green
- S (50-200 lines) - 🔵 Blue
- M (200-500 lines) - 🟡 Yellow
- L (500-1000 lines) - 🟠 Orange
- XL (>1000 lines) - 🔴 Red
Large PRs (L/XL) show a warning dialog before worktree creation.
Troubleshooting
"Azure CLI not found"
Install Azure CLI from https://aka.ms/InstallAzureCLI and ensure az is in your PATH.
"Azure authentication expired"
Run az login in terminal to re-authenticate.
"No workspace folder open"
Echolot requires an open folder. Use File → Open Folder.
"Multiple Git repositories detected"
Echolot supports single-repository workspaces only. Close extra folders.
"No Azure DevOps remote found"
Ensure your repository is hosted on Azure DevOps (dev.azure.com or visualstudio.com).
Network timeouts
Check your network connection. Echolot automatically retries transient errors with exponential backoff.
Worktree conflicts
- If a worktree already exists for a PR, Echolot reuses it and will not clobber local changes.
- If Git reports stale worktrees, run
git worktree prune in your repo, then retry.
Missing PRs
- Ensure the workspace uses the same remote URL as the Azure DevOps repo (dev.azure.com or visualstudio.com).
- Verify filters: size/status filters may hide PRs; clear filters from the PR view toolbar.
Development Status
Version: 0.1.0 (Beta)
✅ Completed
- Project structure and build configuration
- Core utilities (logger, retry handler, debounce, validation)
- Data models (PullRequest, Config, Worktree, Review)
- Workspace validation service
- Azure CLI authentication service
- Setup wizard
- Azure DevOps client
- TreeView provider
- Worktree manager
- PR detail webview
- Review sync service
- Status bar integration
- Extension activation
- Gherkin/Cucumber test suite
- Review Templates
- Virtual Scroll
- Multi-repository worktree resolution (prompted repo path mappings)
🚧 In Progress
- CI/CD pipeline
- Marketplace assets (screenshots, demo GIF)
📋 Planned
- Documentation and guides
- Advanced AI insights
Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Submit a pull request
License
MIT License - see LICENSE file for details
Support
Echolot - Fast pull request reviews for Azure DevOps