askill
unity-project-hygiene

unity-project-hygieneSafety 90Repository

Keep Unity repos stable for CI/CD with proper gitignore, LFS, and project settings

0 stars
1.2k downloads
Updated 2/5/2026

Package Files

Loading files...
SKILL.md

Unity Project Hygiene Skill

Maintain a clean, CI-friendly Unity repository.

See also: Shared Conventions | Safety Guidelines

Purpose

Keep the repository stable, fast to clone, and ready for automated builds.

Git LFS

When to Use LFS

Large binary files that change infrequently:

  • Textures (.png, .jpg, .psd, .tga)
  • Audio (.wav, .mp3, .ogg)
  • 3D models (.fbx, .obj, .blend)
  • Video (.mp4, .mov)

Setup LFS

# Install LFS
git lfs install

# Track file types
git lfs track "*.png"
git lfs track "*.jpg"
git lfs track "*.psd"
git lfs track "*.wav"
git lfs track "*.mp3"
git lfs track "*.fbx"
git lfs track "*.blend"

# Commit .gitattributes
git add .gitattributes
git commit -m "Configure Git LFS for binary assets"

Verify LFS

# List tracked patterns
git lfs track

# List LFS files
git lfs ls-files

# Check file is LFS-tracked
git lfs pointer --check Assets/Textures/large.png

.gitignore

Required Unity Ignores

# Unity generated
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/

# Memory captures
/[Mm]emoryCaptures/

# Asset meta data should be committed (don't ignore .meta)

# Autogenerated VS/Rider files
.vs/
.idea/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj

# Build results
*.apk
*.aab
*.unitypackage
*.app

# Crashlytics
crashlytics-build.properties

# OS files
.DS_Store
Thumbs.db

Verify .gitignore Working

# Check if ignored
git check-ignore -v Library/
git check-ignore -v Temp/

# List untracked files (should not show Library, Temp, etc.)
git status --porcelain

ProjectSettings Sanity

Key Files to Track

ProjectSettings/
  ProjectSettings.asset      # Most settings
  EditorBuildSettings.asset  # Build scenes
  TagManager.asset           # Tags and layers
  InputManager.asset         # Input settings
  QualitySettings.asset      # Quality levels
  GraphicsSettings.asset     # Rendering

Verify No Local-Only Settings

# Check for user-specific paths or settings
grep -r "Users/\|C:\\\|/home/" ProjectSettings/

Required Settings for CI

In ProjectSettings/ProjectSettings.asset:

# Enable visible meta files
  externalVersionControlSupport: Visible Meta Files

# Force text serialization
  serializationMode: 2  # 2 = Force Text

# Set scripting backend for target platform
  scriptingBackend:
    Standalone: 1  # 1 = IL2CPP, 0 = Mono

Packages/manifest.json

Verify Package Versions

cat Packages/manifest.json | python3 -c "import json,sys; d=json.load(sys.stdin); print('\n'.join(f'{k}: {v}' for k,v in sorted(d.get('dependencies',{}).items())))"

Lock File

Packages/packages-lock.json should be committed for reproducible builds.

Common Issues

# Check for git URLs (may need auth in CI)
grep "git+" Packages/manifest.json

# Check for local paths (won't work in CI)
grep "file:" Packages/manifest.json

CI Gates

Build Script Check

Verify build script exists and is callable:

grep -r "static void.*Build\|static void.*CI" Assets/Editor/

Test Script Check

grep -r "UnityTest\|\[Test\]" Assets/Tests/

Pre-commit Checklist

# 1. No uncommitted changes to critical files
git diff --name-only | grep -E "manifest.json|ProjectSettings"

# 2. Library not committed
git ls-files | grep -i "^Library/" && echo "ERROR: Library committed!"

# 3. Meta files present for all assets
find Assets -type f ! -name "*.meta" -exec sh -c 'test -f "$1.meta" || echo "Missing: $1.meta"' _ {} \;

Workflow: New Project Setup

# 1. Initialize repo
git init
git lfs install

# 2. Add .gitignore
# (copy from above)

# 3. Configure LFS
git lfs track "*.png" "*.jpg" "*.psd" "*.wav" "*.mp3" "*.fbx"
git add .gitattributes

# 4. Verify settings
grep "serializationMode: 2" ProjectSettings/ProjectSettings.asset || echo "WARNING: Not force text!"

# 5. Initial commit
git add -A
git commit -m "Initial Unity project setup"

Workflow: Pre-PR Check

# 1. Verify clean state
git status

# 2. Check no binaries without LFS
git diff --cached --name-only | xargs -I{} sh -c 'file -b "{}" | grep -q "data\|image" && echo "Binary: {}"'

# 3. Verify project compiles
unity -quit -batchmode -nographics -projectPath . -logFile /tmp/check.log
echo "Exit: $?"

Policies

  • Always commit .meta files - Unity needs them for asset references
  • Never commit Library/ - it's regenerated
  • Use LFS for binaries - keeps repo fast
  • Force text serialization - enables meaningful diffs
  • Lock package versions - reproducible builds

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

95/100Analyzed 2/12/2026

A comprehensive and highly actionable guide for maintaining Unity project hygiene. It provides specific, copy-pasteable commands for Git LFS setup, .gitignore configuration, and ProjectSettings verification, along with clear workflows for new projects and pre-PR checks.

90
95
90
95
95

Metadata

Licenseunknown
Version-
Updated2/5/2026
Publishermajiayu000

Tags

ci-cdgithub-actionssecuritytesting