Agent SkillsBesty0728/Unity-Skills › unity-yooasset

unity-yooasset

GitHub

自动化 Unity YooAsset 热更新流程,涵盖构建资源包、编辑器模拟、Collector 分组管理及 BuildReport 分析。适用于用户提及热更或打 AB 包时,提供从配置到校验的一站式 Editor 侧辅助。

SkillsForUnity/unity-skills~/skills/yooasset/SKILL.md Besty0728/Unity-Skills

Trigger Scenarios

构建或模拟 YooAsset 资源包 配置 Collector 分组 校验热更资源 用户提及热更 用户提及打AB包

Install

npx skills add Besty0728/Unity-Skills --skill unity-yooasset -g -y
More Options

Non-standard path

npx skills add https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/yooasset -g -y

Use without installing

npx skills use Besty0728/Unity-Skills@unity-yooasset

指定 Agent (Claude Code)

npx skills add Besty0728/Unity-Skills --skill unity-yooasset -a claude-code -g -y

安装 repo 全部 skill

npx skills add Besty0728/Unity-Skills --all -g -y

预览 repo 内 skill

npx skills add Besty0728/Unity-Skills --list

SKILL.md

Frontmatter
{
    "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 — on MODE_RESTRICTED, run the grant protocol.

  • Auto / Bypass: SemiAuto and FullAuto run directly.

  • Auto-forbidden in this module:

    • MayEnterPlayMode = trueyooasset_runtime_validate_package, yooasset_runtime_cleanup
    • SkillOperation.Deleteyooasset_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.yooasset is missing, every skill except yooasset_check_installed returns a NoYooAsset() 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-package YooAssets.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 query GET /skills/schema?category=YooAsset.
  • yooasset_install — NOT a skill. Package install is a Package Manager user action.
  • Do NOT pass timeout to yooasset_build_bundles — the property was removed in YooAsset 2.3.16. Runtime watchdog now lives on CacheFileSystemParameters.DOWNLOAD_WATCH_DOG_TIME (runtime concern, not a build parameter).
  • Do NOT call yooasset_build_bundles while EditorUserBuildSettings.isBuildingPlayer == trueBuildParameters.CheckBuildParameters throws.

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, FindAssetType on IFilterRule) → 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
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
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
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 names
u.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/O
u.call_skill("yooasset_simulate_build", packageName="DefaultPackage")
# -> { packageRootDirectory: ".../Bundles/DefaultPackage/Simulate" }

# 3. Real build
result = u.call_skill("yooasset_build_bundles",
    packageName="DefaultPackage",
    packageVersion="1.0.0",
    pipeline="ScriptableBuildPipeline",
    compression="LZ4",
    fileNameStyle="HashName",
    verifyBuildingResult=True)

# 4. Analyze the report
import os
report_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 validation
job = 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)

  1. 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.
  2. Pipeline ↔ Parameters pairing is enforced. yooasset_build_bundles pipeline=ScriptableBuildPipeline uses ScriptableBuildParameters; pipeline=RawFileBuildPipeline uses RawFileBuildParameters. EditorSimulateBuildPipeline is rejected here — use yooasset_simulate_build. BuiltinBuildPipeline is legacy and explicitly rejected.
  3. packageVersion="auto" fills DateTime.UtcNow.ToString("yyyyMMddHHmm"). Pass a semver string when you want deterministic versioning.
  4. yooasset_add_collector validates collectPath via AssetDatabase.LoadAssetAtPath. Paths must be under Assets/...; absolute or relative ../ paths will fail.
  5. Rule names in Create Skills are CLASS names, not display names. Use yooasset_list_collector_rules to discover valid values (e.g. EnableGroup, AddressByFileName, PackDirectory, CollectAll, NormalIgnoreRule).
  6. Collector mutations can save immediately or be batched. Create skills mark IsDirty=true; modify/remove skills expose save=true. For bulk edits, pass save=false and finish with yooasset_save_collector_config.
  7. yooasset_build_bundles is NOT undo-tracked (external file I/O, not scene/asset state). clearBuildCache=true re-runs the full pipeline; defaults avoid it for incremental speed.
  8. 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 pass BuildReport.json, <PackageName>_<PackageVersion>.json, or buildlogtep.json: the .json file is the package manifest and buildlogtep.json is the Scriptable Build Pipeline trace log. yooasset_list_report_bundles reads the .report file standalone, so you can also point it at an archived copy.
  9. Runtime validation may enter PlayMode. yooasset_runtime_validate_package is intentionally async; poll the job result and use yooasset_runtime_cleanup if the editor is left in a state you do not want.
  10. 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 asmdef versionDefines entry). Earlier versions use an incompatible manifest format and pre-FindAssetType IFilterRule (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.

Version History

  • ec9f870 Current 2026-07-05 14:42

Same Skill Collection

SkillsForUnity/unity-skills~/skills/adr/SKILL.md
SkillsForUnity/unity-skills~/skills/animator/SKILL.md
SkillsForUnity/unity-skills~/skills/architecture/SKILL.md
SkillsForUnity/unity-skills~/skills/asmdef/SKILL.md
SkillsForUnity/unity-skills~/skills/asset/SKILL.md
SkillsForUnity/unity-skills~/skills/async/SKILL.md
SkillsForUnity/unity-skills~/skills/batch/SKILL.md
SkillsForUnity/unity-skills~/skills/blueprints/SKILL.md
SkillsForUnity/unity-skills~/skills/bookmark/SKILL.md
SkillsForUnity/unity-skills~/skills/camera/SKILL.md
SkillsForUnity/unity-skills~/skills/cinemachine/SKILL.md
SkillsForUnity/unity-skills~/skills/cleaner/SKILL.md
SkillsForUnity/unity-skills~/skills/component/SKILL.md
SkillsForUnity/unity-skills~/skills/console/SKILL.md
SkillsForUnity/unity-skills~/skills/debug/SKILL.md
SkillsForUnity/unity-skills~/skills/decal/SKILL.md
SkillsForUnity/unity-skills~/skills/dotween/SKILL.md
SkillsForUnity/unity-skills~/skills/editor/SKILL.md
SkillsForUnity/unity-skills~/skills/event/SKILL.md
SkillsForUnity/unity-skills~/skills/gameobject/SKILL.md
SkillsForUnity/unity-skills~/skills/graphics/SKILL.md
SkillsForUnity/unity-skills~/skills/history/SKILL.md
SkillsForUnity/unity-skills~/skills/importer/SKILL.md
SkillsForUnity/unity-skills~/skills/inspector/SKILL.md
SkillsForUnity/unity-skills~/skills/light/SKILL.md
SkillsForUnity/unity-skills~/skills/material/SKILL.md
SkillsForUnity/unity-skills~/skills/navmesh/SKILL.md
SkillsForUnity/unity-skills~/skills/netcode-design/SKILL.md
SkillsForUnity/unity-skills~/skills/netcode/SKILL.md
SkillsForUnity/unity-skills~/skills/optimization/SKILL.md
SkillsForUnity/unity-skills~/skills/package/SKILL.md
SkillsForUnity/unity-skills~/skills/patterns/SKILL.md
SkillsForUnity/unity-skills~/skills/perception/SKILL.md
SkillsForUnity/unity-skills~/skills/performance/SKILL.md
SkillsForUnity/unity-skills~/skills/physics/SKILL.md
SkillsForUnity/unity-skills~/skills/postprocess/SKILL.md
SkillsForUnity/unity-skills~/skills/prefab/SKILL.md
SkillsForUnity/unity-skills~/skills/probuilder/SKILL.md
SkillsForUnity/unity-skills~/skills/profiler/SKILL.md
SkillsForUnity/unity-skills~/skills/project-scout/SKILL.md
SkillsForUnity/unity-skills~/skills/project/SKILL.md
SkillsForUnity/unity-skills~/skills/sample/SKILL.md
SkillsForUnity/unity-skills~/skills/scene-contracts/SKILL.md
SkillsForUnity/unity-skills~/skills/scene/SKILL.md
SkillsForUnity/unity-skills~/skills/script-roles/SKILL.md
SkillsForUnity/unity-skills~/skills/script/SKILL.md
SkillsForUnity/unity-skills~/skills/scriptableobject/SKILL.md
SkillsForUnity/unity-skills~/skills/scriptdesign/SKILL.md
SkillsForUnity/unity-skills~/skills/shader/SKILL.md
SkillsForUnity/unity-skills~/skills/shadergraph/SKILL.md
SkillsForUnity/unity-skills~/skills/SKILL.md
SkillsForUnity/unity-skills~/skills/smart/SKILL.md
SkillsForUnity/unity-skills~/skills/terrain/SKILL.md
SkillsForUnity/unity-skills~/skills/test/SKILL.md
SkillsForUnity/unity-skills~/skills/testability/SKILL.md
SkillsForUnity/unity-skills~/skills/timeline/SKILL.md
SkillsForUnity/unity-skills~/skills/ui/SKILL.md
SkillsForUnity/unity-skills~/skills/uitoolkit/SKILL.md
SkillsForUnity/unity-skills~/skills/urp/SKILL.md
SkillsForUnity/unity-skills~/skills/validation/SKILL.md
SkillsForUnity/unity-skills~/skills/volume/SKILL.md
SkillsForUnity/unity-skills~/skills/workflow/SKILL.md
SkillsForUnity/unity-skills~/skills/xr/SKILL.md
SkillsForUnity/unity-skills~/skills/yooasset-design/SKILL.md
SkillsForUnity/unity-skills~/SKILL.md
SkillsForUnity/unity-skills~/skills/addressables-design/SKILL.md
SkillsForUnity/unity-skills~/skills/dotween-design/SKILL.md
SkillsForUnity/unity-skills~/skills/shadergraph-design/SKILL.md
SkillsForUnity/unity-skills~/skills/unitask-design/SKILL.md
SkillsForUnity/unity-skills~/skills/yaml-editing/SKILL.md

Metadata

Files
0
Version
ec9f870
Hash
da955e99
Indexed
2026-07-05 14:42

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-09 00:39
浙ICP备14020137号-1 $Carte des visiteurs$