Community研究与数据分析github.com

事件包创建:国家包策划与事件编写

用于规划新的事件包(格式为“事件包:<国家>”)或为已有事件包添加新事件:通过子智能体进行研究、带许可检查的图片搜索、基于来源事实表编写事件文本并由独立编辑审核,最终生成一份自包含的READY计划文档存放于docs/plans/目录。完成后进行交接;event-pack-implement将负责执行该计划。

事件包创建:国家包策划与事件编写 是什么?

该技能(TheCreepero/event-pack-create)专为《Hearts of Iron IV》的事件包创建而设计,支持策划全新国家事件包或为已有事件包扩展新事件。其工作流程严谨而完整:首先与所有者确认范围(国家、时期、事件数量等),然后通过多个并行子智能体(ep-historical-researcher)进行历史研究,生成候选人名单(约为目标事件数的1.5倍)。所有者选择后,技能会并行执行图片研究(ep-picture-researcher)和事实核查(ep-audit-researcher),并严格遵循许可规则——仅使用经`build.ps1 -FetchPicture -DryRun`命令输出`ACCEPTED`的图片。在文本编写阶段,所有事实均需标注来源和引用,并遵守source-format.md和style-guide.md规范;随后通过触发器检查器(trigger-checker)验证事件触发条件,再由独立编辑(ep-editor)逐条审核文本,直至全部通过。最终计划会被标记为READY状态,并交接给event-pack-implement执行。该技能适用于Claude Code、Cursor、Codex等AI代理平台,以Skillets形式集成于Modding Manager中。

兼容平台~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/TheCreepero/event-packs/tree/HEAD/.agents/skills/event-pack-create

Installed? Explore more 研究与数据分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

事件包:创建包或添加事件

规划一个事件包或新事件,细化到每段文本、每条效果和每张图片,全部包含在一个计划文件中,由 event-pack-implement 执行。在第4阶段之前,请先阅读 docs/source-format.md 和 docs/style-guide.md。

规则

  • 每一条事实都需在其页面上得到验证。 事实只有从第3a阶段的 KEEP 或 FIX 结果中才能进入事实表,并附带其来源和引用;任何未由已核查页面明确陈述的细节均不得写入文本,无论其看似多么合理。
  • 许可由工具决定。 图片只有在 build.ps1 -FetchPicture ... -DryRun 输出 ACCEPTED 后,才能被纳入计划。
  • 编辑必须通过每一段文本。 若某事件的最新一轮编辑未返回 KEEP,则计划不能进入 READY 状态。
  • 此处不修改已发布的事件包。 本技能仅编写计划、research/<key>/ 下的档案文件以及 scratch/ 下的文件;source/ 和 packs/ 仅在计划被实施时才会变更。唯一的例外是全新包(第0阶段)使用 -NewPack;该包自身的缩略图将在实施阶段制作(第3阶段,步骤5)。
  • 档案应予以保留。 每个档案都保留在 research/<key>/ 中,绝不删除或裁剪,即使计划被放弃也是如此:未选中的候选人和未使用的事实将是该包未来扩展的起点。仅在第5.4阶段添加 Used: 和 Checked: 行。当计划随包发布时,或应所有者要求时,档案将被提交。
  • 仅在第0阶段和第2阶段向所有者提问。

第0阶段:范围

  1. 在一次消息中向所有者询问:国家(如标签不明显则同时询问标签)、时期(默认为1936年至其战争开始,加上头几个月)、事件数量(默认为10至15个)、强调或避免的事件类型,以及该包不得触及的任何事项。将答案记录在计划的“决策”部分。
  2. 新包:使用 hoi4-vanilla-lookup 技能(Get-HoiCountry)确认标签,然后运行 powershell -File .\build.ps1 -NewPack -Pack <键> -Tag <标签> -DisplayName "<国家>";它会使用 Modding Manager 的 New-HoiThumbnail.ps1(或在其无法运行时复制 assets/thumbnail_master.png 并打印命令)在家族的默认加载画面基础上渲染出第一张缩略图,该缩略图将在第3阶段被替换。编写 source/<key>/workshop-intro.bbcode:用两句或三句简洁的文字描述该包,以及 -NewPack 草拟的信息行。
  3. 将 docs/plans/TEMPLATE-pack.md 复制为 docs/plans/<YYYY-MM-DD>-<键>-<内容>.md,并填写页眉、“背景”和“决策”部分。已有包:记下其最后一个事件ID;新ID从该ID之后继续。

第1阶段:研究

  1. 如果 research/<key>/ 已存在,请阅读其中的档案。其中未标记 Used: 且符合时期和类型的候选人也将成为本计划的候选人;记下它们的键。带有 Checked: 行的候选人表示其页面已被检查过;应根据其最新的 Checked: 行所指明的页面位置进行判断,而不是依据其下书写的事实。事实表包含所有已核查的事实。计划的“事实核查”部分仅包含修正和丢弃的内容,因此档案事实中未提及的部分视为保留。即使被选中,仍需经过第3a阶段。
  2. 需要的候选人数量:约为目标事件数的1.5倍,减去可用的先前候选人。将其分成最多12个为一组,每组覆盖各自的时间段(例如30个事件:1936年、1937-1938年、1939-1940年),并并行分发一个 ep-historical-researcher 到每个组,每个智能体接收:国家、标签、时间段、候选人数量、第0阶段的类型、包已有事件的标题、先前档案中的每个候选人(键、日期和一行描述),以及其自身路径 research/<key>/<YYYY-MM-DD>-dossier.md(如果当天已有文件,则使用 -2 及后续编号)。等待所有摘要返回。

第2阶段:选择

阅读新的档案。丢弃关键事实为 UNVERIFIED、无法用引用事实填充40个单词、或与另一组候选人重复的候选人。向所有者展示其余候选人,并将可用的先前参与者标记为“旧有”,以简短列表形式(键、日期、类型、触发条件:日期窗口或游戏状态、一行描述)呈现,同时附上你的推荐意见及理由,供所有者选择。

第3阶段:图片

  1. 将 ep-picture-researcher 分发到所选事件:键、日期、地点以及档案中的图片想法。
  2. 对于每个事件,在其第一个提案上运行 powershell -File .\build.ps1 -FetchPicture -Pack <键> -File "<文件:...>" -Key <图片键> -DryRun;如果返回 REJECTED,则尝试下一个。对于没有接受文件的事件,使用一张原版图片(vanilla:GFX_report_event_<名称>,通过 hoi4-vanilla-lookup 技能的 Find-HoiUsage 查找)并在计划中注明。
  3. 为每张图片选择裁剪和色调:warm 适用于黑白照片(与游戏自带的图片匹配),none 适用于彩色艺术图;除研究人员在裁剪说明中有特殊要求外,裁剪值默认为50。
  4. 将干运行输出填入计划的“图片”表格。
  5. 缩略图,适用于新包或 assets/thumbnail.json 中没有 packs.<键>.background 的包:背景应为该包自身的一张事件图片,而非原版加载画面。Modding Manager 的 New-HoiThumbnail.ps1 使用固定的事件包布局(游戏边框、“EVENT PACK”和国家位于底部标题板上,包标签的旗帜位于右上角)绘制其余部分,因此唯一需要选择的就是图片及其裁剪。选择一张输出为 ACCEPTED、优先选用PD或CC0的图片;CC BY也可接受,因为生成的工坊描述会注明每张图片的来源。观察图片并确定其主体所在位置:标题板覆盖了正方形的大约底部三分之一,旗帜覆盖了右上角,因此优先选择主体位于中部偏上的图片。横向图片填满正方形的整个高度,裁剪("center"、"left"、"right")仅左右移动;竖向图片填满其宽度,"top" 或 "bottom" 将主体包含在内;[x, y] 居中分数可将主体置于中间。写入 Thumbnail: <图片键>, crop <裁剪>,并在“实施步骤”的步骤4中填入图片键、JSON格式的裁剪以及 Modding Manager 的绝对路径 <Manager root>(即该仓库上两级的文件夹)。其命令使用 -Path .,因此第5阶段的排练只会影响副本。干运行不会下载任何内容,因此在实施阶段,在第3步之后,从 -FetchPicture 保存到 sources-cache/<键>/ 的副本(Commons渲染,宽度最多1600像素)中制作缩略图,切勿使用210x176的DDS。已有自己缩略图的包:写入 Thumbnail: unchanged,并使步骤4内容为 Thumbnail unchanged: nothing to run.,以保持步骤编号不变。

第3a阶段:核查

在所有者的选择之后运行,可与第3阶段同时进行;研究人员的引用是线索,而非最终检查。

  1. 将 ep-audit-researcher 分发到所选事件,每个智能体最多5个事件,全部并行进行。粘贴每个事件的完整档案部分;不发送图片。
  2. 只有 KEEP 和 FIX 的事实才能继续,并附带检查员返回的来源和引用。如果一个事件剩余的可核查细节不足40个单词,则返回第2阶段替换,替换事件也需经过第3a阶段。
  3. 填写计划的“事实核查”部分:智能体及每个智能体处理的事件;对于每个被检查的事件(包括被替换的),记录 KEEP、FIX 和 DROP 的数量,每个修正事实及其更正,以及每个被丢弃的事实;被替换的事件。

第4阶段:编写

  1. 仅根据第3a阶段的结果编写计划中每个所选事件的markdown fact-sheets块:每个事实行格式为 - <事实>. Source: <URL> (<页面标题>). Quote: «<页面行>»。切勿直接复制档案事实。
  2. 将事件写入 json events 块:对于已有包,从当前的 source/<键>/events.json 开始并追加。遵循 docs/source-format.md 中的每个字段和 docs/style-guide.md 中的每段文本。效果应简洁且与选项匹配;仅在事件应得时添加限时理念。编辑会要求你遵守以下三条规则:
    • 不得通过合并两个事实来提出主张,除非一个引用中明确陈述了合并后的主张。
    • 头衔和角色应为事件发生时的状态,而非后来的状态。
    • 在 fire 窗口内的每一天,文本都必须真实:窗口中任何被称为近期或即将发生的事件,在窗口的其他日期间不能已经结束或尚未发生。
    • 关于战争或备战的事件应通过 fire.trigger(参见 AGENTS.md)基于游戏状态触发,而非基于日期;其文本不得提及战争开始或备战的任何历史日期。和平事件一旦国家处于战争状态则被阻止。在将触发条件纳入计划之前,使用 Find-HoiDoc 查找其作用域,并查找其在窗口开始时涉及的所有标签、州和旗帜(Get-HoiState、Get-HoiCountryHistory、Find-HoiUsage):一个有效的脚本触发条件在正常游戏中可能永远无法为真(例如,一个国家在开始时不存在,或一个州已被其他国家控制)。计划中承诺稍后进行的查找,必须在计划达到 READY 状态之前完成。
  3. 在编辑看到任何事件之前验证触发条件。将 trigger-checker 智能体(Modding Manager 的 Agents/trigger-checker.md,以用户级别安装;Antigravity 将该文件传递给 invoke_subagent)与计划路径、事件键和包标签一起分发。它将解析每个 fire.trigger 相对于游戏文件在事件 fire.after 时刻的情况,并针对每个事件回答:触发条件在窗口内是否可能为真、在每周检查中持续多久、文本是否在触发条件允许的情况下为假、以及窗口是否与文本的日期匹配。按原样应用每个 FIX,对修改后的事件再次运行该检查,并将每个事件的判定记录在计划的“触发器验证”部分:OK、替换原触发条件的 FIX、或 OPEN 并附上探测结果或所有者的决定。一个处于 OPEN 状态且既没有探测结果也没有所有者决定的事件,不能视为 READY。编辑建议的条件是此步骤的线索,而非直接的触发条件。
  4. 将 ep-editor 与计划路径(其 markdown fact-sheets 块作为事实表)和事件键一起分发。按原样应用每个 REWRITE;丢弃或替换 REJECT(返回第2阶段替换)。将每轮记录在“编辑记录”中。将修改后的事件发送回编辑,直到每个事件均为 KEEP;最多三轮,之后询问所有者。
  5. 判断包的工作坊简介 source/<键>/workshop-intro.bbcode:将 workshop-editor 以模组模式分发(Modding Manager 的 docs/workshop-text-style.md(..\..\docs\workshop-text-style.md),章节“审核页面”),传入模组文件夹(仓库根目录)和该文件,在 Test-WorkshopText.ps1 -Mod "Event Packs" -Pack <键> 通过之后。简介仅说明该包的 events.json 和 pictures.json 中所显示的内容(事件数量、哪些事件带有时期图片、效果是什么),并使用其他包简介中对同一事实的措辞。按原样应用每个 REWRITE,运行 -Generate、Sync-WorkshopRegions.ps1 和机械检查,然后将简介发送回编辑,直到其为 KEEP;最多三轮,之后询问所有者。将轮次记录在“编辑记录”中。

第5阶段:关卡

  1. 排练计划而不触及仓库:robocopy . scratch\rehearsal /MIR /XD .git scratch artifacts sources-cache,然后在 scratch\rehearsal 中完全按照计划所写执行步骤1到8(它们只写入副本)。每个步骤必须产生其预期的结果;修正计划而非副本,然后重新排练。步骤4编辑副本的 assets\thumbnail.json;使用读取工具打开它命名的预览,当标题板或旗帜遮住主体时选择另一张图片或裁剪。步骤8将每个事件渲染为游戏窗口(scratch\rehearsal\artifacts\workshop-images\<键>\):使用读取工具打开图片,对渲染打印出 [WARN] 的标题或选项进行缩短:因为它溢出了框体,进入了下方的文本 [GUW-027]。
  2. 填写“事件”,在“因判断保留”列表中列出排练的 -Check -Pack <键> 或 -RenderEvents -Pack <键> 打印出的任何保留的 [WARN],并设置 Status: READY。
  3. 删除副本:Remove-Item -Recurse -Force scratch\rehearsal。
  4. 标记档案,在每个候选人键的章节(档案和附录)中:
    • READY 计划中的每个事件在其 ## <键> 标题下添加一行 Used: <计划文件名>。
    • 第3a阶段检查过的每个候选人(包括被替换的)在该行下方添加一行(如果其没有 Used:,则在标题下;如果已有 Checked: 行,则在其下方):Checked: <计划文件名>, <K> kept, <F> fixed, <D> dropped. The facts below are the researcher's notes, not the checked ones: see <where>. 计数来自其自身的“事实核查”部分。<where> 对于计划中的事件为 source/<键>/fact-sheets.md,对于被替换的事件为 the plan's "Fact verification"。
    • 不得修改档案中的其他任何内容。从未被检查的候选人保持原样,如研究人员所写。

第6阶段:交接

向所有者报告:计划路径、档案路径及每个档案保留的候选人数量、事件及其标题、图片许可信息(PD、CC0、CC BY 的数量)、缩略图的图片和裁剪、事实核查总数、编辑总数,以及 event-pack-implement 将执行该计划的信息。然后停止。

Antigravity:将每个智能体简要说明的路径传递给 invoke_subagent;在无法分发子智能体的情况下,阅读简要说明并自行完成其工作,在单独的遍次中完成编辑工作,该遍次仅读取草稿、事实表和样式指南。

相关技能