add-leader

SkillDev tools

Scaffold generals, field marshals, and admirals for a country using the MD count formulas and region skill ranges, writing character and recruit_character entries. Use when asked to add leaders, generals, or admirals for a TAG, e.g. "/add-leader NIG".

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the add-leader skill

What this skill tells your AI

The instructions your AI receives, as published by millenniumdawn/millennium-dawn in .claude/skills/add-leader/SKILL.md and read by ahel’s review.

Scaffold generals, field marshals, and admirals for a country following the Millennium Dawn new-general-guidelines.

Syntax: /add-leader [TAG]

The authoritative guide is docs/src/content/resources/new-general-guidelines.md. Read it before starting.

Execution

1. Gather country data

Read for TAG:

  • OOB file(s) history/units/TAG_*.txt: count division entries for starting unit count. Each division = { } block is one unit.
  • History file history/countries/TAG*.txt: identify whether the country is a major power, faction member, or NATO member.
  • Existing character file common/characters/TAG.txt: check if generals already exist to avoid duplicates.

2. Calculate counts

Generals    = ROUND(units / 15) + 1 + IsMajor + IsInFaction + IsNATO
FieldMarshals = ROUND(generals / 3)
Admirals    = ROUND(ships / 15)   # ships = total ship entries in OOB
  • IsMajor, IsInFaction, IsNATO are each 1 if true, 0 if not.
  • Minimum 1 general even if the formula produces 0.
  • No ships, no admirals.
  • Counts are per bookmark. With both a 2000 and 2017 bookmark, calculate separately: recruit extras in 2017 if more are needed, use retire_character if fewer.

3. Determine skill levels

Use the region table from .claude/docs/content-guidelines.md (Generals & Admirals section) for the correct skill range. Exceptions are allowed for historically notable commanders; justify briefly in a file comment if you exceed the region range.

4. Assign skill points

Each general at skill level X gets (X - 1) * 3 + 4 total skill points across: attack_skill, defense_skill, planning_skill, logistics_skill, maneuvering_skill

Every skill must be at least 1. Distribute the rest to reflect real-world strengths.

5. Write the character file

Append to or create common/characters/TAG.txt. Follow this structure:

characters = {

	TAG_general_firstname_lastname = {
		name = "Firstname Lastname"
		portraits = {
			army = {
				large = "GFX_portrait_TAG_firstname_lastname_large"
				small = "GFX_portrait_TAG_firstname_lastname_small"
			}
		}
		field_marshal = {           # or general = { }
			traits = { trait_name }
			skill = X
			attack_skill = N
			defense_skill = N
			planning_skill = N
			logistics_skill = N
			maneuvering_skill = N
			legacy_id = -1
		}
		advisor = {                 # optional — for High Command / branch chiefs
			slot = army_chief       # or high_command, navy_chief, air_chief
			idea_token = TAG_general_firstname_lastname
			ledger = army           # army / air / navy — only for high_command slot
			allowed = { original_tag = TAG }
			traits = { army_chief_of_defence_1 }
			cost = 100
			ai_will_do = { factor = 1 }
		}
	}

}

Naming rules:

  • idea_token must use original_tag = TAG in the allowed block, never tag = TAG
  • Use firstname_lastname as the idea_token suffix (no initials, no titles)
  • Field Marshals use field_marshal = { }, regular generals use general = { }

Portrait requirements:

  • Large portrait: 156×210 px, gfx/leaders/TAG/TAG_firstname_lastname.dds
  • Small portrait: 38×51 px, same folder, _small suffix
  • If portraits don't exist yet, note them as needed in a comment for the user to supply before merge

6. Write recruit_character entries

In history/countries/TAG*.txt, add recruit_character lines under the correct bookmark:

# 2000 bookmark
recruit_character = TAG_general_firstname_lastname

# 2017 bookmark (if count changes between bookmarks)
recruit_character = TAG_general_firstname_extra

If a general should be retired between bookmarks, add under the 2017 entry:

retire_character = TAG_general_firstname_lastname

7. Create Air Chief even if no air force

At least one Air Chief must be defined even with no air force, since players cannot generate them mid-game. Minimal entry:

advisor = {
    slot = air_chief
    idea_token = TAG_general_air_chief
    allowed = { original_tag = TAG }
    traits = { air_chief_all_weather_2 }
    cost = 100
    ai_will_do = { factor = 1 }
}

8. Report output

Summarise what was written:

  • General count (with formula breakdown)
  • Field marshal count
  • Admiral count
  • Characters with skill levels and traits
  • Files modified
  • Portraits still needed (names and sizes)

Signals

GitHub stars
116
Forks
77
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
add-leader
Source
github.com/millenniumdawn/millennium-dawn