[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CBT344RT89ZGMS3QCSREJF":3,"skill-same:01M6CBT344RT89ZGMS3QCSREJF":54},{"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},"01M6CBT344RT89ZGMS3QCSREJF","32-variable-variant",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\u002F10-module\u002F20-core\u002F32-variable-variant\u002FSKILL.md",[],[18],"32 variable variant","2026-11-10 10:12:30",false,"# Devian v10 — Variable: Variant\n\nStatus: ACTIVE\nAppliesTo: v10\nSSOT: skills\u002Fdevian\u002F10-module\u002F03-ssot\u002FSKILL.md\n\n## Purpose\n\nVariant는 Int\u002FFloat\u002FString 중 하나의 값을 담는 Tagged Union 타입이다.\nExcel 입력과 NDJSON 저장 형식을 정의한다.\n\n---\n\n## Excel 입력 형식 (정본)\n\n**접두사 필수, 추론 금지.**\n\n| 입력 | 의미 |\n|------|------|\n| `i:123` | 정수 123 |\n| `f:3.14` | 실수 3.14 |\n| `s:가나다` | 문자열 \"가나다\" |\n\n### 규칙\n\n- 접두사 `i:`, `f:`, `s:` 중 하나 필수\n- 접두사 없이 입력하면 **에러** (추론 금지)\n- 빈 셀은 `null`\n\n### 타입 검증\n\n- `i:` 뒤에는 정수만 허용 (소수점 불가)\n- `f:` 뒤에는 숫자(정수\u002F실수) 허용\n- `s:` 뒤에는 임의 문자열 허용 (빈 문자열 `s:` 허용)\n\n---\n\n## NDJSON 저장 형식 (정본)\n\n**키 하나만 있는 오브젝트.**\n\n| 타입 | JSON |\n|------|------|\n| Int | `{\"i\": 123}` |\n| Float | `{\"f\": 3.14}` |\n| String | `{\"s\": \"가나다\"}` |\n\n### 규칙\n\n- 키는 정확히 **하나**만 있어야 한다 (`i`, `f`, `s` 중 하나)\n- 다른 키가 섞이면 **실패**\n- `i` 값은 정수만 허용\n- `f` 값은 number 허용\n- `s` 값은 string만 허용\n\n### 예시\n\n```json\n{\"i\": 42}\n{\"f\": 3.14159}\n{\"s\": \"Hello World\"}\n{\"s\": \"\"}\n```\n\n### 금지 형식\n\n```json\n{\"i\": 1, \"f\": 2}       \u002F\u002F 키 2개 - 실패\n{\"k\": \"i\", \"i\": 123}   \u002F\u002F k 키 불필요 - 실패\n{\"i\": 3.14}            \u002F\u002F i에 실수 - 실패\n{\"f\": \"abc\"}           \u002F\u002F f에 문자열 - 실패\n```\n\n---\n\n## 라운드트립 보장\n\n| Excel 입력 | NDJSON | 복원 값 |\n|------------|--------|---------|\n| `i:123` | `{\"i\":123}` | 123 (int) |\n| `f:3.14` | `{\"f\":3.14}` | 3.14 (float) |\n| `s:가나다` | `{\"s\":\"가나다\"}` | \"가나다\" (string) |\n\nSerialize → Deserialize 후 값이 **동일**해야 한다.\n\n---\n\n## Directory Structure\n\nC# (module — canonical):\n- `framework-cs\u002Fmodule\u002FDevian\u002Fsrc\u002FVariable\u002FVariant.cs`\n\nC# (UPM — com.devian.foundation \u002F Devian.Core):\n- `framework-cs\u002Fupm\u002Fcom.devian.foundation\u002FRuntime\u002FModule\u002FVariable\u002FVariant.cs`\n- `framework-cs\u002Fapps\u002FUnityExample\u002FPackages\u002Fcom.devian.foundation\u002FRuntime\u002FModule\u002FVariable\u002FVariant.cs`\n\nTypeScript:\n- `framework-ts\u002Fmodule\u002Fdevian\u002Fsrc\u002Fvariant.ts` (타입)\n- `framework-ts\u002Ftools\u002Fbuilder\u002Fgenerators\u002Ftable.js` (파서)\n\n---\n\n## 금지 행동\n\n- 접두사 없이 값 추론 금지\n- Complex 형식(save1\u002Fsave2) 저장 금지 (실제 값 저장)\n- k 키 사용 금지 (단순 형식)\n- 키 2개 이상 허용 금지\n\n---\n\n## Reference\n\n- SSOT: 이 파일 (`skills\u002Fdevian\u002F10-module\u002F20-core\u002F32-variable-variant\u002FSKILL.md`)\n",{},"main","8cb5bd877a3a7004867d2f55697cb9e4ff2f1734","skills\u002Fdevian\u002F10-module\u002F20-core\u002F32-variable-variant","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 32-variable-variant",{"tool":36,"command":37},"bunx","bunx skills add devwinsoft\u002Fdevian --skill 32-variable-variant",{"tool":39,"command":40},"pnpm","pnpm dlx skills add devwinsoft\u002Fdevian --skill 32-variable-variant","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F10-module\u002F20-core\u002F32-variable-variant\u002FSKILL.md",true,[44,50],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},"SOURCE.md","REFERENCE","参考文档",183,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdefi\u002Fdarwinfi-evolution\u002FSOURCE.md",{"path":51,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":52,"sourceHtmlUrl":53},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdefi\u002Fdarwinfi-evolution\u002FTRUST.auto.yaml",[55,61,69,77,86,93],{"skillNo":56,"name":57,"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":58,"categories":59,"keywords":60,"publishedAt":19},"01M6CBX3K2JJV38ANHVGCAT8A0","devian","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002FSKILL.md",[],[57],{"skillNo":62,"name":63,"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":64,"categories":65,"keywords":66,"publishedAt":19},"01M6CBX210BFMM8AMN770J9WY8","90-project-archive","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F90-project-archive\u002FSKILL.md",[],[67,68],"archive","90 project archive",{"skillNo":70,"name":71,"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":72,"categories":73,"keywords":74,"publishedAt":19},"01M6CBWZSGRR9R3YJZB3177667","30-env-management","https:\u002F\u002Fgithub.com\u002Fdevwinsoft\u002Fdevian\u002Fblob\u002Fmain\u002Fskills\u002Fdevian\u002F80-tools\u002F30-env-management\u002FSKILL.md",[],[75,76],"management","30 env management",{"skillNo":78,"name":79,"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":80,"categories":81,"keywords":82,"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",[],[83,84,85],"push","page","19 page push send",{"skillNo":87,"name":88,"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":89,"categories":90,"keywords":91,"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",[],[84,92],"18 page savedata",{"skillNo":94,"name":95,"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":96,"categories":97,"keywords":98,"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",[],[84,99],"17 page deobfuscate"]