CLI toolkit for creating Skyrim mods, designed for use with AI assistants
A command-line toolkit that enables AI assistants (Claude, ChatGPT, etc.) to create and modify Skyrim mods programmatically. Simply describe what you want and let the AI handle the technical work.
> "Create a sword called Frostbane that does 30 damage"
> "Decompile the scripts from this mod so I can see how it works"
> "Update just the broken script in this BSA without extracting everything"
> "Add a new perk to my existing mod"
Create new mods, inspect existing ones, edit archives, decompile scripts, view records, and more.
- Windows
- .NET 8.0 SDK - Download
- Skyrim Special Edition (for testing)
Option A: Setup Wizard (Recommended)
- Download the latest release from Releases
- Create a new folder for your modding project (e.g.,
C:\MyModProject) or use an existing one - Extract the ZIP into that folder — this is where you'll build your mods
- Run
SpookysAutomodSetup.exefrom the extracted folder - The wizard will:
- Detect your Skyrim installation (SE/VR)
- Link Papyrus script headers automatically
- Download SKSE headers (SE + VR) and SkyUI headers
- Download Papyrus compiler and decompiler
- Detect CMake and MSVC build tools
- Build and verify the toolkit
Option B: Git
git clone https://github.com/SpookyPirate/spookys-automod-toolkit.git
cd spookys-automod-toolkit
dotnet build SpookysAutomod.slnNote: If you encounter NuGet restore errors, you may need to add the NuGet source first:
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.orgThen run
dotnet build SpookysAutomod.slnagain.
Verify:
dotnet run --project src/SpookysAutomod.Cli -- --helpIf you plan to compile Papyrus scripts, you'll need the script headers from the Creation Kit.
Script headers (.psc files) define the base types used by Papyrus scripts, such as Actor, Game, Quest, GlobalVariable, etc. Without these headers, the Papyrus compiler cannot understand script code and will fail with "invalid type" errors.
DO NOT download headers from the internet - they are copyrighted by Bethesda.
You must obtain them from your own Creation Kit installation:
-
Download Creation Kit:
- Skyrim SE: Available on Steam (Tools section)
- Skyrim VR: Use Skyrim SE Creation Kit
-
Locate Headers:
- Navigate to:
<Creation Kit Install>/Data/Scripts/Source/ - You'll find files like
Actor.psc,Game.psc,Quest.psc, etc.
- Navigate to:
Option A: Copy to toolkit directory (Recommended)
Copy all .psc files from Creation Kit to the toolkit's skyrim-script-headers/ directory (in the toolkit root folder):
# From the toolkit root directory (spookys-automod-toolkit/)
# Windows PowerShell
Copy-Item "C:\Program Files (x86)\Steam\steamapps\common\Skyrim Special Edition\Data\Scripts\Source\*.psc" `
".\skyrim-script-headers\"
# Git Bash / WSL
cp "/c/Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition/Data/Scripts/Source/"*.psc \
./skyrim-script-headers/This will place the headers in: spookys-automod-toolkit/skyrim-script-headers/*.psc
Option B: Use Creation Kit path directly
You can also reference the Creation Kit headers directly using the --headers flag:
papyrus compile "./Scripts" --headers "C:/Program Files (x86)/Steam/steamapps/common/Skyrim Special Edition/Data/Scripts/Source"- Directory Location: The
skyrim-script-headers/directory is in the toolkit root (same level assrc/,docs/, etc.) - Empty by Default: The directory exists but contains no
.pscfiles - you must copy them from Creation Kit - VR vs SE: If targeting Skyrim VR, use headers from the VR-compatible Creation Kit
- Copyright: DO NOT commit
.pscheaders to version control - they are Bethesda's intellectual property - Git Ignore: The
.gitignorefile already excludesskyrim-script-headers/*.pscto prevent accidental commits
For compiling mods that use SKSE (Skyrim Script Extender) or SkyUI (MCM menus), additional headers are required:
SKSE Headers:
- Required for: Mods using SKSE functions (
GetDisplayName,RegisterForMenu,StringUtil, etc.) - Download: https://skse.silverlock.org/ (get the SDK package)
- Install to:
tools/papyrus-compiler/headers/skse/ - Extract
Scripts/Source/contents to this directory
SkyUI Headers:
- Required for: Mods with MCM (Mod Configuration Menu)
- Download: https://github.com/schlangster/skyui/wiki or Nexus Mods
- Install to:
tools/papyrus-compiler/headers/skyui/ - Copy MCM scripts (
SKI_ConfigBase.psc, etc.) to this directory
The compiler automatically detects and uses these headers when present. See tools/papyrus-compiler/headers/README.md for detailed setup instructions.
If you plan to create SKSE (Skyrim Script Extender) native plugins, you'll need C++ build tools.
SKSE plugins are DLL files written in C++ that extend Skyrim's functionality at a native level. They can add new Papyrus functions, hook game events, and access internal game data that scripts cannot.
Building SKSE plugins requires two tools:
- CMake - Build system generator
- MSVC Build Tools - Microsoft C++ compiler (no Visual Studio IDE needed)
Step 1: Install CMake
- Download CMake from: https://cmake.org/download/
- Get the Windows x64 Installer (e.g.,
cmake-3.28.0-windows-x86_64.msi) - During installation, select "Add CMake to the system PATH for all users"
- Verify installation:
cmake --version
Step 2: Install MSVC Build Tools
- Download from: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022
- Scroll down to "Tools for Visual Studio" → "Build Tools for Visual Studio 2022"
- Run the installer (
vs_BuildTools.exe) - In the installer, select "Desktop development with C++" workload
- This includes:
- MSVC C++ compiler
- Windows SDK
- CMake integration
- Click "Install" (requires ~7 GB disk space)
- Verify installation:
# Open a new command prompt cl # Should show: "Microsoft (R) C/C++ Optimizing Compiler"
- No IDE Required: You do NOT need Visual Studio IDE - just the Build Tools
- PATH Configuration: Build Tools should automatically add
cl.exeto PATH - First Build: The first build will download vcpkg dependencies (CommonLibSSE-NG) - this takes a few minutes
- Target Versions: Generated plugins work on Skyrim SE, AE, GOG, and VR from a single DLL
Once tools are installed, the complete workflow is:
# 1. Generate project
dotnet run --project src/SpookysAutomod.Cli -- skse create "MyPlugin" --template basic --output "./"
# 2. Build using the toolkit (recommended)
dotnet run --project src/SpookysAutomod.Cli -- skse build "./MyPlugin"
# Output: MyPlugin/build/Release/MyPlugin.dllOr build manually with CMake:
cd MyPlugin
cmake -B build -S .
cmake --build build --config Release"cmake: command not found"
- Restart your terminal after CMake installation
- Or manually add to PATH:
C:\Program Files\CMake\bin
"'cl' is not recognized"
- Open "x64 Native Tools Command Prompt for VS 2022" (installed with Build Tools)
- Or run:
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
"Cannot open include file 'windows.h'"
- Reinstall Build Tools and ensure "Windows SDK" is selected
dotnet run --project src/SpookysAutomod.Cli -- esp create "MyMod" --light --author "YourName"dotnet run --project src/SpookysAutomod.Cli -- esp add-book "MyMod.esp" "MyBook" --name "Ancient Tome" --text "Long ago, in a land far away..." --value 50Weapons need a 3D model to be visible. Use --model to borrow a vanilla appearance:
dotnet run --project src/SpookysAutomod.Cli -- esp add-weapon "MyMod.esp" "MySword" --name "Blade of Legends" --type sword --damage 30 --model iron-swordModel presets: iron-sword, steel-sword, iron-dagger, hunting-bow
Create spells with actual effects using --effect:
dotnet run --project src/SpookysAutomod.Cli -- esp add-spell "MyMod.esp" "MySpell" --name "Fire Blast" --effect damage-health --magnitude 50 --cost 45Effect presets: damage-health, restore-health, fortify-health, fortify-armor, etc.
Create perks with gameplay effects using --effect:
dotnet run --project src/SpookysAutomod.Cli -- esp add-perk "MyMod.esp" "MyPerk" --name "Warrior's Might" --description "+25% damage" --effect weapon-damage --bonus 25 --playableEffect presets: weapon-damage, damage-reduction, spell-cost, sneak-attack, etc.
dotnet run --project src/SpookysAutomod.Cli -- esp info "MyMod.esp"Copy MyMod.esp to your Skyrim Data folder and enable it in your mod manager.
To get any AI assistant (ChatGPT, Claude, etc.) ready to use the toolkit:
- Copy the initialization prompt: See LLM Init Prompt
- Paste it into your AI chat
- Provide the toolkit path
- Start making requests!
The initialization prompt gives the AI all essential context in ~200 lines, including:
- Critical principles (--json flag, headers, models, effects)
- Common gotchas and what to avoid
- Quick reference for common tasks
- Error handling guidance
Example request:
You: "Create a mod with a set of thief armor and a matching dagger"
The AI will run the appropriate commands to create the plugin and add the records.
- LLM Init Prompt - Quick onboarding (copy & paste this!)
- LLM Guide - Comprehensive patterns and examples
This toolkit includes Claude Code Skills - specialized instruction files that teach Claude Code how to use each module effectively. When you open a project with these skills, Claude automatically knows how to create mods, troubleshoot issues, and work with Skyrim files.
| Skill | Trigger | Purpose |
|---|---|---|
skyrim-esp |
Create plugins, add weapons/armor/spells/perks, NPC AI packages, view/override records | Full ESP/ESL plugin creation and modification with complete NPC AI support (36 package types) |
skyrim-papyrus |
Write scripts, fix script errors | Compile, decompile, validate, generate scripts |
skyrim-mcm |
Add mod settings menu | Create MCM Helper configurations |
skyrim-archive |
Package or extract BSA files, edit archives | Read, extract, create, and modify archives without full repackaging |
skyrim-nif |
Mesh inspection & editing | Inspect, retexture, fix eyes, verify NIF files |
skyrim-audio |
Work with voice files | Handle FUZ/XWM/WAV audio |
skyrim-skse |
Create/build native plugins | Generate and build SKSE C++ plugin projects end-to-end |
Skills are located in .claude/skills/ and are automatically detected by Claude Code. Each skill contains:
- Description - When to use this skill
- Command Reference - All available commands with options
- Workflows - Step-by-step examples for common tasks
- Troubleshooting - How to diagnose and fix issues
You: Create a fire damage spell that costs 50 magicka
Claude: I'll create a spell using the ESP module.
[Runs: esp add-spell "MyMod.esp" "FireBlast" --name "Fire Blast"
--effect damage-health --magnitude 40 --cost 50]
Created spell "Fire Blast" that deals 40 fire damage for 50 magicka.
Copy the .claude/skills/ folder to any project where you want Claude to have Skyrim modding capabilities:
cp -r spookys-automod-toolkit/.claude/skills/ your-project/.claude/skills/The toolkit can also inspect, extract, and modify existing mods.
# Check plugin contents and record counts
esp info "SomeMod.esp"
# List master dependencies
esp list-masters "SomeMod.esp"
# View detailed record information
esp view-record "SomeMod.esp" --editor-id "CustomSpell" --type spell --json
# See what's inside an archive
archive list "SomeMod.bsa" --limit 50
# Validate archive integrity
archive validate "SomeMod.bsa"
# Compare archive versions
archive diff "SomeMod_v1.bsa" "SomeMod_v2.bsa"
# Check what textures a mesh uses
nif list-textures "Meshes/Armor/CustomArmor.nif"
# Inspect MCM configuration
mcm info "MCM/Config/SomeMod/config.json"# Extract all files from an archive
archive extract "SomeMod.bsa" --output "./Extracted"
# Decompile a script back to source
papyrus decompile "Scripts/SomeScript.pex" --output "./Source"
# Extract FUZ audio to XWM + LIP
audio extract-fuz "Sound/Voice/SomeMod.esp/NPC/Line.fuz" --output "./Audio"# Add a new weapon to an existing plugin
esp add-weapon "ExistingMod.esp" "NewSword" --name "Bonus Sword" --damage 35 --model iron-sword
# Add a perk to an existing plugin
esp add-perk "ExistingMod.esp" "BonusPerk" --name "Extra Damage" --effect weapon-damage --bonus 15 --playable
# Merge records from one plugin into another
esp merge "Patch.esp" "MainMod.esp" --output "MainMod_Patched.esp"
# Edit archives without full repackaging
archive add-files "ExistingMod.bsa" "./NewAssets" --base-dir "./NewAssets"
archive remove-files "ExistingMod.bsa" --pattern "*.esp"
archive replace-files "ExistingMod.bsa" "./UpdatedScripts" --pattern "scripts/*"
archive update-file "ExistingMod.bsa" "./Fixed.pex" "scripts/broken.pex"
# Scale a mesh
nif scale "Meshes/Weapon.nif" 1.5 --output "Meshes/Weapon_Large.nif"# 1. Check the plugin
esp info "BrokenMod.esp"
# 2. Extract the BSA
archive extract "BrokenMod.bsa" --output "./Debug"
# 3. Decompile scripts to find issues
papyrus decompile "./Debug/Scripts/BrokenScript.pex" --output "./Debug/Source"
# 4. Check mesh textures
nif list-textures "./Debug/Meshes/SomeArmor.nif"
# 5. After fixing, recompile
papyrus compile "./Debug/Source" --output "./Debug/Scripts" --headers "C:/Skyrim/Data/Scripts/Source"| Type | Description |
|---|---|
| Books | Custom text, lore, journals |
| Quests | Quest framework for scripted content |
| Globals | Configuration variables |
| Factions | Tracking groups, crime factions |
| Quest Aliases | Reference containers with scripts |
| Spells | Damage, heal, buff spells (use --effect) |
| Perks | Combat, magic, stealth perks (--effect) |
| Leveled Items | Random loot distribution with presets |
| Form Lists | Collections of records for scripts |
| Encounter Zones | Level scaling zones with presets |
| Locations | Named areas for quests and fast travel |
| Outfits | NPC equipment sets with presets |
| MCM Menus | Mod configuration menus |
| Scripts | Papyrus script templates |
| Type | Notes |
|---|---|
| Weapons | Use preset or vanilla path for appearance |
| Armor | Use preset or vanilla path for appearance |
| Type | Notes |
|---|---|
| NPCs | Need race/face data to be visible |
This toolkit creates mod data (ESP records). It cannot create:
- 3D models (use Blender + NifTools)
- Textures (use Photoshop/GIMP)
- Custom NPC faces (use Creation Kit)
- World spaces, dungeons, terrain (use Creation Kit)
- Complex quest stages and objectives
However, you can reference any existing vanilla model with --model.
# Plugin Creation & Info
esp create "ModName" --light --author "Name"
esp info "Mod.esp"
esp debug-types [pattern] # Show Mutagen type structures (e.g., "Quest*")
# Record Creation (all support --dry-run for preview)
esp add-quest "Mod.esp" "QuestID" --name "Quest Name" --start-enabled --dry-run
esp add-spell "Mod.esp" "SpellID" --name "Spell Name" --type spell --dry-run
esp add-global "Mod.esp" "GlobalID" --type int --value 1 --dry-run
esp add-faction "Mod.esp" "FactionID" --name "Faction Name" --dry-run
esp add-weapon "Mod.esp" "WeaponID" --name "Name" --type sword --damage 20 --model iron-sword --dry-run
esp add-armor "Mod.esp" "ArmorID" --name "Name" --type light --slot body --rating 30 --model iron-cuirass --dry-run
esp add-npc "Mod.esp" "NPCID" --name "Name" --level 20 --essential --dry-run
esp add-book "Mod.esp" "BookID" --name "Name" --text "Content..." --dry-run
esp add-perk "Mod.esp" "PerkID" --name "Name" --description "Effect" --playable --dry-run
esp add-leveled-item "Mod.esp" "LeveledItemID" --name "Name" --chance-none 25 --preset low-treasure --dry-run
esp add-form-list "Mod.esp" "FormListID" --add-form "Skyrim.esm:0x00012345" --dry-run
esp add-encounter-zone "Mod.esp" "EncounterZoneID" --min-level 10 --max-level 30 --preset mid-level --dry-run
esp add-location "Mod.esp" "LocationID" --name "Name" --preset inn --parent-location "ParentLocationID" --dry-run
esp add-outfit "Mod.esp" "OutfitID" --preset guard --add-item "ItemID" --dry-run
# NPC AI Packages (Complete - 36 types supported)
# Basic behaviors
esp add-package "Mod.esp" "PackageID" --type sandbox --radius 500 --location "LocationRef"
esp add-package "Mod.esp" "PackageID" --type travel --marker "DestRef"
esp add-package "Mod.esp" "PackageID" --type sleep --bed "BedRef" --start-hour 22 --duration 8
esp add-package "Mod.esp" "PackageID" --type eat --furniture "ChairRef" --start-hour 12 --duration 2
esp add-package "Mod.esp" "PackageID" --type follow --target "PlayerRef"
esp add-package "Mod.esp" "PackageID" --type guard --marker "MarkerRef"
esp add-package "Mod.esp" "PackageID" --type patrol --marker "PatrolRef"
# Actions & activities
esp add-package "Mod.esp" "PackageID" --type useitemat --item-ref "ForgeRef" # Crafting, cooking
esp add-package "Mod.esp" "PackageID" --type activate --item-ref "LeverRef"
esp add-package "Mod.esp" "PackageID" --type sit --furniture "ChairRef"
esp add-package "Mod.esp" "PackageID" --type useidlemarker --marker "IdleRef" # Ambient activities
esp add-package "Mod.esp" "PackageID" --type wander --marker "CenterRef" --radius 1000
esp add-package "Mod.esp" "PackageID" --type wait --marker "WaitRef"
esp add-package "Mod.esp" "PackageID" --type relax --marker "RelaxRef"
# Combat & magic
esp add-package "Mod.esp" "PackageID" --type flee --distance 1500
esp add-package "Mod.esp" "PackageID" --type ambush --marker "AmbushRef"
esp add-package "Mod.esp" "PackageID" --type useweapon --weapon-ref "WeaponRef" --target "TargetRef"
esp add-package "Mod.esp" "PackageID" --type usemagic --spell-ref "SpellRef" --target "TargetRef"
esp add-package "Mod.esp" "PackageID" --type castmagic --target "TargetRef"
esp add-package "Mod.esp" "PackageID" --type shout --shout-ref "ShoutRef" --target "TargetRef"
# Social & dialogue
esp add-package "Mod.esp" "PackageID" --type dialogue --target "ActorRef"
esp add-package "Mod.esp" "PackageID" --type forcegreet --target "PlayerRef" # Quest interactions
esp add-package "Mod.esp" "PackageID" --type greet --target "ActorRef"
esp add-package "Mod.esp" "PackageID" --type say --topic-ref "TopicRef" --location-ref "LocRef"
# Advanced behaviors
esp add-package "Mod.esp" "PackageID" --type accompany --target "ActorRef" --destination "DestRef"
esp add-package "Mod.esp" "PackageID" --type escortto --escort-ref "ActorRef" --destination "DestRef"
esp add-package "Mod.esp" "PackageID" --type followto --follow-ref "ActorRef" --destination "DestRef"
esp add-package "Mod.esp" "PackageID" --type acquire --object-ref "ItemRef" # Pick up items
esp add-package "Mod.esp" "PackageID" --type find --target "TargetRef"
esp add-package "Mod.esp" "PackageID" --type holdposition --marker "PosRef"
esp add-package "Mod.esp" "PackageID" --type keepaneyeon --target "WatchRef" # Surveillance
# Utility
esp add-package "Mod.esp" "PackageID" --type lockdoors --door-ref "DoorRef"
esp add-package "Mod.esp" "PackageID" --type unlockdoors --door-ref "DoorRef"
esp add-package "Mod.esp" "PackageID" --type dismount
# Flying creatures (dragons, etc.)
esp add-package "Mod.esp" "PackageID" --type hover --marker "HoverRef" --radius 2000
esp add-package "Mod.esp" "PackageID" --type orbit --marker "OrbitRef" --radius 800
# Attach packages to NPCs (evaluated in order)
esp attach-package "Mod.esp" --npc "NPCID" --package "PackageID"
# Alias & Script Management
esp add-alias "Mod.esp" --quest "QuestID" --name "AliasName" --script "ScriptName"
esp attach-script "Mod.esp" --quest "QuestID" --script "ScriptName"
esp attach-alias-script "Mod.esp" --quest "QuestID" --alias "AliasName" --script "ScriptName"
esp set-property "Mod.esp" --quest "QuestID" --script "ScriptName" --property "PropName" --value "Value" --type object
# Auto-Fill (automatic property resolution from PSC files)
esp auto-fill "Mod.esp" --quest "QuestID" --script "ScriptName" --script-dir "./Scripts/Source" --data-folder "C:/Skyrim/Data"
esp auto-fill-all "Mod.esp" --script-dir "./Scripts/Source" --data-folder "C:/Skyrim/Data" # Bulk process all scripts
# Record Management
esp list-records "Mod.esp" --type weapon --limit 50
esp remove-record "Mod.esp" "RecordEditorID" --dry-run
esp clone-record "Mod.esp" "SourceEditorID" "NewEditorID" --dry-run
# Utilities
esp generate-seq "Mod.esp" --output "./"
esp merge "Source.esp" "Target.esp" --output "Merged.esp"
esp list-masters "Mod.esp"
# Record Viewing & Override System
esp view-record "Mod.esp" --editor-id "RecordID" --type spell --json
esp view-record "Mod.esp" --form-id "000802:Mod.esp" --json
esp create-override "Source.esp" -o "Patch.esp" --editor-id "RecordID" --type weapon
esp find-record --search "Iron" --type weapon --plugin "Skyrim.esm"
esp batch-override "Source.esp" -o "Patch.esp" --search "Fire*" --type spell
esp compare-record "Mod1.esp" "Mod2.esp" --editor-id "RecordID" --type armor
esp conflicts "C:/Skyrim/Data" --editor-id "IronSword" --type weapon
# Condition Management (Perk, Package, IdleAnimation, MagicEffect only)
esp list-conditions "Mod.esp" --editor-id "PerkID" --type perk --json
esp add-condition "Mod.esp" -o "Patch.esp" --editor-id "PerkID" --type perk --function GetLevel
esp remove-condition "Mod.esp" -o "Patch.esp" --form-id "000800:Mod.esp" --indices "0,2"papyrus status
papyrus setup-headers # Auto-detect Skyrim SE/VR and link headers
papyrus setup-headers --skyrim-path "C:/path/to/Skyrim" # Manual path
papyrus generate --name "ScriptName" --extends "Quest" --output "./Scripts"
papyrus compile "./Scripts/Source" --output "./Scripts" --headers "./skyrim-script-headers"
papyrus decompile "Script.pex" --output "./Decompiled"
papyrus validate "Script.psc"# Archive Info & Inspection
archive info "Archive.bsa"
archive list "Archive.bsa" --limit 50
archive validate "Archive.bsa"
archive diff "Original.bsa" "Modified.bsa"
archive status
# Extraction & Creation
archive extract "Archive.bsa" --output "./Extracted"
archive extract-file "Archive.bsa" "scripts/mymod.pex" --output "./Scripts"
archive create "./DataFolder" --output "MyMod.bsa" --game sse
# Archive Editing (modify existing archives)
archive add-files "MyMod.bsa" "./NewFiles" --base-dir "./NewFiles"
archive remove-files "MyMod.bsa" --pattern "*.esp"
archive replace-files "MyMod.bsa" "./UpdatedFiles" --pattern "scripts/*"
archive update-file "MyMod.bsa" "./Scripts/Updated.pex" "scripts/Updated.pex"
# Archive Maintenance
archive merge "Mod1.bsa" "Mod2.bsa" --output "Merged.bsa"
archive optimize "MyMod.bsa" --output "Optimized.bsa"mcm create "ModName" "Display Name" --output "./MCM/config.json"
mcm add-toggle "./config.json" "bEnabled" "Enable Feature"
mcm add-slider "./config.json" "fValue" "Multiplier" --min 0.5 --max 2.0
mcm validate "./config.json"skse templates
skse create "PluginName" --template basic --output "./"
skse build "./ProjectFolder" [--config Release|Debug] [--clean]
skse info "./ProjectFolder"
skse add-function "./ProjectFolder" --name "FuncName" --return "Int" --param "Actor:target"| Record | Options |
|---|---|
| Quest | --name, --priority, --start-enabled, --run-once |
| Spell | --name, --type, --cast-type, --target-type |
| Global | --type (short/long/float), --value |
| Faction | --name, --hidden, --track-crime |
| Alias | --quest, --name, --script, --flags |
| Weapon | --name, --type, --damage, --value, --weight, --model |
| Armor | --name, --type, --slot, --rating, --value, --model |
| NPC | --name, --level, --female, --essential, --unique |
| Book | --name, --text, --value, --weight |
| Perk | --name, --description, --playable, --hidden |
| LeveledItem | --name, --chance-none, --add-entry, --preset |
| FormList | --add-form (FormKey or EditorID) |
| EncounterZone | --min-level, --max-level, --never-resets, --match-pc-below-min, --preset |
| Location | --name, --parent-location, --add-keyword, --preset |
| Outfit | --add-item, --preset |
| Module | Purpose |
|---|---|
esp |
Plugin files (.esp/.esl) |
papyrus |
Papyrus scripts |
nif |
3D mesh reading & editing |
archive |
BSA/BA2 archives |
mcm |
Mod configuration menus |
audio |
Game audio files |
skse |
SKSE C++ plugin projects |
| Tool | Purpose | Auto-Download |
|---|---|---|
| papyrus-compiler | Compile scripts | Yes |
| Champollion | Decompile scripts | Yes |
| BSArch | Create archives | No - Get from xEdit |
| nif-tool | NIF mesh editing | Bundled in tools/nif-tool/ |
All commands support --json for machine-readable output:
dotnet run --project src/SpookysAutomod.Cli -- esp info "MyMod.esp" --json"dotnet is not recognized" - Install .NET 8 SDK
"Build failed" - Run dotnet restore SpookysAutomod.sln then dotnet build SpookysAutomod.sln
"Unable to load the service index for source" / NuGet restore errors - Add the NuGet source:
dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.orgThen run dotnet restore SpookysAutomod.sln and dotnet build SpookysAutomod.sln
"Tool not found" - Run papyrus status to check/download tools
"BSArch not found" - Download from xEdit releases, place BSArch.exe in tools/bsarch/
- ColdSun — nif-tool (Rust CLI for NIF mesh editing)
MIT
