Agent skill

File Naming Normalization

by godot-fun in godot-fun/gai

Normalizes asset filenames by splitting on common separators, stripping asset IDs and optional user strings from each segment, then joining with underscores (snakecase).

MITAuto-check passedDatabases

Install File Naming Normalization

skills CLI
$ npx skills add godot-fun/gai --skill file-naming-normalization -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install godot-fun/gai file-naming-normalization --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/godot-fun/gai.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/file-naming-normalization .claude/skills/file-naming-normalization && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
file-naming-normalization
GitHub stars
182
Token cost
~1.1k tokens
SKILL.md length
287 words
Files
1
Skills in repo
36
Repo updated
First seen
Licence
MIT

At a glance

Normalizes asset filenames by splitting on common separators, stripping asset IDs and optional user strings from each segment, then joining with underscores (snakecase).

  • Works in 5 steps: Split the filename stem (extension is… → Clean each segment → Drop empty segments after cleaning. → …
  • Normalizing asset filenames
  • SKILL.md covers Rules, Quick Start, Workflow and Examples, plus 4 more sections
  • Calls python

What it does

File Naming Normalization is an agent skill from godot-fun/gai. Normalizes asset filenames by splitting on common separators, stripping asset IDs and optional user strings from each segment, then joining with underscores (snakecase). Use when normalizing asset filenames, batch-renaming SFX/UI textures, file naming normalization, asset naming convention, slug normalization, or snakecase asset names.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Databases, covering Database schema design. The repository describes itself as: A lightweight AI agent and skill workflow framework built with Godot. The licence is MIT.

When your agent uses it

  • Normalizing asset filenames
  • Batch-renaming SFX/UI textures
  • File naming normalization
  • Asset naming convention

Example prompts

  • “Use the file-naming-normalization skill to normaliz asset filenames by splitting on common separators, stripping asset IDs and optional user strings…”
  • “/file-naming-normalization”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Split the filename stem (extension is preserved) on common separators: _, -, ., whitespace.
  2. Clean each segment
  3. Drop empty segments after cleaning.
  4. Join remaining segments with _.
  5. Rename in place (or write to --output-dir).

What it can do on your machine

Read from SKILL.md and the folder at commit aff659b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

File Naming Normalization loads about 1.1k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 287 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from godot-fun/gai at commit aff659b, republished under its MIT licence (© godot-fun). 287 words, ~1,082 tokens.

Download SKILL.mdSave it as .claude/skills/file-naming-normalization/SKILL.md (or your agent's skills folder).
name
file-naming-normalization
description
Normalizes asset filenames by splitting on common separators, stripping asset IDs and optional user strings from each segment, then joining with underscores (snake_case). Use when normalizing asset filenames, batch-renaming SFX/UI textures, file naming normalization, asset naming convention, slug normalization, or snake_case asset names.

File Naming Normalization

Normalize asset filenames: split → clean each segment → join with _ (snake_case).

Rules

When this skill applies, read and follow skill-dependency-manager — 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 .ai/file-naming-normalization/normalize.py path/to/file_or_folder

Preview without renaming:

bash
.dependency/python/python .ai/file-naming-normalization/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

InputOutput
001_Hero_Attack_02.wav001_Hero_Attack_02.wav (already snake_case)
001-Hero-Attack-02.wav001_Hero_Attack_02.wav
sfx-button-click.mp3sfx_button_click.mp3
UI 12 Panel Open.pngUI_12_Panel_Open.png
freesound_community-shoot-1-81135.wavfreesound_community_shoot_1.wav
SFX_001_button.wav with --strip SFX001_button.wav
bash
# Strip custom strings (repeatable)
.dependency/python/python .ai/file-naming-normalization/normalize.py Assets --strip SFX --strip UI

# Recursive folder
.dependency/python/python .ai/file-naming-normalization/normalize.py Assets -r

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

Output

--dry-run preview (unchanged files such as 001_Hero_Attack_02.wav are omitted):

Assets/001-Hero-Attack-02.wav -> Assets/001_Hero_Attack_02.wav
Assets/freesound_community-shoot-1-81135.wav -> Assets/freesound_community_shoot_1.wav
Assets/sfx-button-click.mp3 -> Assets/sfx_button_click.mp3
Assets/UI 12 Panel Open.png -> Assets/UI_12_Panel_Open.png

Dry run: 4 file(s) would be renamed.

In-place rename:

Assets/001-Hero-Attack-02.wav -> Assets/001_Hero_Attack_02.wav

Renamed 1 file(s).

Nothing to change:

All filenames already normalized.

With --strip SFX:

Assets/SFX_001_button.wav -> Assets/001_button.wav

Renamed 1 file(s).

Copy to --output-dir (originals kept):

Assets/SFX_001_button.wav -> normalized/001_button.wav

Renamed 1 file(s).

Name collision (exit code 1):

Name collision: 'Assets/Hero-Attack.wav' and 'Assets/Hero.Attack.wav' both map to 'Assets/Hero_Attack.wav'

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 (81135 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.

CLI

Copy-paste commands: cli/file-naming-normalization.md

© godot-fun, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/file-naming-normalization of godot-fun/gai.

Open the folder on GitHubat commit aff659b

Compare with similar skills

File Naming Normalization next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

File Naming Normalization compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
File Naming Normalization this skillgodot-fun/gai182—~1.1kAutomated safety check: PassMIT
SQL Optimization Patternsynulihao/AgentSkillOS61711 repos~3.3kAutomated safety check: PassNone
Add Mpk Taskmirage-project/mirage2.5k—~4.5kAutomated safety check: PassApache-2.0
Datamodellmnimbalyst/nimbalyst1.9k—~713Automated safety check: PassMIT
B200 Flash Attention4 Plannermirage-project/mirage2.5k—~1.9kAutomated safety check: PassApache-2.0
Experiment Auditwanshuiyin/Auto-claude-code-research-in-sleep17k1 repos~2.7kAutomated safety check: NotesMIT

Similar skills

  • SQL Optimization Patterns

    ynulihao/AgentSkillOS

    Master SQL query optimization, indexing strategies, and EXPLAIN analysis to dramatically improve database performance and eliminate slow queries.

    617 GitHub starsUsed in 11 repos~3.3k tokens
    DatabasesAuto-check passed
  • Add Mpk Task

    mirage-project/mirage

    Step-by-step guide for adding a new task implementation to Mirage Persistent Kernel (MPK).

    2.5k GitHub stars~4.5k tokensUpdated yesterday
    DatabasesAuto-check passed
  • Datamodellm

    nimbalyst/nimbalyst

    Create visual data models for database schemas using Nimbalyst's DataModelLM editor.

    1.9k GitHub stars~713 tokensUpdated yesterday
    DatabasesAuto-check passed
  • B200 Flash Attention4 Planner

    mirage-project/mirage

    A skill your agent uses when the user wants to design or extend a FlashAttention-style forward kernel on B200/Blackwell, involving the two MMAs QKᵀ and PV, online softmax, S/P/O in TMEM, warp roles…

    2.5k GitHub stars~1.9k tokensUpdated yesterday
    DatabasesAuto-check passed
  • Experiment Audit

    wanshuiyin/Auto-claude-code-research-in-sleep

    Audit experiment integrity before claiming results. An agent skill from wanshuiyin/Auto-claude-code-research-in-sleep.

    17k GitHub starsUsed in 1 repo~2.7k tokens
    DatabasesAuto-check: notes
  • Sqlite Schema Design

    fastrepl/anarlog

    Design or review schemas for crates/cloudsync using SQLite Sync constraints, not generic SQLite advice.

    9.5k GitHub stars~1.9k tokensUpdated yesterday
    DatabasesAuto-check passed

More from godot-fun/gai

All 36 skills in this repo
  • AI Text To Speech

    godot-fun/gai

    Zero-shot text-to-speech with voice cloning via IndexTTS2 (index-tts).

    182 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Audio Denoise

    godot-fun/gai

    Reduces background noise in a single audio file using FFmpeg afftdn.

    182 GitHub stars~465 tokensUpdated yesterday
    Auto-check passed
  • Audio Fade

    godot-fun/gai

    Applies fade-in and fade-out at the start and end of a single audio file using FFmpeg.

    182 GitHub stars~652 tokensUpdated yesterday
    Auto-check passed
  • Normalizes a single audio file to consistent LUFS loudness with true-peak limiting using FFmpeg.

    182 GitHub stars~684 tokensUpdated yesterday
    Auto-check passed
  • Standardizes a single audio file to 44100 or 48000 Hz and exports 16-bit PCM WAV using FFmpeg.

    182 GitHub stars~638 tokensUpdated yesterday
    Auto-check passed
  • Audio Split

    godot-fun/gai

    Splits a single audio file into two segments (part 1 before the split point, part 2 after) using FFmpeg.

    182 GitHub stars~554 tokensUpdated yesterday
    Auto-check passed

Categories

Questions about File Naming Normalization

What does File Naming Normalization do?

Normalizes asset filenames by splitting on common separators, stripping asset IDs and optional user strings from each segment, then joining with underscores (snakecase). File Naming Normalization is an agent skill from godot-fun/gai. Normalizes asset filenames by splitting on common separators, stripping asset IDs and optional user strings from each segment, then joining with underscores (snakecase).

When should I use File Naming Normalization?

File Naming Normalization fits situations like: normalizing asset filenames; batch-renaming SFX/UI textures; file naming normalization; asset naming convention.

How do I install File Naming Normalization in Claude Code?

Run `npx skills add godot-fun/gai --skill file-naming-normalization -a claude-code`. Or copy the skill folder (.agents/skills/file-naming-normalization in godot-fun/gai) into .claude/skills/file-naming-normalization in your project. Claude Code loads it when a task matches its description.

How do I install File Naming Normalization in Codex?

Run `npx skills add godot-fun/gai --skill file-naming-normalization -a codex`. Or copy the skill folder (.agents/skills/file-naming-normalization in godot-fun/gai) into .agents/skills/file-naming-normalization in your project. Codex loads it when a task matches its description.

Can I use File Naming Normalization in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add godot-fun/gai --skill file-naming-normalization -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/file-naming-normalization, .gemini/skills/file-naming-normalization, .github/skills/file-naming-normalization and .opencode/skills/file-naming-normalization in your project.

What does File Naming Normalization need to run?

Going by SKILL.md and its folder, File Naming Normalization needs the command-line tools its instructions call (python). Our summary lists: Python 3.

Does File Naming Normalization access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is File Naming Normalization safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does File Naming Normalization use?

File Naming Normalization is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does File Naming Normalization use?

About 1.1k tokens (SKILL.md is roughly 4.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to File Naming Normalization?

Skills that share tags, products or a category with File Naming Normalization: SQL Optimization Patterns (ynulihao/AgentSkillOS, 617 stars), Add Mpk Task (mirage-project/mirage, 2.5k stars), Datamodellm (nimbalyst/nimbalyst, 1.9k stars) and B200 Flash Attention4 Planner (mirage-project/mirage, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains File Naming Normalization?

godot-fun (a GitHub organization) maintains it in godot-fun/gai, which has 182 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 8, 2026.

Source: godot-fun/gai on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.