---
name: score-extremity
description: Two-dimensional extremity scoring for Dutch parliamentary motions. Use when scoring policy radicalism along stylistic vs material impact dimensions, or when performing LLM-based analysis of motion text extremity.
---

# Two-Dimensional Extremity Scoring

Score Dutch parliamentary motions on TWO independent dimensions:

1. **Stijl-extremiteit (stylistic extremity, 1–5):** How inflammatory, harsh, or rhetorically charged is the language? 1 = neutral/technical, 5 = openly hostile/discriminatory language.

2. **Materiele impact (material impact, 1–5):** How fundamentally would this policy change the status quo if enacted? How many people are affected and how deeply? Score based on the scale and permanence of the change, regardless of political direction. 1 = procedural/ministerial request, 5 = fundamental restructuring of rights, institutions, or economic systems.

These dimensions are independent. A motion can be:
- High stylistic, low material: "Alle buitenlanders moeten het land uit!" (inflammatory but legally vacuous)
- Low stylistic, high material: "De zorgpremie wordt inkomensafhankelijk en de bijdrage loopt op tot 15% van het inkomen" (measured language but fundamentally restructures healthcare funding)
- Low stylistic, high material (restriction): "Het recht op gezinshereniging wordt beperkt tot kerngezin met inkomenseis van 150% minimumloon" (measured language but concretely restricts rights)
- High stylistic, high material: "Nederland stapt per direct uit de Europese Unie" (inflammatory AND structurally transformative)

## Scoring Prompt

```text
Beoordeel de volgende motie op TWEE onafhankelijke dimensies:

MOTIE:
Titel: {title}
Tekst: {text}
Vereenvoudigde uitleg: {layman}

1) STIJL-EXTREMITEIT (1-5):
Hoe fel/opruiend/geladen is het taalgebruik? Let op woordkeuze, toon, en retorische middelen.
1 = neutraal/technisch/ambtelijk, 3 = stellige politieke taal/waardeoordelen, 5 = vijandig/discriminerend/haatdragend taalgebruik.

2) MATERIELE IMPACT (1-5):
Hoe fundamenteel verandert dit voorstel de status quo? Hoeveel mensen worden geraakt en hoe diep?
Scoor op basis van de schaal en duurzaamheid van de verandering, ongeacht politieke richting.
Linkse én rechtse moties kunnen hoge impact hebben — het gaat om hoe ingrijpend de verandering is.
1 = procedureel/symbolisch/onderzoeksverzoek, 3 = concrete beleidswijziging met meetbare gevolgen voor een sector/doelgroep, 5 = fundamentele herstructurering van rechten, instituties of economische systemen met langdurige gevolgen voor de hele samenleving.

Geef voor elke dimensie een score van 1-5 en een korte toelichting in het Nederlands.
```

## Output Schema

Return a JSON object with this structure:

```json
{
  "stijl_extremiteit": 3,
  "stijl_toelichting": "Gebruikt termen als 'massa-immigratie' en 'tsunami' maar niet direct discriminerend",
  "materiele_impact": 4,
  "materiele_toelichting": "Beperkt recht op gezinshereniging tot kerngezin met verzwaarde inkomenseis"
}
```

Field constraints:
- `stijl_extremiteit`: integer, 1–5
- `stijl_toelichting`: string, Dutch, 1–3 sentences
- `materiele_impact`: integer, 1–5
- `materiele_toelichting`: string, Dutch, 1–3 sentences

## Batch Scoring

When scoring multiple motions at once, return a JSON array:

```json
{
  "motions": [
    {
      "motion_id": 123,
      "stijl_extremiteit": 3,
      "stijl_toelichting": "...",
      "materiele_impact": 4,
      "materiele_toelichting": "..."
    }
  ]
}
```

## Subagent Workflow

The orchestrator spawns subagents (deepseek v4 flash) to score motions in batches:

1. Read this skill file to get the prompt template and schema
2. Query the stratified sample from `right_wing_motions` JOIN `extremity_scores`
3. Format batches of 10 motions each
4. For each batch, spawn a subagent (`task` tool, subagent_type: general) with:
   - This skill's prompt template filled with the 10 motions' text and layman explanations
   - The output schema as the expected return format
   - Instruction to return valid JSON matching the `motions` array schema
5. Collect results, validate against schema, store in `extremity_scores_2d` table
6. Compute Pearson r between `stijl_extremiteit` and `materiele_impact`

Batch dispatch is parallel: all 10 subagents (for 100 motions) can be spawned simultaneously since they have no inter-dependencies.
