You have a folder of textures named rock albedo 2.png, Rock_Albedo_FINAL.png, and rockalbedo-old(1).png. Build the tool that fixes it - safely - and you've got your first real pipeline piece.
Write a command-line tool that renames every file in a folder to a naming convention. It should be safe enough that a teammate could run it on a live asset library without you hovering nervously behind them. That last part is the whole point - anyone can write a rename loop; a TA writes one that doesn't eat someone's afternoon.
This is the truest first pipeline problem there is: messy real-world inputs, a convention to enforce, files you must not destroy, and a payoff you can feel the second it works. Every concept it needs - walking folders, string surgery, dry runs - shows up in every tool you'll ever build after it.
Constraints are what make a brief interesting instead of a tutorial. Hold yourself to these:
You're done when all of these are true. Copy this into your README and tick them off:
Don't build it all at once. Build it in the order that keeps you safe:
The First Pipeline Script tutorial walks this exact build step by step and ships a finished reference script. Read it after you've had a genuine attempt - comparing your version to a worked one is where the learning lands.
Once the core works, these are where a Starter piece grows into something you're proud of:
The tool is half the deliverable. The breakdown is the other half - it's what turns "I made a thing" into evidence a lead can evaluate in ninety seconds. Structure yours like a postmortem:
## Batch Texture Renamer **The problem** (one sentence): artists were spending ~10 min per drop hand-renaming textures to our convention. **Constraints:** stdlib only, must be safe to run on a live library. **What it does:** [screenshot or a 20-second GIF of the dry-run + apply] **The approach - including the dead end:** - First version renamed on the first pass. Then I fed it two files that collided and it ate one. That's why the plan/apply split exists now. **Result:** ~10 min/drop -> ~5 seconds, and nobody has lost a file. **What I'd do next:** [suffix detection / the undo script / ...]
Notice the "dead end" line. The path that didn't work is often the strongest part of a breakdown - it proves the final design was chosen, not stumbled into. Leads read that and see judgment.