[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CBAM7N3EGT2NJP1YGSYSCM":3,"skill-same:01M6CBAM7N3EGT2NJP1YGSYSCM":44},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":13,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":6,"ownerDescription":28,"updatedAt":29,"install":30,"resources":43},"01M6CBAM7N3EGT2NJP1YGSYSCM","02-unity-bundles",null,"devwinsoft\u002Fdevian","devwinsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F22570160?v=4","01M6C6RR8W05NH8NPKQNCE3Q72","maoshy","01M6C6RRDJ5TJJCZXRTY801YDH",0,"MIT","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F02-unity-bundles\u002FSKILL.md",[],[18],"02 unity bundles","2026-11-10 10:12:30",false,"# 02-unity-bundles\n\nStatus: ACTIVE\nAppliesTo: v11\n\n## Prerequisites\n\n**Unity C# 문법 제한:** 이 문서에서 다루는 모든 UPM 패키지 코드는 `skills\u002Fdevian-unity\u002F05-unity-csharp-compat\u002FSKILL.md`를 준수한다 (금지 문법 사용 시 FAIL).\n\n## SSOT\n\n이 문서는 **UnityExample embedded 패키지 묶음(번들)**의 **구성\u002F레이아웃\u002Fasmdef 규약**을 정의한다.\n\n> **주의:** 이 문서는 \"패키지\"가 아니라 **번들 정책(embedded 패키지 묶음)**을 정의한다.\n> 도메인 모듈 정책은 `skills\u002Fdevian\u002F20-domain-common\u002F02-module-policy\u002FSKILL.md`를 참조한다.\n\n---\n\n## 목표\n\n- UnityEngine.dll을 외부 .NET 빌드에서 직접 참조하지 않는다.\n- UnityExample에 embedded UPM 패키지로 다음을 제공한다:\n  - `com.devian.foundation` (모듈 래핑: Core + 모듈 타입 Editor + UPM Samples~ 도메인\u002F프로토콜\u002F수동 샘플)\n\n## 비목표\n\n- TS 변경 없음.\n- UPM 배포(레지스트리\u002F서버)는 다루지 않는다(embedded만).\n\n---\n\n## 패키지 루트 (embedded)\n\n모든 패키지는 아래에 위치한다:\n\n```\nframework-cs\u002Fapps\u002FUnityExample\u002FPackages\u002F\n```\n\n## 구성 패키지 목록\n\n| 패키지 | 역할 |\n|--------|------|\n| `com.devian.foundation` | 모듈 래핑 (Core + 모듈 타입 Editor) + UPM Samples~ 기반 도메인\u002F프로토콜\u002F수동 샘플 코드 (CommonPackage, SoundPackage, GamePackage, MobilePackage, GameProtocol, UIPackage) |\n\n> **Note:** 모든 도메인 패키지(Common, Sound, Game)는 `com.devian.foundation\u002FSamples~\u002F` 하위에 Sample로 제공된다 (독립 `com.devian.domain.*` UPM 패키지 없음).\n\n> 패키지 통합 정책(com.devian.core\u002Funity 금지)은 [03-ssot](..\u002F03-ssot\u002FSKILL.md) §Base UPM package를 참조한다.\n\n## 버전 정책\n\n모든 `com.devian.*` 패키지는 동일한 버전 문자열을 사용한다. (예: `0.1.0`)\n\n---\n\n## 의존 방향 정책 (핵심)\n\n```\ncom.devian.foundation (base - Core + Editor + Samples~)\n       ↑\ncom.devian.purchase.store.* (platform IAP 구현)\n```\n\n> **Hard Rule:** foundation 내부 Samples~ 코드는 foundation Runtime(Devian.Core)에 의존할 수 있지만, 역방향 금지\n\ndependencies 상세 테이블은 [04-package-policy](..\u002F04-package-policy\u002FSKILL.md) §dependencies 정책을 참조한다.\n\n---\n\n## asmdef 규약\n\n### Runtime asmdef\n\n| asmdef | name | references | 패키지 |\n|--------|------|------------|--------|\n| `Devian.Core.asmdef` | `Devian.Core` | `[]` | com.devian.foundation\u002FRuntime\u002FModule |\n\n### Samples~ Runtime asmdef\n\n| asmdef | name | references | 패키지\u002F위치 |\n|--------|------|------------|-------------|\n| `Devian.Samples.CommonPackage.asmdef` | `Devian.Samples.CommonPackage` | `[\"Devian.Core\", \"Unity.Addressables\", \"Unity.ResourceManager\", \"Unity.InputSystem\", \"Newtonsoft.Json\"]` | com.devian.foundation\u002FSamples~\u002FCommonPackage |\n| `Devian.Samples.SoundPackage.asmdef` | `Devian.Samples.SoundPackage` | `[\"Devian.Core\", \"Devian.Samples.CommonPackage\"]` | com.devian.foundation\u002FSamples~\u002FSoundPackage |\n| `Devian.Samples.GamePackage.asmdef` | `Devian.Samples.GamePackage` | `[\"Devian.Core\", \"Devian.Samples.CommonPackage\", \"Devian.Samples.SoundPackage\"]` | com.devian.foundation\u002FSamples~\u002FGamePackage |\n| `Devian.Samples.MobilePackage.asmdef` | `Devian.Samples.MobilePackage` | `[\"Devian.Core\", \"Devian.Samples.CommonPackage\", \"Devian.Samples.GamePackage\", \"Unity.InputSystem\", \"Devian.Samples.UIPackage\", \"Unity.Purchasing\"]` | com.devian.foundation\u002FSamples~\u002FMobilePackage |\n| `Devian.Samples.GameProtocol.asmdef` | `Devian.Samples.GameProtocol` | `[\"Devian.Core\", \"Devian.Samples.CommonPackage\"]` | com.devian.foundation\u002FSamples~\u002FGameProtocol |\n| `Devian.Samples.UIPackage.asmdef` | `Devian.Samples.UIPackage` | `[\"Devian.Core\", \"Devian.Samples.CommonPackage\", \"Devian.Samples.GamePackage\", \"Devian.Samples.SoundPackage\", \"Unity.TextMeshPro\"]` | com.devian.foundation\u002FSamples~\u002FUIPackage |\n\n### Editor asmdef\n\n| asmdef | name | references | 패키지 |\n|--------|------|------------|--------|\n| `Devian.Unity.Editor.asmdef` | `Devian.Unity.Editor` | `[\"Devian.Core\", \"Devian.Samples.CommonPackage\"]` | com.devian.foundation\u002FEditor |\n\n### Samples~ Editor asmdef\n\n| asmdef | name | references | 패키지\u002F위치 |\n|--------|------|------------|-------------|\n| `Devian.Samples.CommonPackage.Editor.asmdef` | `Devian.Samples.CommonPackage.Editor` | `[\"Devian.Samples.CommonPackage\", \"Devian.Unity.Editor\", \"Devian.Unity\", \"Unity.InputSystem\"]` | com.devian.foundation\u002FSamples~\u002FCommonPackage |\n| `Devian.Samples.SoundPackage.Editor.asmdef` | `Devian.Samples.SoundPackage.Editor` | `[\"Devian.Samples.SoundPackage\", \"Devian.Samples.CommonPackage\", \"Devian.Samples.CommonPackage.Editor\", \"Devian.Unity.Editor\", \"Devian.Unity\"]` | com.devian.foundation\u002FSamples~\u002FSoundPackage |\n| `Devian.Samples.GamePackage.Editor.asmdef` | `Devian.Samples.GamePackage.Editor` | `[\"Devian.Samples.GamePackage\", \"Devian.Unity\", \"Devian.Unity.Editor\"]` | com.devian.foundation\u002FSamples~\u002FGamePackage |\n| `Devian.Samples.MobilePackage.Editor.asmdef` | `Devian.Samples.MobilePackage.Editor` | `[\"Devian.Samples.MobilePackage\", \"Devian.Core\", \"Devian.Samples.CommonPackage\", \"Devian.Samples.GamePackage\", \"Devian.Unity.Editor\"]` | com.devian.foundation\u002FSamples~\u002FMobilePackage |\n| `Devian.Samples.UIPackage.Editor.asmdef` | `Devian.Samples.UIPackage.Editor` | `[\"Devian.Samples.UIPackage\", \"Devian.Samples.CommonPackage\", \"Devian.Unity.Editor\"]` | com.devian.foundation\u002FSamples~\u002FUIPackage |\n\n---\n\n## Reference\n\n- [Unity Policy](..\u002F01-policy\u002FSKILL.md) — UPM Sync\u002F동기화 규칙\n- [Package Policy](..\u002F04-package-policy\u002FSKILL.md) — package.json 메타데이터\u002Fdependencies\n- [Root SSOT](..\u002F..\u002Fdevian\u002F10-module\u002F03-ssot\u002FSKILL.md) — Foundation Package SSOT\n- [Module Policy](..\u002F..\u002Fdevian\u002F20-domain-common\u002F02-module-policy\u002FSKILL.md) — 도메인 모듈 정책\n",{},"main","8cb5bd877a3a7004867d2f55697cb9e4ff2f1734","skills\u002Fdevian-unity\u002F02-unity-bundles","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft","Kim Hyong Joon","2026-04-12 18:44:10",{"source":7,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add devwinsoft\u002Fdevian --skill 02-unity-bundles",{"tool":36,"command":37},"bunx","bunx skills add devwinsoft\u002Fdevian --skill 02-unity-bundles",{"tool":39,"command":40},"pnpm","pnpm dlx skills add devwinsoft\u002Fdevian --skill 02-unity-bundles","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian-unity\u002F02-unity-bundles\u002FSKILL.md",true,[],[45,51,59,67,76,83],{"skillNo":46,"name":47,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":48,"categories":49,"keywords":50,"publishedAt":19},"01M6CBX3K2JJV38ANHVGCAT8A0","devian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002FSKILL.md",[],[47],{"skillNo":52,"name":53,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":19},"01M6CBX210BFMM8AMN770J9WY8","90-project-archive","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F90-project-archive\u002FSKILL.md",[],[57,58],"archive","90 project archive",{"skillNo":60,"name":61,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M6CBWZSGRR9R3YJZB3177667","30-env-management","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F30-env-management\u002FSKILL.md",[],[65,66],"management","30 env management",{"skillNo":68,"name":69,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M6CBWYD3TGWBQV7V35551THF","19-page-push-send","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F19-page-push-send\u002FSKILL.md",[],[73,74,75],"push","page","19 page push send",{"skillNo":77,"name":78,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M6CBWWRQ05A7604GHJKTPJTF","18-page-savedata","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F18-page-savedata\u002FSKILL.md",[],[74,82],"18 page savedata",{"skillNo":84,"name":85,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M6CBWVH4S2VF1V7B2GBTESCT","17-page-deobfuscate","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F20-operation\u002F17-page-deobfuscate\u002FSKILL.md",[],[74,89],"17 page deobfuscate"]