Human-readable diffs for UnityYAML assets

Review prefabs, not YAML noise.

PrefabLens shows Unity asset changes as a GameObject / component / field tree — on GitHub pull requests, in your terminal, and inside the Unity Editor. Not just prefabs: it reads every UnityYAML asset — scenes (.unity), ScriptableObjects (.asset), materials, animators, and more.

What GitHub shows you

git diff — Robot.prefab
@@ -10,7 +10,7 @@ GameObject:
1010 m_Component:
1111 - component: {fileID: 773946660032344633}
1212 m_Layer: 0
13- m_Name: Head
13+ m_Name: Sensor
1414 m_TagString: Untagged
1515 m_Icon: {fileID: 0}
1616 m_NavMeshLayer: 0
@@ -25,7 +25,7 @@ Transform:
2525 m_GameObject: {fileID: 5267583679722982000}
2626 serializedVersion: 2
2727 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
28- m_LocalPosition: {x: 0, y: 2, z: 0}
28+ m_LocalPosition: {x: 0, y: 2.2, z: 0.1}
2929 m_LocalScale: {x: 1, y: 1, z: 1}
3030 m_ConstrainProportionsScale: 0
3131 m_Children: []
@@ -93,9 +93,9 @@ GameObject:
9393 serializedVersion: 6
9494 m_Component:
9595 - component: {fileID: 9003171066890524446}
96- - component: {fileID: 3496157676355288704}
9796 - component: {fileID: 7524019088176543755}
9897 - component: {fileID: 4382273337907184133}
98+ - component: {fileID: 5978502647804666025}
9999 m_Layer: 0
100100 m_Name: Robot
101101 m_TagString: Untagged
@@ -120,27 +120,6 @@ Transform:
120120 - {fileID: 773946660032344633}
121121 m_Father: {fileID: 0}
122122 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
123---- !u!65 &3496157676355288704
124-BoxCollider:
125- m_ObjectHideFlags: 0
126- m_CorrespondingSourceObject: {fileID: 0}
127- m_PrefabInstance: {fileID: 0}
128- m_PrefabAsset: {fileID: 0}
129- m_GameObject: {fileID: 7703008261286675462}
130- m_Material: {fileID: 0}
131- m_IncludeLayers:
132- serializedVersion: 2
133- m_Bits: 0
134- m_ExcludeLayers:
135- serializedVersion: 2
136- m_Bits: 0
137- m_LayerOverridePriority: 0
138- m_IsTrigger: 0
139- m_ProvidesContacts: 0
140- m_Enabled: 1
141- serializedVersion: 3
142- m_Size: {x: 1, y: 2, z: 1}
143- m_Center: {x: 0, y: 0, z: 0}
144123 --- !u!54 &7524019088176543755
145124 Rigidbody:
146125 m_ObjectHideFlags: 0
@@ -149,7 +128,7 @@ Rigidbody:
149128 m_PrefabAsset: {fileID: 0}
150129 m_GameObject: {fileID: 7703008261286675462}
151130 serializedVersion: 5
152- m_Mass: 5
131+ m_Mass: 12
153132 m_LinearDamping: 0
154133 m_AngularDamping: 0.05
155134 m_CenterOfMass: {x: 0, y: 0, z: 0}
@@ -180,8 +159,31 @@ MonoBehaviour:
180159 m_Script: {fileID: 11500000, guid: 703cbb55826be49d58e62cadc6597c6f, type: 3}
181160 m_Name:
182161 m_EditorClassIdentifier: Assembly-CSharp::FixtureBehaviour
183- speed: 2.5
162+ speed: 4
184163 level: 1
185164 label: robot
186- offset: {x: 0, y: 0, z: 0}
165+ offset: {x: 0, y: 0.5, z: 0}
187166 target: {fileID: 0}
167+--- !u!136 &5978502647804666025
168+CapsuleCollider:
169+ m_ObjectHideFlags: 0
170+ m_CorrespondingSourceObject: {fileID: 0}
171+ m_PrefabInstance: {fileID: 0}
172+ m_PrefabAsset: {fileID: 0}
173+ m_GameObject: {fileID: 7703008261286675462}
174+ m_Material: {fileID: 0}
175+ m_IncludeLayers:
176+ serializedVersion: 2
177+ m_Bits: 0
178+ m_ExcludeLayers:
179+ serializedVersion: 2
180+ m_Bits: 0
181+ m_LayerOverridePriority: 0
182+ m_IsTrigger: 0
183+ m_ProvidesContacts: 0
184+ m_Enabled: 1
185+ serializedVersion: 2
186+ m_Radius: 0.5
187+ m_Height: 2.2
188+ m_Direction: 1
189+ m_Center: {x: 0, y: 0, z: 0}
188190

What PrefabLens shows you

prefablens — Robot.prefab
Chrome extension

On GitHub pull requests

A simulated Files changed page running the real renderer and WASM diff engine. Toggle each Unity file between the raw diff and the semantic view.

CLI

In your terminal

The colored tree the prefablens command prints locally, and the self-contained HTML report that --open pops into your browser.

Unity Editor

In the Unity Editor

An Editor window that lists changed UnityYAML assets and shows each one as a semantic diff tree. The CLI binary is downloaded automatically on first use.

Install

Get PrefabLens

Chrome extension
Chrome Web Store — adds the Raw / Semantic toggle to Unity files on GitHub pull requests.
CLI — Homebrew
brew install hashiiiii/tap/prefablens
CLI — Scoop
scoop bucket add hashiiiii https://github.com/hashiiiii/scoop-bucket
scoop install prefablens
CLI — mise
mise use -g github:hashiiiii/PrefabLens
Unity Editor — OpenUPM
openupm add com.hashiiiii.prefablens
Without the openupm-cli, install via the Package Manager git URL: https://github.com/hashiiiii/PrefabLens.git?path=editor.
Everything else
Prebuilt binaries are on the releases page.