Audit Config
Scan a Minecraft server's config files and produce a prioritised, actionable report.
Procedure
- Locate the config tree. Look for, at the server root and per-world folders:
server.properties, bukkit.yml, spigot.yml, paper-global.yml,
paper-world-defaults.yml, */paper-world.yml, purpur.yml, velocity.toml,
config/ plugin folders. Use Glob/Grep/Read. If only pasted text is available, audit that.
- Read each present file and check against the reference checklists:
references/paper-global-checklist.md — server-wide Paper settings + proxy forwarding.
references/common-footguns.md — the high-frequency mistakes that crash or lag servers.
- Cross-file consistency (the part single-file linters miss):
online-mode vs proxy forwarding: behind Velocity/Bungee the backend must run
online-mode=false AND have modern forwarding configured, or skins/UUIDs break.
- Never both
spigot.yml: bungeecord: true and paper-global.yml: proxies.velocity.enabled: true — the server won't start.
view-distance in server.properties vs spigot.yml/paper-world.yml — the lower wins per-world; flag silent mismatches.
proxies.velocity.secret present and not the literal default/empty; forwarding.secret matches the proxy.
- Security pass:
- RCON: if
enable-rcon=true, confirm a strong rcon.password and that the port is
firewalled / loopback-bound — never publicly exposed. (Critical if exposed.)
online-mode=false without a proxy in front = crackable server (high, unless intended).
- Performance pass: view-distance/simulation-distance sanity for the player count,
entity-activation-range present, mob spawn limits set,
entity-per-chunk-save-limit
caps for experience_orb/arrow/ender_pearl, hopper tuning. Defer deep tuning to
the performance-tuning skill but flag obvious wins here.
- YAML hygiene: detect literal tab characters (YAML forbids tabs — a common silent
breakage), duplicate keys, and values that should be quoted.
- Plugin conflict pass: run
check-conflicts.mjs to flag mutually exclusive plugins (two
skyblock engines, two claim systems, ItemsAdder + Oraxen), missing deps (Vault without an
economy, LibsDisguises without ProtocolLib), and proxy/Folia mismatches. Verify any hit with
learn-plugin-docs before recommending a removal.
Reporting format
Group findings by severity and give each a one-line fix:
CRITICAL — will crash or lose data
- [file:key] problem → fix
HIGH — lag or security
- …
MEDIUM — quality / maintainability
LOW — style / nitpick
End with a short "Looks good" list of things that are already correct, so the user trusts
the audit. If a referenced plugin's keys are unfamiliar, call the learn-plugin-docs
skill before judging them — do not invent keys.
Helper scripts
- Seed the audit by scanning the tree:
node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/scan-server-tree.mjs" <server-root>
# detects software, config files, worlds, plugins, key settings, and tab-character warnings
# add --json for machine-readable output
- Find paper-world.yml overrides (you should only override keys you mean to):
node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/diff-against-defaults.mjs" \
<world>/paper-world.yml paper-world-defaults.yml
- Check plugin conflicts / missing deps (uses
references/conflict-rules.json + the profile):node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/check-conflicts.mjs" <server-root>
# or --list "LuckPerms,EssentialsX,Vault" or --profile (add --json for machine output)
- Write the server profile so later answers stop re-asking version/host/stack:
node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/scan-server-tree.mjs" <server-root> --write-profile
All are read-only on the scanned tree (only --write-profile writes, into mcwrench's _cache/) and
run on stock Node ≥18. Use them to orient, then read the flagged files.
1---2name: audit-config3description: Audits a Minecraft server's configuration tree for performance, security and footgun issues and reports a prioritised fix list. Use whenever the user asks to "audit my config", "check my server config", "review paper-global.yml", "why is my server set up wrong", "is this config safe", "lint my server", or points at a folder containing server.properties, paper-global.yml, paper-world-defaults.yml, paper-world.yml, spigot.yml, bukkit.yml, purpur.yml or velocity.toml. Also use proactively after the user shares any of those files or pastes their contents. Flags online-mode/forwarding mismatches, exposed RCON, YAML tab characters, view-distance/simulation-distance mismatches, missing entity limits, and unsafe unsupported-settings. Reports findings as critical, high, medium and low.4license: MIT5---67# Audit Config89Scan a Minecraft server's config files and produce a **prioritised, actionable** report.1011## Procedure12131. **Locate the config tree.** Look for, at the server root and per-world folders:14 `server.properties`, `bukkit.yml`, `spigot.yml`, `paper-global.yml`,15 `paper-world-defaults.yml`, `*/paper-world.yml`, `purpur.yml`, `velocity.toml`,16 `config/` plugin folders. Use Glob/Grep/Read. If only pasted text is available, audit that.172. **Read each present file** and check against the reference checklists:18 - `references/paper-global-checklist.md` — server-wide Paper settings + proxy forwarding.19 - `references/common-footguns.md` — the high-frequency mistakes that crash or lag servers.203. **Cross-file consistency** (the part single-file linters miss):21 - `online-mode` vs proxy forwarding: behind Velocity/Bungee the backend must run22 `online-mode=false` AND have modern forwarding configured, or skins/UUIDs break.23 - **Never** both `spigot.yml: bungeecord: true` and `paper-global.yml: proxies.velocity.enabled: true` — the server won't start.24 - `view-distance` in `server.properties` vs `spigot.yml`/`paper-world.yml` — the lower wins per-world; flag silent mismatches.25 - `proxies.velocity.secret` present and not the literal default/empty; `forwarding.secret` matches the proxy.264. **Security pass:**27 - RCON: if `enable-rcon=true`, confirm a strong `rcon.password` and that the port is28 firewalled / loopback-bound — never publicly exposed. (Critical if exposed.)29 - `online-mode=false` without a proxy in front = crackable server (high, unless intended).305. **Performance pass:** view-distance/simulation-distance sanity for the player count,31 entity-activation-range present, mob spawn limits set, `entity-per-chunk-save-limit`32 caps for `experience_orb`/`arrow`/`ender_pearl`, hopper tuning. Defer deep tuning to33 the `performance-tuning` skill but flag obvious wins here.346. **YAML hygiene:** detect literal tab characters (YAML forbids tabs — a common silent35 breakage), duplicate keys, and values that should be quoted.367. **Plugin conflict pass:** run `check-conflicts.mjs` to flag mutually exclusive plugins (two37 skyblock engines, two claim systems, ItemsAdder + Oraxen), missing deps (Vault without an38 economy, LibsDisguises without ProtocolLib), and proxy/Folia mismatches. Verify any hit with39 `learn-plugin-docs` before recommending a removal.4041## Reporting format4243Group findings by severity and give each a one-line fix:4445```46CRITICAL — will crash or lose data47 - [file:key] problem → fix48HIGH — lag or security49 - …50MEDIUM — quality / maintainability51LOW — style / nitpick52```5354End with a short "Looks good" list of things that are already correct, so the user trusts55the audit. If a referenced plugin's keys are unfamiliar, call the `learn-plugin-docs`56skill before judging them — do not invent keys.5758## Helper scripts5960- **Seed the audit** by scanning the tree:61 ```bash62 node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/scan-server-tree.mjs" <server-root>63 # detects software, config files, worlds, plugins, key settings, and tab-character warnings64 # add --json for machine-readable output65 ```66- **Find paper-world.yml overrides** (you should only override keys you mean to):67 ```bash68 node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/diff-against-defaults.mjs" \69 <world>/paper-world.yml paper-world-defaults.yml70 ```71- **Check plugin conflicts / missing deps** (uses `references/conflict-rules.json` + the profile):72 ```bash73 node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/check-conflicts.mjs" <server-root>74 # or --list "LuckPerms,EssentialsX,Vault" or --profile (add --json for machine output)75 ```76- **Write the server profile** so later answers stop re-asking version/host/stack:77 ```bash78 node "${CLAUDE_PLUGIN_ROOT}/skills/audit-config/scripts/scan-server-tree.mjs" <server-root> --write-profile79 ```80All are read-only on the scanned tree (only `--write-profile` writes, into mcwrench's `_cache/`) and81run on stock Node ≥18. Use them to orient, then read the flagged files.