Examples

Real examples for the Claude Code skills of the bundesrat plugin, one per skill: a request, the bundesrat commands the skill ran, and the answer Claude gave.

Every example ran against the live API on 6 October 2026 with bundesrat 0.2.0. The data changes, so your results will differ; the ids and keys shown work for trying the requests yourself. Long lists are shortened.

To try them, install the CLI and the plugin — see SKILLS.md.

Skills: bundesrat-agenda · bundesrat-members

bundesrat-agenda

What is the Bundesrat voting on at its next sitting, and when do the committees meet after that?

bundesrat --compact session > session.json
jq '{title, header, items: (.tops | length)}' session.json
jq -r '.tops | sort_by(.toptitle // "" | capture("(?<n>\\d+)(?<s>[a-z]*)") | [(.n | tonumber), .s])[] | "\(.toptitle)\t\(.topdrucksache // "—")\t\(.topheader)"' session.json
jq -r '.tops[].topdrucksache | select(.) | split("; ")[]' session.json | wc -l
bundesrat --compact appointments > appointments.json
jq -r 'map(. + {start: ((.startdate // "" | capture("(?<d>\\d{2})\\.(?<m>\\d{2})\\.(?<y>\\d{4}) ?(?<t>[0-9:]*)") | "\(.y)-\(.m)-\(.d) \(.t)") // "")}) | sort_by(.start)[] | "\(.start)\t\(.title)\t\(.stopdate // "")"' appointments.json

The feed lists the TOPs out of order (TOP 20, TOP 48, TOP 46, TOP 53a, …), so the skill sorted them by number and letter before reporting. The title still says “Tagesordnung Entwurf”, so the agenda is a draft. Two TOPs have no Drucksache (the two elections that open the sitting); none lists more than one, so the 54 Drucksache numbers are one per TOP.

1069. Sitzung des Bundesrates, Friday 16 October 2026, 9:30 (draft agenda): 56 items, 54 Drucksachen.

Kind of item TOPs Count
Elections (Präsidium, Europakammer, committee chairs, Schriftführer) 1–4 4
Laws passed by the Bundestag (“Gesetz …”) 5–8 4
Draft laws (“Entwurf …”) 9–10, 26–32 9
Bundesrat resolutions (Entschließungen) 11–25 15
EU proposals and communications 33–47 15
Ordinances 48–52 5
Nominations to EU advisory bodies 53a–53d 4

Some of the items:

Committee dates (18 listed): the Rechtsausschuss’s written poll (Umfrage 5/26) ran from 02.10. to 06.10.2026, 10:00; the plenary sitting follows on 16.10.2026, 9:30. After it, 14 committees meet from 02.11. to 06.11.2026; none is marked cancelled (“entfällt”). Also listed: the NATO Parliamentary Assembly’s annual session (20.–23.11.2026) and the next plenary sitting on 20.11.2026, 9:30.

Quelle: Bundesrat

Next steps offered: the full list of all 56 TOPs, or every Drucksache number for a follow-up lookup.

bundesrat-members

How is the Bundesrat made up by party, and who represents Thüringen?

bundesrat --compact members > members.json
jq -r 'group_by(.party)[] | "\(.[0].party): \(length)"' members.json
jq -r 'map({b:.brmitglied,m:.mitglied,bv:.bv}) | group_by(.) | .[] | "\(.[0]) \(length)"' members.json
jq -r '[.[] | select(.mitglied=="true")] | group_by(.state)[] | "\(.[0].state): \(length)"' members.json
jq -r '[.[] | select(.mitglied=="true")] | group_by(.party)[] | "\(.[0].party): \(length)"' members.json
bundesrat --compact members --state Thueringen   # exit 2: "Not a Land; expected one of …, Thüringen."
bundesrat --compact members --state thüringen | jq -r '.[] | "\(.firstname) \(.name)\t\(.party)\t\(.mitglied)\t\(.bv)"'

The feed returns 193 people: full members, their deputies and the Länder plenipotentiaries. Counting by party over all of them (CDU 71, SPD 67, …) would overstate the chamber. So the skill compared the status flags. The 69 records with mitglied == "true" add up per Land to the Bundesrat’s seat split (6 each for BW, BY, NI, NW; 5 for HE; 3 each for HB, HH, MV, SL; 4 for the rest), and the count used those. brmitglied == "true" covers 181 records, deputies included; 12 records are plenipotentiaries only. The ASCII spelling Thueringen is not a Land name, so the CLI refused it with the list of the sixteen; the skill ran again with thüringen.

Full members (69 seats), by party:

Party Members
SPD 25
CDU 23
BÜNDNIS 90/DIE GRÜNEN 11
CSU 4
FREIE WÄHLER 2
DIE LINKE, FDP, Thüringen.Gerecht, parteilos 1 each

Thüringen (4 votes), 11 records:

Quelle: Bundesrat

View the source on GitHub →