How uv’s scores are calculated
The full audit trail, recomputed from the verdict data at build time through the same code that produced the leaderboard: verdict × quality × story weight per cell, cells sum to dimension scores, dimensions blend into the PA Score. Every number on the product page is reproducible from this page alone; for why the formula looks like this, see the methodology.
verdict factors: full ×1.0 · partial ×0.6 · disputed ×0.3 · none ×0.0 · n/a excluded from both sides · cell points = weight × quality × factor · cell max = weight × 10
PA Score27/100
Agent-ready 53.6 × 0.30 = 16.08
API quality 8.0 × 0.20 = 1.60
Openness 30.0 × 0.20 = 6.00
Built-in AI 0.0 × 0.15 = 0.00
Automation 24.0 × 0.15 = 3.60
(16.08 + 1.60 + 6.00 + 0.00 + 3.60) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 27.28 ÷ 1.00 = 27.3
Scores are stored to 1 decimal; the product page’s pills round to whole numbers for display. Each dimension below shows the stories, verdicts, and cited evidence behind its number.
Agent-ready53.6/100×0.30 of the PA blend
Outside-in: can YOUR agent reach and drive this product — API, MCP, CLI, headless runs, agent docs.
Point an agent at llms.txt or agent-oriented docsweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://docs.astral.sh/uv/llms.txt“uv publishes an llms.txt index of its documentation at docs.astral.sh/uv/llms.txt (served as text/plain): "# uv > uv is an extremely fast Python package and project manager, written in Rust." — every docs page is also fetchable as raw markdown by appending index.md (e.g. getting-started/installation/index.md).”
- [probe] https://docs.astral.sh/llms.txt“PROBE llms.txt: HTTP 404 at https://docs.astral.sh/llms.txt”
- [probe] https://docs.astral.sh/uv/.md“PROBE docs-md: HTTP 404 at https://docs.astral.sh/uv/.md”
Run the product headlessly / in CI for automationweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://docs.astral.sh/uv/guides/integration/github/“we recommend the official `astral-sh/setup-uv` action, which installs uv, adds it to PATH, (optionally) persists the cache, and more”
- [claimed-docs] https://docs.astral.sh/uv/guides/integration/github/“we recommend the official [`astral-sh/setup-uv`](https://github.com/astral-sh/setup-uv) action, which installs uv, adds it to PATH, (optionally) persists the cache, and more”
- [claimed-docs] https://docs.astral.sh/uv/guides/integration/github/“When using a matrix to test multiple Python versions, set the Python version using `astral-sh/setup-uv`”
- [claimed-docs] https://docs.astral.sh/uv/guides/integration/github/“This will respect the Python version pinned in the project.”
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“$ uv version --output-format json”
- [github] https://github.com/astral-sh/uv“uv can update itself to the latest version: bash uv self update ”
- [community] https://news.ycombinator.com/item?id=45751400“1. It tries to do too many things... 2. You end up needing to use `uv pip` so it's not even a full replacement for pip. 3. It does not play well with Docker. 4. It adds more complexity [with many new env vars].”
Plug MCP servers into this product so it can use their toolsweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Connect an agent via an official MCP serverweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Use an official CLIweight 2
2 (weight) × 9 (quality) × 1.0 (full) = 18.0 of 20 max
- [probe] https://docs.astral.sh/uv/reference/cli/“official CLI documented at https://docs.astral.sh/uv/reference/cli/”
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“$ uv version --output-format json”
- [claimed-docs] https://docs.astral.sh/uv/“A single tool to replace `pip`, `pip-tools`, `pipx`, `poetry`, `pyenv`, `twine`, `virtualenv`, and more.”
- [claimed-docs] https://docs.astral.sh/uv/“Runs scripts, with support for inline dependency metadata.”
- [community] https://news.ycombinator.com/item?id=44357411“UV is fast, like FAST. Plus, it removes the need for pyenv and pip for me... no need to activate env or anything, uv run automatically runs your code through the env.”
- [community] https://news.ycombinator.com/item?id=43095157“The biggest praise I can give uv is that as a non Python dev, it makes Python a lot more accessible... With uv, you don't have to care about any of that. The venv and your Python install are just handled for you by 'uv run', which is magic.”
- [claimed-docs] https://docs.astral.sh/uv/llms.txt“uv publishes an llms.txt index of its documentation at docs.astral.sh/uv/llms.txt (served as text/plain): "# uv > uv is an extremely fast Python package and project manager, written in Rust." — every docs page is also fetchable as raw markdown by appending index.md (e.g. getting-started/installation/index.md).”
Drive the product through a documented public APIweight 3
3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max
- [probe] https://docs.astral.sh/uv/reference/cli/“official CLI documented at https://docs.astral.sh/uv/reference/cli/”
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“$ uv version --output-format json”
- [claimed-docs] https://docs.astral.sh/uv/llms.txt“uv publishes an llms.txt index of its documentation at docs.astral.sh/uv/llms.txt (served as text/plain): "# uv > uv is an extremely fast Python package and project manager, written in Rust." — every docs page is also fetchable as raw markdown by appending index.md (e.g. getting-started/installation/index.md).”
- [probe] https://docs.astral.sh/llms.txt“PROBE llms.txt: HTTP 404 at https://docs.astral.sh/llms.txt”
- [probe] https://docs.astral.sh/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.astral.sh/openapi.json, https://docs.astral.sh/swagger.json, https://docs.astral.sh/api/openapi.json, https://docs.astral.sh/.well-known/openapi.json)”
Issue scoped/least-privilege API credentials for an agentweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Build against official SDKsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Subscribe to events via webhooksweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Agent-ready = 59.0 ÷ 110 × 100 = 53.6
API quality8.0/100×0.20 of the PA blend
The programmable surface once an agent is there — machine-readable spec, interactive docs, sandbox, versioning discipline.
Explore an interactive API reference with runnable examplesweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://docs.astral.sh/llms.txt“PROBE llms.txt: HTTP 404 at https://docs.astral.sh/llms.txt”
- [probe] https://docs.astral.sh/uv/.md“PROBE docs-md: HTTP 404 at https://docs.astral.sh/uv/.md”
- [probe] https://docs.astral.sh/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.astral.sh/openapi.json, https://docs.astral.sh/swagger.json, https://docs.astral.sh/api/openapi.json, https://docs.astral.sh/.well-known/openapi.json)”
- [probe] https://docs.astral.sh/uv/reference/cli/“official CLI documented at https://docs.astral.sh/uv/reference/cli/”
Download a machine-readable API spec (OpenAPI or equivalent)weight 2
2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max
- [claimed-docs] https://docs.astral.sh/uv/llms.txt“uv publishes an llms.txt index of its documentation at docs.astral.sh/uv/llms.txt (served as text/plain): "# uv > uv is an extremely fast Python package and project manager, written in Rust." — every docs page is also fetchable as raw markdown by appending index.md (e.g. getting-started/installation/index.md).”
- [probe] https://docs.astral.sh/llms.txt“PROBE llms.txt: HTTP 404 at https://docs.astral.sh/llms.txt”
- [probe] https://docs.astral.sh/uv/.md“PROBE docs-md: HTTP 404 at https://docs.astral.sh/uv/.md”
- [probe] https://docs.astral.sh/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.astral.sh/openapi.json, https://docs.astral.sh/swagger.json, https://docs.astral.sh/api/openapi.json, https://docs.astral.sh/.well-known/openapi.json)”
- [probe] https://docs.astral.sh/uv/reference/cli/“official CLI documented at https://docs.astral.sh/uv/reference/cli/”
Test against a sandbox environment without touching production dataweight 1
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Rely on versioned APIs with a documented deprecation policyweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [probe] https://docs.astral.sh/openapi.json“PROBE openapi: all candidate paths 404 (https://docs.astral.sh/openapi.json, https://docs.astral.sh/swagger.json, https://docs.astral.sh/api/openapi.json, https://docs.astral.sh/.well-known/openapi.json)”
- [claimed-docs] https://docs.astral.sh/uv/llms.txt“uv publishes an llms.txt index of its documentation at docs.astral.sh/uv/llms.txt (served as text/plain): "# uv > uv is an extremely fast Python package and project manager, written in Rust." — every docs page is also fetchable as raw markdown by appending index.md (e.g. getting-started/installation/index.md).”
- [probe] https://docs.astral.sh/uv/reference/cli/“official CLI documented at https://docs.astral.sh/uv/reference/cli/”
API quality = 4.8 ÷ 60 × 100 = 8.0
Openness30.0/100×0.20 of the PA blend
Can you leave, inspect, or self-host — data export, open source, portability.
Do everything through the API that I can do in the UIweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Export all of my data in open formats and leaveweight 3
3 (weight) × 5 (quality) × 0.6 (partial) = 9.0 of 30 max
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“`uv.lock` is a cross-platform lockfile that contains exact information about your project's dependencies.”
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“uv.lock` is a cross-platform lockfile that contains exact information about your project's dependencies.”
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“uv.lock is a cross-platform lockfile that contains exact information about your project's dependencies.”
- [claimed-docs] https://docs.astral.sh/uv/concepts/cache/“uv uses aggressive caching to avoid re-downloading (and re-building) dependencies that have already been accessed in prior runs.”
- [claimed-docs] https://docs.astral.sh/uv/concepts/cache/“To clear the cache entirely, run `uv cache clean`. To clear the cache for a specific package, run `uv cache clean <package-name>`.”
Read the product's source under an open licenseweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [github] https://github.com/astral-sh/uv“Use a specific Python version in the current directory: console $ uv python pin 3.11 Pinned `.python-version` to `3.11`”
- [github] https://github.com/astral-sh/uv“Installable without Rust or Python via `curl` or `pip`.”
- [github] https://github.com/astral-sh/uv“uv can update itself to the latest version: bash uv self update ”
- [github] https://github.com/astral-sh/uv“$ uv python pin 3.11 Pinned `.python-version` to `3.11`”
- [github] https://github.com/astral-sh/uv“$ uv python pin 3.11 [] Pinned `.python-version` to `3.11`”
Self-host the core productweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Openness = 15.0 ÷ 50 × 100 = 30.0
Built-in AI0.0/100×0.15 of the PA blend
Inside-out: how agentic the product itself is for its users — built-in assistants, autonomous features.
Get AI-generated insights and suggestions from my data inside the productweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Set up automations that run autonomously in the backgroundweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Delegate tasks to a built-in AI assistant inside the productweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Operate the product with natural-language commandsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Built-in AI = 0.0 ÷ 20 × 100 = 0.0
Automation24.0/100×0.15 of the PA blend
Depth of automation primitives — rules, scheduling, bulk operations, webhooks.
Perform bulk operations across many items at onceweight 2
2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“If you're migrating from a `requirements.txt` file, you can use `uv add` with the `-r` flag to add all dependencies from the file”
- [claimed-docs] https://docs.astral.sh/uv/“Supports Cargo-style [workspaces](concepts/projects/workspaces/) for scalable projects.”
- [claimed-docs] https://docs.astral.sh/uv/“Supports Cargo-style workspaces for scalable projects.”
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“The `--upgrade-package` flag will attempt to update the specified package to the latest compatible version, while keeping the rest of the lockfile intact.”
- [claimed-docs] https://docs.astral.sh/uv/guides/projects/“To upgrade a package, run `uv lock` with the `--upgrade-package` flag”
Define rules that trigger actions automatically on eventsweight 3
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Schedule recurring jobs or workflowsweight 2
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Version, review, and roll back my automationsweight 1
n/a — not applicable to this product: excluded from numerator and denominator
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Automation = 4.8 ÷ 20 × 100 = 24.0