About This File
A FO4Edit script that injects Skimpy Armour Keyword Resource (SAKR) keywords into patched copies of relevant Armour (ARMO) records. This process uses the existing RobCo Patcher .ini infrastructure as the source of keywords, but does not require RobCo Patcher.
Key Features
- Accepts your entire load order (every single loaded plugin) in one go.
- Creates the patch, adds all required masters, and injects keywords in a single run.
- Uses your existing RobCo Patcher .ini files. Requires no new tools to run.
- Creates a tiny, ESL-flagged patch. Typically under 500 KB for a setup with 400 mods.
- Fuzzy FormID matching. Works regardless of load order, ESL flags, or overrides.
- Pre-emptively adds required masters to ensure compatibility with other keyword injectors such as Armour and Weapon Keywords Community Resource (AWKCR) and Complex Item Sorter.
- Creates a new patch file per run to avoid keyword drift. Recommended for consistency when .ini files change. This requirement can be bypassed if the patch is already loaded in FO4Edit.
- Extensive, configurable logging.
- Uses dialogue boxes to notify the user of abnormal runs. E.g. No keywords to inject or nothing to patch.
- Zero performance impact in-game as the patch is generated by FO4Edit beforehand.
Why This Exists
Skimpy Armour Keyword Resource was designed to work with RobCo Patcher, which adds keywords at runtime.
But:
- The Next-Gen Update (2024) broke RobCo Patcher.
- Users waited months for the Next-Gen alpha version of the patcher.
- The Anniversary Edition has an alpha version of the patcher.
This script removes RobCo Patcher from the equation entirely while leveraging the existing configuration files.
- No more waiting.
- No more runtime overhead.
- Just SAKR support.
Requirements
- FO4Edit. Tested on 4.1.5f.
- Skimpy Armour Keyword Resource (SAKR). Required in your load order.
- Rubber Duck's SAKR Repository, or NGamma's SAKR RobCo Patches or Equivalent. Provides the required keywords to inject.
How to Use
- Install the script under Scripts in your FO4Edit install.
- (Optional) Install the blank .esp if you use a mod manager.
- Do NOT load ZZZ_SAKR_Direct_Injection.esp when starting FO4Edit. If loaded, the script will remind you of this requirement and allow you to bypass if desired.
-
In FO4Edit:
- Press Ctrl+A to select all plugins.
- Right-click on any mod and Apply Script.
- A new window will appear. Choose Fallout4 - SAKR Direct Injection vX.X.X and click OK.
- Wait ~60–90 seconds (tested with 400+ loaded mods and 2.5M records).
- Save.
- Let your mod manager (Vortex/MO2) deploy the new patch.
- Run the game and go try on some outfits!
Â
Cleanup After Use
A normal run adds several masters to ensure the winning record is copied and injected. It is recommended that you:
- Save ZZZ_SAKR_Direct_Injection.esp;
- Right-click on the mod and select, Clean Masters to remove unnecessary masters.
While optional, the above keeps the patch tidy and avoids Missing Masters warnings when changing your mod order within a mod manager.
Confirmation Tests
The screenshots on the download pages outline various scenarios to confirm the patch works. These tests cover ESLs, base-game items, heavily overridden packs (preview patches), and exposure score changes.
- Shot in Kziitd Fetish Toolset. Result 100 % skimpy because that mod has no .ini in the Rubber Duck repository.
- Shots in a Vtaw Wardrobe 6 bikini with or without the top. Highlights the changes in exposure levels and scores.
- Shot in a COCO Bikini Collection showing exposure and scores change, indicating the .ESL was successfully patched.
- Shot in Summer Shorts with appropriate scores. Showing that base-game clothing items were successfully patched.
- Shots in various Vtaw Wardrobe 6 clothing with varying scores. Additionally some are blurry as they triggered Exhibitionist Streak from Provocative Perks because the player is not skimpy enough.
Frequently Asked Questions
Do I need RobCo Patcher installed?
No. This script does not require RobCo Patcher to be installed and the patch negates its requirement for use with the Skimpy Armour Keyword Resource once generated.
Will this break if I add new outfits later?
No. Just re-run the script — the new items will be included in the patch automatically assuming you have associated RobCo Patcher.ini files to inject the keywords.
Why does it stop if the patch file is loaded?
There is no reliable way for FO4Edit to unload and remove a mod while loaded. To prevent corrupting the patch, the script confirms the patch is unloaded prior to generating a fresh patch.
However, you can opt to bypass this check entirely at the risk of introducing keyword drift over an extended period of time. There are legitimate reasons for doing so:
- You accidentally ran the script against a mod with no clothing items.
- You prefer to be surgical in your application of the patch and run it for individual mods or collection.
- You are trying this for the first time and the default patch (empty by default) is loaded.
- You manually cleaned the patch yourself and want to proceed.
For the above, you will simply be given an option to proceed.
I hate getting asked if I want to continue when the patch is already loaded.
You can disable this check entirely by setting bFORCE_CLEAN_ESP to False in the script. However, this may lead to keyword drift, especially if you are fine-tuning the .ini files to suit your gameplay.
Can I keep the old patch and append changes?
Yes. See above.
Is this safe with 500+ plugins?
Yes. Tested with 500+ mods / 3.2 million records. Process took under 180 seconds to generate a clean patch, but the time required varies based on system specifications.
Will it work on Anniversary Edition?
Yes. While not explicitly tested on Anniversary Edition, FO4Edit 4.1.5f which was used to develop this script fully supports that version.
I still want to keep RobCo Patcher for other features (material swaps, slot masking, etc.)
This script does not stop you from continuing to use RobCo Patcher. Both can coexist perfectly, but to prevent duplicate keyword injection, simply delete or move the RobCo Patcher .ini files used for SAKR keywords.
Bonus side-effects of removing those .ini files:
- RobCo Patcher has fewer records to process reducing runtime overhead
- May reduce the chances of RobCo Patcher crashing.
Is this compatible with Armour and Weapon Keywords Community Resource (AWKCR) and Complex Item Sorter?
Yes. The script will add these as masters and carry forward any modified or injected keywords. However, this patch needs to be lower in your load order override their records.
Some of my clothing packs have no .ini file for it. How can I make these?
Rubber Duck has made a SAKR RCP Tool that generate the RobCo Patcher files along with extensive documentation.
I keep seeing Error Assigning To and Mapping Errors in my logs.
Message such as the one below occurs because the script cannot know for certain every mod that it will need to add a master.
Error assigning to [ \ [FA] ZZZ_SAKR_Direct_Injection.esp \ [1] GRUP Top "ARMO" \ [77] Armor_Synth_Underarmor "Synth Uniform" [ARMO:0012B91D] \ [19] Object Template \ [2] Combinations \ [34] Combination \ [2] OBTS - Object Mod Template Item \ [8] Keywords \ [0] Keyword #0] from [ \ [A7] Synth_Fem.esp \ [4] GRUP Top "ARMO" \ [2] Armor_Synth_Underarmor "Synth Uniform" [ARMO:0012B91D] \ [19] Object Template \ [1] Combinations \ [34] Combination \ [2] OBTS - Object Mod Template Item \ [8] Keywords \ [0] Keyword #0]: [Exception] Load order FileID [A5] can not be mapped to file FileID for file "ZZZ_SAKR_Direct_Injection.esp
In such cases the keywords will not be injected. However the Script naturally takes precautions to avoid this:
- Preemptively loads any non-ESL flagged ESM/ESP as a Master. This will cut out most of these errors.
- Provides an ability to add a custom list of masters. Update the sADDMASTERS constant to include a comma delimited list of additional mods you need to load as masters.
Between the above, the script should all relevant masters, and inject keywords without fault.
Can I modify or fork your code?
Yes. The script is released under the two-clause BSD licence which is a permissive free software licence.
Configurable Items
The following constants may be changed to alter the script's behaviour. You only need to touch these constants if you have a very custom setup. Most users will be able to ignore these options entirely. There are listed in alphabetical order.
Â
bADDALLMASTERS
Default: True
Automatically adds all non-ESL flagged ESP and ESM files with ARMO records as masters. This ensures that injection will occur most of the time.
Â
sADDMASTERS
Default: ''
A comma delimited list of mods that need to be mastered beyond those added as part of the standard script processing. This constant becomes critical when disabling sADDALLMASTERS.
iDEBUG_LEVEL
Default: DEBUG_INFO
Adjust the level and verbosity of logs generated. Available levels are:
- DEBUG_FATAL
- DEBUG_ERROR
- DEBUG_WARN
- DEBUG_INFO
- DEBUG_VERBOSE
- DEBUG_PATHING
bDRYRUN
Default: False
Kept for historical reasons. With a patch-file workflow there are no risks to the game and other mods, but it remains useful for pathing.
bESLFLAG
Default: True
By default the ZZZ_SAKR_Direct_Injection.esp will be created as an ESL-flagged ESP. This means that the patch will not tie up a slot on your limited load order at the cost of reduced entries. Set to False if you need to inject keywords into more than 4095 items.
Â
bBALLISTIC
Default: True
Injects Ballistic Weave related keywords to the item in addition to SAKR. This can be useful for certain mods that expect this slot to exist for their own use and increase available clothing items.
bFORCE_CLEAN_ESP
Default: True
Deletes and recreates the patch every run. Prevents drift when .ini files change. Set False if you prefer incremental patching on selected mods.
sLOGFILE
Default: ''
Set the path of an external file that the log will be written to.
iMERGE
Default: False
By default the script will drop any conflicting keyword injection. This prevents situations where a competing .ini has conflicting keyword injections to make. Any such conflicts will be logged at the end of the process to identify and sort out conflicts.
If set to `True` the script will merge the conflicts together into one line. However, there are potential risks.
A perfect example of this is Eli's Armour Compendium and Classy Chassis Outfits - Eli's Armour Replacer. The former includes lore friendly and non-lewd clothing items, whereas the latter will spice things up. They both use Eli_Armour_Compendium.esp and a matching identifier leading to the following situation where an item now has keywords for:
- 0000081A. Top Full
- 0000081E. Tank Top
- 00000821. Top Tight
- 0000080E. Pants Long
- 0000080F. Pants Shorts
The above contains clearly contains keywords that are at odds with each other and should not co-exist. The resulting score will be wildly off from expected behaviour. Hence merge mode is provided for advanced users who understand the risks.
When set to False the script generates a report at the end of the run. This permits you to find and correct these conflicts to ensure the desired outcome.
sPATCH_ESP
Default: ZZZ_SAKR_Direct_Injection.esp
Name of the generated patch. ZZZ prefix keeps it at the bottom of the load order.
iRECURSION
Default: 5
Maximum directory depth when scanning for .ini files to prevent infinite loops.
sROBCOPATH
Default: F4SE\Plugins\RobCo_Patcher\armor\
Default location of RobCo armour .ini files (overridden by sSCANPATH if used).
bSAKRSTATIC
Default: False
Use static keyword list (True) or read directly from SAKR.esm (False). False is the default as it adjusts to future releases of the mod.
sSCANPATH
Default: ''
Hardcoded location for the RobCo Patcher .ini files. Use '' to use game defaults.
sSAKR_ESP / sGAME_ESP / sPATCH_AUTHOR
Self-explanatory and should never need changing.
License

*
* Copyright (c) 2025, M.S.M. Foster
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
Â
What's New in Version 1.1.0
Released
1.1.0
- Added bBALLISTIC which will add Ballistic Armor keywords along with SAKR keywords.Â
Â
1.0.1
- Updated keyword conflict reporting. Now indicates the filenames, and lists conflicting rules.
Â
1.0.0
- Added winning overrides to allow the patch to co-exist with other keyword injectors like Armour and Weapon Keywords Community Resource (AWKCR).
- Added bESLFLAG to toggle the addition of the ESL flag when updating the patch.
- Added sADDMASTERS and bADDALLMASTERS to add requisite masters to the patch for safe injection.
- Implemented a fix from iampumpkin for SafeCopy that removes the potential to copy something other than the Winning record.
- Added bMERGE to allow the user to merge conflicting keywords, or simply log the conflicts in a report. The latter can be used to remove conflicts and select the best keywords.
Â
1.0.0b2
- Added more prompts to notify users of an abnormal run. E.g. No keywords were found or none were injected.
- Added the capability to move forward when the script is loaded in FO4Edit. This can happen when the user encountered one of the above situations, or wishes to select individual clothing files.
- Updated Readme to match the changes.
Â
1.0.0b
- Initial release of Skimpy Armor Keyword Resource (SAKR) Direct Injection script.