Skip to content

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.

  • 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.

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.

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.

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 actions always run in this order:

  1. strip configured prefixes;
  2. strip configured suffixes;
  3. apply literal or Regex replacements;
  4. ensure a prefix;
  5. 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.

Every rule ends in:

  • Move, with a safe destination; or
  • Delete, staged through quarantine.

One Profile uses one global routing mode:

Each rule’s destination is used directly. This is suitable for canonical category folders:

Assets/Art/Processed/{SourceName}/Textures/Normal
Assets/Art/Processed/{SourceName}/Materials

Flatten can collide when two source folders contain assets with the same final name. Preview blocks instead of overwriting.

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.

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.

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.

Recommended location:

Assets/CoCoAssetFlow/Profiles/Default.cleanup.json

The 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.