The generator was using JSON.stringify which outputs double quotes, but our prettier config requires single quotes and trailing commas. This caused lint-staged to reformat the file during pre-commit, resulting in empty commit errors.
Created build-time script to generate TypeScript manifest from public/assets, avoiding import.meta.glob limitations. Images stay in public/ for scalability (supports hundreds), while components get type-safe auto-discovery. Manifest auto-regenerates before builds.