How Crossplane’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 Score23/100
Agent-ready 22.3 × 0.30 = 6.69
API quality 3.4 × 0.20 = 0.68
Openness 50.0 × 0.20 = 10.00
Built-in AI 10.0 × 0.15 = 1.50
Automation 24.0 × 0.15 = 3.60
(6.69 + 0.68 + 10.00 + 1.50 + 3.60) ÷ (0.30 + 0.20 + 0.20 + 0.15 + 0.15) = 22.47 ÷ 1.00 = 22.5
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-ready22.3/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) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [probe] https://docs.crossplane.io/cli/latest/“PROBE cli-version (local run, macOS): `crossplane version --client` printed "Client Version: v2.5.0" and exited 0 after `brew install crossplane`; the CLI is keyless, but unlike the other tools probed here every real plan/apply operation requires a running Kubernetes cluster with the Crossplane control plane installed — no local plan/preview loop exists.”
- [probe] https://docs.crossplane.io/cli/latest/“official CLI documented at https://docs.crossplane.io/cli/latest/”
- [claimed-docs] https://docs.crossplane.io/cli/latest/“testing and rendering standalone Composition Functions without the need to access a Kubernetes cluster running Crossplane”
- [community] https://news.ycombinator.com/item?id=26334268“Many folks are using GitOps with Flux/ArgoCD to deploy their k8s apps but they can't use Terraform in the same workflow. How does Crossplane help get to a single GitOps workflow so app teams can self-service the infra from within the app cluster.”
- [community] https://news.ycombinator.com/item?id=26334268“Terraform offers small teams a common language for controlling their infrastructure...Crossplane appears to have a clear yaml syntax (easy enough to commit to source control) and runs a control plane for enforcement (easier than setting up Atlantis, I imagine).”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“If your software ever drifts from your desired state, the control plane automatically corrects the drift.”
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
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
Connect an agent via an official MCP serverweight 3
3 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 30 max
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
Use an official CLIweight 2
2 (weight) × 6 (quality) × 0.6 (partial) = 7.2 of 20 max
- [claimed-docs] https://docs.crossplane.io/cli/latest/“testing and rendering standalone Composition Functions without the need to access a Kubernetes cluster running Crossplane”
- [claimed-docs] https://docs.crossplane.io/cli/latest/“troubleshooting Crossplane Compositions, Composite Resources and Managed Resources”
- [claimed-docs] https://docs.crossplane.io/cli/latest/“building, installing, updating and pushing Crossplane Packages”
- [probe] https://docs.crossplane.io/cli/latest/“official CLI documented at https://docs.crossplane.io/cli/latest/”
- [probe] https://docs.crossplane.io/cli/latest/“PROBE cli-version (local run, macOS): `crossplane version --client` printed "Client Version: v2.5.0" and exited 0 after `brew install crossplane`; the CLI is keyless, but unlike the other tools probed here every real plan/apply operation requires a running Kubernetes cluster with the Crossplane control plane installed — no local plan/preview loop exists.”
Drive the product through a documented public APIweight 3
3 (weight) × 7 (quality) × 1.0 (full) = 21.0 of 30 max
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“It lets you design the APIs and abstractions that your users use to interact with your control planes.”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“there’s an RDS instance MR that extends Kubernetes with the ability to manage AWS RDS instances.”
- [claimed-docs] https://docs.crossplane.io/latest/composition/“Composite Resource Definitions - Define schemas for composite resources”
- [probe] https://docs.crossplane.io/cli/latest/“official CLI documented at https://docs.crossplane.io/cli/latest/”
- [probe] https://docs.crossplane.io/cli/latest/“PROBE cli-version (local run, macOS): `crossplane version --client` printed "Client Version: v2.5.0" and exited 0 after `brew install crossplane`; the CLI is keyless, but unlike the other tools probed here every real plan/apply operation requires a running Kubernetes cluster with the Crossplane control plane installed — no local plan/preview loop exists.”
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://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
- [claimed-docs] https://www.crossplane.io“extending its battle hardened reliability and security features like Role Based Access Control (RBAC) to orchestrate everything - not just containers.”
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
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
Agent-ready = 40.2 ÷ 180 × 100 = 22.3
API quality3.4/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
- [claimed-docs] https://docs.crossplane.io/latest/composition/“Composite Resource Definitions - Define schemas for composite resources”
Test against a sandbox environment without touching production dataweight 1
1 (weight) × 4 (quality) × 0.6 (partial) = 2.4 of 10 max
- [claimed-docs] https://docs.crossplane.io/cli/latest/“testing and rendering standalone Composition Functions without the need to access a Kubernetes cluster running Crossplane”
- [probe] https://docs.crossplane.io/cli/latest/“PROBE cli-version (local run, macOS): `crossplane version --client` printed "Client Version: v2.5.0" and exited 0 after `brew install crossplane`; the CLI is keyless, but unlike the other tools probed here every real plan/apply operation requires a running Kubernetes cluster with the Crossplane control plane installed — no local plan/preview loop exists.”
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 = 2.4 ÷ 70 × 100 = 3.4
Openness50.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
2 (weight) × 7 (quality) × 1.0 (full) = 14.0 of 20 max
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“It lets you design the APIs and abstractions that your users use to interact with your control planes.”
- [claimed-docs] https://www.crossplane.io“Extend Kubernetes to manage any resource anywhere”
- [claimed-docs] https://docs.crossplane.io/latest/composition/“Composite Resource Definitions - Define schemas for composite resources”
- [claimed-docs] https://docs.crossplane.io/latest/packages/“Providers - Providers connect Crossplane to external APIs”
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.crossplane.io/latest/whats-crossplane/“Functions allow you to write your configuration in multiple languages, including YAML, KCL, Python, and Go.”
- [claimed-docs] https://docs.crossplane.io/latest/packages/“Configurations - Portable packages of Crossplane resources”
- [claimed-docs] https://docs.crossplane.io/latest/composition/“Composite Resource Definitions - Define schemas for composite resources”
- [claimed-docs] https://docs.crossplane.io/latest/composition/“Composition Revisions - Manage changes to Compositions with revisions”
Read the product's source under an open licenseweight 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
Self-host the core productweight 3
3 (weight) × 9 (quality) × 1.0 (full) = 27.0 of 30 max
- [claimed-docs] https://docs.crossplane.io/latest/get-started/install/“Install Crossplane using the Helm chart.”
- [claimed-docs] https://docs.crossplane.io/latest/get-started/install/“Enable support for real time compositions.”
- [claimed-docs] https://docs.crossplane.io/latest/get-started/install/“Enable automatic protection of Providers from deletion when they have active managed resources.”
- [claimed-docs] https://docs.crossplane.io/latest/get-started/install/“Crossplane introduces new features behind feature flags. By default alpha features are off.”
- [claimed-docs] https://docs.crossplane.io/latest/get-started/install/“Installing Crossplane enables the installation of Crossplane Provider, Function, and Configuration resources.”
- [claimed-docs] https://docs.crossplane.io/latest/get-started/install/“Install pre-release versions of Crossplane from the master Crossplane Helm channel.”
- [probe] https://docs.crossplane.io/cli/latest/“PROBE cli-version (local run, macOS): `crossplane version --client` printed "Client Version: v2.5.0" and exited 0 after `brew install crossplane`; the CLI is keyless, but unlike the other tools probed here every real plan/apply operation requires a running Kubernetes cluster with the Crossplane control plane installed — no local plan/preview loop exists.”
Openness = 50.0 ÷ 100 × 100 = 50.0
Built-in AI10.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
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
Set up automations that run autonomously in the backgroundweight 2
2 (weight) × 5 (quality) × 0.6 (partial) = 6.0 of 20 max
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“If your software ever drifts from your desired state, the control plane automatically corrects the drift.”
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
- [claimed-docs] https://www.crossplane.io“extending its battle hardened reliability and security features like Role Based Access Control (RBAC) to orchestrate everything - not just containers.”
Delegate tasks to a built-in AI assistant inside the productweight 3
n/a — not applicable to this product: excluded from numerator and denominator
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
Operate the product with natural-language commandsweight 2
2 (weight) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
- [claimed-docs] https://www.crossplane.io“Expose declarative APIs that humans, automation, and AI systems can safely act on”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“With Crossplane you don’t have to write a controller. Instead you configure a pipeline of functions.”
- [probe] https://docs.crossplane.io/cli/latest/“official CLI documented at https://docs.crossplane.io/cli/latest/”
- [probe] https://docs.crossplane.io/cli/latest/“PROBE cli-version (local run, macOS): `crossplane version --client` printed "Client Version: v2.5.0" and exited 0 after `brew install crossplane`; the CLI is keyless, but unlike the other tools probed here every real plan/apply operation requires a running Kubernetes cluster with the Crossplane control plane installed — no local plan/preview loop exists.”
Built-in AI = 6.0 ÷ 60 × 100 = 10.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) × 0 (quality) × 0.0 (none) = 0.0 of 20 max
no evidence cited — the verdict rests on absence of evidence, re-checked on refresh
Define rules that trigger actions automatically on eventsweight 3
3 (weight) × 6 (quality) × 0.6 (partial) = 10.8 of 30 max
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“If your software ever drifts from your desired state, the control plane automatically corrects the drift.”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“With Crossplane you don’t have to write a controller. Instead you configure a pipeline of functions.”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“There’s already a Crossplane managed resource for that.”
- [claimed-docs] https://docs.crossplane.io/latest/packages/“Functions - Functions extend Crossplane with new ways to configure composition”
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
1 (weight) × 6 (quality) × 0.6 (partial) = 3.6 of 10 max
- [claimed-docs] https://docs.crossplane.io/latest/composition/“Composition Revisions - Manage changes to Compositions with revisions”
- [claimed-docs] https://docs.crossplane.io/latest/whats-crossplane/“If your software ever drifts from your desired state, the control plane automatically corrects the drift.”
- [community] https://news.ycombinator.com/item?id=26334268“Terraform offers small teams a common language for controlling their infrastructure...Crossplane appears to have a clear yaml syntax (easy enough to commit to source control) and runs a control plane for enforcement (easier than setting up Atlantis, I imagine).”
- [community] https://news.ycombinator.com/item?id=26334268“Many folks are using GitOps with Flux/ArgoCD to deploy their k8s apps but they can't use Terraform in the same workflow. How does Crossplane help get to a single GitOps workflow so app teams can self-service the infra from within the app cluster.”
Automation = 14.4 ÷ 60 × 100 = 24.0