Profile Editor
Open Tools → CoCo Asset Flow → Profile Editor to create, edit, validate, and save Cleanup Profile v1 JSON.
The JSON file is the only persisted source of truth. The window edits an in-memory document and writes it only when you choose Save or Save As.
Common commands
Section titled “Common commands”- Use Safe Basic 3D creates the built-in conservative preset in memory.
- Blank Profile creates an empty advanced starting point.
- Open loads a saved project Profile.
- External File opens an explicitly selected absolute JSON path outside the project.
- Reload discards the in-memory copy and reloads the saved file.
- Save validates and writes the current Profile.
- Save As writes to a new safe location.
- Validate checks Schema and semantic constraints.
- Save and Preview saves successfully, opens Cleanup Runner, and builds a new Preview for the supplied Source context.
Unsaved edits do not affect Cleanup Runner. A Runner Preview always loads a saved file.
Profile-level settings
Section titled “Profile-level settings”Every Profile has:
- a Profile version;
- a stable Profile ID;
- a display name;
requireSourceEmptyAfterApply: true;unmatchedAction: Block;- one routing mode;
- one ordered rule list.
The package deliberately requires all source assets to receive a final disposition. Leaving assets behind is not considered a successful cleanup.
Ordered rules
Section titled “Ordered rules”Rules run from top to bottom. The first enabled rule that matches an asset owns it.
Within one rule:
- all filled condition groups must match;
- multiple values inside one group are alternatives;
- matching always uses the original pre-cleanup path and name.
Move a narrow semantic rule above a broad type rule. For example, a Normal Texture rule must appear before a catch-all Texture review rule.
Preview reports:
- selected: assets owned by this rule;
- shadowed: assets that also match but were already owned by an earlier rule;
- blockers: assets whose planned result is unsafe.
Match conditions
Section titled “Match conditions”Basic matching supports:
- asset type;
- extension;
- name prefix;
- name suffix;
- contained keyword.
Advanced matching adds:
- timeout-bounded full-path Regex;
- Material Shader-name Regex;
- explicit FBX Material binding fields.
Use Regex only when a literal prefix, suffix, extension, or keyword cannot express the convention. Invalid or timed-out Regex blocks the plan.
Naming order
Section titled “Naming order”Naming actions always run in this order:
- strip configured prefixes;
- strip configured suffixes;
- apply literal or Regex replacements;
- ensure a prefix;
- ensure a suffix.
The resulting name must be valid, collision-free, and stable on a second pass. A naming rule that changes the same asset again is blocked as non-idempotent.
Disposition and routing
Section titled “Disposition and routing”Every rule ends in:
- Move, with a safe destination; or
- Delete, staged through quarantine.
One Profile uses one global routing mode:
Flatten
Section titled “Flatten”Each rule’s destination is used directly. This is suitable for canonical category folders:
Assets/Art/Processed/{SourceName}/Textures/NormalAssets/Art/Processed/{SourceName}/MaterialsFlatten can collide when two source folders contain assets with the same final name. Preview blocks instead of overwriting.
Preserve Structure
Section titled “Preserve Structure”The Profile uses one routing root and recreates the Source-relative parent folders below it. Rule destinations are ignored, while naming and typed actions still apply.
Use this for packs containing repeated filenames, scripts, or folder-sensitive content.
Asset-specific actions
Section titled “Asset-specific actions”The editor reveals compatible sections based on the selected asset type:
- Texture: Texture Type, sRGB, Max Size, and Standalone override settings.
- Prefab: MoveAndClean or ExtractStatic, Missing Script removal, component policies, and Animator root motion.
- FBX: clip root-transform settings, animation extraction, and explicit Material bindings.
- Material: standard matching, naming, Move, and Delete.
Transform and RectTransform are always protected. Shader conversion is not a Profile v1 action.
Other assets
Section titled “Other assets”An Other rule must contain an explicit extension, name, or path selector. A broad rule that matches every Other asset is invalid.
Compilation-sensitive files such as .cs, .asmdef, .dll, .jar, and .so require Preserve Structure and unchanged filenames.
Save safely
Section titled “Save safely”Recommended location:
Assets/CoCoAssetFlow/Profiles/Default.cleanup.jsonThe Profile must remain outside Source. If another tool changes the saved file, reload it before continuing. Saving or changing its hash makes an older Runner Preview stale.