Sync and search Azure DevOps work items and wiki pages for AI agents
Project description
ado-search
Sync and search Azure DevOps work items and wiki pages locally for AI agents.
Install
pip install ado-search
Or from source:
pip install git+https://github.com/HurleySk/ado-search.git
Quick Start
# Configure (requires az login first)
ado-search init --org https://dev.azure.com/yourorg --project YourProject
# Pull data
ado-search sync
# Search
ado-search search "login bug"
ado-search search "auth" --type Bug --state Active
ado-search search "setup guide" --format paths
How It Works
- Sync pulls work items and wiki pages from Azure DevOps
- Tries OData analytics first (fetches all items in one call — fast)
- Falls back to az devops CLI if analytics isn't available
- Data is stored as sorted JSONL files — git-friendly, diffable, one file per entity type
- A SQLite FTS5 index is derived from the JSONL and auto-rebuilt when stale
- Agents search the index, then use
showto render full content — minimal context
Git-Friendly Storage
Sync produces two text files that are safe to commit, push, and pull:
work-items.jsonl— one JSON object per line, sorted by IDwiki-pages.jsonl— one JSON object per line, sorted by path
The SQLite index (index.db) is .gitignored — it auto-rebuilds from JSONL on first search or show.
Synced Fields
Each work item includes: id, title, type, state, area, iteration, assigned_to, tags, priority, parent_id, created, updated, description, acceptance_criteria, story_points, and state_history (state transitions with timestamps).
Story points are sourced from StoryPoints or Effort fields. State history tracks every state change (e.g., New → Active → Resolved → Closed) with date and author.
Commands
| Command | Description |
|---|---|
ado-search init |
Configure organization, project, and auth |
ado-search sync |
Pull latest data from Azure DevOps |
ado-search search "query" |
Full-text search with filters |
ado-search show <id> |
Display full content of an item |
Configuration
Default sync includes Bug, User Story, Epic, and Feature work item types. To include Tasks or customize:
# .ado-search/config.toml
[sync]
work_item_types = ["Bug", "User Story", "Task", "Epic", "Feature"]
include_comments = false
Auth Methods
- az-cli (default): Uses
az devopscommands. Requiresaz login. - az-powershell: Uses Azure PowerShell + REST. Requires
Connect-AzAccount. - pat: Uses a Personal Access Token via REST. For cross-cloud or service account scenarios.
Set via ado-search init --auth-method <method> or in config.toml.
# PAT example (token can also be set via ADO_PAT env var)
ado-search init --org https://dev.azure.com/yourorg --project YourProject --auth-method pat --pat <token>
Search Formats
ado-search search "query" # compact (default)
ado-search search "query" --format detail # with description snippets
ado-search search "query" --format json # machine-readable
ado-search search "query" --format paths # file paths only (for agent piping)
ado-search search "query" --type Bug --state Active # filtered
Prerequisites
- Python 3.10+
- Azure CLI with
azure-devopsextension (az extension add --name azure-devops) az logincompleted
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ado_search-0.7.0.tar.gz.
File metadata
- Download URL: ado_search-0.7.0.tar.gz
- Upload date:
- Size: 35.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cd85487d3554c88c00080c1f3b294cabf2cebb78859b5c142352e45d81f56dc
|
|
| MD5 |
050d9110acea0dc001f5ac957464318e
|
|
| BLAKE2b-256 |
79c5fdc5ccf3adb19b28044029f2fb18ff87a4149a8c5ad1776360f97166e345
|
Provenance
The following attestation bundles were made for ado_search-0.7.0.tar.gz:
Publisher:
publish.yml on HurleySk/ado-search
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ado_search-0.7.0.tar.gz -
Subject digest:
7cd85487d3554c88c00080c1f3b294cabf2cebb78859b5c142352e45d81f56dc - Sigstore transparency entry: 1294837712
- Sigstore integration time:
-
Permalink:
HurleySk/ado-search@2a37dd86ea0ff0980949173d9cc0cacc85ed873e -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/HurleySk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2a37dd86ea0ff0980949173d9cc0cacc85ed873e -
Trigger Event:
push
-
Statement type:
File details
Details for the file ado_search-0.7.0-py3-none-any.whl.
File metadata
- Download URL: ado_search-0.7.0-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b2f2723dad7b9300bc1395e544073052f409e75ecc474fe48871403fdebe3da
|
|
| MD5 |
4f2852af8a15e4f6912a1739d70ae7f5
|
|
| BLAKE2b-256 |
694cd8ad7884fd22380be4eaa80e525b30adbe7eb8a463cce088362a17296d1b
|
Provenance
The following attestation bundles were made for ado_search-0.7.0-py3-none-any.whl:
Publisher:
publish.yml on HurleySk/ado-search
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ado_search-0.7.0-py3-none-any.whl -
Subject digest:
4b2f2723dad7b9300bc1395e544073052f409e75ecc474fe48871403fdebe3da - Sigstore transparency entry: 1294837771
- Sigstore integration time:
-
Permalink:
HurleySk/ado-search@2a37dd86ea0ff0980949173d9cc0cacc85ed873e -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/HurleySk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2a37dd86ea0ff0980949173d9cc0cacc85ed873e -
Trigger Event:
push
-
Statement type: