modwright 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/LICENSE +35 -0
  2. package/README.md +212 -0
  3. package/assets/claude/agents/mw-explore.md +46 -0
  4. package/assets/claude/agents/mw-fixture.md +33 -0
  5. package/assets/claude/agents/mw-rule-author.md +51 -0
  6. package/assets/claude/agents/mw-scaffold-author.md +48 -0
  7. package/assets/claude/skills/mw-author.md +59 -0
  8. package/assets/claude/skills/mw-new-item.md +51 -0
  9. package/assets/claude/skills/mw-new-spell.md +50 -0
  10. package/assets/claude/skills/mw-scaffold.md +59 -0
  11. package/assets/claude/skills/mw-ship.md +57 -0
  12. package/assets/claude/skills/mw-validate.md +51 -0
  13. package/assets/claude/skills/mw-verify.md +59 -0
  14. package/assets/nivalisnights/extract_resources.py +177 -0
  15. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Config.json +5 -0
  16. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapClient.lua +55 -0
  17. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/BootstrapServer.lua +81 -0
  18. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Log.lua +96 -0
  19. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Probes.lua +1038 -0
  20. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/ProbesClient.lua +74 -0
  21. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Protocol.lua +985 -0
  22. package/bridges/bg3-se/Mods/ModWrightBridge/ScriptExtender/Lua/ModWrightBridge/Watch.lua +175 -0
  23. package/bridges/bg3-se/Mods/ModWrightBridge/meta.lsx +45 -0
  24. package/bridges/bg3-se/README.md +99 -0
  25. package/bridges/bg3-se/bridge.json +68 -0
  26. package/bridges/cp2077-cet/ModWrightBridge/init.lua +375 -0
  27. package/bridges/cp2077-cet/ModWrightBridge/probes.lua +1104 -0
  28. package/bridges/cp2077-cet/ModWrightBridge/protocol.lua +1306 -0
  29. package/bridges/cp2077-cet/README.md +165 -0
  30. package/bridges/cp2077-cet/bridge.json +53 -0
  31. package/dist/core/bridge/arm.js +175 -0
  32. package/dist/core/bridge/cet-console.js +26 -0
  33. package/dist/core/bridge/cet-log.js +362 -0
  34. package/dist/core/bridge/index.js +11 -0
  35. package/dist/core/bridge/locate.js +35 -0
  36. package/dist/core/bridge/paths.js +34 -0
  37. package/dist/core/bridge/pending.js +89 -0
  38. package/dist/core/bridge/poll.js +155 -0
  39. package/dist/core/bridge/stage.js +100 -0
  40. package/dist/core/bridge/status.js +97 -0
  41. package/dist/core/bridge/types.js +145 -0
  42. package/dist/core/bridge/validate.js +107 -0
  43. package/dist/core/build/index.js +6 -0
  44. package/dist/core/build/manifest.js +47 -0
  45. package/dist/core/build/paths.js +32 -0
  46. package/dist/core/build/run.js +342 -0
  47. package/dist/core/build/stage.js +265 -0
  48. package/dist/core/build/steps/bg3.js +129 -0
  49. package/dist/core/build/steps/core.js +195 -0
  50. package/dist/core/build/steps/cyberpunk.js +95 -0
  51. package/dist/core/build/steps/listing.js +35 -0
  52. package/dist/core/build/types.js +13 -0
  53. package/dist/core/build/zip.js +148 -0
  54. package/dist/core/compat/check.js +113 -0
  55. package/dist/core/compat/pe.js +220 -0
  56. package/dist/core/compat/types.js +1 -0
  57. package/dist/core/compat/version.js +70 -0
  58. package/dist/core/deploy/guards.js +292 -0
  59. package/dist/core/deploy/index.js +5 -0
  60. package/dist/core/deploy/plan.js +696 -0
  61. package/dist/core/deploy/reload-apply.js +361 -0
  62. package/dist/core/deploy/reload.js +358 -0
  63. package/dist/core/deploy/sources.js +169 -0
  64. package/dist/core/deploy/types.js +1 -0
  65. package/dist/core/epic.js +54 -0
  66. package/dist/core/fsutil.js +191 -0
  67. package/dist/core/home.js +70 -0
  68. package/dist/core/knowledge/facts.js +229 -0
  69. package/dist/core/knowledge/index.js +4 -0
  70. package/dist/core/knowledge/search.js +112 -0
  71. package/dist/core/knowledge/store.js +123 -0
  72. package/dist/core/knowledge/types.js +1 -0
  73. package/dist/core/ledger/check.js +42 -0
  74. package/dist/core/ledger/hooks.js +80 -0
  75. package/dist/core/ledger/index.js +7 -0
  76. package/dist/core/ledger/query.js +17 -0
  77. package/dist/core/ledger/record.js +84 -0
  78. package/dist/core/ledger/status.js +53 -0
  79. package/dist/core/ledger/store.js +98 -0
  80. package/dist/core/ledger/types.js +108 -0
  81. package/dist/core/logs/index.js +4 -0
  82. package/dist/core/logs/registry.js +50 -0
  83. package/dist/core/logs/scan.js +195 -0
  84. package/dist/core/logs/triage.js +160 -0
  85. package/dist/core/logs/types.js +1 -0
  86. package/dist/core/lsx.js +10 -0
  87. package/dist/core/lz4.js +66 -0
  88. package/dist/core/mods.js +229 -0
  89. package/dist/core/process.js +49 -0
  90. package/dist/core/project/build-steps.js +83 -0
  91. package/dist/core/project/describe.js +74 -0
  92. package/dist/core/project/index.js +5 -0
  93. package/dist/core/project/load.js +146 -0
  94. package/dist/core/project/schema.js +264 -0
  95. package/dist/core/project/types.js +3 -0
  96. package/dist/core/prompts.js +72 -0
  97. package/dist/core/registry.js +35 -0
  98. package/dist/core/safety/backup.js +206 -0
  99. package/dist/core/safety/execute.js +188 -0
  100. package/dist/core/safety/index.js +5 -0
  101. package/dist/core/safety/plan.js +122 -0
  102. package/dist/core/safety/restore.js +172 -0
  103. package/dist/core/safety/types.js +1 -0
  104. package/dist/core/scaffold/bootstrap.js +7 -0
  105. package/dist/core/scaffold/catalog.js +28 -0
  106. package/dist/core/scaffold/claude-assets.js +271 -0
  107. package/dist/core/scaffold/collisions.js +64 -0
  108. package/dist/core/scaffold/emit.js +356 -0
  109. package/dist/core/scaffold/engine.js +680 -0
  110. package/dist/core/scaffold/ids.js +78 -0
  111. package/dist/core/scaffold/index.js +10 -0
  112. package/dist/core/scaffold/jsonpath.js +121 -0
  113. package/dist/core/scaffold/load.js +81 -0
  114. package/dist/core/scaffold/render.js +85 -0
  115. package/dist/core/scaffold/sequence.js +396 -0
  116. package/dist/core/scaffold/types.js +309 -0
  117. package/dist/core/steam.js +63 -0
  118. package/dist/core/surfaceutil.js +36 -0
  119. package/dist/core/testplan/check.js +67 -0
  120. package/dist/core/testplan/index.js +5 -0
  121. package/dist/core/testplan/load.js +100 -0
  122. package/dist/core/testplan/registry.js +317 -0
  123. package/dist/core/testplan/run.js +389 -0
  124. package/dist/core/testplan/types.js +82 -0
  125. package/dist/core/text/converters/bg3.js +50 -0
  126. package/dist/core/text/converters/cyberpunk.js +36 -0
  127. package/dist/core/text/converters/index.js +261 -0
  128. package/dist/core/text/diff/cr2w.js +180 -0
  129. package/dist/core/text/diff/index.js +16 -0
  130. package/dist/core/text/diff/loca.js +43 -0
  131. package/dist/core/text/diff/lsx.js +126 -0
  132. package/dist/core/text/handles.js +86 -0
  133. package/dist/core/text/index.js +6 -0
  134. package/dist/core/text/json.js +46 -0
  135. package/dist/core/text/templates/cache.js +71 -0
  136. package/dist/core/text/templates/index.js +3 -0
  137. package/dist/core/text/templates/library.js +245 -0
  138. package/dist/core/text/templates/types.js +51 -0
  139. package/dist/core/text/toolchain.js +16 -0
  140. package/dist/core/text/types.js +1 -0
  141. package/dist/core/text/validate.js +149 -0
  142. package/dist/core/text/xml.js +58 -0
  143. package/dist/core/toolchain/datafetch.js +151 -0
  144. package/dist/core/toolchain/env.js +63 -0
  145. package/dist/core/toolchain/features.js +170 -0
  146. package/dist/core/toolchain/index.js +8 -0
  147. package/dist/core/toolchain/install.js +191 -0
  148. package/dist/core/toolchain/locate.js +275 -0
  149. package/dist/core/toolchain/remember.js +84 -0
  150. package/dist/core/toolchain/run.js +318 -0
  151. package/dist/core/toolchain/specs.js +351 -0
  152. package/dist/core/toolchain/types.js +1 -0
  153. package/dist/core/types.js +1 -0
  154. package/dist/core/userconfig.js +66 -0
  155. package/dist/core/validate/context.js +139 -0
  156. package/dist/core/validate/index.js +5 -0
  157. package/dist/core/validate/registry.js +58 -0
  158. package/dist/core/validate/run.js +131 -0
  159. package/dist/core/validate/suppressions.js +91 -0
  160. package/dist/core/validate/types.js +2 -0
  161. package/dist/core/yamledit.js +51 -0
  162. package/dist/index.js +389 -0
  163. package/dist/server.js +1914 -0
  164. package/dist/surfaces/baldursgate3/compat.js +164 -0
  165. package/dist/surfaces/baldursgate3/identity.js +110 -0
  166. package/dist/surfaces/baldursgate3/index/build.js +331 -0
  167. package/dist/surfaces/baldursgate3/index/index.js +17 -0
  168. package/dist/surfaces/baldursgate3/index/info.js +40 -0
  169. package/dist/surfaces/baldursgate3/index/parsers/loca.js +41 -0
  170. package/dist/surfaces/baldursgate3/index/parsers/lsx.js +137 -0
  171. package/dist/surfaces/baldursgate3/index/parsers/stats.js +45 -0
  172. package/dist/surfaces/baldursgate3/index/parsers/treasuretable.js +57 -0
  173. package/dist/surfaces/baldursgate3/index/parsers/xmlutil.js +142 -0
  174. package/dist/surfaces/baldursgate3/index/queries.js +327 -0
  175. package/dist/surfaces/baldursgate3/index/schema.js +62 -0
  176. package/dist/surfaces/baldursgate3/index.js +3 -0
  177. package/dist/surfaces/baldursgate3/logs.js +278 -0
  178. package/dist/surfaces/baldursgate3/modsettings.js +115 -0
  179. package/dist/surfaces/baldursgate3/pak.js +153 -0
  180. package/dist/surfaces/baldursgate3/settings.js +49 -0
  181. package/dist/surfaces/baldursgate3/surface.js +232 -0
  182. package/dist/surfaces/baldursgate3/validators/bridge.js +7 -0
  183. package/dist/surfaces/baldursgate3/validators/files.js +476 -0
  184. package/dist/surfaces/baldursgate3/validators/items.js +1001 -0
  185. package/dist/surfaces/baldursgate3/validators/progression.js +734 -0
  186. package/dist/surfaces/baldursgate3/validators/stats.js +1076 -0
  187. package/dist/surfaces/baldursgate3/validators/story.js +790 -0
  188. package/dist/surfaces/baldursgate3/validators/templates.js +7 -0
  189. package/dist/surfaces/cyberpunk2077/compat.js +223 -0
  190. package/dist/surfaces/cyberpunk2077/index/build.js +231 -0
  191. package/dist/surfaces/cyberpunk2077/index/index.js +17 -0
  192. package/dist/surfaces/cyberpunk2077/index/info.js +51 -0
  193. package/dist/surfaces/cyberpunk2077/index/model.js +52 -0
  194. package/dist/surfaces/cyberpunk2077/index/parsers/tweak.js +483 -0
  195. package/dist/surfaces/cyberpunk2077/index/parsers/tweakxl-yaml.js +183 -0
  196. package/dist/surfaces/cyberpunk2077/index/queries.js +504 -0
  197. package/dist/surfaces/cyberpunk2077/index/resource.js +135 -0
  198. package/dist/surfaces/cyberpunk2077/index/schema.js +90 -0
  199. package/dist/surfaces/cyberpunk2077/index.js +3 -0
  200. package/dist/surfaces/cyberpunk2077/logs.js +742 -0
  201. package/dist/surfaces/cyberpunk2077/paths.js +12 -0
  202. package/dist/surfaces/cyberpunk2077/surface.js +218 -0
  203. package/dist/surfaces/cyberpunk2077/validators/bridge.js +7 -0
  204. package/dist/surfaces/cyberpunk2077/validators/cr2w.js +349 -0
  205. package/dist/surfaces/cyberpunk2077/validators/garments.js +1181 -0
  206. package/dist/surfaces/cyberpunk2077/validators/mesh.js +338 -0
  207. package/dist/surfaces/cyberpunk2077/validators/modsettings.js +120 -0
  208. package/dist/surfaces/cyberpunk2077/validators/packaging.js +463 -0
  209. package/dist/surfaces/cyberpunk2077/validators/red4ext.js +318 -0
  210. package/dist/surfaces/cyberpunk2077/validators/redscript.js +193 -0
  211. package/dist/surfaces/cyberpunk2077/validators/templates.js +7 -0
  212. package/dist/surfaces/cyberpunk2077/validators/tweaks.js +768 -0
  213. package/dist/surfaces/cyberpunk2077/validators/vehicles.js +531 -0
  214. package/dist/surfaces/cyberpunk2077/validators/xl.js +308 -0
  215. package/dist/surfaces/eldenring/binders.js +111 -0
  216. package/dist/surfaces/eldenring/compat.js +166 -0
  217. package/dist/surfaces/eldenring/dcx.js +49 -0
  218. package/dist/surfaces/eldenring/index.js +13 -0
  219. package/dist/surfaces/eldenring/loaders.js +132 -0
  220. package/dist/surfaces/eldenring/logs.js +67 -0
  221. package/dist/surfaces/eldenring/paramdef.js +256 -0
  222. package/dist/surfaces/eldenring/params.js +129 -0
  223. package/dist/surfaces/eldenring/surface.js +121 -0
  224. package/dist/surfaces/eldenring/tools.js +52 -0
  225. package/dist/surfaces/eldenring/validators/binders.js +193 -0
  226. package/dist/surfaces/eldenring/validators/packages.js +159 -0
  227. package/dist/surfaces/eldenring/validators/params.js +334 -0
  228. package/dist/surfaces/eldenring/validators/profiles.js +287 -0
  229. package/dist/surfaces/index.js +34 -0
  230. package/dist/surfaces/nivalisnights/compat.js +229 -0
  231. package/dist/surfaces/nivalisnights/index/build.js +310 -0
  232. package/dist/surfaces/nivalisnights/index/index.js +5 -0
  233. package/dist/surfaces/nivalisnights/index/queries.js +231 -0
  234. package/dist/surfaces/nivalisnights/index.js +4 -0
  235. package/dist/surfaces/nivalisnights/logs.js +473 -0
  236. package/dist/surfaces/nivalisnights/surface.js +195 -0
  237. package/dist/surfaces/skyrimse/archives.js +229 -0
  238. package/dist/surfaces/skyrimse/compat.js +163 -0
  239. package/dist/surfaces/skyrimse/index.js +12 -0
  240. package/dist/surfaces/skyrimse/loadorder.js +174 -0
  241. package/dist/surfaces/skyrimse/logs.js +241 -0
  242. package/dist/surfaces/skyrimse/plugins.js +149 -0
  243. package/dist/surfaces/skyrimse/records.js +94 -0
  244. package/dist/surfaces/skyrimse/surface.js +240 -0
  245. package/dist/surfaces/skyrimse/validators/archive-records.js +165 -0
  246. package/dist/surfaces/skyrimse/validators/archives.js +110 -0
  247. package/dist/surfaces/skyrimse/validators/plugins.js +374 -0
  248. package/dist/surfaces/skyrimse/validators/records.js +117 -0
  249. package/dist/surfaces/stardewvalley/compat.js +190 -0
  250. package/dist/surfaces/stardewvalley/config.js +42 -0
  251. package/dist/surfaces/stardewvalley/contentpatcher.js +203 -0
  252. package/dist/surfaces/stardewvalley/index/index.js +229 -0
  253. package/dist/surfaces/stardewvalley/index/wiki.js +190 -0
  254. package/dist/surfaces/stardewvalley/index.js +12 -0
  255. package/dist/surfaces/stardewvalley/logs.js +307 -0
  256. package/dist/surfaces/stardewvalley/mods.js +182 -0
  257. package/dist/surfaces/stardewvalley/surface.js +244 -0
  258. package/dist/surfaces/stardewvalley/validators/content.js +321 -0
  259. package/dist/surfaces/stardewvalley/validators/fields.js +147 -0
  260. package/dist/surfaces/stardewvalley/validators/loadorder.js +69 -0
  261. package/dist/surfaces/stardewvalley/validators/manifest.js +221 -0
  262. package/dist/surfaces/subnautica2/compat.js +138 -0
  263. package/dist/surfaces/subnautica2/index.js +5 -0
  264. package/dist/surfaces/subnautica2/logs.js +129 -0
  265. package/dist/surfaces/subnautica2/paks.js +173 -0
  266. package/dist/surfaces/subnautica2/surface.js +151 -0
  267. package/dist/surfaces/subnautica2/validators/packaging.js +298 -0
  268. package/dist/surfaces/valheim/compat.js +171 -0
  269. package/dist/surfaces/valheim/index/index.js +301 -0
  270. package/dist/surfaces/valheim/index/tables.js +103 -0
  271. package/dist/surfaces/valheim/index.js +11 -0
  272. package/dist/surfaces/valheim/logs.js +197 -0
  273. package/dist/surfaces/valheim/packaging.js +131 -0
  274. package/dist/surfaces/valheim/plugins.js +270 -0
  275. package/dist/surfaces/valheim/references.js +121 -0
  276. package/dist/surfaces/valheim/surface.js +223 -0
  277. package/dist/surfaces/valheim/validators/packaging.js +218 -0
  278. package/dist/surfaces/valheim/validators/plugins.js +287 -0
  279. package/dist/surfaces/valheim/validators/references.js +169 -0
  280. package/knowledge/baldursgate3/animations.gr2.yaml +166 -0
  281. package/knowledge/baldursgate3/audio.voice.yaml +182 -0
  282. package/knowledge/baldursgate3/audio.wwise.yaml +104 -0
  283. package/knowledge/baldursgate3/charactercreation.heads-hair.yaml +193 -0
  284. package/knowledge/baldursgate3/communitylibrary.shared-content.yaml +129 -0
  285. package/knowledge/baldursgate3/compatibilityframework.api.yaml +176 -0
  286. package/knowledge/baldursgate3/crash.causes.yaml +90 -0
  287. package/knowledge/baldursgate3/dialogue.dialogbank.yaml +120 -0
  288. package/knowledge/baldursgate3/dialogue.files.yaml +236 -0
  289. package/knowledge/baldursgate3/dialogue.osiris-goals.yaml +386 -0
  290. package/knowledge/baldursgate3/dialogue.yaml +122 -0
  291. package/knowledge/baldursgate3/feats.classes.yaml +164 -0
  292. package/knowledge/baldursgate3/items.cloth-physics.yaml +167 -0
  293. package/knowledge/baldursgate3/items.roottemplates.yaml +320 -0
  294. package/knowledge/baldursgate3/items.visualbank.yaml +628 -0
  295. package/knowledge/baldursgate3/journal.quests.yaml +214 -0
  296. package/knowledge/baldursgate3/loadorder.modsettings.yaml +128 -0
  297. package/knowledge/baldursgate3/localization.handles.yaml +92 -0
  298. package/knowledge/baldursgate3/misc.encoding-and-practice.yaml +111 -0
  299. package/knowledge/baldursgate3/origins.companions.yaml +144 -0
  300. package/knowledge/baldursgate3/osiris.signatures.yaml +211 -0
  301. package/knowledge/baldursgate3/packaging.meta.yaml +155 -0
  302. package/knowledge/baldursgate3/packaging.paks.yaml +79 -0
  303. package/knowledge/baldursgate3/process.launch.yaml +34 -0
  304. package/knowledge/baldursgate3/progressions.yaml +92 -0
  305. package/knowledge/baldursgate3/publishing.modio-nexus.yaml +170 -0
  306. package/knowledge/baldursgate3/publishing.toolkit-modio.yaml +135 -0
  307. package/knowledge/baldursgate3/races.progression.yaml +228 -0
  308. package/knowledge/baldursgate3/scriptextender.console.yaml +257 -0
  309. package/knowledge/baldursgate3/scriptextender.yaml +252 -0
  310. package/knowledge/baldursgate3/stats.boosts.yaml +293 -0
  311. package/knowledge/baldursgate3/stats.equipment-kits.yaml +69 -0
  312. package/knowledge/baldursgate3/stats.interrupts.yaml +45 -0
  313. package/knowledge/baldursgate3/stats.itemcombos.yaml +65 -0
  314. package/knowledge/baldursgate3/stats.spells.yaml +293 -0
  315. package/knowledge/baldursgate3/stats.weapons.yaml +210 -0
  316. package/knowledge/baldursgate3/toolchain.divine.yaml +179 -0
  317. package/knowledge/baldursgate3/toolchain.lslib-formats.yaml +242 -0
  318. package/knowledge/baldursgate3/toolkit.levels.yaml +177 -0
  319. package/knowledge/baldursgate3/ui.icons-atlas.yaml +78 -0
  320. package/knowledge/baldursgate3/ui.icons.yaml +412 -0
  321. package/knowledge/baldursgate3/ui.mcm.yaml +161 -0
  322. package/knowledge/baldursgate3/vfx.materials.yaml +174 -0
  323. package/knowledge/baldursgate3/visuals.characterfix.yaml +73 -0
  324. package/knowledge/cyberpunk2077/animations.anims.yaml +118 -0
  325. package/knowledge/cyberpunk2077/anims.archivexl.yaml +163 -0
  326. package/knowledge/cyberpunk2077/anims.authoring.yaml +579 -0
  327. package/knowledge/cyberpunk2077/anims.encoder.yaml +156 -0
  328. package/knowledge/cyberpunk2077/anims.graph.yaml +629 -0
  329. package/knowledge/cyberpunk2077/anims.method.yaml +360 -0
  330. package/knowledge/cyberpunk2077/anims.pipeline.yaml +352 -0
  331. package/knowledge/cyberpunk2077/anims.roundtrip.yaml +222 -0
  332. package/knowledge/cyberpunk2077/anims.sets.yaml +176 -0
  333. package/knowledge/cyberpunk2077/archivexl.bodytypes.yaml +149 -0
  334. package/knowledge/cyberpunk2077/archivexl.dynamic-appearances.yaml +218 -0
  335. package/knowledge/cyberpunk2077/archivexl.manifest.yaml +214 -0
  336. package/knowledge/cyberpunk2077/audio.events.yaml +168 -0
  337. package/knowledge/cyberpunk2077/audio.sounds.yaml +164 -0
  338. package/knowledge/cyberpunk2077/audio.voicesets.yaml +146 -0
  339. package/knowledge/cyberpunk2077/cet.sandbox.yaml +219 -0
  340. package/knowledge/cyberpunk2077/clothing.garments.yaml +283 -0
  341. package/knowledge/cyberpunk2077/clothing.refits.yaml +215 -0
  342. package/knowledge/cyberpunk2077/codeware.overview.yaml +111 -0
  343. package/knowledge/cyberpunk2077/codeware.systems.yaml +192 -0
  344. package/knowledge/cyberpunk2077/drones.combat.yaml +416 -0
  345. package/knowledge/cyberpunk2077/drones.control.yaml +552 -0
  346. package/knowledge/cyberpunk2077/entities.appearance.yaml +166 -0
  347. package/knowledge/cyberpunk2077/equipmentex.slots.yaml +151 -0
  348. package/knowledge/cyberpunk2077/fx.effects.yaml +246 -0
  349. package/knowledge/cyberpunk2077/fx.lights.yaml +171 -0
  350. package/knowledge/cyberpunk2077/hair.modding.yaml +145 -0
  351. package/knowledge/cyberpunk2077/items.wiring.yaml +246 -0
  352. package/knowledge/cyberpunk2077/loadorder.archives.yaml +71 -0
  353. package/knowledge/cyberpunk2077/mesh.blender.yaml +209 -0
  354. package/knowledge/cyberpunk2077/nativedb.dump.yaml +98 -0
  355. package/knowledge/cyberpunk2077/npc.appearance.yaml +275 -0
  356. package/knowledge/cyberpunk2077/npc.behaviour.yaml +128 -0
  357. package/knowledge/cyberpunk2077/npc.locomotion.yaml +490 -0
  358. package/knowledge/cyberpunk2077/packaging.deploy.yaml +175 -0
  359. package/knowledge/cyberpunk2077/packaging.variants.yaml +176 -0
  360. package/knowledge/cyberpunk2077/player.control.yaml +918 -0
  361. package/knowledge/cyberpunk2077/process.assetbuild.yaml +154 -0
  362. package/knowledge/cyberpunk2077/process.lessons.yaml +276 -0
  363. package/knowledge/cyberpunk2077/quests.minor.yaml +46 -0
  364. package/knowledge/cyberpunk2077/quests.scenes.yaml +282 -0
  365. package/knowledge/cyberpunk2077/quickhacks.tiers.yaml +41 -0
  366. package/knowledge/cyberpunk2077/red4ext.api.yaml +645 -0
  367. package/knowledge/cyberpunk2077/red4ext.plugins.yaml +124 -0
  368. package/knowledge/cyberpunk2077/redhottools.hotreload.yaml +245 -0
  369. package/knowledge/cyberpunk2077/redscript.compile-log.yaml +76 -0
  370. package/knowledge/cyberpunk2077/redscript.modules.yaml +118 -0
  371. package/knowledge/cyberpunk2077/toolchain.wolvenkit.yaml +163 -0
  372. package/knowledge/cyberpunk2077/tweakdb.loot-recipes.yaml +184 -0
  373. package/knowledge/cyberpunk2077/tweakdb.melee.yaml +352 -0
  374. package/knowledge/cyberpunk2077/tweakdb.weapons.yaml +325 -0
  375. package/knowledge/cyberpunk2077/tweakxl.hotreload.yaml +151 -0
  376. package/knowledge/cyberpunk2077/tweakxl.yaml-syntax.yaml +208 -0
  377. package/knowledge/cyberpunk2077/ui.icons.yaml +259 -0
  378. package/knowledge/cyberpunk2077/ui.inkatlas.yaml +81 -0
  379. package/knowledge/cyberpunk2077/ui.modsettings.yaml +204 -0
  380. package/knowledge/cyberpunk2077/vehicles.control.yaml +475 -0
  381. package/knowledge/cyberpunk2077/vehicles.dashboard-ui.yaml +203 -0
  382. package/knowledge/cyberpunk2077/vehicles.entities.yaml +195 -0
  383. package/knowledge/cyberpunk2077/vehicles.wiring.yaml +137 -0
  384. package/knowledge/cyberpunk2077/wolvenkit.cli.yaml +167 -0
  385. package/knowledge/cyberpunk2077/workspot.system.yaml +55 -0
  386. package/knowledge/cyberpunk2077/world.interactions.yaml +41 -0
  387. package/knowledge/cyberpunk2077/world.loot-container.yaml +167 -0
  388. package/knowledge/cyberpunk2077/world.sectors.yaml +233 -0
  389. package/knowledge/eldenring/formats.binders.yaml +237 -0
  390. package/knowledge/eldenring/launcher.me3.yaml +230 -0
  391. package/knowledge/eldenring/launcher.modengine2.yaml +119 -0
  392. package/knowledge/eldenring/params.paramdef.yaml +149 -0
  393. package/knowledge/eldenring/params.regulation.yaml +142 -0
  394. package/knowledge/eldenring/saves.online.yaml +118 -0
  395. package/knowledge/eldenring/toolchain.cli.yaml +256 -0
  396. package/knowledge/nivalisnights/modding.runtime.yaml +157 -0
  397. package/knowledge/skyrimse/archives.bsa.yaml +212 -0
  398. package/knowledge/skyrimse/install.detection.yaml +41 -0
  399. package/knowledge/skyrimse/loadorder.files.yaml +242 -0
  400. package/knowledge/skyrimse/plugins.esl.yaml +189 -0
  401. package/knowledge/skyrimse/plugins.format.yaml +224 -0
  402. package/knowledge/skyrimse/skse.runtime.yaml +283 -0
  403. package/knowledge/skyrimse/toolchain.xedit-spriggit.yaml +336 -0
  404. package/knowledge/stardewvalley/contentpatcher.format.yaml +338 -0
  405. package/knowledge/stardewvalley/distribution.channels.yaml +236 -0
  406. package/knowledge/stardewvalley/game.versions.yaml +202 -0
  407. package/knowledge/stardewvalley/install.layout.yaml +277 -0
  408. package/knowledge/stardewvalley/smapi.loader.yaml +284 -0
  409. package/knowledge/stardewvalley/smapi.logs.yaml +329 -0
  410. package/knowledge/stardewvalley/smapi.manifest.yaml +293 -0
  411. package/knowledge/stardewvalley/toolchain.build.yaml +261 -0
  412. package/knowledge/stardewvalley/wiki.dataformat.yaml +130 -0
  413. package/knowledge/subnautica2/game.build.yaml +331 -0
  414. package/knowledge/subnautica2/modding.state.yaml +210 -0
  415. package/knowledge/subnautica2/ue5.containers.yaml +72 -0
  416. package/knowledge/subnautica2/ue5.paks.yaml +203 -0
  417. package/knowledge/subnautica2/ue5.tooling.yaml +175 -0
  418. package/knowledge/subnautica2/ue5.ue4ss.yaml +203 -0
  419. package/knowledge/valheim/bepinex.loader.yaml +247 -0
  420. package/knowledge/valheim/bepinex.plugins.yaml +251 -0
  421. package/knowledge/valheim/game.versions.yaml +321 -0
  422. package/knowledge/valheim/install.layout.yaml +216 -0
  423. package/knowledge/valheim/jotunn.library.yaml +334 -0
  424. package/knowledge/valheim/thunderstore.packaging.yaml +217 -0
  425. package/knowledge/valheim/toolchain.build.yaml +111 -0
  426. package/package.json +29 -0
  427. package/scaffolds/baldursgate3/new-class-injection.yaml +148 -0
  428. package/scaffolds/baldursgate3/new-item.yaml +264 -0
  429. package/scaffolds/baldursgate3/new-mod.yaml +174 -0
  430. package/scaffolds/baldursgate3/new-passive.yaml +100 -0
  431. package/scaffolds/baldursgate3/new-project.yaml +118 -0
  432. package/scaffolds/baldursgate3/new-quest-stub.yaml +159 -0
  433. package/scaffolds/baldursgate3/new-spell.yaml +102 -0
  434. package/scaffolds/baldursgate3/new-status.yaml +119 -0
  435. package/scaffolds/baldursgate3/sequences/subclass-kit.yaml +50 -0
  436. package/scaffolds/cyberpunk2077/edit-tweak.yaml +70 -0
  437. package/scaffolds/cyberpunk2077/mesh-export-preset.yaml +170 -0
  438. package/scaffolds/cyberpunk2077/new-entity-patch.yaml +255 -0
  439. package/scaffolds/cyberpunk2077/new-garment-refit.yaml +279 -0
  440. package/scaffolds/cyberpunk2077/new-item-chain.yaml +548 -0
  441. package/scaffolds/cyberpunk2077/new-localization.yaml +130 -0
  442. package/scaffolds/cyberpunk2077/new-mod-settings.yaml +133 -0
  443. package/scaffolds/cyberpunk2077/new-player-replacer.yaml +1003 -0
  444. package/scaffolds/cyberpunk2077/new-project.yaml +157 -0
  445. package/scaffolds/cyberpunk2077/new-sector-node.yaml +156 -0
  446. package/scaffolds/cyberpunk2077/new-tweak.yaml +121 -0
  447. package/scaffolds/cyberpunk2077/new-vehicle-livery.yaml +148 -0
  448. package/scaffolds/cyberpunk2077/new-workspot-entity.yaml +177 -0
  449. package/scaffolds/cyberpunk2077/sequences/iconic-weapon.yaml +72 -0
  450. package/scaffolds/cyberpunk2077/sequences/quickhack-takeover.yaml +213 -0
  451. package/scaffolds/stardewvalley/new-cp-patch.yaml +106 -0
  452. package/scaffolds/stardewvalley/new-csharp-mod.yaml +195 -0
  453. package/scaffolds/stardewvalley/new-project.yaml +184 -0
  454. package/scaffolds/stardewvalley/sequences/content-pack.yaml +31 -0
  455. package/scripts/mw-tool.mjs +184 -0
@@ -0,0 +1,175 @@
1
+ game: cyberpunk2077
2
+ topic: packaging.deploy
3
+ title: Packaging, deployment, and version compatibility
4
+ facts:
5
+ - id: cp2077.packaging.archive-cli-pack-command
6
+ claim: wolvenkit cli pack command packages a mod project directory into a .archive file; syntax is
7
+ `cli pack <source-dir> -o <output-dir> -v <verbosity>` with -v Minimal being typical for
8
+ distribution.
9
+ status: verified
10
+ source: ModWright field verification
11
+ tags:
12
+ - cli
13
+ - pack
14
+ - archive
15
+ - command
16
+ - deployment
17
+ detail: Produces <mod>.archive in the output directory. Note that -v is passed by one build script
18
+ but omitted from another description of the same pipeline, and no source says what it
19
+ controls; read it as verbosity, not compression. This is a CLI invocation, so there is no
20
+ in-game verification.
21
+ - id: cp2077.packaging.archive-xl-manifest-required
22
+ claim: An archivexl .archive.xl manifest file must accompany the .archive file in the deployment
23
+ directory; the .xl file is loaded on game init and registers resources, factories, and
24
+ streaming blocks from the archive.
25
+ status: verified
26
+ verified_on: "2.31"
27
+ source: ModWright field verification
28
+ tags:
29
+ - archivexl
30
+ - manifest
31
+ - .xl
32
+ - deployment
33
+ - registration
34
+ detail: <Mod>.archive is always deployed next to <Mod>.archive.xl. The .xl does not describe where
35
+ resources live inside the archive; it registers what ArchiveXL must wire up — localization
36
+ onscreens, factory csvs and streaming blocks — and the weapon's name, icon factory and world
37
+ case all depend on it.
38
+ - id: cp2077.packaging.tweakxl-yaml-deployment
39
+ claim: tweakxl yaml files are deployed directly to the game's r6\tweaks directory; no packing is
40
+ required. The yaml is loaded by tweakxl on game init or hot-reloaded via TweakXL.Reload() in
41
+ the CET console.
42
+ status: verified
43
+ verified_on: "2.31"
44
+ source: ModWright field verification
45
+ tags:
46
+ - tweakxl
47
+ - yaml
48
+ - deployment
49
+ - hot-reload
50
+ detail: A mod's yaml is copied to r6\tweaks\<Mod>\. The console call is spelled TweakXL.Reload() —
51
+ an earlier lowercase "tweakxl.Reload()" was wrong. How fast the reload is is not recorded.
52
+ - id: cp2077.packaging.powershell-build-script
53
+ claim: powershell build scripts (build.ps1) automate the pack → deploy → verify cycle; they handle
54
+ file locking (wait for game exit before copying), backup of previous versions, and optional
55
+ nexus packaging.
56
+ status: inferred
57
+ source: ModWright research
58
+ tags:
59
+ - powershell
60
+ - build
61
+ - deploy
62
+ - automation
63
+ - packaging
64
+ detail: "Correction: the example build.ps1 does NOT handle file locking and does NOT back up
65
+ previous versions. It is param(-Export, -Dist, -Version), then optional Blender export + CLI
66
+ import, then `cli pack`, then three plain Copy-Item calls, then the optional dist zip. The
67
+ retry-on-lock behaviour described in the project notes was run ad hoc, not from this script."
68
+ - id: cp2077.packaging.file-lock-retry-loop
69
+ claim: Archive files in the game directory are locked while the game is running; deployment scripts
70
+ must implement a retry loop with backoff to wait for game exit before copying new versions.
71
+ status: verified
72
+ source: ModWright field verification
73
+ tags:
74
+ - file-lock
75
+ - deployment
76
+ - game-exit
77
+ - retry
78
+ - backoff
79
+ detail: The lock is real and was hit during a build. The "deployment scripts must implement" half is
80
+ advice, and the example build.ps1 does not implement it — its Copy-Item calls simply fail
81
+ while the game holds the archive. yaml under r6\tweaks is not locked. This is a filesystem
82
+ observation, not an in-game verification.
83
+ - id: cp2077.packaging.nexus-zip-structure
84
+ claim: nexus mod packages are .zip files containing the mod directory structure with r6\tweaks\,
85
+ archive\, and other paths matching the game install layout; vortex unpacks these directly into
86
+ the game folder.
87
+ status: inferred
88
+ source: ModWright research
89
+ tags:
90
+ - nexus
91
+ - packaging
92
+ - zip
93
+ - vortex
94
+ - structure
95
+ detail: In the example project the zip is dist\<Author><Mod>-<Version>.zip (default version 1.0.0).
96
+ It contains only archive\pc\mod (the .archive and .xl) and r6\tweaks\<Mod> (the yaml) — the
97
+ author-only CET cleanup mod is deliberately not shipped. The mod page tells manual installers
98
+ to "extract the zip into the Cyberpunk 2077 root folder". Re-sourced from an uncited "nexus
99
+ Mods standard layout".
100
+ - id: cp2077.packaging.red4ext-requirement
101
+ claim: red4ext runtime loader 1.29.0+ is required for mods using tweakxl and archivexl; it must be
102
+ installed separately before any red4ext-dependent mods will load.
103
+ status: community
104
+ source: ModWright research
105
+ tags:
106
+ - red4ext
107
+ - loader
108
+ - requirement
109
+ - version
110
+ - dependency
111
+ detail: The 1.29.0+ floor is ArchiveXL's own stated requirement for the version compatible with game
112
+ 2.31. The example mod lists RED4ext, ArchiveXL and TweakXL as its requirements.
113
+ - id: cp2077.packaging.version-matrix-breakage
114
+ claim: Every game patch can break mods; the version matrix (game version, red4ext, tweakxl,
115
+ archivexl, codeware, cet, redscript) must all align. A single version mismatch cascades into
116
+ silent failures or load crashes.
117
+ status: community
118
+ source: cp2077-archive-xl/README.md "Getting Started > Compatibility" (pins Cyberpunk 2077 2.31 and
119
+ redscript 0.5.31+, with RED4ext 1.29.0+ under Installation)
120
+ tags:
121
+ - version-matrix
122
+ - compatibility
123
+ - patch
124
+ - breakage
125
+ detail: The citable part is that a framework release pins an exact game version and exact dependency
126
+ floors — ArchiveXL for 2.31 requires redscript 0.5.31+ and RED4ext 1.29.0+, and the example
127
+ mod's CR2W assets are all stamped GameVersion 2310. A specific patch history that used to sit
128
+ here (RED4ext 1.26.1 breaking on 2.2, "2.31 broke core mods") came from an internal note,
129
+ which is not a citable source for this knowledge base, and has been removed.
130
+ - id: cp2077.packaging.cet-log-checks
131
+ claim: cet mod loading is signaled in bin/x64/plugins/cyber_engine_tweaks/cyber_engine_tweaks.log;
132
+ the cet console command `GetMod("name").Status()` returns the runtime state of a mod.
133
+ status: unverified
134
+ source: ModWright research
135
+ tags:
136
+ - cet
137
+ - log
138
+ - console
139
+ - status
140
+ - mod
141
+ detail: Two problems. The log path is not named in any of the example project's sources, so it is
142
+ unsupported here. And the example CET mod's init.lua registers an onUpdate handler and ends
143
+ with `return {}` — it exposes no Status method at all, so the console line cannot work as
144
+ written against that script. Method name corrected to Status() (capital S) as the project
145
+ notes spell it; a fabricated verified status and in-game attribution were removed.
146
+ - id: cp2077.packaging.game-version-compatibility
147
+ claim: Archive and cr2w files include a GameVersion header; a mod packed for one game version may
148
+ not load on another without compatibility fixes. Always verify mod dependencies match the
149
+ target game version.
150
+ status: inferred
151
+ source: ModWright research
152
+ tags:
153
+ - gameversion
154
+ - compatibility
155
+ - archive
156
+ - cr2w
157
+ detail: 'What is sourced: CR2W json carries a GameVersion (2310 here, i.e. game 2.31) written by
158
+ WolvenKit, and framework releases pin a game version. Whether a version mismatch blocks
159
+ loading is not recorded anywhere in these sources; the "mods built for 2.3 may not load on
160
+ 2.1" example that used to sit in this fact was invented and has been removed, along with its
161
+ in-game verified attribution.'
162
+ - id: cp2077.packaging.mod-folder-structure
163
+ claim: "Game mods are installed under the game root: tweakxl yaml goes in r6\\tweaks\\, archives and
164
+ their .xl manifests go in archive\\pc\\mod\\, and cet mods go in
165
+ bin\\x64\\plugins\\cyber_engine_tweaks\\mods\\. Mods are loaded on game init and must be
166
+ present before launch."
167
+ status: inferred
168
+ source: ModWright research
169
+ tags:
170
+ - mod-folder
171
+ - directory
172
+ - structure
173
+ - layout
174
+ detail: The earlier version of this fact listed "r6/mods", which is not a Cyberpunk 2077 path and
175
+ appears in none of the sources. Redscript would live in r6\scripts; this project ships none.
@@ -0,0 +1,176 @@
1
+ game: cyberpunk2077
2
+ topic: packaging.variants
3
+ title: Clean-pack builds, optional CET dependency, and variant/ArchiveXL gotchas (a melee weapon mod)
4
+ facts:
5
+ - id: cp2077.packaging.variants.build-sources-pack-silently-as-json
6
+ claim: Serialized build-source JSON files (e.g. a mesh's .mesh.json or an app's .app.json) left
7
+ inside the working archive-staging tree pack into the shipping archive SILENTLY, because .json
8
+ is a real game resource type — unlike, say, .png, which the packer skips. A clean build must
9
+ explicitly sweep and remove every .json in the tree except the one real localization resource
10
+ (en-us.json) before packing.
11
+ status: inferred
12
+ source: ModWright research
13
+ tags:
14
+ - packaging
15
+ - build
16
+ - json
17
+ - source-leakage
18
+ - silent
19
+ detail: "Caught as a real ship blocker in a release audit: the deployed archive was carrying 1.32 MB
20
+ of sources (a 1044 KB body .mesh.json and a 154 KB weapon .app.json) that should never have
21
+ shipped, cutting the archive from 33 entries to 29 once removed. archive-staging doubles as
22
+ the working tree, which is why sources end up next to shipping assets in the first place."
23
+ - id: cp2077.packaging.variants.dead-referenced-fx-resource-must-be-pruned
24
+ claim: A design revert (reverting a weapon .app back to referencing a vanilla effect instead of a
25
+ cloned one) can leave a now-unreferenced custom effect resource still sitting in the staging
26
+ tree; a clean build must verify the string does not appear anywhere in the shipping app before
27
+ dropping such a file, rather than assuming staleness from context alone.
28
+ status: inferred
29
+ source: ModWright research
30
+ tags:
31
+ - packaging
32
+ - build
33
+ - dead-asset
34
+ - effect
35
+ - cleanup
36
+ detail: The specific dead asset was fx\<mod>_idle_thermal.effect(.json), left over from the mod's
37
+ heat-haze work (see cp2077.fx.effects.heat-haze-is-a-particle-effect and
38
+ cp2077.fx.effects.placement-info-named-tag-required for that history). build.ps1 checks for
39
+ and removes this specific file by name.
40
+ - id: cp2077.packaging.variants.build-script-gates-source-and-dev-script-leakage
41
+ claim: "Also observed on a melee weapon mod, extending cp2077.packaging.powershell-build-script
42
+ (documented on a simpler example mod whose build.ps1 has no such gates): a release build
43
+ script can enforce its own cleanliness invariants by throwing a hard error if a named
44
+ build-source file is found in the packed archive's listing (via a CLI archiveinfo dump) or if
45
+ a named dev-only script survives into the final scripts package — catching packaging
46
+ regressions automatically rather than relying on a human to remember to check."
47
+ status: inferred
48
+ source: ModWright research
49
+ tags:
50
+ - packaging
51
+ - build
52
+ - gate
53
+ - automated-check
54
+ detail: "Two separate gates: one checks the packed archive's listing for the weapon .app.json and
55
+ body .mesh.json build sources; the other checks the staged scripts folder for any of the named
56
+ dev scripts. Both throw and abort the build rather than merely warning."
57
+ - id: cp2077.packaging.variants.dev-scripts-that-log-every-attack-must-never-ship
58
+ claim: Development-only redscript files that log on every attack (<Mod>_Debug.reds,
59
+ <Mod>_Probe.reds, <Mod>_TrailProbe.reds) are explicitly excluded from the shipped package by
60
+ name; at least one of these was found still deployed in the live game install during a
61
+ pre-release audit, despite being headed "DELETE BEFORE SHIP" in its own file.
62
+ status: inferred
63
+ source: ModWright research
64
+ tags:
65
+ - packaging
66
+ - build
67
+ - dev-script
68
+ - ship-blocker
69
+ - audit
70
+ detail: The audit found and removed <Mod>_Debug.reds and <Mod>_Probe.reds from the live installed
71
+ game folder — a real, not merely hypothetical, near-miss for shipping instrumentation to end
72
+ users. build.ps1's final gate (a throw if any dev script name is found in the staged package)
73
+ exists specifically because of this incident.
74
+ - id: cp2077.packaging.variants.optional-cet-dependency-flag
75
+ claim: A mod build script can make an entire dependency (here, Cyber Engine Tweaks, for one optional
76
+ cosmetic feature) opt-in via a build flag (-WithCetLight) rather than opt-out, so the default
77
+ build genuinely ships without that dependency listed, and a -Deploy without the flag actively
78
+ removes any previously-deployed instance of that dependency's files from the live game install
79
+ (backed up, never silently deleted).
80
+ status: inferred
81
+ source: ModWright research
82
+ tags:
83
+ - packaging
84
+ - build
85
+ - cet
86
+ - optional-dependency
87
+ - flag
88
+ detail: 'Rationale recorded in the script: the CET-driven weapon light only added a dynamic
89
+ point-light cast onto nearby surfaces (the emissive glow, haze, and tip smoke are all
90
+ unaffected — see cp2077.fx.lights.cet-glow-light-dropped-no-functional-loss) and "did not earn
91
+ a whole extra dependency," per explicit user call after comparing both builds in game. The
92
+ removed live CET mod is backed up to rollback\cet-<ModLight>-<timestamp> rather than deleted
93
+ outright.'
94
+ - id: cp2077.packaging.variants.archive-lock-retry-loop-on-deploy
95
+ claim: "Also observed on a melee weapon mod, and here actually implemented: confirming
96
+ cp2077.packaging.file-lock-retry-loop (documented on a simpler example mod whose own build.ps1
97
+ does NOT implement the retry), that mod's build script copies the shipping archive into a
98
+ running game's mod folder with a retry loop — every 10 seconds for up to 180 attempts (30
99
+ minutes) — because the file is locked while the game process holds it open."
100
+ status: inferred
101
+ source: ModWright research
102
+ tags:
103
+ - packaging
104
+ - build
105
+ - deploy
106
+ - file-lock
107
+ - retry
108
+ detail: The same retry-until-unlocked pattern is used independently in the mod's world-cache deploy
109
+ script (same 10 s interval, 180 attempts) and its mesh deploy script (5 s interval, 120
110
+ attempts) — a consistent project-wide convention for archive deploys, not a one-off.
111
+ - id: cp2077.packaging.variants.endless-flow-is-a-static-record-shape-not-a-runtime-toggle
112
+ claim: The "endless flow" no-finisher combo variant, as implemented by omitting the highest-index
113
+ final-attack record, is a property of which TweakDB records exist at build time — it cannot be
114
+ switched on or off at runtime, unlike vanilla's own CanWeaponInfinitlyCombo /
115
+ CanMeleeInfinitelyCombo status-effect-driven infinite-combo mechanism, which is inherently a
116
+ temporary, stackable, runtime-toggleable state.
117
+ status: inferred
118
+ source: ModWright research
119
+ tags:
120
+ - packaging
121
+ - variant
122
+ - endless-flow
123
+ - static
124
+ - design
125
+ detail: This is exactly why the variant's own notes frame vanilla's flag pair as "the right
126
+ foundation for anything like 'cyberware that lets you attack endlessly'" rather than reusing
127
+ the accidental record-shape variant for any future toggleable ability — the two approaches are
128
+ not interchangeable despite producing a similar-looking effect.
129
+ - id: cp2077.packaging.variants.unshipped-variant-kept-as-a-named-snapshot-folder
130
+ claim: An unshipped but design-relevant behavior can be preserved as a standalone variant folder
131
+ holding the EXACT pre-fix source files (the yaml and any redscript) needed to reproduce it,
132
+ rather than only as prose documentation — letting a future session restore the variant by
133
+ dropping those specific files back in, with no re-derivation needed.
134
+ status: inferred
135
+ source: ModWright research
136
+ tags:
137
+ - packaging
138
+ - variant
139
+ - snapshot
140
+ - documentation-pattern
141
+ detail: variants/endless-flow/ holds <mod>.yaml (pre-fix, with the AttacksNumber +1 but no
142
+ FinalAttack4 record) and <Mod>_AnimSteering.reds (the pre-refactor version) — described as
143
+ "the exact pre-fix state," distinct from the shipped versions of the same two files elsewhere
144
+ in the repo.
145
+ - id: cp2077.packaging.variants.nexus-name-field-charset-restriction
146
+ claim: The Nexus Mods mod-name field only accepts letters, numbers, spaces, and the characters ` _ '
147
+ ( ) . -` ; any other punctuation in an intended display name must be dropped or substituted
148
+ when filling in the Nexus page.
149
+ status: community
150
+ source: ModWright research
151
+ tags:
152
+ - packaging
153
+ - nexus
154
+ - name-field
155
+ - charset
156
+ detail: The project's own release-packaging notes restate the same restriction as a pre-upload
157
+ checklist item ("the name field allows only letters/numbers/spaces/`_ ' ( ) . -`"), so it is
158
+ treated as settled practice for this project rather than re-derived each release.
159
+ - id: cp2077.packaging.variants.shipped-package-is-three-trees-plus-optional-fourth
160
+ claim: "Also observed on a melee weapon mod, extending cp2077.packaging.mod-folder-structure and
161
+ cp2077.packaging.nexus-zip-structure (both documented on a simpler example mod, which ships no
162
+ redscript): a redscript-shipping mod's package contains three trees — archive\\pc\\mod\\ (the
163
+ archive + its .xl), r6\\tweaks\\ (the TweakXL yaml), and r6\\scripts\\<ModName>\\ (redscript,
164
+ minus dev-only files) — and conditionally a fourth,
165
+ bin\\x64\\plugins\\cyber_engine_tweaks\\mods\\<ModName>\\, present ONLY when an optional CET
166
+ feature is explicitly opted into at build time."
167
+ status: inferred
168
+ source: ModWright research
169
+ tags:
170
+ - packaging
171
+ - build
172
+ - package-layout
173
+ - trees
174
+ detail: This layout matches the Vortex/manual install instructions published on the Nexus page ("the
175
+ zip contains archive\pc\mod, r6\tweaks and r6\scripts") when the optional 4th tree is
176
+ excluded, i.e. the default, no-CET build.