Skill v1.0.2
currentAutomated scan100/1001 files
version: "1.0.2" name: unity-yooasset description: Automate YooAsset hot-update and asset bundles — build bundles, run Editor simulate builds, manage Collector groups, analyze BuildReport, and validate runtime. Use when building or simulating YooAsset bundles, configuring collectors, or validating hot-update assets, even if the user just says "热更" or "打AB包". 自动化 YooAsset 热更新与资源包(构建 bundle、编辑器模拟构建、管理 Collector 分组、分析 BuildReport、运行时校验);当用户要构建或模拟 YooAsset 资源包、配置 collector、或校验热更资源时使用。
Unity YooAsset Skills
Editor-side automation for the YooAsset hot-update framework — build pipeline orchestration, Collector configuration CRUD, BuildReport analysis, PlayMode runtime validation, and companion YooAsset tools. Every skill wraps a concrete YooAsset Editor/runtime API path validated against 2.3.18 source. When the package is absent, every skill except yooasset_check_installed returns a NoYooAsset() error with install instructions.
Requires:com.tuyoogame.yooasset≥ 2.3.15, Unity 2022.3+ (validated against 2.3.18).Strongly recommended: before writing ANY YooAsset runtime code, load yooasset-design. PlayMode / parameter-class / handle-lifecycle pitfalls are strict, and only the advisory module surfaces them.
Guardrails
Operating Mode (v1.9 three-tier):
- Approval (default): query/list/read skills (
yooasset_check_installed,yooasset_get_default_paths,yooasset_get_build_settings,yooasset_list_collector_packages,yooasset_list_collector_rules,yooasset_list_assetart_scanners,yooasset_runtime_get_validation_result,yooasset_load_build_report,yooasset_list_report_bundles,yooasset_get_bundle_detail,yooasset_list_report_assets,yooasset_get_asset_detail,yooasset_get_dependency_graph,yooasset_compare_build_reports,yooasset_list_independ_assets) run directly. Builders / Collector mutators / scanner runs / window-openers are FullAuto — onMODE_RESTRICTED, run the grant protocol. - Auto / Bypass: SemiAuto and FullAuto run directly.
- Auto-forbidden in this module:
MayEnterPlayMode = true→yooasset_runtime_validate_package,yooasset_runtime_cleanupSkillOperation.Delete→yooasset_remove_collector_package,yooasset_remove_collector_group,yooasset_remove_collector
Reachable only under Bypass mode or via a user-managed Allowlist entry; the grant flow returns MODE_FORBIDDEN. Note yooasset_build_bundles runs heavy disk I/O but has no Reload/PlayMode flag, so it stays grantable.
- When
com.tuyoogame.yooassetis missing, every skill exceptyooasset_check_installedreturns aNoYooAsset()error with install instructions.
DO NOT (common hallucinations):
yooasset_initialize/yooasset_load_asset/yooasset_create_downloader— do NOT exist as general-purpose REST skills. Runtime APIs (YooAssets.Initialize, default-packageYooAssets.LoadAssetAsync,ResourcePackage.LoadAssetAsync,RequestPackageVersionAsync,CreateResourceDownloader) belong in game code. Use yooasset-design when writing runtime code.yooasset_modify_group/yooasset_delete_collector/yooasset_open_scanner_window— wrong names. Use the exact schema names below or queryGET /skills/schema?category=YooAsset.yooasset_install— NOT a skill. Package install is a Package Manager user action.- Do NOT pass
timeouttoyooasset_build_bundles— the property was removed in YooAsset 2.3.16. Runtime watchdog now lives onCacheFileSystemParameters.DOWNLOAD_WATCH_DOG_TIME(runtime concern, not a build parameter). - Do NOT call
yooasset_build_bundleswhileEditorUserBuildSettings.isBuildingPlayer == true—BuildParameters.CheckBuildParametersthrows.
Routing:
- Collector configuration (packages, groups, collectors, rules) → this module.
- Actual bundle build + simulate + paths → this module.
- Build report analysis (bundle size, asset list/detail, dependency graph, report compare, orphan) → this module.
- Runtime validation in Editor PlayMode →
yooasset_runtime_validate_package+ polling/cleanup skills in this module. - Runtime code generation/design (Initialize / Load / Download / Scene in game scripts) → write it yourself using yooasset-design.
- YooAsset companion windows and AssetArtScanner config/runs → this module.
- Version-policy decisions (2.x vs pre-2.3.15 manifest,
FindAssetTypeonIFilterRule) → yooasset-design/PITFALLS.md.
Skills
Environment (1)
| Skill | Purpose | Key Parameters | |
|---|---|---|---|
yooasset_check_installed | Reflection probe — works even when the package is missing. Reports runtime assembly, package version, editor availability, and which of the 4 pipelines are present. | (none) |
Build pipeline (7)
| Skill | Purpose | Key Parameters | |
|---|---|---|---|
yooasset_build_bundles | Build bundles via ScriptableBuildPipeline or RawFileBuildPipeline. Writes to <projectPath>/Bundles/<PackageName>/<Version>. | packageName, packageVersion="auto", pipeline="ScriptableBuildPipeline", buildTarget?, compression="LZ4", fileNameStyle="HashName", clearBuildCache=false, useAssetDependencyDB=true, verifyBuildingResult=true, replaceAssetPathWithAddress=false, stripUnityVersion=false, disableWriteTypeTree=false, trackSpriteAtlasDependencies=false, writeLinkXML=true, cacheServerHost="", cacheServerPort=0, builtinShadersBundleName="", monoScriptsBundleName="", includePathInHash=false, buildinFileCopyOption="None", buildinFileCopyParams="", enableLog=true | |
yooasset_simulate_build | Run AssetBundleSimulateBuilder.SimulateBuild for an EditorSimulateMode package — virtual bundles only, no files written. | packageName | |
yooasset_get_default_paths | Return BuildOutputRoot + StreamingAssetsRoot that YooAsset uses. | (none) | |
yooasset_get_build_settings | Read persisted YooAsset AssetBundle Builder EditorPrefs for a package/pipeline. | packageName, pipeline? | |
yooasset_set_build_settings | Persist AssetBundle Builder EditorPrefs for repeatable build UI defaults. | packageName, pipeline?, compression?, fileNameStyle?, buildinFileCopyOption?, buildinFileCopyParams?, encryptionServicesClassName?, manifestProcessServicesClassName?, manifestRestoreServicesClassName?, clearBuildCache?, useAssetDependencyDB? | |
yooasset_open_builder_window | Open the YooAsset AssetBundle Builder Editor window. | (none) | |
yooasset_open_collector_window | Open the YooAsset AssetBundle Collector Editor window. | (none) |
YooAsset tools (8)
| Skill | Purpose | Key Parameters | |
|---|---|---|---|
yooasset_open_reporter_window | Open the YooAsset AssetBundle Reporter window. | (none) | |
yooasset_open_debugger_window | Open the YooAsset AssetBundle Debugger window. | (none) | |
yooasset_open_assetart_scanner_window | Open the YooAsset AssetArt Scanner window. | (none) | |
yooasset_list_assetart_scanners | List AssetArtScanner configurations, optionally filtered by keyword. | keyword? | |
yooasset_run_assetart_scanner | Run one scanner and optionally save its report file. | scannerGUID, saveDirectory? | |
yooasset_run_all_assetart_scanners | Run all scanners, optionally filtered by keyword. | keyword? | |
yooasset_import_assetart_scanner_config | Import AssetArtScanner JSON config. | configPath | |
yooasset_export_assetart_scanner_config | Export AssetArtScanner JSON config. | configPath |
Runtime validation (3)
| Skill | Purpose | Key Parameters | |
|---|---|---|---|
yooasset_runtime_validate_package | Start an async PlayMode job that initializes EditorSimulateMode, sets default package, optionally validates one asset load/release and downloader status, then optionally cleans up and returns to Edit Mode. | packageName, assetLocation?, restoreEditMode=true, cleanup=true, checkDownloader=true, downloadingMaxNumber=4, failedTryAgain=1 | |
yooasset_runtime_get_validation_result | Poll the runtime validation job status/result. | jobId | |
yooasset_runtime_cleanup | Remove completed validation jobs and optionally force YooAssets.Destroy() / exit PlayMode. | jobId?, forceYooAssetsDestroy=false, exitPlayMode=false |
Collector configuration (13)
| Skill | Purpose | Key Parameters | |||||
|---|---|---|---|---|---|---|---|
yooasset_list_collector_packages | List Packages → Groups → Collectors tree. verbose=true returns the full descent. | verbose=false | |||||
yooasset_list_collector_rules | Return registered Active / Address / Pack / Filter / Ignore rule classes. | ruleKind="all" (or `activeRule | addressRule | packRule | filterRule | ignoreRule`) | |
yooasset_create_collector_package | Create a new Collector Package. Fails on duplicate unless allowDuplicate=true. | packageName, allowDuplicate=false | |||||
yooasset_create_collector_group | Create a Group inside an existing Package. | packageName, groupName, groupDesc="", activeRule="EnableGroup", assetTags="" | |||||
yooasset_add_collector | Add an AssetBundleCollector to a Group. Validates collectPath via AssetDatabase and each rule via its registered class name. | packageName, groupName, collectPath, collectorType="MainAssetCollector", addressRule="AddressByFileName", packRule="PackDirectory", filterRule="CollectAll", assetTags="", userData="" | |||||
yooasset_save_collector_config | Persist the AssetBundleCollectorSetting.asset. Optionally run FixFile() to repair dangling rule references. | fixErrors=true | |||||
yooasset_modify_collector_settings | Modify global Collector settings. | showPackageView=false, uniqueBundleName=false, save=true | |||||
yooasset_modify_collector_package | Rename/describe a package and set package-level options. | packageName, packageDesc?, newPackageName?, enableAddressable=false, supportExtensionless=true, locationToLower=false, includeAssetGUID=false, autoCollectShaders=true, ignoreRule="NormalIgnoreRule", save=true | |||||
yooasset_remove_collector_package | Remove a Collector package by name. | packageName, save=true | |||||
yooasset_modify_collector_group | Rename/describe a group and update active rule/tags. | packageName, groupName, newGroupName?, groupDesc?, activeRule="EnableGroup", assetTags?, save=true | |||||
yooasset_remove_collector_group | Remove a group from a package. | packageName, groupName, save=true | |||||
yooasset_modify_collector | Modify an existing collector matched by collectPath. | packageName, groupName, collectPath, newCollectPath?, collectorType="MainAssetCollector", addressRule="AddressByFileName", packRule="PackDirectory", filterRule="CollectAll", assetTags?, userData?, save=true | |||||
yooasset_remove_collector | Remove a collector matched by collectPath. | packageName, groupName, collectPath, save=true |
Build report analysis (8)
| Skill | Purpose | Key Parameters | ||||
|---|---|---|---|---|---|---|
yooasset_load_build_report | Deserialize a YooAsset BuildReport .report file and return ReportSummary metadata + top-level totals. | reportPath | ||||
yooasset_list_report_bundles | Paginated / filtered / sorted bundle listing from the report. | reportPath, filterEncrypted?, filterTag?, sortBy="size" (`size | name | refCount | dependCount), limit=100, offset=0` | |
yooasset_get_bundle_detail | Full ReportBundleInfo for a single bundle — DependBundles, ReferenceBundles, asset BundleContents. | reportPath, bundleName | ||||
yooasset_list_report_assets | Paginated / filtered / sorted asset listing from the report. | reportPath, filterBundle?, filterTag?, search?, sortBy="path" (`path | size | bundle | dependCount), limit=100, offset=0` | |
yooasset_get_asset_detail | Full ReportAssetInfo by asset path or address. | reportPath, assetPath?, address? | ||||
yooasset_get_dependency_graph | Compact bundle/asset dependency graph for visualization or focused analysis. | reportPath, rootBundle?, rootAssetPath?, maxNodes=200 | ||||
yooasset_compare_build_reports | Compare two .report files for bundle/asset additions, removals, and size changes. | oldReportPath, newReportPath, limit=100 | ||||
yooasset_list_independ_assets | Assets not referenced by any main asset — cleanup candidates. | reportPath, limit=100, offset=0 |
Quick Start
import unity_skills as u# 0. Probe installation (works even if package is missing)u.call_skill("yooasset_check_installed")# -> { installed, packageVersion, availablePipelines: [...], editorAvailable, ... }# 1. Configure collectors (end-to-end)u.call_skill("yooasset_list_collector_rules", ruleKind="all") # discover available rule class namesu.call_skill("yooasset_create_collector_package", packageName="DefaultPackage")u.call_skill("yooasset_create_collector_group",packageName="DefaultPackage", groupName="UI", activeRule="EnableGroup",assetTags="ui")u.call_skill("yooasset_add_collector",packageName="DefaultPackage", groupName="UI",collectPath="Assets/GameRes/UI",collectorType="MainAssetCollector",addressRule="AddressByFileName",packRule="PackDirectory",filterRule="CollectAll")u.call_skill("yooasset_modify_collector_package",packageName="DefaultPackage",enableAddressable=True,supportExtensionless=True,locationToLower=False)u.call_skill("yooasset_save_collector_config", fixErrors=True)# 2. Simulate build (EditorSimulateMode) — fast, no file I/Ou.call_skill("yooasset_simulate_build", packageName="DefaultPackage")# -> { packageRootDirectory: ".../Bundles/DefaultPackage/Simulate" }# 3. Real buildresult = u.call_skill("yooasset_build_bundles",packageName="DefaultPackage",packageVersion="1.0.0",pipeline="ScriptableBuildPipeline",compression="LZ4",fileNameStyle="HashName",verifyBuildingResult=True)# 4. Analyze the reportimport osreport_path = os.path.join(result["outputDirectory"],f"{result['packageName']}_{result['packageVersion']}.report")u.call_skill("yooasset_load_build_report", reportPath=report_path)u.call_skill("yooasset_list_report_bundles", reportPath=report_path, sortBy="size", limit=20)u.call_skill("yooasset_list_report_assets", reportPath=report_path, search="UI", limit=20)u.call_skill("yooasset_get_dependency_graph", reportPath=report_path, maxNodes=100)u.call_skill("yooasset_list_independ_assets", reportPath=report_path)# 5. Optional PlayMode runtime validationjob = u.call_skill("yooasset_runtime_validate_package",packageName="DefaultPackage",assetLocation="ui/example",restoreEditMode=True,cleanup=True)u.call_skill("yooasset_runtime_get_validation_result", jobId=job["jobId"])
Critical Rules (must read)
- `yooasset_check_installed` is the ONLY skill that works without `YOO_ASSET` compile define. Every other skill returns
NoYooAsset()— correct the environment (install or upgrade the package, then let Unity recompile) before retrying. - Pipeline ↔ Parameters pairing is enforced.
yooasset_build_bundles pipeline=ScriptableBuildPipelineusesScriptableBuildParameters;pipeline=RawFileBuildPipelineusesRawFileBuildParameters.EditorSimulateBuildPipelineis rejected here — useyooasset_simulate_build.BuiltinBuildPipelineis legacy and explicitly rejected. - `packageVersion="auto"` fills `DateTime.UtcNow.ToString("yyyyMMddHHmm")`. Pass a semver string when you want deterministic versioning.
- `yooasset_add_collector` validates `collectPath` via
AssetDatabase.LoadAssetAtPath. Paths must be underAssets/...; absolute or relative../paths will fail. - Rule names in Create Skills are CLASS names, not display names. Use
yooasset_list_collector_rulesto discover valid values (e.g.EnableGroup,AddressByFileName,PackDirectory,CollectAll,NormalIgnoreRule). - Collector mutations can save immediately or be batched. Create skills mark
IsDirty=true; modify/remove skills exposesave=true. For bulk edits, passsave=falseand finish withyooasset_save_collector_config. - `yooasset_build_bundles` is NOT undo-tracked (external file I/O, not scene/asset state).
clearBuildCache=truere-runs the full pipeline; defaults avoid it for incremental speed. - BuildReport lives next to bundles as a `.report` file — YooAsset 2.3.18 writes it as
<BuildOutputRoot>/<BuildTarget>/<PackageName>/<Version>/<PackageName>_<PackageVersion>.report. Do not passBuildReport.json,<PackageName>_<PackageVersion>.json, orbuildlogtep.json: the.jsonfile is the package manifest andbuildlogtep.jsonis the Scriptable Build Pipeline trace log.yooasset_list_report_bundlesreads the.reportfile standalone, so you can also point it at an archived copy. - Runtime validation may enter PlayMode.
yooasset_runtime_validate_packageis intentionally async; poll the job result and useyooasset_runtime_cleanupif the editor is left in a state you do not want. - `yooasset_list_independ_assets` identifies assets not referenced by any main asset — candidates for the Collector to drop. Verify manually before removing; a main asset created later could still need them.
Version Scope
- Target: YooAsset
2.3.18(published 2025-12-04). Source anchors use this version. - Minimum:
2.3.15(enforced by the asmdefversionDefinesentry). Earlier versions use an incompatible manifest format and pre-FindAssetTypeIFilterRule(would not compile against this Skill module). - 2.3.17 fixed a critical CRC validation bug; users on 2.3.15/2.3.16 should upgrade before relying on
verifyBuildingResult=true. - Runtime-side rules (PlayMode mapping, handle lifecycle, update flow, legacy-API migration) → yooasset-design/SKILL.md.
Exact Signatures
For authoritative parameter names, defaults, and return fields, query GET /skills/schema?category=YooAsset or unity_skills.get_skill_schema(). This document is a routing / best-practice guide, not the signature source.