> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vectorlint.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Rubric Scoring

> How VectorLint scores content by rating quality on a rubric.

Rubric scoring is the method VectorLint uses when reviewing content on a quality spectrum: clarity, tone, technical accuracy, or completeness. The rule defines the criteria and rubric levels; the LLM rates the content against each criterion, and VectorLint calculates the final score.

## How it works

The rule defines **criteria**, each rated by the LLM on a **1–4 scale**. VectorLint normalizes each rating to the **1–10** range, then combines them into a weighted average.

The normalization maps the full 1–4 rating range onto 1–10:

```text theme={null}
normalized = 1 + ((score - 1) / 3) * 9
```

| Rating | Label     | Normalized score |
| ------ | --------- | ---------------- |
| 4      | Excellent | 10.0             |
| 3      | Good      | 7.0              |
| 2      | Fair      | 4.0              |
| 1      | Poor      | 1.0              |

The normalized range is **1–10**, not 0–10: a rating of 1 (Poor) floors at 1.0, so even a fully failing criterion still contributes a small positive score.

Each criterion carries a `weight` (default **1** when unset). A higher weight gives that criterion more influence over the final score:

```text theme={null}
finalScore = sum(normalized_i * weight_i) / sum(weight_i)
```

Criteria are defined in the rule's frontmatter: a human-readable `name`, an `id`, and an optional `weight`. The LLM rates the content against each criterion using the rubric described in the rule's body. See [Rule frontmatter](/rule-frontmatter).

## Key properties

A rule with two criteria:

| Criterion          | Weight | LLM rating    | Normalized |
| ------------------ | ------ | ------------- | ---------- |
| Technical Accuracy | 40     | 3 (Good)      | 7.0        |
| Readability        | 30     | 4 (Excellent) | 10.0       |

```text theme={null}
weighted points = (7.0 * 40) + (10.0 * 30) = 280 + 300 = 580
total weight    = 40 + 30 = 70
finalScore      = 580 / 70 ≈ 8.29
```

VectorLint reports scores to one decimal place, so this document scores **8.3**.

## Constraints

* **Strictness has no effect on rubric scoring.** Strictness is a multiplier on error density and applies only to density scoring. See [Strictness](/strictness).
* For documents above the chunking threshold, VectorLint reviews each chunk independently. Judge scores are averaged across chunks, weighted by chunk size. This is an implementation detail. No configuration is required.

## Related

* [Density scoring](/density-scoring): the method used when reviewing for discrete issues instead of rating quality
* [How it works](/how-it-works): the full review pipeline, including chunking
