Event Pack: create a pack or add events
Plans a pack or new events, down to every text, effect and picture, in one plan file that event-pack-implement carries out. Read docs/source-format.md and docs/style-guide.md before Phase 4.
Rules
- Every fact is verified on its page. A fact enters the fact sheet only from a Phase 3a
KEEPorFIX, with its source and its quote; a detail no checked page states does not enter a text, however plausible. - The licence is the tool's decision. A picture enters the plan only after
build.ps1 -FetchPicture ... -DryRunprintedACCEPTEDfor it. - The editor passes every text. No plan goes READY with an event the editor has not returned KEEP for in its latest round.
- The shipped pack is not touched here. This skill writes the plan, the dossier under
research/<key>/and files underscratch/;source/andpacks/change when the plan is implemented. The one exception is-NewPackfor a brand-new pack (Phase 0); the pack's own thumbnail is made at implementation (Phase 3, step 5). - Dossiers are kept. Every dossier stays in
research/<key>/, never deleted or trimmed, also when the plan is dropped: the candidates not chosen and the facts not used are where the next expansion of the pack starts. The only additions are theUsed:andChecked:lines of Phase 5.4. It is committed with the plan when the plan ships, or on the owner's word. - Ask the owner only the questions in Phase 0 and Phase 2.
Phase 0: scope
- Ask the owner, in one message: the country (and its tag if not obvious), the period (default: 1936 to the start of its war, plus its first months), the number of events (default 10 to 15), kinds to stress or avoid, and anything the pack must not touch. Record the answers in the plan's "Decisions".
- A new pack: confirm the tag with the
hoi4-vanilla-lookupskill (Get-HoiCountry), thenpowershell -File .\build.ps1 -NewPack -Pack <key> -Tag <TAG> -DisplayName "<Country>"; it renders a first thumbnail over the family's default loading screen with the Modding Manager'sNew-HoiThumbnail.ps1(or copiesassets/thumbnail_master.pngand prints the command when that cannot run), which Phase 3 replaces. Writesource/<key>/workshop-intro.bbcode: two or three plain sentences about the pack, and the info lines-NewPackdrafted. - Copy
docs/plans/TEMPLATE-pack.mdtodocs/plans/<YYYY-MM-DD>-<key>-<what>.mdand fill the header, "Context" and "Decisions". An existing pack: note its last event id; new ids continue from it.
Phase 1: research
- If
research/<key>/exists, read its dossiers. Their candidates without aUsed:mark that fit the period and kinds are candidates for this plan too; note their keys. A candidate with aChecked:line has been checked on its pages; judge it by the place its newestChecked:line names, not by the facts written under it. A fact sheet there holds every checked fact. A plan's "Fact verification" holds only the fixes and drops, so the dossier facts it does not name were kept. If chosen, it still goes through Phase 3a. - Candidates wanted: about one and a half times the events wanted, less the usable earlier candidates. Split them into runs of at most 12, each covering its own slice of the period (for 30: 1936, 1937-1938, 1939-1940), and dispatch one
ep-historical-researcherper run, all in parallel, each with: the country, tag, its period slice, its number of candidates, the kinds from Phase 0, the titles of the pack's existing events, every candidate of the earlier dossiers as key, date and one line, and its own pathresearch/<key>/<YYYY-MM-DD>-dossier.md(with-2and up for the other runs, or when that day already has one). Wait for every summary.
Phase 2: choose
Read the new dossiers. Drop candidates whose key facts are UNVERIFIED, that cannot fill 40 words with quoted facts, or that duplicate a candidate of another run. Show the owner the rest, with the usable earlier candidates marked as such, as a short list (key, date, kind, gate: date window or game state, one line) with your recommendation of which to keep and why, and take their choice.
Phase 3: pictures
- Dispatch
ep-picture-researcherwith the chosen events: key, date, place and the dossier's picture ideas. - For each event, run
powershell -File .\build.ps1 -FetchPicture -Pack <key> -File "<File:...>" -Key <picture key> -DryRunon its first proposal; onREJECTED, try the next. An event with no accepted file gets a vanilla picture (vanilla:GFX_report_event_<name>, found withFind-HoiUsageof thehoi4-vanilla-lookupskill) and a note in the plan. - Choose crop and tone per picture:
warmfor black-and-white photographs (it matches the game's own pictures),nonefor colour art; a crop other than 50 only where the researcher's crop note asks for it. - Fill the plan's "Pictures" table with what the dry runs printed.
- Thumbnail, for a new pack or one without a
packs.<key>.backgroundinassets/thumbnail.json: the background is one of the pack's own event pictures, not a vanilla loading screen. The Modding Manager'sNew-HoiThumbnail.ps1draws the rest in the one fixed Event Pack layout (the game's border, "EVENT PACK" and the country on the title plate at the bottom, the flag of the pack's tag at the top right), so the picture and its crop are the only choices. Pick a picture that printedACCEPTED, PD or CC0 preferred; CC BY also does, as the generated Workshop description credits every picture an event uses. Look at the picture and name where its subject sits: the plate covers about the bottom third of the square and the flag its top right corner, so prefer a picture whose subject can sit in the upper middle. A landscape picture fills the square's whole height, so the crop ("center","left","right") only moves it sideways; a portrait picture fills its width, and"top"or"bottom"keeps the subject in;[x, y]centring fractions place it in between. WriteThumbnail: <picture key>, crop <crop>and fill step 4 of "Implementation steps" with the picture key, the crop as JSON, and the Modding Manager's absolute path as<Manager root>(the folder two levels above this repository). Its commands take-Path ., so the Phase 5 rehearsal renders into and writes only its copy. A dry run downloads nothing, so the thumbnail is made at implementation, after step 3, from the copy-FetchPicturesaves insources-cache/<key>/(the Commons rendering, up to 1600 px wide), never from the 210x176 DDS. A pack that already has its own thumbnail: writeThumbnail: unchangedand make step 4 readThumbnail unchanged: nothing to run., so the step numbers stay.
Phase 3a: verify
Runs after the owner's choice, at the same time as Phase 3 if you like; a researcher's quote is a lead, not yet a check.
- Dispatch
ep-audit-researcheron the chosen events, at most five per agent, all in parallel. Paste each event's dossier section whole; send no pictures. - Only
KEEPandFIXfacts go on, each with the source and quote the checker returned. An event left with less than 40 words of verified detail goes back to Phase 2 for a replacement, and the replacement comes through Phase 3a too. - Fill the plan's "Fact verification": agents and events per agent; per checked event, replaced ones included, the
KEEP,FIXandDROPcounts, each fixed fact with its correction and each dropped fact; the events replaced.
Phase 4: write
- Write each chosen event's section of the plan's
markdown fact-sheetsblock from its Phase 3a results only: every fact line is- <fact>. Source: <URL> (<page title>). Quote: «<line from the page>». Never copy a dossier fact straight in. - Write the events into the
json eventsblock: for an existing pack, start from the currentsource/<key>/events.jsonand add to it. Followdocs/source-format.mdfor every field anddocs/style-guide.mdfor every text. Effects small and matching their option; a timed idea only where the event earns one. Three rules the editor holds you to:- No claim made by joining two facts, unless one quote states the joined claim.
- Titles and roles as they were on the event's date, not as they became later.
- The text stays true on every day of the
firewindow: nothing it calls recent or upcoming may already be over, or not yet happened, on another day of the window. - An event about a war, or about preparing for one, is gated on the game state in
fire.trigger(see AGENTS.md), not on a date; its text names no historical date for the war's start or the preparations. A peacetime event is blocked once the country is at war. Before a trigger goes into the plan, look up its scope withFind-HoiDoc, and look up every tag, state and flag it names at the window's start (Get-HoiState,Get-HoiCountryHistory,Find-HoiUsage): a trigger that is valid script can still never be true in a normal game (a country that does not exist at the start, a state another country owns). A lookup that the plan promises for later is done before the plan is READY.
- Verify the triggers before any editor sees them. Dispatch the
trigger-checkeragent (the Modding Manager'sAgents/trigger-checker.md, installed user-level; Antigravity passes that file toinvoke_subagent) with the plan path, the event keys and the pack's tag. It resolves everyfire.triggeragainst the game files at the event'sfire.afterand answers, per event, whether the trigger can be true in the window, how long it holds against the weekly check, whether the text is false in a case the trigger allows, and whether the window fits the text's dates. Apply everyFIXas given, run the changed events through it again, and record each event's verdict in the plan's "Trigger verification": OK, the FIX with the trigger that replaced the old one, or OPEN with the probe and its result or the owner's decision. A plan with anOPENevent that has neither a probe result nor an owner decision is not READY. The editor's suggested conditions are leads for this step, not triggers. - Dispatch
ep-editorwith the plan path (itsmarkdown fact-sheetsblock is the fact sheet) and the event keys. Apply every REWRITE as given; drop or replace a REJECT (back to Phase 2 for a replacement). Record each round in "Editor record". Send the changed events back to the editor until every event is KEEP; at most three rounds, then ask the owner. - Judge the pack's Workshop intro,
source/<key>/workshop-intro.bbcode: dispatchworkshop-editorin mod mode (the Modding Manager'sdocs/workshop-text-style.md(..\..\docs\workshop-text-style.md), section "Auditing a page") with the mod folder (the repository root) and that file, afterTest-WorkshopText.ps1 -Mod "Event Packs" -Pack <key>passes. The intro says only what the pack'sevents.jsonandpictures.jsonshow (the number of events, which events carry a period picture, what the effects are) and uses the wording of the other packs' intros for the same fact. Apply every REWRITE, run-Generate,Sync-WorkshopRegions.ps1and the mechanical check again, then send the intro back until it is KEEP; at most three rounds, then ask the owner. Record the rounds in "Editor record".
Phase 5: gate
- Rehearse the plan without touching the repository:
robocopy . scratch\rehearsal /MIR /XD .git scratch artifacts sources-cache, then inscratch\rehearsalrun steps 1 to 8 of the plan exactly as written (they write only the copy). Every step must give what it says to expect; fix the plan, not the copy, and rehearse again. Step 4 edits the copy'sassets\thumbnail.json; open the preview it names with the Read tool, and pick another picture or crop when the title plate or the flag covers the subject. Step 8 draws each event as the game's window (scratch\rehearsal\artifacts\workshop-images\<key>\): open the images with the Read tool, and shorten a title or option the render prints a[WARN]for: it overflows its box into the text below [GUW-027]. - Fill "Events", list in "Kept on judgment" any
[WARN]the rehearsal's-Check -Pack <key>or-RenderEvents -Pack <key>printed that stays, and setStatus: READY. - Delete the copy:
Remove-Item -Recurse -Force scratch\rehearsal. - Mark the dossiers, in every section of the candidate's key (dossier and addendum alike):
- Each event of the READY plan gets a line
Used: <plan file name>right under its## <key>heading. - Every candidate Phase 3a checked, the replaced ones included, then gets a line below that (below its heading if it has no
Used:, below any earlierChecked:line):Checked: <plan file name>, <K> kept, <F> fixed, <D> dropped. The facts below are the researcher's notes, not the checked ones: see <where>.The counts are its own from "Fact verification".<where>issource/<key>/fact-sheets.mdfor an event of the plan, andthe plan's "Fact verification"for a replaced one. - Change nothing else in a dossier. A candidate never checked stays unmarked, as the researcher wrote it.
- Each event of the READY plan gets a line
Phase 6: hand off
Report to the owner: the plan path, the dossier paths with how many candidates they keep for later, the events with their titles, the picture licences (how many PD, CC0, CC BY), the thumbnail's picture and crop, the fact verification totals, the editor's totals, and that event-pack-implement carries it out. Then stop.
Antigravity: pass each agent brief's path to invoke_subagent; where no subagent can be dispatched, read the brief and do its work yourself, keeping the editor's work in a separate pass that reads only the draft, the fact sheet and the style guide.