# File Naming Normalization

> Normalizes asset filenames by splitting on common separators, stripping asset IDs and optional user strings from each segment, then joining with hyphens. Use when normalizing asset filenames, batch-renaming SFX/UI textures, file naming normalization, asset naming convention, slug normalization, or kebab-case asset names.

- **Type:** Skill
- **Install:** `agentstack add skill-godot-fun-godot-framework-file-naming-normalization`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [godot-fun](https://agentstack.voostack.com/s/godot-fun)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [godot-fun](https://github.com/godot-fun)
- **Source:** https://github.com/godot-fun/godot-framework/tree/main/.cursor/skills/file-naming-normalization

## Install

```sh
agentstack add skill-godot-fun-godot-framework-file-naming-normalization
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# File Naming Normalization

Normalize asset filenames: split → clean each segment → join with `-`.

## Rules

When this skill applies, read and follow [skill-dependency-manager](../../rules/skill-dependency-manager.md) — run scripts as documented, install missing tools into `.dependency/`.

## Quick Start

Default: split on `_`, `-`, `.`, and spaces; strip leading/trailing digits from each segment; join with `-`:

```bash
.dependency/python/python .cursor/skills/file-naming-normalization/scripts/normalize.py path/to/file_or_folder
```

Preview without renaming:

```bash
.dependency/python/python .cursor/skills/file-naming-normalization/scripts/normalize.py Audio/SFX --dry-run
```

## Workflow

1. **Split** the filename stem (extension is preserved) on common separators: `_`, `-`, `.`, whitespace.
2. **Clean** each segment:
   - Drop pure-digit segments with 4+ digits (asset IDs like `38126`)
   - Keep short pure-digit segments as variant indices (`1`, `2`, `01`)
   - Remove leading digits from mixed segments (`001Hero` → `Hero`)
   - Remove trailing digits from mixed segments (`Attack02` → `Attack`, `foisal72` → `foisal`)
   - Remove user-given strings (see `--strip`)
3. **Drop** empty segments after cleaning.
4. **Join** remaining segments with `-`.
5. **Rename** in place (or write to `--output-dir`).

## Examples

| Input | Output |
|-------|--------|
| `001_Hero_Attack_02.wav` | `Hero-Attack.wav` |
| `sfx-button-click.mp3` | `sfx-button-click.mp3` (already hyphenated; digits only stripped per segment) |
| `UI 12 Panel Open.png` | `UI-Panel-Open.png` |
| `freesound_community-shoot-1-81135.wav` | `freesound-community-shoot-1.wav` |
| `SFX_001_button.wav` with `--strip SFX` | `button.wav` |

```bash
# Strip custom strings (repeatable)
.dependency/python/python .cursor/skills/file-naming-normalization/scripts/normalize.py Assets --strip SFX --strip UI

# Recursive folder
.dependency/python/python .cursor/skills/file-naming-normalization/scripts/normalize.py Assets -r

# Copy normalized files to another folder (originals unchanged)
.dependency/python/python .cursor/skills/file-naming-normalization/scripts/normalize.py Assets -o normalized/ -r
```

## Common Flags

`-r` / `--recursive` · `--strip TEXT` (repeatable) · `--strip-case-insensitive` · `-o` / `--output-dir` · `--dry-run` · `--overwrite`

## Agent Notes

1. Use the bundled script; do not hand-write rename loops unless the script cannot cover the case.
2. Always run `--dry-run` first when normalizing many files; show the user the preview.
3. `--strip` removes the given substring anywhere inside each segment (not only at edges). Pass one `--strip` per string.
4. Segments that become empty after cleaning are dropped (`001` alone → skipped).
5. Collisions (two files mapping to the same name) abort with an error — resolve manually or normalize in smaller batches.
6. Only renames files; does not rename directories.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [godot-fun](https://github.com/godot-fun)
- **Source:** [godot-fun/godot-framework](https://github.com/godot-fun/godot-framework)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-godot-fun-godot-framework-file-naming-normalization
- Seller: https://agentstack.voostack.com/s/godot-fun
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
