Ogólny serwer MCP dla Azure DevOps (następca Tiberriver w codziennej pracy — dla deweloperów i dla PO) z trybami
pracy dopasowanymi do roli. Tryb PO pomaga w work itemach, tablicy, sprintach i wiki, a przede wszystkim w
weryfikacji, czy zrobiono to, o co proszono, i w wyjaśnianiu, jak działa funkcjonalność. Tryb dev daje PR-y,
pipeline'y, kod, Git i TFVC. Zbudowany na wzór xpp-lens / tfvc-explorer-mcp: jeden plik adolens.exe
(.NET 9, self-contained), instalator, samoaktualizacja, rejestracja w Claude Desktop i Claude Code, CLI z tymi samymi
poleceniami co MCP.
Nazewnictwo
| Gdzie | Forma |
|---|---|
| nazwa produktu (README, instalator, „Aplikacje” w Windows, Claude) | ADO Lens — podtytuł „for Azure DevOps”, wydawca WillowDev |
| repozytorium GitHub | willowdev-code/ado-lens |
| plik wykonywalny / polecenie CLI | adolens.exe / adolens |
| nazwa serwera MCP w Claude | ado-lens |
| narzędzia MCP | ado_* (np. ado_work_item, ado_trace) |
| kod .NET | solucja AdoLens.sln, projekt i przestrzeń nazw AdoLens |
| folder instalacji / danych | %LOCALAPPDATA%\Programs\ADO Lens / %LOCALAPPDATA%\ado-lens |
| instalator / paczka | ADOLens-Setup-X.Y.Z.exe / ado-lens-X.Y.Z.zip |
| konfiguracja / zmienne | adolens.json, .adolens.json w repo, ADOLENS_* |
Zestawy narzędzi i tryby. Narzędzia są pogrupowane w zestawy (toolsets); tryb to gotowa kombinacja zestawów
plus skille i prompty dla danej roli. Tryb wybiera się w kreatorze, zmienia adolens config --mode dev albo per repo
w .adolens.json; dowolny zestaw można dołożyć ręcznie (--add-toolset pipelines). Tryb nie ogranicza uprawnień —
decyduje tylko, które narzędzia Claude widzi (mniej narzędzi = trafniejszy wybór, mniej tokenów w każdej rozmowie).
| Zestaw | Zawartość | PO | dev | full |
|---|---|---|---|---|
core |
status, kontekst, połączenia, metadane (ado_fields), wyszukiwanie łączone |
✓ | ✓ | ✓ |
work |
work itemy: odczyt, tworzenie z szablonu, edycja, stany, komentarze, linki, historia, zmiany wsadowe | ✓ | ✓ | ✓ |
boards |
sprinty, backlog, tablice, pojemność, „co nowego”, higiena backlogu | ✓ | – | ✓ |
wiki |
odczyt, wyszukiwanie, edycja stron | ✓ | ✓ | ✓ |
trace |
work item → kod → build → release/LCS, diff z redukcją szumu, historia pliku | ✓ | ✓ | ✓ |
code |
repozytoria Git i TFVC: pliki, commity, changesety, gałęzie, scalenia, Code Search | – | ✓ | ✓ |
pr |
PR-y: lista „do mojego przeglądu”, diff, wątki, komentarze w linii, głosowanie, tworzenie, uzupełnianie | – | ✓ | ✓ |
pipelines |
buildy i release'y: status, przyczyna porażki z logu (tylko istotny fragment), uruchomienie, artefakty | – | ✓ | ✓ |
test |
plany, zestawy, Test Case'y z kryteriów akceptacji, wyniki | ✓ | – | ✓ |
recipes |
przepisy/automatyzacje | ✓ | ✓ | ✓ |
Funkcje szczególnie dla dewelopera (poza tym, co ma Tiberriver):
- „Dlaczego ten kod istnieje”: plik / obiekt / linia → commit lub changeset → work item → kryteria i dyskusja.
- Start pracy nad work itemem: gałąź
feature/123-krótki-tytułod właściwej bazy (dev), stan → In Progress, przypisanie do mnie; przy PR — automatyczne podpięcie work itemu (wymóg polityki gałęzi) i opis z kryteriów. - Przegląd PR z kontekstem work itemu: Claude widzi, czego chciano, i komentuje zmiany względem kryteriów.
- Czerwony build: z logu wycinany jest tylko błąd z kontekstem, a nie całe tysiące linii.
- Gdzie jest moja zmiana: czy PR/changeset dotarł do
staging(UAT) imaster(PROD) i czy releaselcsprzeszedł. - Współpraca z xpp-lens: gdy jest zainstalowany, skille dev łączą work item z obiektami X++ z lokalnego indeksu.
| Tiberriver (dziś) | ado-lens |
|---|---|
npx + Node.js + PAT ręcznie wpisany jawnym tekstem w JSON-ie |
instalator .exe z kreatorem, PAT w Menedżerze poświadczeń Windows (lub zmiennej środowiskowej), nigdy w konfiguracji Claude'a |
| ~55 narzędzi naraz, niezależnie od roli | zestawy narzędzi i tryby (PO / dev / full) — Claude widzi to, czego potrzebuje dana rola |
| zwraca surowy JSON i HTML z pól | zwięzły markdown, nazwy pól tak, jak widzi je PO („Kryteria akceptacji”, nie Microsoft.VSTS.Common.AcceptanceCriteria) |
| zapis od razu | zmiany wsadowe i wrażliwe: podgląd → potwierdzenie; dziennik zmian i „cofnij moją ostatnią zmianę” |
| brak wiedzy o procesie | zna proces projektu: typy, stany i dozwolone przejścia, pola wymagane, kolumny tablicy, zespoły, sprinty, ludzi |
| Git i TFVC osobno (twój tfvc-explorer) | jedno narzędzie śledzenia: work item → changesety/commity/PR → pliki → build → wdrożenie |
Funkcje Tiberriver, które działają dobrze (lista/odczyt/edycja WI, wiki, PR, wyszukiwanie), przenosimy 1:1 jako bazę.
- Jeden projekt ma Git i TFVC naraz: ok. 40 repozytoriów Git oraz work itemy z linkami „Fixed in Changeset”
(
vstfs:///VersionControl/Changeset/…). Obsługa obu w jednym projekcie jest więc konieczna, a nie opcjonalna. - Własny proces dziedziczony (typy z prefiksem dostawcy procesu, np.
<Vendor>Scrum.*): ok. 55 typów work itemów, własne pola (Custom.*), pola tablic Kanban (WEF_<id>_Kanban.Column— po jednym zestawie na tablicę), rzeczywiste stany np. Committed / In Progress / Done. Wszystko to są dostosowania danej organizacji, nie ADO — u każdej firmy inne, więc kod niczego z tego nie zakłada, tylko czyta strukturę z API. Epic i Feature bywają wyłączone i zastąpione własnymi typami portfolio. Nazwa procesu dziedziczonego jest podSystem.ProcessTemplateType→work/processes/{id}(System.Process Templatepodaje tylko szablon bazowy); bugi mogą stać na backlogu wymagań (bugsBehavior: asRequirements, pustebugWorkItems) — o poziomie „bug” decyduje kategoriaMicrosoft.BugCategory. Tiberriver zwraca proces „Unknown” i te same, zmyślone stany New/Active/Resolved/Closed dla każdego typu — Claude dostaje błędne dane o przejściach. Baza metadanych z §F2 musi czytać stany zwit/workitemtypes/{typ}/states(działa bez uprawnień do procesu), a reguły procesu tylko wtedy, gdy PAT/konto pozwala. - Łańcuch do wdrożenia istnieje w ADO: work item → link „Integrated in build” (dodawany automatycznie) → build
(numer w stylu
RRRR.MM.DD.N, gałąźstaging) → klasyczny release pipeline (osobny na gałąź) z etapemlcswysyłającym pakiet do LCS. Environments są puste. Wniosek: „czy jest na UAT” = czy istnieje udany etaplcsw release z buildem zawierającym zmianę. Mapowanie gałąź/release → środowisko LCS (np.staging→ UAT,master→ PROD) jest w konfiguracji połączenia/projektu, bo ADO tego nie wie. Potwierdzone dla firmy PO:dev→ (DEV),staging→ UAT,master→ PROD. Klasyczne release'y są w osobnym API (vsrm.dev.azure.com) — Tiberriver ich w ogóle nie obsługuje. - Rozmiar odpowiedzi Tiberriver: jeden work item ≈ 4 tys. tokenów (dziesiątki pustych pól, każda osoba jako blok z avatarami), lista repozytoriów ≈ 15 tys. tokenów. Cel adolens: ten sam work item ≈ 300–500 tokenów (puste pola pominięte, osoby jako „Imię Nazwisko”, pola WEF_ zamienione na „Kolumna tablicy: Done”).
- Wiki projektowe (typ 0, „Overview → Wiki”) — standardowe API wiki.
- Przepływ gałęzi Git w firmie PO:
dev → staging → master, polityka wymaga work itemu w PR — więc PR jest wiarygodnym mostem work item ↔ kod.
ado_work_item— odczyt jednego lub kilku (123;456): pola w języku procesu, opis i kryteria jako markdown, rodzic/dzieci, linki, załączniki, ostatnie komentarze. Parametrinclude=history|comments|links|code.ado_create— tworzenie z szablonem typu (User Story: „Jako… chcę… aby…” + kryteria Given/When/Then; Bug: kroki odtworzenia, oczekiwane/aktualne), walidacja pól wymaganych przed wysłaniem, rodzic, sprint, obszar, tagi.ado_create_tree— rozbicie wsadowe (Epic → Features → Stories → Tasks) z jednej listy; zawsze najpierw podgląd.ado_update— zmiana pól, przypisanie po imieniu („daj to Ani” → rozpoznanie tożsamości, przy niejednoznaczności pytanie), zmiana stanu tylko po dozwolonych przejściach (z podpowiedzią, czego brakuje, np. „Reason” przy zamknięciu).ado_comment— komentarz z prawdziwymi @wzmiankami (osoba dostaje powiadomienie) i odwołaniami#123.ado_link— rodzic/dziecko, powiązane, blokuje/blokowany, duplikat.ado_history— kto, co i kiedy zmienił (diff rewizji w ludzkim języku), „dlaczego to się zmieniło”.ado_undo— cofa ostatnią zmianę wykonaną przez adolens (z lokalnego dziennika), po podglądzie.- Załączniki: dodanie pliku/obrazu (np. zrzut ekranu z czatu), odczyt.
- Brak usuwania work itemów (co najwyżej stan Removed). Usuwanie (np. gałęzi po scaleniu) tylko w zestawach
code/pr.
ado_sprint— bieżący/następny sprint zespołu: cel, daty, elementy w podziale na stany, pojemność vs. szacunki, co zagrożone (bez ruchu od N dni, zablokowane, bez szacunku, bez kryteriów akceptacji).ado_board— kolumny tablicy (z podziałem Doing/Done i limitami WIP) i karty; przesunięcie karty do kolumny.ado_backlog— backlog zespołu w kolejności priorytetu; zmiana kolejności („przenieś #123 nad #456”), przypisanie do sprintu.ado_query— zapytanie w języku naturalnym → WIQL (z mapowaniem nazw pól procesu), uruchamianie zapisanych zapytań („Moje zapytania”, „Shared Queries”), wyniki jako tabela.ado_my_day— co nowego od wczoraj: moje elementy zmienione przez innych, gdzie mnie oznaczono (@RecentMentions), PR-y i elementy czekające na moją decyzję.ado_health— „higiena backlogu”: historie bez kryteriów, bez szacunku, osierocone, przeterminowane, duplikaty (podobne tytuły).
ado_wiki— drzewo stron, odczyt, wyszukiwanie (wiki projektowe i „code wiki”).ado_wiki_write— utworzenie/edycja strony z kontrolą wersji (eTag — nie nadpisze cudzej równoległej zmiany), obrazy jako załączniki wiki, Mermaid.- Generowanie dokumentów z danych: notatki wydania (elementy zamknięte w sprincie/między datami/w buildzie), opis funkcjonalności z historii work itemów, raport statusu dla interesariuszy — zapis jako strona wiki lub plik.
ado_trace— dla work itemu zbiera w jednej odpowiedzi:- czego chciano: opis, kryteria akceptacji, komentarze z ustaleniami, zmiany kryteriów po rozpoczęciu prac (!),
- co zrobiono: powiązane changesety TFVC, commity i PR-y Git (także przez dzieci — Taski), lista zmienionych plików,
- gdzie to jest: czy zmiana jest scalona do gałęzi Main/Release, w którym buildzie (pakiet wdrożeniowy), czy wdrożona na UAT/Prod. Wdrożenia D365 idą przez LCS, więc ADO widzi je tylko wtedy, gdy release pipeline / environment wysyła pakiet do LCS (zadania „LCS Asset Upload / Deploy”). Gdy wdrożenie jest ręczne, adolens podaje ostatni build z tą zmianą, a środowisko pozostaje „nieznane” (opcjonalnie: tag / pole w work itemie ustawiane przy wdrożeniu),
- testy: Test Case'y powiązane z historią i ich ostatnie wyniki.
ado_changes— treść zmian (diff) z redukcją szumu: dla X++/AOT XML wycina zmienione metody i właściwości zamiast surowego XML-a (wiedza z xpp-lens); dla innych plików zwykły diff z limitem.- Skill
po-verify(patrz §4) prowadzi Claude'a: kryterium po kryterium → dowód w kodzie / brak dowodu / do sprawdzenia ręcznie, a na końcu proponuje komentarz w work itemie (po akceptacji PO). - Sygnały ostrzegawcze: zmiana bez powiązanego WI, WI zamknięty bez żadnej zmiany w kodzie, kryteria zmienione po ostatnim commicie, zmiana nie dotarła do środowiska, na którym PO testuje.
ado_search— jedno wyszukiwanie po work itemach, wiki i kodzie (Code Search dla Git i TFVC), wyniki pogrupowane.ado_file— odczyt pliku z repozytorium (Git/TFVC, dowolna wersja), dla X++ ze streszczeniem struktury.ado_file_history— „dlaczego tak działa”: kto i w ramach jakich work itemów zmieniał dany obiekt/plik.- Skill
po-explain— tłumaczy kod na język biznesowy (bez nazw metod, chyba że PO poprosi), zawsze podaje źródła (WI, strona wiki, plik) i odróżnia „tak jest w kodzie” od „tak wynika z dokumentacji”. - Gdy na maszynie jest xpp-lens (deweloper), skill korzysta z niego; PO bez maszyny deweloperskiej dostaje odpowiedź z repozytorium przez API.
- Generowanie Test Case'ów z kryteriów akceptacji (kroki + oczekiwane rezultaty), podpinanie pod historię i plan testów.
- Stan testów historii/sprintu.
Lokalna baza metadanych (SQLite w %LOCALAPPDATA%\ado-lens\meta\<połączenie>.db), osobno dla każdego
połączenia i projektu:
- typy work itemów, pola (nazwa wyświetlana ⇄ referencyjna, typ, wymagane, tylko do odczytu, domyślne),
listy dozwolonych wartości (picklisty), stany z kategoriami i przejścia, reguły procesu (dziedziczony proces:
API
work/processes/…/rules), szablony work itemów zespołów, kolumny tablic, drzewa obszarów i iteracji, zespoły, osoby spotkane w projekcie (do rozpoznawania „Ania” → tożsamość). - Odświeżanie: przy starcie, gdy starsze niż kilka godzin (w tle, nie blokuje); natychmiast, gdy ADO odrzuci zapis
z powodu nieznanego pola/wartości (samonaprawa i ponowienie); ręcznie przez
ado_refresh. - Historia struktury: każde odświeżenie zapisuje różnice —
ado_fields changesodpowiada na „jakie pola doszły / zmieniły się od zeszłego miesiąca”, a Claude nie używa nazw pól, które już nie istnieją. ado_fields— „jakie pola ma Bug w tym projekcie”, „jakie wartości przyjmuje Klient”, „które pola są wymagane przy Resolved” — odpowiedź z bazy, bez wywołań API. Dlaczego baza, a nie odpytywanie za każdym razem: pól bywa kilkaset, a każde ich wypisanie w kontekście Claude'a kosztuje tysiące tokenów; baza pozwala podać Claude'owi tylko to, czego dotyczy pytanie, i walidować zapis przed wysłaniem.
Automatyzacje — co jest możliwe:
| Poziom | Jak | Kiedy |
|---|---|---|
| zmiana wsadowa | ado_bulk_update: zapytanie (WIQL / zapisane / lista id) + zmiany pól (także wyliczane, np. „dopisz tag”, „przenieś do następnego sprintu”, „skopiuj pole A do B”) → podgląd różnic → zapis przez API batch |
jednorazowo, „teraz” |
| przepisy (recipes) | nazwane, sparametryzowane automatyzacje w YAML: zapytanie + kroki (ustaw pole, zmień stan, komentarz, link, utwórz dzieci z szablonu). Claude tworzy je z opisu słownego (ado_recipe_save), uruchamia ado_recipe_run (zawsze z możliwością próby na sucho). Przechowywane lokalnie lub w .adolens/recipes w repo, żeby zespół je współdzielił |
powtarzalne: „zamknij sprint”, „nowy klient → epik + 5 feature'ów”, „po zamknięciu historii ustaw Wersję” |
| harmonogram | przepisy działają też z CLI (adolens recipe run nazwa) — bez Claude'a, z Harmonogramu zadań Windows; albo zadania zaplanowane w Claude Desktop / Claude Code, gdy potrzebny osąd (np. codzienna higiena backlogu z komentarzem) |
cyklicznie |
| szablony ADO | odczyt i stosowanie istniejących szablonów work itemów zespołu (API wit/templates), tworzenie nowych |
spójne domyślne wartości dla całego zespołu |
| reguły procesu | odczyt reguł (np. „przy Closed ustaw X”), a przy uprawnieniach admina procesu — propozycja i dodanie reguły po stronie ADO; działa wtedy dla wszystkich, bez adolens | trwałe zachowanie po stronie serwera |
| reakcja na zdarzenia | service hooks / webhooki wymagają usługi działającej stale (Azure Function itp.) — poza zakresem v1 | — |
Podgląd przed zapisem przy zmianach wsadowych to zabezpieczenie przed pomyłką Claude'a, nie ograniczenie uprawnień:
da się go wyłączyć w ustawieniach (confirmBulkAbove).
ado_status— wersja, zalogowane konto, organizacja/projekt/zespół, czy jest nowsza wersja, tryb i aktywne zestawy narzędzi, tryb tylko do odczytu.ado_context— ustawia domyślny projekt/zespół/obszar dla rozmowy („pracujemy na zespole Logistyka”).- Zasoby MCP (resources): proces projektu (typy, stany, pola), lista zespołów i sprintów — Claude czyta raz, nie pyta w kółko.
- Prompty MCP (w Claude Code widoczne jako
/polecenia, w Desktop przez „+”): „nowa historia”, „weryfikuj #…”, „podsumuj sprint”, „notatki wydania”, „co nowego”.
adolens.exe (.NET 9, self-contained, win-x64, jeden plik)
├─ Mcp/ host stdio (ModelContextProtocol C# SDK): tools, prompts, resources, instructions serwera
├─ Cli/ te same operacje z linii poleceń (testy, diagnoza, skrypty) + setup/login/register/update/doctor
├─ Ado/ klient REST API 7.1: HttpClient, ponawianie, 429/Retry-After, stronicowanie, batch
│ ├─ WorkItems WIQL, batch get, JSON Patch, komentarze (wzmianki), rewizje, załączniki
│ ├─ Work zespoły, sprinty, pojemność, tablice, kolumny, backlog
│ ├─ Wiki strony, eTag, załączniki
│ ├─ Code Git (commity, PR, diff) + TFVC (changesety, scalenia, pliki), Code Search
│ └─ Build/Test buildy, wdrożenia (environments/releases), test plans
├─ Domain/ logika PO: szablony, walidacja przejść stanów, rozpoznawanie osób, trace, health, raporty
├─ Metadata/ cache procesu (typy, pola, stany, zespoły, sprinty, tożsamości) w %LOCALAPPDATA%\ado-lens\cache
│ — SQLite lub JSON z TTL; odświeżany w tle, `ado_status` pokazuje wiek
├─ Format/ HTML ⇄ Markdown (pola opisów), tabele, przycinanie dużych odpowiedzi, liczenie tokenów
├─ Diff/ diff tekstowy + diff „semantyczny” dla AOT XML (metody/właściwości)
├─ Safety/ tryby i zestawy narzędzi, opcjonalny tryb tylko do odczytu, podgląd→potwierdzenie, dziennik zmian, undo
├─ Auth/ PAT: zmienna środowiskowa → Menedżer poświadczeń; miejsce na Entra ID (MSAL) w przyszłości
└─ Infra/ konfiguracja, rejestracja w Claude (kod z tfvc-explorer `ClaudeConfigs.cs`), Updater (z xpp-lens), dziennik użycia + `stats`
Każdy token w odpowiedzi narzędzia i w opisach narzędzi jest płacony w każdej rozmowie, więc:
Opisy narzędzi (koszt stały każdej sesji)
- tylko narzędzia aktywnych zestawów; opisy krótkie, jednozdaniowe, parametry z sensownymi domyślnymi (połączenie/projekt/zespół z kontekstu — Claude ich nie podaje);
- mniej, ale szerszych narzędzi (
ado_work_itemzinclude=zamiast pięciu osobnych); budżet: tryb PO ≤ ~3 tys. tokenów na wszystkie definicje — test w CI liczy i pilnuje tego budżetu.
Odpowiedzi
- markdown/tekst, nigdy surowy JSON; puste pola pominięte; osoba = „Imię Nazwisko”; daty skrócone; pola
WEF_*i systemowe zamienione na znaczenie albo ukryte; HTML opisów → zwięzły markdown (bez stylów, obrazy jako link); - domyślnie zwięźle, szczegóły na żądanie:
detail=summary|normal|full, listy z limitem i informacją „pokazano 20 z 143 —skip=20”; diffy i logi przycięte do istotnych fragmentów z numerami linii; - odpowiedzi wsadowe: kilka id w jednym wywołaniu (
123;456;789) zamiast wielu wywołań; - stały budżet na odpowiedź (np. 4 tys. tokenów), po przekroczeniu — podsumowanie + jak doczytać resztę;
adolens stats(jak w xpp-lens): rozmiar odpowiedzi w tokenach per narzędzie, p95, puste wyniki — strojenie na danych z prawdziwego użycia; test w CI z budżetami dla typowych odpowiedzi (snapshoty).
Szybkość
- jeden proces na sesję, trwałe połączenie HTTP/2 z keep-alive, kompresja gzip/brotli, równoległe wywołania tam, gdzie API na to pozwala (np. work item + komentarze + linki naraz);
- API wsadowe ADO:
workitemsbatch(do 200 id),$batchdla zapisu, WIQL zwraca id → jedno pobranie pól; - prosimy API tylko o potrzebne pola (
fields=), nie o$expand=all; - metadane (typy, pola, stany, zespoły, sprinty, osoby, repozytoria) z lokalnej bazy SQLite — zero wywołań
przy walidacji i tłumaczeniu nazw; odświeżanie w tle, warunkowe (ETag /
If-None-Match, data zmiany); - krótkotrwały cache odpowiedzi w pamięci procesu (np. 60 s) dla powtórzonych odczytów w jednej rozmowie;
- start procesu: dziś single-file + ReadyToRun (ok. 0,37 s do odpowiedzi na
initialize, zmierzone w 0.1.0); Native AOT do sprawdzenia, gdy SDK MCP przestanie wymagać refleksji przy rejestracji narzędzi; - obsługa limitów ADO:
Retry-After, nagłówkiX-RateLimit-*, wykładnicze ponawianie, bez zalewania API.
Zasady odpowiedzi narzędzi (najważniejsze dla jakości pracy Claude'a z PO):
- zwięzły markdown, nigdy surowy JSON; duże listy z licznikiem i „pokaż więcej”;
- nazwy pól i stanów w wersji wyświetlanej procesu (także polskie, jeśli proces jest po polsku);
- każda odpowiedź podaje link do elementu w przeglądarce (
https://dev.azure.com/…/_workitems/edit/123), żeby PO mógł kliknąć; - błędy po ludzku i z podpowiedzią („Stan Closed wymaga pola Reason; dozwolone: Completed, Cut”).
Podgląd → potwierdzenie. Operacje wsadowe, zmiany stanu na Closed/Removed, edycja wiki i zmiany >N elementów
najpierw zwracają podgląd i jednorazowy confirmToken; dopiero drugie wywołanie z tokenem zapisuje. Claude pokazuje
podgląd PO i czeka na „tak”. Pojedyncze, odwracalne zmiany (komentarz, pole) idą od razu i trafiają do dziennika.
- PAT poza konfiguracją Claude'a. Zapis i odczyt najpierw w Menedżerze poświadczeń Windows (cel
ado-lens:<połączenie>; kod z tfvc-explorerCredentialStore.cs); dopiero gdy tam nic nie ma — zmienna środowiskowaADOLENS_PAT_<POŁĄCZENIE>, potemAZURE_DEVOPS_PAT(CI, ręczna konfiguracja, maszyny bez profilu). Kreator zawsze zapisuje do Menedżera.adolens statuspokazuje, skąd wziął PAT, i ostrzega, gdy w Menedżerze i w zmiennej są różne wartości. Wpis MCP w Claude zawiera tylkoadolens.exe mcp— bezenvz sekretem. - Kreator prowadzi krok po kroku: link do strony tworzenia PAT, sprawdza PAT jednym wywołaniem, pokazuje, czego PAT nie obejmuje (np. brak Wiki Write) — informacyjnie, narzędzie niczego nie blokuje, uprawnienia wyznacza PAT i konto.
- Przypomnienie o wygasaniu PAT na kilka dni przed terminem (w
ado_statusi w pierwszej odpowiedzi sesji);adolens loginpodmienia PAT bez ponownej instalacji. adolens doctorprzenosi PAT-y zapisane jawnie w konfiguracji Claude'a (np. obecny wpis Tiberriver) do Menedżera.- Entra ID (logowanie przeglądarką) — później, jeśli admini zarejestrują aplikację; architektura
Auth/to przewiduje.
- Połączenie = organizacja + PAT + domyślny projekt/zespół, z nazwą (
contoso,fabrikam). Każde ma swój PAT w Menedżerze. Narzędzia przyjmują opcjonalnyconnection; bez niego — domyślne albo z kontekstu projektu. - Git i TFVC jednocześnie: Azure DevOps ma oba w tym samym REST API, a projekt może mieć jedno, drugie albo oba.
adolens wykrywa to sam (lista repozytoriów Git + czy istnieje
$/Projekt) i zapisuje w cache metadanych. Wszystko wyżej (trace, diff, historia pliku, wyszukiwanie) działa na wspólnym pojęciu „zmiana kodu”:Git TFVC link w work itemie vstfs:///Git/Commit/…,…/Git/PullRequestId/…vstfs:///VersionControl/Changeset/…jednostka zmiany PR (z commitami) albo commit changeset „czy dotarło do gałęzi X” PR scalony do X / commit osiągalny z X changeset w X z mergeSourceswskazującym oryginałhistoria pliku commity ścieżki changesety ścieżki build build z commitu / PR build z changesetu ( sourceVersion = C123)Narzędzia tfvc-explorer wchodzą do adolens; tfvc-explorer można potem wycofać (instalator przejmie jego PAT).
- Instalator rejestruje serwer w zasięgu użytkownika: w Claude Desktop (dostępny w każdej rozmowie i w każdym
Projekcie — włącza się go w menu narzędzi rozmowy) i w Claude Code (
~/.claude.json, dostępny w każdym folderze). - Claude Code: opcjonalny
.adolens.jsonw repozytorium (połączenie, projekt, zespół, obszar, gałęzie, środowiska) — serwer szuka go od katalogu roboczego w górę. - Projekty w Claude Desktop: w instrukcjach projektu jedna linijka „adolens: połączenie firma-b, zespół Logistyka”;
serwer instruuje Claude'a, żeby na początku rozmowy wywołał
ado_contextz tymi wartościami.
Paczka ado-lens-skills instalowana razem z serwerem:
| Skill | Co robi |
|---|---|
po-story |
pisanie historii: dopytuje o wartość biznesową, kryteria Given/When/Then, sprawdza INVEST, zakłada WI |
po-refine |
refinement: przegląd backlogu, wykrywanie braków, rozbicie dużych historii, pytania do zespołu |
po-verify |
weryfikacja wykonania (§2D) z raportem kryterium po kryterium i propozycją komentarza |
po-explain |
„jak działa X” (§2E), odpowiedź biznesowa ze źródłami |
po-sprint |
podsumowanie sprintu / przegląd / notatki wydania / raport dla interesariuszy |
po-wiki |
utrzymanie dokumentacji: aktualizacja strony funkcjonalności po zamknięciu historii |
dev-start |
start pracy nad work itemem: gałąź, stan, przypisanie, plan na podstawie kryteriów |
dev-pr |
przygotowanie PR (opis z kryteriów, podpięcie WI) i przegląd PR z kontekstem work itemu |
dev-build |
diagnoza czerwonego buildu / release'u i propozycja poprawki |
dev-why |
„dlaczego ten kod tak wygląda” — historia zmian i work itemów dla pliku / obiektu |
Skille instaluje się według trybu (PO dostaje po-*, deweloper dev-*, full — wszystkie).
Zasady pisania treści do ADO (opisy work itemów, kryteria, komentarze, opisy PR) — zwięźle, ale kompletnie: po przeczytaniu od razu wiadomo, co trzeba zrobić albo co zostało zrobione. Obowiązują wszystkie skille i prompty, a narzędzia zapisu je wspierają.
| Treść | Struktura | Limit (miękki) |
|---|---|---|
| Wymaganie (User Story / PBI / Requirement) | Cel (1–2 zdania: kto, co, po co) · Zakres (punkty; także „poza zakresem”, jeśli istotne) · Kryteria akceptacji (osobne pole; każde sprawdzalne, Given/When/Then albo jedno zdanie) | opis ≤ ~120 słów, ≤ 7 kryteriów — więcej = sygnał do podziału historii |
| Bug | Co się dzieje · Co powinno · Kroki (numerowane) · Gdzie (środowisko, firma, dane przykładowe) | ≤ ~100 słów + kroki |
| Task | jedno zdanie, co zrobić + ewentualnie obiekt/plik | ≤ ~40 słów |
| Komentarz | decyzja / pytanie / wynik na początku, kontekst po nim; @osoba, gdy czegoś od niej oczekujemy | ≤ ~60 słów |
| Opis PR | Co i dlaczego (1–2 zdania + #WI) · Zmiany (punkty po obszarach, nie po plikach) · Jak sprawdzić (kroki testu) · Ryzyka / do uwagi (tylko jeśli są) |
≤ ~150 słów; bez listy plików (widać ją w PR), bez kopiowania kryteriów (są w WI) |
Zasady są przypięte do poziomu backlogu, nie do nazwy typu. Każdy proces ma te same poziomy, tylko różnie
nazwane typy — ado-lens czyta przypisanie z konfiguracji backlogu projektu (work/backlogconfiguration, kategorie
Microsoft.RequirementCategory, Microsoft.TaskCategory, Microsoft.BugCategory, poziomy portfolio) i zapisuje
je w bazie metadanych:
| Poziom (rola) | Przykłady typów | Treść |
|---|---|---|
| portfolio | Epic, Feature, Initiative | cel biznesowy i zakres, bez szczegółów realizacji |
| wymaganie | User Story (Agile), Product Backlog Item (Scrum), Requirement (CMMI), własne typy | co zrobić i po co + kryteria akceptacji — szablon z tabeli wyżej |
| zadanie | Task (z polem Activity: Development / Testing / …) | konkretna praca jednej osoby; Task deweloperski: co zmienić; Task testera: co i jak sprawdzić (scenariusz, dane, oczekiwany wynik) |
| błąd | Bug, Issue, własne typy | szablon błędu |
Szczegóły dopasowują się do pól, które dany typ naprawdę ma: jeśli typ wymagania nie ma pola „Acceptance Criteria”
(np. część procesów CMMI lub własnych), kryteria trafiają jako sekcja w opisie; jeśli ma własne pola (np. „Requirement
Type”, pola Custom.* wymagane przy zapisie), szablon je uzupełnia lub dopytuje. Nadpisanie per typ jest możliwe
(.adolens/templates/requirement.md, …/Requirement.md dla konkretnego typu), ale zwykle niepotrzebne. Przy
rozbijaniu wymagania (ado_create_tree) Claude proponuje Taski według Activity — osobno dla dewelopera i testera.
Zasady wspólne: bez wstępów i powtórzeń, bez opisywania oczywistości, konkret zamiast ogólników („walidacja limitu kredytowego przy zatwierdzaniu zamówienia”, nie „poprawki w walidacji”), szczegóły techniczne w Tasku lub PR, a nie w historii dla biznesu. Przykład opisu PR:
Blokada zatwierdzenia zamówienia po przekroczeniu limitu kredytowego (#4821).
Zmiany
- Zamówienia sprzedaży: sprawdzenie limitu przy zatwierdzaniu, komunikat z kwotą przekroczenia
- Parametry: nowy przełącznik „Blokuj po przekroczeniu limitu” (domyślnie wyłączony)
Jak sprawdzić
1. Włącz przełącznik w Parametrach modułu sprzedaży
2. Utwórz zamówienie dla klienta US-001 powyżej limitu → zatwierdzenie zablokowane z komunikatem
Do uwagi: istniejące zatwierdzone zamówienia nie są sprawdzane wstecz.
Wsparcie w narzędziach: ado_create / ado_update / tworzenie PR przyjmują treść w markdownie i w odpowiedzi
zwracają krótką uwagę, gdy treść przekracza limit albo brakuje sekcji („opis 340 słów — zwykle ≤ 120; brak kryteriów
akceptacji”) — informacyjnie, zapis i tak się wykonuje. Struktury i limity są domyślne i nadpisywalne per firma/projekt
(.adolens/templates/*.md w repo albo w konfiguracji połączenia), żeby pasowały do szablonów, których zespół już używa.
Styl odpowiedzi zależny od odbiorcy — wspólna zasada wszystkich skilli, z poziomem szczegółowości, który użytkownik
może zmienić jednym zdaniem („więcej szczegółów”, „prościej”) albo na stałe w konfiguracji (adolens config --style):
Skille po-* (domyślnie obrazowo) |
Skille dev-* (domyślnie technicznie) |
|
|---|---|---|
| język | biznesowy, bez żargonu; nazwy techniczne tylko w nawiasie lub na życzenie | techniczny: obiekty, metody, ścieżki, id commitów/changesetów |
| forma | najpierw krótka odpowiedź („Tak, zrobione — z jednym wyjątkiem”), potem obraz: lista kroków procesu „co się dzieje, gdy…”, tabela kryterium → ✅/ |
zwięzłe fakty, diff, fragment kodu, linki do PR/buildu |
| status/wdrożenie | „Jest na UAT od wtorku, na produkcji jeszcze nie” | PR !482 → staging @ build 2026.01.15.1, release lcs ✓; master ✗ |
| szczegółowość | domyślnie mało; „pokaż szczegóły” → poziom techniczny (pliki, metody, commity) | domyślnie pełna; „wersja prosta” → streszczenie biznesowe, np. do przekazania PO lub do komentarza w work itemie |
| źródła | zawsze, ale jako klikalne linki „zobacz work item / stronę wiki” | id + link |
Skille dev mają polecenie „przetłumacz dla PO” — gotowy, prosty komentarz do work itemu lub wiadomość, a skille PO
„przekaż deweloperowi” — precyzyjne pytanie/zgłoszenie z kryteriami i krokami odtworzenia. Narzędzia MCP zwracają te
same dane w obu trybach (detail=); różnicę w prezentacji robią skille, więc nie płacimy tokenów za dwie wersje.
Dystrybucja: Claude Code — kopiowanie do %USERPROFILE%\.claude\skills\ przez instalator (albo jako plugin Claude Code
zawierający i serwer, i skille). Claude Desktop — skille wgrywa się w Ustawieniach (Capabilities → Skills) jako ZIP;
instalator przygotowuje gotowe ZIP-y i otwiera folder z instrukcją; w organizacji z planem Team/Enterprise admin może je
udostępnić wszystkim centralnie. Uzupełniająco te same scenariusze jako prompty MCP — działają bez instalowania skilli.
Instalator ado-lens-setup-X.Y.Z.exe (Inno Setup, instalacja dla bieżącego użytkownika, bez admina,
do %LOCALAPPDATA%\Programs\ado-lens):
- Ekran powitalny + sprawdzenie, czy jest Claude Desktop i/lub Claude Code.
- Adres organizacji (wklej link z przeglądarki — kreator sam wyciągnie nazwę org i projektu).
- PAT (link do strony tworzenia, podpowiedziane zakresy, pole z ukrytym wpisywaniem) → test połączenia → zapis w Menedżerze poświadczeń. Można dodać kolejne połączenie (inna organizacja).
- Wybór domyślnego projektu i zespołu z listy (pobranej z ADO).
- Tryb pracy: PO / dev / full (z krótkim opisem, co każdy daje); można zmienić później.
- Rejestracja w Claude Desktop i Claude Code + skille. Jeśli Claude Desktop działa: „zamknąć i uruchomić ponownie?” (Desktop nadpisuje swoją konfigurację, gdy działa — znane z tfvc-explorer).
- Koniec: „Otwórz Claude i napisz: pokaż mój bieżący sprint”.
Pod spodem kreator woła adolens setup …, więc to samo da się zrobić z PowerShella (install.ps1 zostaje dla
deweloperów i CI, jak w xpp-lens).
Aktualizacja: serwer raz dziennie sprawdza GitHub Releases; gdy jest nowa wersja, ado_status i pierwsza odpowiedź
w sesji mówią „dostępna wersja X — powiedz zaktualizuj adolens”. Narzędzie ado_update pobiera instalator,
sprawdza SHA-256 (i podpis), uruchamia go w trybie cichym; działający adolens.exe jest przemianowywany na *.old
(trik z xpp-lens), więc otwarte sesje działają dalej. Ustawienia, logowanie i cache zostają.
Deinstalacja: standardowo z „Aplikacje i funkcje” Windows — usuwa wpisy MCP, skille, opcjonalnie dane logowania i cache.
Podpis kodu (decyzja: za darmo): niepodpisany .exe pobrany przeglądarką dostaje ostrzeżenie SmartScreen,
które przestraszy PO. Azure Artifact Signing odpada (JDG). Plan:
- SignPath Foundation (darmowy certyfikat dla open source): warunki — licencja OSI (MIT) bez komercyjnego
dual-licensingu, brak własnościowych komponentów, aktywne utrzymanie, publiczne wydania już istnieją, opis
funkcji na stronie pobierania, polityka podpisu kodu na stronie projektu, build w całości na runnerach
hostowanych przez GitHub (workflow wydań już tak działa), podpis przez akcję
signpath/github-action-submit-signing-request, każde wydanie zatwierdzane ręcznie w SignPath. Wydawcą w podpisie jest „SignPath Foundation”, nie WillowDev. Wniosek składamy po pierwszych publicznych (niepodpisanych) wydaniach. - Do tego czasu i niezależnie od podpisu — instalacja bez przeglądarki: jedno polecenie PowerShella (kopiuj →
wklej) pobiera instalator przez
Invoke-WebRequest, sprawdza SHA-256 i uruchamia go; plik pobrany w ten sposób nie dostaje znacznika „z internetu”, więc SmartScreen nie pokazuje okna. Aktualizacje (ado_update) działają tak samo. - Opcjonalnie później: pakiet w winget (
winget install WillowDev.ADOLens) — darmowe, znane w firmach. - Gdyby SignPath odmówił: Certum Open Source Code Signing (polski wystawca, ok. 50 € rocznie, na imię i nazwisko) — tanio, ale nie za darmo.
Alternatywa dla samego Claude Desktop: paczka rozszerzenia Desktop (.mcpb) — instalacja dwuklikiem w Claude,
pola konfiguracji w UI, sekrety w magazynie systemu. Nie obejmuje Claude Code ani skilli, więc jako dodatek, nie główna droga.
Mapa „gałąź / etap release'u → środowisko” musi być dla PO niewidoczna albo trywialna. Trzy warstwy, od najmniejszego wysiłku:
- Wspólna mapa zespołu w Azure DevOps (strona wiki „ADO Lens” albo plik
.adolens/environments.jsonw repo — do decyzji): ustawiana raz dla projektu, czytana automatycznie przez każdego użytkownika; lokalna konfiguracja tylko ją nadpisuje. - Wykrywanie z propozycją: z nazw gałęzi (
dev/develop/sit→ DEV,staging/uat/test→ UAT,master/main/prod→ PROD), definicji i etapów release'ów oraz kolejności wdrożeń; kreator i rozmowa pytają tylko o nazwy („jak nazywacie te środowiska?” → „sbx01, sbx03, produkcja”). - Zmiana w rozmowie narzędziem ustawień (bez terminala): „najpierw sbx01, potem sbx03”, „ten release wdraża na
UAT i SCM naraz”.
Bez mapy
ado_tracepodpowiada jednym zdaniem wykryty przepływ i jak go zapisać.
- Sekrety tylko w Menedżerze poświadczeń (albo w zmiennej środowiskowej, jeśli użytkownik tak woli);
adolens doctorwykrywa i przenosi PAT-y zapisane jawnym tekstem w konfiguracji Claude (jak tfvc-explorer). - Narzędzie nie ogranicza uprawnień — robi to PAT i konto. Kreator podpowiada zestaw zakresów dla PO (Work Items R&W, Code Read, Wiki R&W, Build Read, Release Read, Test Management R&W, Identity Read, Project & Team Read), ale przyjmie każdy PAT; brak uprawnienia to czytelny komunikat („PAT nie ma zakresu Wiki: Write”).
- Tryby (
po/dev/full) to tylko wybór widocznego zestawu narzędzi (mniej narzędzi = trafniejszy wybór przez Claude'a), nie blokada; tryb tylko do odczytu opcjonalnie dla ostrożnych. - Dziennik zmian (
%LOCALAPPDATA%\ado-lens\audit) — co adolens zmienił, kiedy, w czyim imieniu (podstawaado_undo). - Dziennik użycia jak w xpp-lens (
adolens stats) — tylko lokalnie, do strojenia narzędzi. - Treści z work itemów/wiki traktowane jako dane: instrukcje serwera mówią Claude'owi, że tekst w WI to nie polecenia.
| Faza | Zakres | Cel |
|---|---|---|
| 0. Szkielet | publiczne repo jak xpp-lens (sln, build/pack/release.ps1, CI, testy), połączenia + PAT w Menedżerze/zmiennej, adolens login/status/register/doctor/mcp, baza metadanych z historią zmian, ado_fields |
działa w Claude Desktop i Code obok Tiberriver |
| 1. MVP dla PO | A (odczyt, create z szablonem, update ze stanami, komentarz z @, link, historia), B (ado_sprint, ado_query, ado_my_day), C (wiki odczyt/zapis/szukaj), ado_bulk_update z podglądem, tryby i zestawy; dla dev: pr (lista do przeglądu, diff, wątki, komentarze) i pipelines (status, błąd z logu) |
można wyłączyć Tiberriver u PO i u siebie |
| 2. Instalator | Inno Setup z kreatorem, aktualizacja z ado_update, instalacja jednym poleceniem PowerShella (bez SmartScreen), skille po-story, po-sprint |
instalacja przez PO bez pomocy |
| 3. Weryfikacja | wspólna „zmiana kodu” Git+TFVC, ado_trace, ado_changes (diff AOT XML), gałęzie/buildy/release'y, skill po-verify; wchłonięcie tfvc-explorer |
„czy zrobił to, o co prosiłem” |
| 4. Wiedza i automatyzacje | ado_search łączony, ado_file_history, skill po-explain, notatki wydania, ado_health, ado_undo, przepisy (ado_recipe_*, CLI) |
„jak to działa i dlaczego”, powtarzalne zmiany |
| 5. Testy i dodatki | Test Case'y z kryteriów, stan testów, tablica (przesuwanie kart, kolejność backlogu), szablony i reguły procesu, .mcpb |
pełny cykl PO |
| 6. Podpis kodu | wniosek do SignPath Foundation + polityka podpisu, krok podpisu w workflow wydań, winget | instalator bez ostrzeżeń także z przeglądarki |
Testy: jak w xpp-lens — testy jednostkowe formatowania/walidacji + testy narzędzi na nagranych odpowiedziach API (fixtures z neutralnymi danymi, bez nazw klienta), opcjonalnie testy integracyjne na osobnej organizacji testowej.