Use when a Skyrim patch/conflict analysis may touch generated output from tools such as Reqtificator, ParallaxGen, DynDOLOD, Synthesis, TexGen, xLODGen, or NPC Plugin Chooser.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add ShugokiFable/Ultimate-AI-Starter-Bundle --skill tool-output-awareness --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Tool Output Awareness?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/shugokifable-tool-output-awareness)More formats (shields.io, HTML) on the badges page.
---
name: tool-output-awareness
description: Use when a Skyrim patch/conflict analysis may touch generated output from tools such as Reqtificator, ParallaxGen, DynDOLOD, Synthesis, TexGen, xLODGen, or NPC Plugin Chooser.
---
# Tool Output Awareness
## Overview
Several tools in a Skyrim build don't ship records a human authored — they **generate** them, and the
user **re-runs the tool**, overwriting the output every time. Reqtificator, ParallaxGen, DynDOLOD,
Synthesis, TexGen, xLODGen and NPC Plugin Chooser 2 are all in this class. Their plugins (and the meshes /
textures they emit) are **derived artifacts**, not design intent.
This is an operational guardrail, not a procedure: it changes how you treat the load-order winner across
every read, conflict pull, and patch you author. The failure it prevents is concrete and houseCARL hits it
repeatedly — it reads the true load-order winner, sees a generated plugin sitting on top, and **forwards
that generated data into the patch it creates**. The next time the user runs the tool, that frozen copy is
either stale, a duplicate the tool fights, or — for path-bearing data like ParallaxGen's rewritten mesh and
texture paths — simply wrong, because the generator assigns different paths on the next run.
## The core rule
Two parts, and they apply at **both** the record layer (xEdit / plugin records) and the file layer (loose
meshes and textures in the mod folder):
1. **Never copy a tool output's changes into a patch you create — ever.** Not its records, not its
computed field values, not a repoint to a path it generated. This holds even while debugging: a fix that
bakes regenerated data into a hand patch is wiped or contradicted on the next tool run.
2. **Outside debugging, don't even base your work on a tool output.** When you create a patch, author a new
mod, or study how a mod works, look **past** the generated overrides to the real authored records
underneath. Reading a generated plugin to learn a mod's design tells you what the *tool* produced, not
what the *mod* does.
The reason both hold: tool outputs sit **on top of** (or are regenerated from) the authored load order. The
generator runs again and re-derives its result. Author against the **source** that feeds the generator and
let it regenerate; freeze nothing derived.
## Recognize a tool output
Identify by the most reliable signal available, in this order. The first two are unambiguous; the third
needs the false-positive check below.
**1 — Fixed plugin filenames (bulletproof).** The plugin name *is* the signature, whatever mod folder holds
it:
| Generator | Output plugin(s) |
|---|---|
| Reqtificator (Requiem) | `Requiem for the Indifferent.esp` |
| ParallaxGen | `PGPatcher.esp`, `PG_1.esp` |
| DynDOLOD | `DynDOLOD.esm`, `DynDOLOD.esp`, `Occlusion.esp` |
**2 — Generated marker files (bulletproof).** A file the tool writes into its output mod folder identifies
the mod no matter what its plugin is named:
- **NPC Plugin Chooser 2** → the mod folder contains a generated **`NPC_Token.json`**. Its plugin can be
named anything (e.g. an `… NPC Appearances.esp`) — go by the token, not the name.
- **ParallaxGen** also drops **`ParallaxGen_Diff.json`** in its output folder (confirms it beyond the fixed
plugin names; this folder also holds the regenerated `meshes\` / `textures\`).
**3 — The generated output folder (needs the false-positive check).** These have no fixed plugin name; the
output is the **mod directory the tool wrote into**, conventionally named "… Output":
- **Synthesis** → the Synthesis output mod. Treat **every plugin inside it** as generated. Plugin names are
pipeline-configured and often do **not** contain "Synthesis" (a real output folder can hold, e.g., a
`… High Poly Head Patcher.esp`) — identify the **folder**, then the whole mod, not by per-plugin name.
- **TexGen** → output folder whose name contains "texgen"; **textures only, no plugin** (pure file layer).
- **xLODGen** → output folder whose name contains "xlodgen"; **meshes + textures, no plugin** (pure file
layer).
### Not a tool output (false positives to rule out)
- **Resource / fixes / add-on / patch mods that merely carry a tool's name in the folder** are **inputs**
the tool consumes, not its output: e.g. `DynDOLOD 3 Resources`, `DynDOLOD DLL NG and Scripts`,
`DynDOLOD TexGen Fixes (…)`, a `… DynDOLOD Add-On`, or a downloaded `… xEdit-Synthesis Patch`. The
decisive test: does the mod hold the generator's **own plugin / marker**, or is it the **directory the
tool wrote into**? If neither, it's an input — patch it like any normal mod.
- **"It was downloaded / has a Nexus mod id" does NOT mean "not a tool output."** Modlists routinely
pre-generate these outputs and redistribute them, so the output mod can carry a real Nexus id and install
file. `meta.ini` install source is therefore **not** a reliable discriminator — trust the fixed plugin
filenames and marker files instead.
## Authoring vs debugging: the branch that decides everything
Ask one question before you read or write anything: **am I debugging an in-game problem, or authoring?**
- **Debugging an in-game issue** (a CTD, a visual bug, a wrong stat, a dark face, a LOD seam, a purple
mesh): a tool output is a legitimate — often the *prime* — suspect. **Read it freely.** That's the only
context where you reference one. But still obey rule 1: don't "fix" it by baking corrected data into a
hand patch the next tool run will discard. Fix the **source mod or the tool's configuration** and have
the user re-run the tool; if a true standalone override is genuinely required, say plainly that it must be
re-applied (or the tool re-run) after every regeneration.
- **Authoring** — creating a patch, building a new mod, or learning how a mod works: treat tool outputs as
**transparent**. Don't read them as your basis, don't forward them. Look past them (next section).
## Patch against the source, not the tool output
When the load-order winner of a record you need to patch is a tool output, do **not** build on that winner.
Pull the conflict tree and look underneath:
1. Read with the conflict tree — `housecarl_read_record` or `housecarl_batch_record_detail` with
`conflict_tree: true`, or `housecarl_cross_plugin_query` for who-touches-what.
2. **Classify each override.** Mark the tool-output overrides (by the signals above).
3. **Base your patch on the highest NON-tool-output override** — the real authored winner — and its
masters. That record carries the design intent; the generator re-stacks its derived result on top when
it next runs, incorporating your change rather than being frozen by it.
4. Author your edit (`housecarl_set_field`, `housecarl_bulk_apply`, `housecarl_create_record`) against that
source, and re-run the generator as the final build step.
**Requiem is the textbook case.** `Requiem for the Indifferent.esp` is the Reqtificator's merged output, and
some lists also re-wrap per-mod Reqtificator results into renamed patches (see "Modlist-specific renames").
Read it only to learn the *target* values Requiem assigns; author your override against the **source**
record, then re-run the Reqtificator — it leaves a correct direct override alone or rebalances it. Copying
its values into your patch freezes Requiem's derived numbers and fights the next Reqtificator run.
## Assets: the same rule at the file layer
ParallaxGen, TexGen, xLODGen, DynDOLOD and NPC Plugin Chooser 2 regenerate **meshes and textures**, not just
records. The same guardrail applies to `housecarl_place_asset` / `housecarl_bulk_place_asset` /
`housecarl_asset_status` and any NIF path work:
- Don't treat a **generated** mesh/texture as the source of truth to copy or forward into a new mod.
- Don't **repoint a record to a generated asset path** — ParallaxGen reassigns those paths every run, so the
link breaks on regeneration.
- Fix the **source** mesh/texture in the originating mod, or the tool's settings, then re-run the tool. When
debugging a generated asset (e.g. a purple parallax mesh, a dark NPC-merge facegen), read it to diagnose,
but route the fix to the source — see `facegen-diagnostics`.
## Modlist-specific renames
Lists rename and re-wrap generators' output. The three "folder-named" tools emit user-chosen names, and a
list may fold Reqtificator results into custom-named per-mod patches or name its NPC-Chooser output anything.
The **principle** is fixed — a plugin that carries a generator's derived data is a tool output for that data,
however it's named — but the specific names are a property of the modlist, not of this skill. Learn them from
the modlist's own `CLAUDE.md` / project memory, where modlist facts belong, rather than hardcoding them here.
When a plugin looks like it carries generated data but you can't confirm it against the signals above, say so
and ask — don't silently treat it as (or as not) a tool output.
## Common mistakes
- **Forwarding the load-order winner without checking what it is.** The single highest-frequency error: the
winner is `DynDOLOD.esp` / `Requiem for the Indifferent.esp` / `PGPatcher.esp`, and its data goes straight
into the new patch. Always classify the winner before you forward it.
- **Reading a tool output to learn how a mod works.** RFTI / Synthesis show you the *generated* version of a
mod, not its design. Study the mod's own records; the generated override is derived noise for that purpose.
- **Trusting plugin names for Synthesis.** Synthesis plugins are named by the pipeline and frequently lack
"Synthesis" — identify the output **folder** and treat all its plugins as generated.
- **Treating a "… Resources" / "… Fixes" / "… Add-On" mod as the tool's output.** Those are inputs. Patch
them normally.
- **Using "it has a Nexus id" to rule out tool-output status.** Pre-generated outputs are redistributed with
real Nexus metadata; go by the plugin filename / marker file.
- **"Fixing" a generated asset by baking it into a patch or new mod.** The next tool run ignores it. Fix the
source or the tool config and regenerate.
## Before you ship a patch
A quick self-check that catches the failure mode:
- For every record in the patch: is its data sourced from a **tool output**? If yes, re-base it on the real
authored record and confirm the generator will re-apply on the next run.
- Does any field hold a **generated path** (a ParallaxGen mesh/texture path, a DynDOLOD-injected reference)?
If yes, remove it — fix the source and regenerate instead.
- Did the patch gain a **tool-output plugin as a master** (e.g. `Requiem for the Indifferent.esp`,
`DynDOLOD.esp`)? That's a strong signal you forwarded derived data — re-base on the source master.
## Real example
A `STAT` for a rock wins the load order in `PGPatcher.esp` (ParallaxGen), which rewrote its model path to a
generated parallax mesh under the PG output folder. You're asked to patch that rock's material/keyword.
- **Wrong:** `housecarl_read_record` returns the `PGPatcher.esp` winner; you forward it, keeping the
generated `meshes\…\rock_parallax.nif` path. Next ParallaxGen run regenerates with a different path → your
patch points at a stale/incorrect mesh, and you've also taken `PGPatcher.esp` as a master.
- **Right:** pull `conflict_tree: true`, see `PGPatcher.esp` on top and the real authored `STAT` (the rock
mod, or its master) beneath. Patch the keyword against **that** source record — leave the model path alone.
Re-run ParallaxGen as the build step; it re-applies its mesh edit on top of your now-correct keyword. No
generated data is frozen into the patch.
## Notes
- The debugging exception is about **reading**, not fixing: a tool output may be the cause, so inspect it —
but the fix still lands on the source / config + a regeneration, never as frozen output in a patch.
- This guardrail composes with `facegen-diagnostics` — asset-layer fixes (e.g. a dark NPC-merge facegen)
route to the source, not into a frozen patch.
- Generated marker files seen in practice — `NPC_Token.json` (NPC Plugin Chooser 2) and
`ParallaxGen_Diff.json` (ParallaxGen) — are the most robust folder-level signals when a plugin name is
ambiguous.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!