Forge-core SettingsMaintenance
Audit and clean AI coding tool settings — permissions, plugins, hooks, cross-layer conflicts. USE WHEN review permissions, clean settings, audit config, plugin conflicts, hook audit, settings cruft.
install
source · Clone the upstream repo
git clone https://github.com/N4M3Z/forge-core
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/N4M3Z/forge-core "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/SettingsMaintenance" ~/.claude/skills/n4m3z-forge-core-settingsmaintenance && rm -rf "$T"
manifest:
skills/SettingsMaintenance/SKILL.mdsource content
SettingsMaintenance
Audit and clean AI coding tool settings files. Covers permission entries, plugin configuration, hook wiring, and cross-layer conflicts.
Settings Architecture
AI coding tools layer settings across multiple files. Claude Code uses 4 files with inheritance:
| Layer | File | Committed | Scope |
|---|---|---|---|
| Global shared | | No (personal) | All projects |
| Global local | | No (personal) | All projects, overrides global shared |
| Project shared | | Yes (git) | This project, shared with collaborators |
| Project local | | No (gitignored) | This project, personal overrides |
Precedence (highest wins): project local > project shared > global local > global shared.
At the global level, both files are personal — the
settings.json / settings.local.json split is redundant. The local file is designed for project-level use where settings.json is committed and settings.local.json holds personal overrides.
Workflow Routing
| Subskill | Trigger | Content |
|---|---|---|
| ClaudePermissions | "permissions", "allowed commands", "settings cruft" | @ClaudePermissions.md |
| ClaudePlugins | "plugins", "plugin conflicts", "disable plugins" | @ClaudePlugins.md |
| ClaudeHooks | "hooks", "hook config", "dispatch" | @ClaudeHooks.md |
| GeminiSettings | "gemini settings", "audit gemini" | @GeminiSettings.md |
| Full audit | "full audit", "review settings", "clean everything" | All of the above |
Common Procedure
All subskills follow this 6-phase workflow:
- Scope — Determine which settings layers to audit. Default: all 4 files that exist. User can narrow to "just global" or "just project".
- Inventory — Read each file. Count entries by category. Present a summary table with totals.
- Audit — Run the subskill's checks against the inventory. Collect findings.
- Report — Present findings grouped by category. Each finding: ID, category, severity (remove/consolidate/flag), entry, reason.
- Apply — On user approval, edit files. Apply changes per-category so user can approve/reject each group independently. Use targeted Edit tool calls for reviewable diffs.
- Verify —
for JSON validity. Count before/after entries. Spot-check that critical tools remain permitted.jq . <file> > /dev/null
Cross-Layer Checks
Run these regardless of which subskill is active:
| Check | What to look for |
|---|---|
| Env var duplication | Same key+value in both global and project — project inherits from global |
| Permission scattering | Same entry in both and at the same level |
| Plugin enable/disable conflict | Global disables a plugin but project re-enables it (or vice versa) |
| Redundant local file | At global level, entries that already exist in |