[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KG2DFGDA49P107Q04852MG":3,"skill-same:01M6KG2DFGDA49P107Q04852MG":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":64},"01M6KG2DFGDA49P107Q04852MG","baking-type-component",null,"Mark a component as existing only in the baking world so it can carry intermediate data from Bakers to baking systems without appearing in the runtime world.","dyCuong03\u002Funity-agent-team","dyCuong03","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F137050365?v=4","01M6KFXC85HQHXZJC2VC1KY6EZ","CuongND","01M6KFXCCHP6CD5MTA8NECJC36",8,"MIT","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Funity-dots\u002Fbaking-type-component\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"component","type","baking","baking type component","data","only","world","runtime","systems","as","it","mark","intermediate","true","can","Existing","2026-11-10 10:12:30",false,"﻿---\nname: baking-type-component\ndescription: Mark a component as existing only in the baking world so it can carry intermediate data from Bakers to baking systems without appearing in the runtime world.\ntags: [baking]\nmetadata:\n  internal-only: true\n  tier: 3\n---\n\n# BakingType Component\n\n## Intent\nMark a component as existing only in the baking world so it can carry intermediate data from Bakers to baking systems without appearing in the runtime world.\n\n## Use When\nA Baker needs to pass data to a baking system (WorldSystemFilterFlags.BakingSystem) that cannot be expressed in the final runtime component. Multi-stage baking pipelines, cross-entity aggregation, blob asset staging.\n\n## Avoid When\nThe data belongs in the runtime world — use a normal IComponentData. Avoid when the data only needs to survive within a single baking pass — use [TemporaryBakingType] instead.\n\n## Senior Pattern\n- `[BakingType]` attribute on IComponentData or IBufferElementData struct.\n- Baker adds the [BakingType] component as a staging area for the baking system to read.\n- Baking system reads the [BakingType] component, computes the final result, and adds the runtime component.\n- [BakingType] is automatically stripped from the destination runtime world after all baking systems complete.\n- Can also be applied to managed class components (`[BakingType] public class MeshArrayBakingType : IComponentData`).\n\n## Code Template\n```csharp\n\u002F\u002F Staging component — exists only during baking\n[BakingType]\npublic struct RawMeshData : IComponentData\n{\n    public float MeshScale;\n    public Hash128 SourceHash;\n}\n\n\u002F\u002F Staging buffer — Baker populates, baking system reads\n[BakingType]\npublic struct RawVertex : IBufferElementData\n{\n    public float3 Position;\n}\n\n\u002F\u002F Baker stages the data:\nclass Baker : Baker\u003CMeshAuthoring>\n{\n    public override void Bake(MeshAuthoring authoring)\n    {\n        DependsOn(authoring.Mesh);\n        var entity = GetEntity(TransformUsageFlags.None);\n        AddComponent(entity, new RawMeshData\n        {\n            MeshScale = authoring.Scale,\n            SourceHash = ComputeHash(authoring.Mesh)\n        });\n        \u002F\u002F Baking system will read RawMeshData and produce BlobAssetReference\u003CMeshBlobAsset>\n    }\n}\n```\n\n## Anti-Patterns\n- Forgetting [BakingType] on an intermediate component — it leaks into the runtime world, pollutes archetypes, wastes memory.\n- Reading a [BakingType] component from a runtime system — it doesn't exist, silent no-op or exception.\n- Using [BakingType] when [TemporaryBakingType] would suffice — choose based on whether data must survive across multiple baking system passes.\n\n## Runtime Risks\nNo runtime errors from correct use — wrong use leaks baking data into the runtime world, causing archetype pollution and potential system misfires.\n\n## Performance Notes\n[BakingType] components exist only during baking. Zero runtime memory or CPU cost. Stripped automatically — no cleanup code required.\n\n## Architecture Guidance\nThink of [BakingType] as a typed message channel from Baker to baking system. Baker writes the staging data; baking system reads, transforms, and produces the runtime component. This split keeps Bakers simple and baking systems reusable.\n\n## Related Skills\n[[baker-authoring-conversion]], [[baking-system]]\n","# BakingType Component\n\n## Intent\nMark a component as existing only in the baking world so it can carry intermediate data from Bakers to baking systems without appearing in the runtime world.\n\n## Use When\nA Baker needs to pass data to a baking system (WorldSystemFilterFlags.BakingSystem) that cannot be expressed in the final runtime component. Multi-stage baking pipelines, cross-entity aggregation, blob asset staging.\n\n## Avoid When\nThe data belongs in the runtime world — use a normal IComponentData. Avoid when the data only needs to survive within a single baking pass — use [TemporaryBakingType] instead.\n\n## Senior Pattern\n- `[BakingType]` attribute on IComponentData or IBufferElementData struct.\n- Baker adds the [BakingType] component as a staging area for the baking system to read.\n- Baking system reads the [BakingType] component, computes the final result, and adds the runtime component.\n- [BakingType] is automatically stripped from the destination runtime world after all baking systems complete.\n- Can also be applied to managed class components (`[BakingType] public class MeshArrayBakingType : IComponentData`).\n\n## Code Template\n```csharp\n\u002F\u002F Staging component — exists only during baking\n[BakingType]\npublic struct RawMeshData : IComponentData\n{\n    public float MeshScale;\n    public Hash128 SourceHash;\n}\n\n\u002F\u002F Staging buffer — Baker populates, baking system reads\n[BakingType]\npublic struct RawVertex : IBufferElementData\n{\n    public float3 Position;\n}\n\n\u002F\u002F Baker stages the data:\nclass Baker : Baker\u003CMeshAuthoring>\n{\n    public override void Bake(MeshAuthoring authoring)\n    {\n        DependsOn(authoring.Mesh);\n        var entity = GetEntity(TransformUsageFlags.None);\n        AddComponent(entity, new RawMeshData\n        {\n            MeshScale = authoring.Scale,\n            SourceHash = ComputeHash(authoring.Mesh)\n        });\n        \u002F\u002F Baking system will read RawMeshData and produce BlobAssetReference\u003CMeshBlobAsset>\n    }\n}\n```\n\n## Anti-Patterns\n- Forgetting [BakingType] on an intermediate component — it leaks into the runtime world, pollutes archetypes, wastes memory.\n- Reading a [BakingType] component from a runtime system — it doesn't exist, silent no-op or exception.\n- Using [BakingType] when [TemporaryBakingType] would suffice — choose based on whether data must survive across multiple baking system passes.\n\n## Runtime Risks\nNo runtime errors from correct use — wrong use leaks baking data into the runtime world, causing archetype pollution and potential system misfires.\n\n## Performance Notes\n[BakingType] components exist only during baking. Zero runtime memory or CPU cost. Stripped automatically — no cleanup code required.\n\n## Architecture Guidance\nThink of [BakingType] as a typed message channel from Baker to baking system. Baker writes the staging data; baking system reads, transforms, and produces the runtime component. This split keeps Bakers simple and baking systems reusable.\n\n## Related Skills\n[[baker-authoring-conversion]], [[baking-system]]\n",{"name":5,"tags":40,"metadata":41,"description":7},[21],{"tier":42,"internal-only":43},3,true,"main","fe4746b9f07e6c7c2b6d3932002183af9b9f6fa2",".claude\u002Fskills\u002Funity-dots\u002Fbaking-type-component",0,"https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team","https:\u002F\u002Fgithub.com\u002FdyCuong03","Game developer","2026-07-25 22:22:25",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":43},[54,57,60],{"tool":55,"command":56},"npx","npx skills add dyCuong03\u002Funity-agent-team --skill baking-type-component",{"tool":58,"command":59},"bunx","bunx skills add dyCuong03\u002Funity-agent-team --skill baking-type-component",{"tool":61,"command":62},"pnpm","pnpm dlx skills add dyCuong03\u002Funity-agent-team --skill baking-type-component","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Funity-dots\u002Fbaking-type-component\u002FSKILL.md",[],[66,91,113,136,156,177],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":35},"01M6KH55FFS00ET877QSMRYGX4","dots-update-groups","How to choose the right ECS system group and ordering so per-frame and per-fixed-step work is deterministic and never races its own readers. Covers InitializationSystemGroup \u002F SimulationSystemGroup \u002F PresentationSystemGroup \u002F FixedStepSimulationSystemGroup \u002F VariableRateSimulationSystemGroup, UpdateBefore \u002F UpdateAfter peer ordering, OrderFirst \u002F OrderLast group-boundary placement, RateManager, and the cross-group ordering trap. Use when adding an ISystem, fixing \"value visible one frame late\" bugs, or coupling simulation to a fixed timestep.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-update-groups\u002FSKILL.md",[],[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],"update","dots update groups","boundary","simulation","how","system","choose","work","use","never","peer","deterministic","how to","coupling","ecs","bugs","frame","value",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":35},"01M6KH50PWYEFQDCGYBZ0326F1","dots-transform-patterns","The Entities 1.x transform model — LocalTransform (writable input) vs LocalToWorld (system-owned matrix), Parent\u002FChild hierarchy, reparenting cost, uniform vs non-uniform scale (PostTransformMatrix), and when to opt out with custom transform systems. Use when designing parent\u002Fchild hierarchies, runtime reparenting (mount\u002Fdismount\u002Fsocket), or choosing transform components at the Baker boundary.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-transform-patterns\u002FSKILL.md",[],[98,99,100,101,75,78,102,103,81,104,26,27,105,106,107,108,109,110,111,112],"patterns","transform","dots transform patterns","components","mount","model","cost","input","with","matrix","socket","at","child","custom","hierarchy",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":124,"publishedAt":35},"01M6KH4VW4MA14DQW4KQYPFT0S","dots-singleton-patterns","Model cross-system shared configuration and game state as a single-entity component with a strict single-writer contract. Covers RequireForUpdate gating, SystemAPI.GetSingleton \u002F GetSingletonRW \u002F HasSingleton \u002F TryGetSingleton, bake-time vs runtime-created vs ECB-system singletons, the \"exactly one entity\" runtime invariant, and the single-writer rule. Use when designing frame-stable global config, shared mutable state, or any component intended to exist on exactly one entity.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-singleton-patterns\u002FSKILL.md",[119],{"categoryNo":120,"categoryName":121,"taxonomyType":122,"taxonomyTypeDesc":123},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[98,125,126,19,127,128,129,78,103,81,130,131,132,26,133,28,106,89,134,135],"singleton","dots singleton patterns","config","state","game","writer","time","shared","contract","ecb","gating",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":35},"01M6KH4PR076AYNDZHD63HHWX6","dots-hybrid-bridge","The one-way bridge between DOTS-owned runtime state and Unity-owned presentation. Covers UnityObjectRef for managed asset refs in components, the DOTS-writes \u002F Unity-reads ownership rule, when to use managed IComponentData vs UnityObjectRef vs CompanionComponent, baker-bridge vs runtime-bridge, and SubScene boundary rules. Use when an entity must reference Unity assets (Mesh, Material, AudioClip, ScriptableObject), a MonoBehaviour view must read entity state, or input\u002FUI must trigger ECS work.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-hybrid-bridge\u002FSKILL.md",[],[143,144,145,146,101,128,75,147,148,80,149,150,81,26,151,152,105,153,154,155],"bridge","hybrid","dots hybrid bridge","mesh","assets","Rules","read","view","trigger","unity","material","for","managed",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":35},"01M6KH4FGRQ9AP2ND5H5HX4D83","dots-event-driven-ecs","Model one-frame events and external requests in ECS without dual ownership, polling, or persistent state leaks. Covers request-tag pattern with ECB, enableable command components (no structural change), event buffers (IBufferElementData), explicit consumer ownership, one-frame latency rules, and the banned C# event \u002F UnityEvent \u002F static bus anti-patterns. Use when input\u002FUI\u002Fnetwork must trigger ECS work, when a one-frame signal fans out to N consumers (damage, hit, collision), or when state changes must be processed exactly once.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-event-driven-ecs\u002FSKILL.md",[],[163,164,87,165,166,101,167,168,169,103,80,170,171,98,172,173,105,174,175,176],"event driven","driven","event","dots event driven ecs","change","ui","network","command","anti-patterns","pattern","structural","events","static","request",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":194,"publishedAt":35},"01M6KH4BWRGCEBJ8PKCKCSGT33","valid_skill","A complete, well-formed test fixture skill for SkillHub validation testing. Covers basic task routing and code review for Unity projects.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fvalid_skill\u002FSKILL.md",[183,188,191],{"categoryNo":184,"categoryName":185,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":189,"categoryName":190,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":192,"categoryName":193,"taxonomyType":186,"taxonomyTypeDesc":187},"01JBSEEDCAT000000000000023","Skill与智能体开发",[195,196,197,198,199,200,201,202,203,204,205,206,207,208,152,209,154],"valid skill","valid","code review","testing","review","test","routing","code","validation","projects","fixture skill","task","fixture","basic","complete"]