party-names
SkillDev toolsFill or rework a country''s political party localisation in the MD politics view, the 24 subideology name/icon/description keys plus their scripted-localisation hooks. Use when asked for party names, subideology localisation, or "political parties for TAG", e.g. "/party-names GRE".
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the party-names skill
What this skill tells your AI
The instructions your AI receives, as published by millenniumdawn/millennium-dawn in .claude/skills/party-names/SKILL.md and read by ahel’s review.
Fill in a country's political parties across all 24 subideology slots: the localisation keys, the descriptions, and the scripted-localisation hooks that make them render.
Requested arguments: $ARGUMENTS (one or more 3-letter TAGs; see Defaults when none given).
Read .claude/docs/party-loc-reference.md first — it holds the slot table, the key format,
the icon rules, the hook mechanics, and the verification checklist. This skill is the
procedure; that doc is the reference.
Hard limit: at most 5 TAGs per PR. When asked for more, split the work into separate branches/PRs of 5 TAGs or fewer and say so up front. Never append a sixth TAG to an existing party-loc branch.
Defaults
These are settled; do not ask about them again.
- No TAG given: run
gh issue view 3895 --json body -q .body, take the first- [ ]tag, and work that one tag only. - Branch: always a fresh
3895-party-loc-batch-Nofforigin/main, where N is one more than the highest existing local or remote3895-party-loc-batch-*. Never reuse or extend an old batch branch. - Research, then re-verify: one research agent per tag, then a separate fresh agent re-verifies every party, slot fit and gate date against sources. Only after that is the mapping presented for confirmation (step 3).
- Style standard: the
ENGblock for shape (header,\n\n, two paragraphs) and theHOLblock for prose register. Present tense; what the party stands for, how it governs or campaigns, its foreign-policy posture where relevant, and where its leverage lies. No leader parades, chronologies or founding narratives. Target 90–120 words per_descincluding the header. - Identity only, present tense: each
_descdescribes the party as it is under its own gate. Never say what it later becomes, merges into, dissolves into or splits off; a later change is its own gated variant plus an event (step 6). "Renamed in 2015 from X" inside the post-2015 variant is fine; "renames itself in 2015" inside the pre-2015 one is not. - Dates: no dates before 2000 at all, not even founding years. Post-2000 events may carry a year but never a day-level date; no election results, percentages, seat counts, or "entered/left parliament" outcomes; no speculation about future outcomes.
- Gating: only on verified identity changes (rename, merger, ban, dissolution, split),
never on a founding alone. The gate is a country flag set by a flavour event (step 6),
not a bare
date >in the hook. - Icons: a generic sprite means no
_iconkey and no_iconhook. Ignore reviewers that flag "missing icon keys" for generic sprites. - Slot 23: show the monarchist party while out of power and the royal house when
check_variable = { ruling_party = 23 }(AUS Habsburg precedent). - Moving a party between slots: first grep the country's focus tree, events and
*_political_leaders.txtforruling_party = Nand*_are_in_powergates, and move the leader block with the party. - After writing: a second style recheck against ENG/HOL plus a grep of the block for
any
19xxyear, then the validator. - PR: title "Standardize party localisation for TAG[, TAG]" and tick the tag's box in #3895 when the PR is opened.
- Changelog: one shared line under Content,
- Standardized and historical party names for the countries: TAG, TAG; append the tag to it. Never add a separate line per tag.
Steps
-
Inventory what exists
grep -n "^ TAG\." localisation/english/MD_politics_view_parties_l_english.yml grep -n "localization_key = TAG\." common/scripted_localisation/00_MD_politicsview_scripted_localisation.txt grep -n 'name = "GFX_TAG_' interface/MD_parties_icons.gfx grep -n "party_pop_array" "history/countries/TAG - *.txt"Report which of the 24 slots are filled, which names are still bare
£ICON Namerather than the£ICON (ABBRV) - Namestandard, which_descvalues are empty, and — the one that bites — which existing keys have no hook and are therefore already dead. -
Research the parties
Research the country's real political parties for 2000–2025 and map them to slots. For each: official native name and transliteration, abbreviation, founding year (and dissolution if defunct), founder or defining leader, precise ideology, and two or three concrete facts — best electoral result, splits, coalitions, EP group.
Leave a slot generic when the country has no real counterpart. Do not invent parties. Non-party entities are allowed only where the reference doc says so.
Use only verifiable sources: Wikipedia (and the references it cites), the party's own website, the national electoral commission / parliament / government register, and reputable news archives. Every name, abbreviation, founding year, and fact in a
_descmust be traceable to one of these. If a claim cannot be verified, drop it — leave the slot generic rather than guess.Where a country's party of a given slot changed identity mid-period (a ban, a rename, a successor), plan a flag-gated variant pair plus the event that sets the flag (step 6) instead of picking one.
Then hand the full candidate list to a fresh agent to re-verify from scratch (see Defaults). Drop or downgrade anything it cannot confirm.
-
Confirm the mapping before writing.
Present the slot→party table and the slots you intend to leave generic. This is where judgement calls get settled; do not write 50 keys on an unconfirmed mapping.
-
Check the sprites
For each mapped party decide tag sprite vs generic, per the reference doc's icon rules. Verify each
£nameresolves ininterface/before writing it. -
Write the loc block
Replace or extend the tag's contiguous block in
localisation/english/MD_politics_view_parties_l_english.yml, keeping it in tag-alphabetical position and ordering keys by^Nindex. Leading space on every line; the file keeps its UTF-8 BOM. -
Wire the hooks
Add a line to
<slot>_Land<slot>_L_descfor every filled slot, and to<slot>_L_icononly where a tag sprite exists, incommon/scripted_localisation/00_MD_politicsview_scripted_localisation.txt. Insert alphabetically by tag. Gated variants go in adjacent pairs, flag line first, and a flag-split name needs its icon hook split to match.Then write the identity-change event. One
country_eventper verified post-2000 rename, merger, dissolution or split, in the tag's events file under its<Country>_eventsnamespace at the next free id. Precedent:brazil_flavour_events.14(events/Brazilian.txt, PFL becomes Democratas) andBotswana_events.8/.9(events/Botswana.txt).is_triggered_only = yes,fire_only_once = yes,trigger = { original_tag = TAG }, nopicture.- One option:
set_country_flag = TAG_<party>_<change>(e.g.BOT_business_botswana_formed) andupdate_party_name = yes. Move popularity only when a merger empties a slot (JAP_historical.20030926pattern); otherwise flag only. - Schedule it from
trigger_year_YYYY_eventsincommon/scripted_effects/00_yearly_effects.txt:TAG = { country_event = { id = <Country>_events.N days = <day of year> } }, withdayson the real date (addrandom_dayswhen only the month is known). - Loc
.t/.desc/.ainlocalisation/english/MD_focus_TAG_l_english.yml: two or three factual sentences, no election numbers, same date rules as the_desckeys. - All three hooks (name, desc, icon) gate on
has_country_flag = <flag>, flag line first,NOT = { has_country_flag = <flag> }second.
-
Verify
Run the post-write style recheck from Defaults, then
python tools/validation/validate_party_loc.py --tag <TAG>until it is clean, then work the rest of the reference doc's verification checklist. Confirm the branch touches the party blocks of at most 5 TAGs before pushing. Open the PR and tick the tag's box in #3895. Finally, in game, open the politics view at the start date, then fire each new event from the console (event <Country>_events.N) and confirm the name, description and icon swap.
Signals
- GitHub stars
- 127
- Forks
- 88
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
party-names- Source
- github.com/millenniumdawn/millennium-dawn