How ROS 2’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 Score30/100
Agent-ready 38.6 × 0.30 = 11.58
API quality 4.3 × 0.20 = 0.86
Openness 56.8 × 0.20 = 11.36
Built-in AI 18.0 × 0.15 = 2.70
Automation 21.6 × 0.15 = 3.24
(11.58 + 0.86 + 11.36 + 2.70 + 3.24) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 29.74 ÷ 1.00 = 29.7
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-ready38.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) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Run the product headlessly / in CI for automationweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rst“ROS-Base Install (Bare Bones): Communication libraries, message packages, command line tools. No GUI tools.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“The main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“bag: Record/play a rosbag”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.”
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
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Use an official CLIweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Command-line introspection tools using an extensible framework”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“The main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“bag: Record/play a rosbag”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"”
Drive the product through a documented public APIweight 3
3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rst“Client libraries come in a variety of programming languages so that users may write ROS 2 code in the language that is best-suited for their application.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rst“Topics: For continuous data streams. Services: For synchronous request/response interactions. Actions: For long-running tasks with feedback”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rst“It also provides a Python API for reading from and writing to a bag from your own source code.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Set/retrieve parameters”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“The main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.”
- [community] https://hn.algolia.com/api/v1/items/47296255“I've been a ROS 1 (and now 2) user since 2010... ROS gives you some important things 'for free' if you cooperate with its ecosystem conventions. Data bagging, visualization, teleop, and sim are the some obvious ones.”
- [community] https://news.ycombinator.com/item?id=25389266“I'm really struggling in learning ROS in a systematic way. The tutorials are all over the place and somehow unorganized IMO. When trying to replicate stuff on my machine, all kinds of weird errors pop up.”
Issue scoped/least-privilege API credentials for an agentweight 2
2 (weight) × 4 (quality) × 0.6 (partial) = 4.8 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Intermediate/About-Security.rst“ROS 2 includes the ability to secure communications among nodes within the ROS 2 computational graph.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Intermediate/About-Security.rst“A security enclave encapsulates a single policy for protecting ROS communications.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Security/Introducing-ros2-security.rst“The `sros2` package provides the tools and instructions to use ROS 2 on top of DDS-Security.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“DDS-Security support”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Intermediate/About-Security.rst“Built-in ROS 2 security features enable control over communications throughout the ROS graph. This not only allows for encrypting data in transit between ROS domain participants, but also enables authentication of participants”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Security/Introducing-ros2-security.rst“ros2 security create_keystore demo_keystore”
Build against official SDKsweight 2
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rst“Client libraries come in a variety of programming languages so that users may write ROS 2 code in the language that is best-suited for their application.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rst“Client libraries come in a variety of programming languages so that users may write ROS 2 code in the language that is best-suited for their application”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rst“client libraries expose to users the core functionality that makes ROS "ROS"”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Client-Libraries.rst“you might prefer to write visualization tools in Python because it makes prototyping iterations faster, while for parts of your system that are concerned with efficiency, the nodes might be better implemented in C++”
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 = 61.8 ÷ 160 × 100 = 38.6
API quality4.3/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
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Download a machine-readable API spec (OpenAPI or equivalent)weight 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
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 5 (quality) × 0.6 (partial) = 3.0 of 10 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Simulators/Gazebo/Gazebo.rst“Launch a Simulation with Gazebo and ROS 2”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rst“It also provides a Python API for reading from and writing to a bag from your own source code.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rst“This allows you to subscribe to a topic and save the received data to a bag at the same time as performing any other processing of your choice on that data.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“bag: Record/play a rosbag”
Rely on versioned APIs with a documented deprecation policyweight 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
API quality = 3.0 ÷ 70 × 100 = 4.3
Openness56.8/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
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 includes a suite of command-line tools for introspecting a ROS 2 system.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“$ ros2 topic pub /chatter std_msgs/msg/String "data: Hello world"”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rst“It also provides a Python API for reading from and writing to a bag from your own source code.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rst“This allows you to subscribe to a topic and save the received data to a bag at the same time as performing any other processing of your choice on that data.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Command-line introspection tools using an extensible framework”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“The main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Security/Introducing-ros2-security.rst“ros2 security create_keystore demo_keystore”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rst“Desktop Install (Recommended): ROS, RViz, demos, tutorials.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.”
Export all of my data in open formats and leaveweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rst“It also provides a Python API for reading from and writing to a bag from your own source code.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Tutorials/Advanced/Recording-A-Bag-From-Your-Own-Node-Py.rst“This allows you to subscribe to a topic and save the received data to a bag at the same time as performing any other processing of your choice on that data.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“bag: Record/play a rosbag”
- [github] https://github.com/ros2/ros2“The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms”
Read the product's source under an open licenseweight 2
2 (weight) × 8 (quality) × 1.0 (full) = 16.0 of 20 max
- [github] https://github.com/ros2/ros2“The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms”
Self-host the core productweight 3
3 (weight) × 8 (quality) × 1.0 (full) = 24.0 of 30 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rst“ROS-Base Install (Bare Bones): Communication libraries, message packages, command line tools. No GUI tools.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rst“Desktop Install (Recommended): ROS, RViz, demos, tutorials.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Installation/Ubuntu-Install-Debs.rst“The default middleware that ROS 2 uses is `Fast DDS`, but the middleware (RMW) can be replaced at runtime.”
- [github] https://github.com/ros2/ros2“The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms”
- [community] https://hn.algolia.com/api/v1/items/47296255“I've been a ROS 1 (and now 2) user since 2010... ROS gives you some important things 'for free' if you cooperate with its ecosystem conventions. Data bagging, visualization, teleop, and sim are the some obvious ones.”
- [community] https://hn.algolia.com/api/v1/items/36045938“I still remember the time before ROS, 20 years ago, when each robotics team had to designate a sub-team just for building and maintaining the middleware. That was a waste of time and effort... ROS might not be perfect but it's so much better than anything else that exists.”
Openness = 56.8 ÷ 100 × 100 = 56.8
Built-in AI18.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
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Launch system for coordinating multiple nodes”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Support for nodes with managed lifecycles”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“ROS 2 runs a background daemon process that maintains information about the ROS graph to provide faster responses to queries, such as the list of node names.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rst“Actions allow clients to send goals, receive feedback during the execution, cancel if needed, and return a result if availabl”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Multiple executors (at level of callback groups) in same node”
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 = 7.2 ÷ 40 × 100 = 18.0
Automation21.6/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) × 3 (quality) × 0.6 (partial) = 3.6 of 20 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Launch system for coordinating multiple nodes”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Command-line introspection tools using an extensible framework”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/About-Command-Line-Tools.rst“The main entry point for the tools is the command ros2, which itself has various sub-commands for introspecting and working with nodes, topics, services, and more.”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Set/retrieve parameters”
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 4 (quality) × 0.6 (partial) = 7.2 of 30 max
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rst“Topics: For continuous data streams. Services: For synchronous request/response interactions. Actions: For long-running tasks with feedback”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/Concepts/Basic/Interfaces-Topics-Services-Actions.rst“Actions allow clients to send goals, receive feedback during the execution, cancel if needed, and return a result if availabl”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Support for nodes with managed lifecycles”
- [claimed-docs] https://raw.githubusercontent.com/ros2/ros2_documentation/jazzy/source/The-ROS2-Project/Features.rst“Launch system for coordinating multiple nodes”
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 = 10.8 ÷ 50 × 100 = 21.6