Skip to content

Commit 04dfacb

Browse files
Installer setup, team settings on the wiki, updates, skills
- get.ps1: one-line install (latest release, SHA-256 checked, no browser download so no SmartScreen stop) - installer in six steps with defaults: connection, mode and environments (detected from release stages and branches, saved for the user or the team), skills for Claude Code and ZIPs for Claude Desktop, registration; adolens setup asks the same later; Polish texts on a Polish Windows - team settings: wiki page "ADO Lens" with the environment table, read by everyone; ado_settings scope=team writes it with the page version - updates: daily background check, one notice per session, ado_upgrade and adolens upgrade [--install] [--pre]; *.old leftovers removed at start - skills po-story and po-sprint; uninstall removes installed skills
1 parent 12a9d18 commit 04dfacb

21 files changed

Lines changed: 1010 additions & 54 deletions

‎CHANGELOG.md‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
# Changelog
22

3+
## 0.3.0 — unreleased
4+
5+
Easy to install and to keep current, for people who are not developers.
6+
7+
- One-line install: `irm …/get.ps1 | iex` downloads the latest release, checks its SHA-256 and runs the installer
8+
(no browser download, so no SmartScreen stop for the not yet signed program).
9+
- Installer in six steps with defaults: connection, then who uses it (mode) and where code goes (environments found
10+
from release stages and branches, names suggested, saved for the user or the team), skills, Claude registration.
11+
Questions in Polish on a Polish Windows. `adolens setup` asks the same later.
12+
- Team settings on the project wiki: a page "ADO Lens" with the environment table, read by everyone on the project;
13+
`ado_settings scope=team` writes it with the page version. A local map overrides it.
14+
- `ado_settings` without arguments shows the flow in use or the one detected, so Claude can ask once.
15+
- Updates: the server checks GitHub once a day in the background and mentions a newer version once per session;
16+
`ado_upgrade` / `adolens upgrade --install` downloads it, checks SHA-256 and runs its installer; `*.old` leftovers of
17+
updates are removed at start.
18+
- Skills `po-story` (writing requirements, bugs and tasks) and `po-sprint` (sprint status, review, release notes) next
19+
to `po-verify`; installed into Claude Code and packed as ZIPs for Claude Desktop; removed on uninstall.
20+
321
## 0.2.0 — 2026-10-14
422

523
Checking work against what was asked, and where it is.

‎README.md‎

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ not thousands. Changes between versions: [CHANGELOG.md](CHANGELOG.md). The road
1313
Azure DevOps is a trademark of Microsoft.
1414

1515
> Status: **0.x — in development.** Connections, Claude registration, the local work item structure, work items,
16-
> sprints, boards, backlogs, the wiki, tracing work to code and deployments, pull requests and pipelines work; the
17-
> installer follows the plan.
16+
> sprints, boards, backlogs, the wiki, tracing work to code and deployments, pull requests, pipelines, the one-line
17+
> install with its setup and updates work.
1818
1919
## What it does differently
2020

@@ -31,7 +31,17 @@ Azure DevOps is a trademark of Microsoft.
3131

3232
## Installing
3333

34-
The install package is not part of the repository (`dist\` is excluded by `.gitignore`). There are two ways:
34+
**The easy way — one line.** In a regular PowerShell window (not as administrator) paste:
35+
36+
```powershell
37+
irm https://raw.githubusercontent.com/willowdev-code/ado-lens/main/get.ps1 | iex
38+
```
39+
40+
It downloads the latest release, checks its SHA-256 against the digest GitHub publishes and starts the installer. A file
41+
downloaded this way is not marked as coming from the internet, so Windows SmartScreen does not stop the (not yet
42+
signed) program. Nothing else is needed on the machine, not even .NET.
43+
44+
The install package is not part of the repository (`dist\` is excluded by `.gitignore`). Other ways:
3545

3646
**A. From a release package** — nothing needs to be installed on the target machine, not even .NET.
3747

@@ -51,10 +61,20 @@ cd C:\Dev\ado-lens
5161
powershell -ExecutionPolicy Bypass -File .\dist\ado-lens\install.ps1
5262
```
5363

54-
The installer copies the program to `%LOCALAPPDATA%\Programs\ADO Lens` (no administrator rights), asks for the Azure
55-
DevOps address (paste any link from the browser — the organization and project are taken from it), the PAT (hidden
56-
input) and the default project (picked from a list), and registers the `ado-lens` server in Claude Desktop and Claude
57-
Code. When the registration has to change while Claude Desktop runs, it asks you to quit Claude, waits and starts it
64+
The installer, in six steps with a default for every question (Enter accepts it):
65+
66+
1. checks whether the Claude registration has to change,
67+
2. copies the program to `%LOCALAPPDATA%\Programs\ADO Lens` (no administrator rights),
68+
3. asks for the Azure DevOps address (paste any link from the browser — organization and project are taken from it),
69+
the PAT (hidden input) and the default project (picked from a list),
70+
4. asks who uses it (Product Owner / developer / everything) and where code goes: it finds the release stages and
71+
branches, suggests names (dev → DEV, staging → UAT, master → PROD) and saves them for you or — when you agree — for
72+
the whole team on the project's wiki page "ADO Lens" (`adolens setup` asks the same later),
73+
5. installs the skills: into `%USERPROFILE%\.claude\skills` for Claude Code, and as ZIPs in
74+
`skills-for-claude-desktop` to upload in Claude Desktop (Settings → Capabilities → Skills),
75+
6. registers the `ado-lens` server in Claude Desktop and Claude Code.
76+
77+
Questions are in Polish on a Polish Windows, in English otherwise. When the registration has to change while Claude Desktop runs, it asks you to quit Claude, waits and starts it
5878
again. Running `install.ps1` from a newer package updates the program and keeps settings, PATs and metadata; an
5979
`adolens.exe` used by an open session is renamed to `*.old`, so that session keeps working.
6080

@@ -66,8 +86,13 @@ Useful parameters:
6686
.\install.ps1 -DesktopOnly | -CodeOnly | -NoRegister | -NoRestart
6787
```
6888

69-
Uninstall: `uninstall.ps1` in the installation folder (removes the Claude registrations of this installation, asks
70-
about the stored PATs and the local data).
89+
**Updating.** The server checks GitHub at most once a day, in the background. When a newer version exists, Claude
90+
mentions it once per session; say "update ADO Lens" and `ado_upgrade` downloads it, checks its SHA-256 and runs its
91+
installer in its own window. From a terminal: `adolens upgrade` shows what is new, `adolens upgrade --install` installs
92+
it (`--pre` includes test releases). Settings, PATs and metadata are kept; Claude may stay open.
93+
94+
Uninstall: `uninstall.ps1` in the installation folder (removes the Claude registrations and skills of this installation,
95+
asks about the stored PATs and the local data).
7196

7297
### The PAT
7398

@@ -109,9 +134,16 @@ adolens config --connection fabrikam --env "Main-Deploy/Stage 1=UAT + SCM"
109134
`ado_trace` then lists the stages in that order with their labels ("UAT (sbx03): YES") and, for Git, also checks whether
110135
the work is merged into each mapped branch even when no release pipeline deploys it.
111136

112-
Nobody has to set this up in advance: when the map is missing, `ado_trace` ends with a short SETUP note listing the flow
113-
it found (branches and release stages, with a first guess such as dev → DEV, staging → UAT, master → PROD). Claude asks
114-
the user once how they call these environments and saves the answer with `ado_settings` — for good.
137+
**One map for the whole team.** The map can live in Azure DevOps itself: a page "ADO Lens" in the project wiki with a
138+
two-column table (branch or release stage | environment), in flow order. Everyone using ADO Lens on the project reads
139+
it, so Product Owners configure nothing; a local map (`--env`) overrides it for one person. The installer, `adolens
140+
setup` and `ado_settings scope=team` write it (with the page version, so a parallel edit is not lost), and people can
141+
edit the table by hand.
142+
143+
Nobody has to set this up in advance: when no map exists, `ado_trace` ends with a short SETUP note listing the flow it
144+
found (release stages deployed in the last half year and long-lived branches, with a first guess such as dev → DEV,
145+
staging → UAT, master → PROD). Claude asks the user once how they call these environments and saves the answer with
146+
`ado_settings` — for good, for the user or (after they agree) for the team.
115147

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

@@ -122,7 +154,7 @@ never a permission.
122154

123155
| Tool set | Tools | po | dev | full |
124156
|---|---|:-:|:-:|:-:|
125-
| `core` | `ado_status`, `ado_settings`, `ado_fields` | ✓ | ✓ | ✓ |
157+
| `core` | `ado_status`, `ado_settings`, `ado_upgrade`, `ado_fields` | ✓ | ✓ | ✓ |
126158
| `work` | `ado_work_item`, `ado_query`, `ado_create`, `ado_update`, `ado_comment`, `ado_link` | ✓ | ✓ | ✓ |
127159
| `pr` | `ado_pr`, `ado_pr_update` | – | ✓ | ✓ |
128160
| `pipelines` | `ado_pipeline`, `ado_pipeline_run` | – | ✓ | ✓ |
@@ -139,7 +171,8 @@ What each MCP tool answers, when Claude should reach for it, and the CLI command
139171
| Tool | Answers | When | CLI |
140172
|---|---|---|---|
141173
| `ado_status` | version, connection, signed-in user, PAT source, metadata age | checking the setup | `adolens status` |
142-
| `ado_settings` | the connection's settings; with `environments` saves for good what branches and release stages mean, in flow order (`dev=DEV (sbx01); staging=UAT (sbx03); master=PROD`) | `ado_trace` asks for it once (SETUP), the user answers in words | `adolens config --connection c --env dev=DEV` |
174+
| `ado_settings` | the connection's settings and the environment flow in use (local, or the team's wiki page) or detected; with `environments` saves for good what branches and release stages mean, in flow order (`dev=DEV (sbx01); staging=UAT (sbx03); master=PROD`); `scope=team` writes the wiki page | `ado_trace` asks for it once (SETUP), the user answers in words | `adolens setup` |
175+
| `ado_upgrade` | is there a newer ADO Lens; `install=true` downloads it (SHA-256 checked) and starts its installer | when the user asks to update | `adolens upgrade --install` |
143176
| `ado_fields` | types by backlog level; for a type: states, transitions, fields, required flags, allowed values; for a field: where it is used and its values; structure changes over time | before writing fields or WIQL; "which fields does a Bug have", "what changed in our process this month" | `adolens fields --type Bug`, `adolens fields --field Severity`, `adolens fields --changes 30d` |
144177
| `ado_work_item` | one or more items: state, people, paths, filled fields, description and acceptance criteria as markdown, parent / children / related, linked changesets, commits, PRs and builds; with `include`: comments, history | "what is #123 about", "who changed the criteria and when" | `adolens item 123 456 --include comments,history --detail summary` |
145178
| `ado_query` | items found by WIQL (with `@Me`, `@CurrentIteration`…) or a saved query, one line each | lists, filters, "open bugs of the sprint" | `adolens query --wiql "SELECT …"`, `adolens query --query "Shared Queries/Open bugs"` |
@@ -188,7 +221,7 @@ Estimates are characters / 4; Claude's tokenizer differs a little (Polish text r
188221

189222
```
190223
adolens item|query|create|update|comment|link|fields|sprint|board|backlog|myday|wiki|wiki-write|trace|changes|pr|pipeline …
191-
adolens login|logout|connections|config|status|register|unregister|refresh|stats|api|mcp|version
224+
adolens setup|login|logout|connections|config|status|register|unregister|refresh|upgrade|stats|api|mcp|version
192225
```
193226

194227
`adolens help` lists all options. `adolens api <path>` prints the raw JSON of a GET (for development).
@@ -206,7 +239,8 @@ tests\AdoLens.Tests\ xUnit tests; Azure DevOps is simulated (FakeAdo), no
206239
build.ps1 compile; -Deploy replaces the installed binaries, -Test runs the tests first
207240
pack.ps1 release package (ZIP + SHA-256)
208241
release.ps1 release-notes.ps1 releases (see below); .github\ CI and Release workflows, issue forms
209-
install.ps1 uninstall.ps1 installation
242+
install.ps1 uninstall.ps1 installation; get.ps1 is the one-line download and install
243+
skills\ skills for Claude (po-verify, po-story, po-sprint)
210244
docs\PLAN.md road map
211245
build\ dist\ output (keep nothing of your own there)
212246
```
@@ -250,6 +284,7 @@ regular expression per line, `!word` for allowed words. Without a list the relea
250284
| `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 |
251285
| `MetadataTests.cs` | fetching the structure (levels, inherited process name, bugs on the requirement backlog), change history, compact `ado_fields` answers |
252286
| `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 |
287+
| `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 |
253288
| `PrPipelineTests.cs` | PR lists and details (votes, checks, human threads only), PR actions (vote, comment on a line with a mention, create), failed build errors and log lines, running pipelines by name, saving environments, guessing the flow |
254289
| `TraceTests.cs` | line diff (Myers, unified hunks), X++ per method with form data sources, object names from AOT paths, `ado_trace` across TFVC and Git (deployed stages YES / NOT YET, environment labels, merged branches, deleted builds, criteria changed after coding), `ado_changes` lists and file diffs |
255290
| `WikiTests.cs` | page tree, page with version, replace only with the current version (412 never overwrites), append, create over an existing page, search snippets |
@@ -269,7 +304,9 @@ issues or commits.
269304
| pull requests | `PullRequests.cs` |
270305
| builds and pipeline runs | `Pipelines.cs` |
271306
| changesets, commits, PRs, builds, deployments | `Code.cs`; tracing in `Trace.cs`; diffs and X++ per method in `Diff.cs` |
272-
| skills for Claude | `skills\<name>\SKILL.md` |
307+
| skills for Claude | `skills\<name>\SKILL.md` (installed by `install.ps1`) |
308+
| updates | `Updater.cs`; one-line install `get.ps1` |
309+
| team settings on the wiki, environment flow | `TeamSettings.cs`, `EnvironmentFlow.cs`; interactive setup in `Cli.cs` (`SetupAsync`), texts in `Ui.cs` |
273310
| work item structure (types, fields, states) | `MetadataService.cs` (fetch), `MetaStore.cs` (SQLite; raise `SchemaVersion` to refetch), `Metadata.cs` (change detection) |
274311
| rich text | `Html.cs` |
275312
| people | `Identities.cs` |

0 commit comments

Comments
 (0)