Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# Changelog

## 0.8.0 — 2026-10-18

Fewer tokens in every Claude Code session: about 1.6k instead of 5.5–7k.

- Tool groups loaded on demand: a session starts with the core (`ado_status`, `ado_settings`, `ado_upgrade`,
`ado_work_item`, `ado_query`, `ado_search`, `ado_trace` and the new `ado_tools`), and Claude loads a group with
`ado_tools enable=write` (or `"write;boards"`) when the conversation needs it; the client is told about the new tools
(MCP `tools/list_changed`). Groups: `write`, `boards`, `wiki`, `code`, `tests`, `recipes`, `pr`, `pipelines`. The mode
says which groups may be loaded. Skills and prompts load the groups they use.
- `adolens config --tool-loading auto|demand|all` (or *Tools at start* in the settings menu). `auto`, the default: on
demand in Claude Code; every group of the mode at start in other clients (Claude Desktop), which may not take new
tools during a conversation. `demand`: on demand everywhere. `all`: everything at start.
- Tool sets renamed to groups: `work` → `write`, `trace` → `code`, `test` → `tests` (old names in the settings still work).
- Shorter descriptions of `ado_update`, `ado_create` and `ado_pr_update`.
- Pull request tags (labels): `ado_pr_update action=tag tags="R349; -old"`, tags when creating a PR, and tags shown in
PR lists, details and merged PRs.
- Product Owner mode: no pull request or pipeline tools and no developer prompts (`dev_*`); they stay in the dev and
full modes.

## 0.7.3 — 2026-10-16

Fixes from a real question: "pull requests merged into staging after release X, with their work items and tags".
Expand Down
41 changes: 25 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@ adolens config # show settings
adolens config --connection contoso --project Demo --team "Demo Team"
adolens config --default-connection fabrikam
adolens config --mode dev # po | dev | full
adolens config --add-toolset pipelines # one more tool set on top of the mode
adolens config --add-toolset pipelines # one more tool group on top of the mode
adolens config --tool-loading auto # auto | demand | all: when tool groups are loaded
adolens config --confirm-above 3 # updates of more items are previewed first (0: always)
adolens config --usage-log false
adolens config --show-tokens true # end every answer with [~N tokens]
Expand Down Expand Up @@ -168,24 +169,32 @@ staging → UAT, master → PROD). Claude asks the user once how they call these

Settings live in `%LOCALAPPDATA%\ado-lens\adolens.json` (no secrets) — they can be edited by hand too.

### Modes and tool sets
### Modes and tool groups

A mode only chooses which tools Claude sees: fewer tools mean better choices and fewer tokens in every session. It is
never a permission.
Every tool definition costs tokens in every session, so a session starts with a small core (about 1.5k tokens) and
Claude loads a group with `ado_tools enable=<group>` when the conversation needs it — a question about the sprint
loads `boards`, a new story loads `write`. The skills and prompts load what they use. A mode only chooses which groups
may be loaded; it is never a permission (the PAT decides).

| Tool set | Tools | po | dev | full |
| Group | Tools | po | dev | full |
|---|---|:-:|:-:|:-:|
| `core` | `ado_status`, `ado_settings`, `ado_upgrade`, `ado_fields` | ✓ | ✓ | ✓ |
| `work` | `ado_work_item`, `ado_query`, `ado_create`, `ado_update`, `ado_comment`, `ado_link`, `ado_search`, `ado_undo`, `ado_attachments`, `ado_create_tree` | ✓ | ✓ | ✓ |
| `pr` | `ado_pr_update` | – | ✓ | ✓ |
| `pipelines` | `ado_pipeline_run` | – | ✓ | ✓ |
| `boards` | `ado_sprint`, `ado_board`, `ado_backlog`, `ado_my_day`, `ado_health`, `ado_release_notes`, `ado_metrics` | ✓ | – | ✓ |
| `core` (always) | `ado_status`, `ado_settings`, `ado_upgrade`, `ado_tools`, `ado_work_item`, `ado_query`, `ado_search`, `ado_trace` | ✓ | ✓ | ✓ |
| `write` | `ado_fields`, `ado_create`, `ado_update`, `ado_comment`, `ado_link`, `ado_create_tree`, `ado_undo` | ✓ | ✓ | ✓ |
| `boards` | `ado_sprint`, `ado_board`, `ado_backlog`, `ado_my_day`, `ado_health`, `ado_metrics`, `ado_release_notes` | ✓ | – | ✓ |
| `wiki` | `ado_wiki`, `ado_wiki_write` | ✓ | ✓ | ✓ |
| `trace` | `ado_trace`, `ado_changes`, `ado_file`, `ado_label`, `ado_review`, `ado_pr`, `ado_pipeline` | ✓ | ✓ | ✓ |
| `code` | `ado_changes`, `ado_file`, `ado_label`, `ado_review`, `ado_attachments` | ✓ | ✓ | ✓ |
| `tests` | `ado_tests`, `ado_test_create` | ✓ | – | ✓ |
| `recipes` | `ado_recipe` | ✓ | ✓ | ✓ |
| `test` | `ado_tests`, `ado_test_create` | ✓ | – | ✓ |
| `test`, `recipes` | planned | ✓ | (recipes) | ✓ |
| `code` | planned | – | ✓ | ✓ |
| `pr` | `ado_pr`, `ado_pr_update` | – | ✓ | ✓ |
| `pipelines` | `ado_pipeline`, `ado_pipeline_run` | – | ✓ | ✓ |

`adolens config --add-toolset <group>` allows one more group on top of the mode. When groups are loaded is
`adolens config --tool-loading` (or *Tools at start* in the settings menu):

- `auto` (default): on demand in Claude Code, which takes new tools during a conversation; every group of the mode
at start in other clients, Claude Desktop among them (about 6–7k tokens), so nothing is missing there;
- `demand`: on demand in every client (about 1.3k tokens at start) — for a client known to take new tools;
- `all`: every group of the mode at start everywhere.

## Tool map

Expand Down Expand Up @@ -342,7 +351,7 @@ regular expression per line, `!word` for allowed words. Without a list the relea

| File | What it checks |
|---|---|
| `SetupTests.cs` | settings, connections and PAT order (Credential Manager first), command line, Claude configuration edits, Credential Manager, HTTP retries and errors, tool definition budget per mode |
| `SetupTests.cs` | settings, connections and PAT order (Credential Manager first), command line, Claude configuration edits, Credential Manager, HTTP retries and errors, tool definition budget at start and per mode, the session core, tool groups |
| `MetadataTests.cs` | fetching the structure (levels, inherited process name, bugs on the requirement backlog), change history, compact `ado_fields` answers |
| `BoardTests.cs` | sprint progress, capacity left with days off, attention list, picking sprints, ended sprints, board columns and WIP, moving cards with the state mapping, backlog order and reordering, my day |
| `SetupFlowTests.cs` | release versions and packages for updates, the team's wiki table (round trip, hand-edited pages), detecting the flow from releases and branches, the team map on the wiki with its version, local map over the team's |
Expand Down Expand Up @@ -375,7 +384,7 @@ issues or commits.
| rich text | `Html.cs` |
| people | `Identities.cs` |
| connections, PAT, Claude registration | `Settings.cs`, `CredentialStore.cs`, `ClaudeConfigs.cs`, `Cli.cs` |
| modes and tool sets | `Toolsets.cs` |
| modes and tool groups, loading them | `Toolsets.cs`, `ToolGroups.cs` |
| HTTP, retries, errors | `AdoClient.cs` |

Documentation is bilingual: every change to `README.md` goes to `README.pl.md` in the same commit.
Expand Down
41 changes: 25 additions & 16 deletions README.pl.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,8 @@ adolens config # pokaż ustawienia
adolens config --connection contoso --project Demo --team "Demo Team"
adolens config --default-connection fabrikam
adolens config --mode dev # po | dev | full
adolens config --add-toolset pipelines # dodatkowy zestaw narzędzi ponad tryb
adolens config --add-toolset pipelines # dodatkowa grupa narzędzi ponad tryb
adolens config --tool-loading auto # auto | demand | all: kiedy ładować grupy narzędzi
adolens config --confirm-above 3 # zmiany większej liczby elementów najpierw jako podgląd (0: zawsze)
adolens config --usage-log false
adolens config --show-tokens true # każda odpowiedź kończy się [~N tokens]
Expand Down Expand Up @@ -169,24 +170,32 @@ staging → UAT, master → PROD). Claude raz pyta użytkownika, jak nazywa te

Ustawienia siedzą w `%LOCALAPPDATA%\ado-lens\adolens.json` (bez sekretów) — można je też edytować ręcznie.

### Tryby i zestawy narzędzi
### Tryby i grupy narzędzi

Tryb wybiera tylko, które narzędzia widzi Claude: mniej narzędzi to trafniejszy wybór i mniej tokenów w każdej sesji.
Nigdy nie jest uprawnieniem.
Każda definicja narzędzia kosztuje tokeny w każdej sesji, więc sesja startuje z małym rdzeniem (ok. 1,5 tys. tokenów),
a Claude dociąga grupę przez `ado_tools enable=<grupa>`, gdy rozmowa jej potrzebuje — pytanie o sprint ładuje `boards`,
nowa historyjka `write`. Skille i prompty same ładują to, czego używają. Tryb wybiera tylko, które grupy wolno załadować;
nigdy nie jest uprawnieniem (o tym decyduje PAT).

| Zestaw | Narzędzia | po | dev | full |
| Grupa | Narzędzia | po | dev | full |
|---|---|:-:|:-:|:-:|
| `core` | `ado_status`, `ado_settings`, `ado_upgrade`, `ado_fields` | ✓ | ✓ | ✓ |
| `work` | `ado_work_item`, `ado_query`, `ado_create`, `ado_update`, `ado_comment`, `ado_link`, `ado_search`, `ado_undo`, `ado_attachments`, `ado_create_tree` | ✓ | ✓ | ✓ |
| `pr` | `ado_pr_update` | – | ✓ | ✓ |
| `pipelines` | `ado_pipeline_run` | – | ✓ | ✓ |
| `boards` | `ado_sprint`, `ado_board`, `ado_backlog`, `ado_my_day`, `ado_health`, `ado_release_notes`, `ado_metrics` | ✓ | – | ✓ |
| `core` (zawsze) | `ado_status`, `ado_settings`, `ado_upgrade`, `ado_tools`, `ado_work_item`, `ado_query`, `ado_search`, `ado_trace` | ✓ | ✓ | ✓ |
| `write` | `ado_fields`, `ado_create`, `ado_update`, `ado_comment`, `ado_link`, `ado_create_tree`, `ado_undo` | ✓ | ✓ | ✓ |
| `boards` | `ado_sprint`, `ado_board`, `ado_backlog`, `ado_my_day`, `ado_health`, `ado_metrics`, `ado_release_notes` | ✓ | – | ✓ |
| `wiki` | `ado_wiki`, `ado_wiki_write` | ✓ | ✓ | ✓ |
| `trace` | `ado_trace`, `ado_changes`, `ado_file`, `ado_label`, `ado_review`, `ado_pr`, `ado_pipeline` | ✓ | ✓ | ✓ |
| `code` | `ado_changes`, `ado_file`, `ado_label`, `ado_review`, `ado_attachments` | ✓ | ✓ | ✓ |
| `tests` | `ado_tests`, `ado_test_create` | ✓ | – | ✓ |
| `recipes` | `ado_recipe` | ✓ | ✓ | ✓ |
| `test` | `ado_tests`, `ado_test_create` | ✓ | – | ✓ |
| `test`, `recipes` | w planie | ✓ | (recipes) | ✓ |
| `code` | w planie | – | ✓ | ✓ |
| `pr` | `ado_pr`, `ado_pr_update` | – | ✓ | ✓ |
| `pipelines` | `ado_pipeline`, `ado_pipeline_run` | – | ✓ | ✓ |

`adolens config --add-toolset <grupa>` dopuszcza jeszcze jedną grupę ponad tryb. Kiedy ładować grupy, ustawia
`adolens config --tool-loading` (albo *Narzędzia na start* w menu ustawień):

- `auto` (domyślnie): na żądanie w Claude Code, który przyjmuje nowe narzędzia w trakcie rozmowy; w innych klientach,
także w Claude Desktop, wszystkie grupy trybu od startu (ok. 6–7 tys. tokenów), żeby niczego tam nie brakowało;
- `demand`: na żądanie w każdym kliencie (ok. 1,3 tys. tokenów na start) — dla klienta, o którym wiadomo, że przyjmuje nowe narzędzia;
- `all`: wszystkie grupy trybu od startu wszędzie.

## Mapa narzędzi

Expand Down Expand Up @@ -342,7 +351,7 @@ i publikuje go razem z `.sha256` i opisem z `CHANGELOG.md` (podgląd: `.\release

| Plik | Co sprawdza |
|---|---|
| `SetupTests.cs` | ustawienia, połączenia i kolejność PAT (najpierw Menedżer poświadczeń), linia poleceń, edycja konfiguracji Claude'a, Menedżer poświadczeń, ponawianie i błędy HTTP, budżet definicji narzędzi na tryb, faktyczna rejestracja narzędzi |
| `SetupTests.cs` | ustawienia, połączenia i kolejność PAT (najpierw Menedżer poświadczeń), linia poleceń, edycja konfiguracji Claude'a, Menedżer poświadczeń, ponawianie i błędy HTTP, budżet definicji narzędzi na start i na tryb, rdzeń sesji, grupy narzędzi |
| `MetadataTests.cs` | pobieranie struktury (poziomy, nazwa procesu dziedziczonego, bugi na backlogu wymagań), historia zmian, zwięzłe odpowiedzi `ado_fields` |
| `BoardTests.cs` | postęp sprintu, pozostała pojemność z dniami wolnymi, lista do uwagi, wybór sprintu, zakończone sprinty, kolumny tablicy i WIP, przesuwanie kart z mapowaniem stanów, kolejność backlogu i jej zmiana, mój dzień |
| `SetupFlowTests.cs` | wersje i paczki wydań do aktualizacji, tabela zespołu na wiki (w obie strony, strony poprawiane ręcznie), wykrywanie przepływu z release'ów i gałęzi, mapa zespołu na wiki z wersją, mapa lokalna ponad zespołową |
Expand Down Expand Up @@ -375,7 +384,7 @@ organizacji do testów, zgłoszeń ani commitów.
| tekst sformatowany | `Html.cs` |
| osoby | `Identities.cs` |
| połączenia, PAT, rejestracja w Claude | `Settings.cs`, `CredentialStore.cs`, `ClaudeConfigs.cs`, `Cli.cs` |
| tryby i zestawy narzędzi | `Toolsets.cs` |
| tryby i grupy narzędzi, ich ładowanie | `Toolsets.cs`, `ToolGroups.cs` |
| HTTP, ponawianie, błędy | `AdoClient.cs` |

Dokumentacja jest w dwóch językach: każdą zmianę w `README.md` trzeba odzwierciedlić w `README.pl.md` w tym samym commicie.
Expand Down
4 changes: 3 additions & 1 deletion packaging/inno/ado-lens.iss
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
#ifndef OutDir
#define OutDir "..\..\dist"
#endif
; The file version is numbers only: 0.8.0 for a test release 0.8.0-beta.1.
#define FileVersion Copy(Version, 1, Pos("-", Version + "-") - 1)

[Setup]
AppId={{6F1C2B9E-4D7A-4E21-9B8C-3A5D0E7F1A42}
Expand Down Expand Up @@ -45,7 +47,7 @@ LicenseFile={#Source}\LICENSE
; Users choose: Polish or English (the choice is kept for the settings console too).
ShowLanguageDialog=yes
CloseApplications=no
VersionInfoVersion={#Version}
VersionInfoVersion={#FileVersion}

[Languages]
Name: "en"; MessagesFile: "compiler:Default.isl"
Expand Down
2 changes: 2 additions & 0 deletions skills/dev-build/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: Diagnoses a failed build or release for a developer - the failing s

# A red build

First load the tools this needs: `ado_tools enable="code;pipelines"` (one call; skip it when they are already there).

## Steps

1. `ado_pipeline` (recent runs; `definition` / `branch` to narrow) → the failed run; `ado_pipeline build=<id>` for the
Expand Down
2 changes: 2 additions & 0 deletions skills/dev-pr/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: Writes a pull request description from its work item, or reviews a

# Pull requests

First load the tools this needs: `ado_tools enable="code;pr"` (one call; skip it when they are already there).

## Writing a description (work item given)

1. `ado_work_item ids=<id>` for the goal and criteria; `ado_changes` of the branch's commits or the PR for what
Expand Down
2 changes: 2 additions & 0 deletions skills/dev-start/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ description: Starts a developer's work on a work item - what is asked (criteria

The reader is a developer: technical and short - objects, methods, paths, ids.

First load the tools this needs: `ado_tools enable="code;write"` (one call; skip it when they are already there).

## Steps

1. `ado_work_item ids=<id> include=comments` and its parent (for a task the criteria are there); specifications,
Expand Down
2 changes: 2 additions & 0 deletions skills/dev-why/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ description: Explains why a piece of code is the way it is - the history of a fi

# Why the code is like this

First load the tools this needs: `ado_tools enable="code"` (one call; skip it when they are already there).

## Steps

1. `ado_file path=<file or object name> history=true` - changes newest first, with pull requests and work items.
Expand Down
2 changes: 2 additions & 0 deletions skills/po-explain/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ description: Explains how a feature works and why it works that way, in business
The reader is a Product Owner or a business user: answer in plain language, in the language the user writes in.
Technical names (objects, methods, files) only in brackets, or when asked for "details".

First load the tools this needs: `ado_tools enable="code;wiki"` (one call; skip it when they are already there).

## Steps

1. `ado_search text=<feature in the user's words>` — work items, wiki pages and code at once. Try a second wording
Expand Down
2 changes: 2 additions & 0 deletions skills/po-refine/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ description: Prepares backlog refinement for a Product Owner - what is not ready

The reader is a Product Owner: plain language, in the user's language; ids in brackets.

First load the tools this needs: `ado_tools enable="write;boards;code"` (one call; skip it when they are already there).

## Steps

1. `ado_health` (the team's open backlog) — items without acceptance criteria, description, estimate or parent,
Expand Down
2 changes: 2 additions & 0 deletions skills/po-sprint/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ description: Summarizes a sprint or a period for a Product Owner and stakeholder
The reader is a Product Owner or a stakeholder: plain business language, in the user's language; ids and technical
names only in brackets.

First load the tools this needs: `ado_tools enable="boards;wiki"` (one call; skip it when they are already there).

## How is the sprint going

1. `ado_sprint` (the team's current sprint; `sprint=next|previous|<name>` when asked). If the sprint has ended, say so
Expand Down
2 changes: 2 additions & 0 deletions skills/po-story/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ description: Writes a work item for a Product Owner - a requirement (user story,
The reader of the item is a developer and a tester; the writer is a Product Owner. Goal: after reading it, everyone
knows what to do and how to check it — nothing more. Write in the language the user writes in.

First load the tools this needs: `ado_tools enable="write"` (one call; skip it when they are already there).

## Steps

1. Find out what is needed — ask only what is missing, at most 3 short questions at once:
Expand Down
2 changes: 2 additions & 0 deletions skills/po-test/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ description: Writes acceptance test cases from a work item's acceptance criteria

Plain language, in the user's language; steps a business tester can follow on UAT.

First load the tools this needs: `ado_tools enable="tests;code"` (one call; skip it when they are already there).

## Steps

1. `ado_work_item ids=<id>` — the acceptance criteria (from the parent for a task). No criteria: look at the
Expand Down
2 changes: 2 additions & 0 deletions skills/po-verify/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ description: Checks whether a work item was done as asked and where the change i
The reader is a Product Owner, not a developer: answer in plain business language, in the language the user writes in.
Technical names (objects, methods, files, ids of commits) only in brackets or when asked for "details".

First load the tools this needs: `ado_tools enable="code;write"` (one call; skip it when they are already there).

## Steps

1. `ado_trace id=<id>` — what was asked (acceptance criteria), what code is linked, builds, where it is deployed, signals.
Expand Down
2 changes: 2 additions & 0 deletions skills/po-wiki/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ description: Writes or updates a documentation page on the project wiki for a Pr
Write for the people who will read the page (users, testers, new colleagues): plain language, in the language the
wiki is written in (look at its other pages), short sections, examples.

First load the tools this needs: `ado_tools enable="wiki;code;boards"` (one call; skip it when they are already there).

## Steps

1. Facts first:
Expand Down
2 changes: 1 addition & 1 deletion src/AdoLens/AdoLens.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<AssemblyTitle>ADO Lens for Azure DevOps</AssemblyTitle>
<Description>Azure DevOps (work items, boards, wiki, Git and TFVC, pipelines) served to AI assistants over MCP</Description>
<Copyright>Copyright © 2026 WillowDev</Copyright>
<Version>0.7.3</Version>
<Version>0.8.0</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Loading