@keke1933/vibe-dictionary-mcp 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +81 -6
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3113,7 +3113,7 @@ var TECHNIQUES = [
3113
3113
  titleKo: "\uC2A4\uD06C\uB7A8\uBE14 \uD14D\uC2A4\uD2B8 \uB514\uCF54\uB4DC",
3114
3114
  titleEn: "Scramble / Cipher Text Decode",
3115
3115
  summary: "\uBB34\uC791\uC704 \uAE30\uD638\uB4E4\uC774 \uBE60\uB974\uAC8C \uD68C\uC804\uD558\uB2E4\uAC00 \uC6D0\uB798 \uBB38\uC7A5\uC73C\uB85C \uB9DE\uCDB0\uC9D0",
3116
- promptSnippet: "\uC9C0\uC815\uD55C \uD14D\uC2A4\uD2B8\uAC00 \uCC98\uC74C \uD45C\uC2DC\uB418\uAC70\uB098 \uB9C8\uC6B0\uC2A4 \uC9C4\uC785\xB7\uD074\uB9AD\uD560 \uB54C Scramble Decode\uB97C \uC7AC\uC0DD\uD574 \uC918. 35ms\uB9C8\uB2E4 \uBB34\uC791\uC704 \uAE30\uD638(!<>-_\\\\/[]{}\u2014=+*^?#01)\uB97C \uAC31\uC2E0\uD558\uACE0, \uACF5\uBC31\uC740 \uC720\uC9C0\uD574 \uC918. frame > index * 2\uC778 \uBB38\uC790\uBD80\uD130 \uC6D0\uBB38\uC73C\uB85C \uACE0\uC815\uD574 \uC67C\uCABD\uC5D0\uC11C \uC624\uB978\uCABD\uC73C\uB85C \uD574\uB3C5\uD558\uACE0, frame\uC774 \uC804\uCCB4 \uAE00\uC790 \uC218\uC758 2\uBC30\uB97C \uB118\uC73C\uBA74 \uD0C0\uC774\uBA38\uB97C \uBA48\uCDB0 \uC918. \uC7AC\uC2E4\uD589 \uC804\uC758 \uD0C0\uC774\uBA38\uB294 \uC815\uB9AC\uD574 \uC918."
3116
+ promptSnippet: "\uC9C0\uC815\uD55C \uD14D\uC2A4\uD2B8\uAC00 \uCC98\uC74C \uD45C\uC2DC\uB418\uAC70\uB098 \uD074\uB9AD\uD560 \uB54C Scramble Decode\uB97C \uC7AC\uC0DD\uD574 \uC918. 35ms\uB9C8\uB2E4 \uBB34\uC791\uC704 \uAE30\uD638(!<>-_\\\\/[]{}\u2014=+*^?#01)\uB97C \uAC31\uC2E0\uD558\uACE0, \uACF5\uBC31\uC740 \uC720\uC9C0\uD574 \uC918. frame > index * 2\uC778 \uBB38\uC790\uBD80\uD130 \uC6D0\uBB38\uC73C\uB85C \uACE0\uC815\uD574 \uC67C\uCABD\uC5D0\uC11C \uC624\uB978\uCABD\uC73C\uB85C \uD574\uB3C5\uD558\uACE0, frame\uC774 \uC804\uCCB4 \uAE00\uC790 \uC218\uC758 2\uBC30\uB97C \uB118\uC73C\uBA74 \uD0C0\uC774\uBA38\uB97C \uBA48\uCDB0 \uC918. \uC7AC\uC2E4\uD589 \uC804\uC758 \uD0C0\uC774\uBA38\uB294 \uC815\uB9AC\uD574 \uC918."
3117
3117
  },
3118
3118
  {
3119
3119
  id: "gradient-flow-text",
@@ -3613,6 +3613,50 @@ var TECHNIQUES = [
3613
3613
  summary: "\uC911\uC559 \uAD6C\uC2AC\uB4E4\uC740 \uC815\uC9C0\uD55C \uCC44 \uC88C\uCE21 \uB05D \uAD6C\uC2AC\uACFC \uC6B0\uCE21 \uB05D \uAD6C\uC2AC\uC774 \uAD50\uB300\uB85C \uBD80\uB52A\uD788\uBA70 \uD280\uC5B4 \uC624\uB974\uB294 \uBB3C\uB9AC \uC9C4\uC790 \uBAA8\uC158",
3614
3614
  promptSnippet: "\uC9C0\uC815\uD55C \uADF8\uB798\uD53D\uC5D0 \uC0C1\uB2E8 \uC9C0\uC9C0\uB300\uC640 \uAD6C\uC2AC 5\uAC1C\uB97C \uB9E4\uB2EC\uACE0 transform-origin: top center\uC778 Newton's Cradle \uC2DC\uC5F0\uC744 \uAD6C\uD604\uD574 \uC918. \uCD08\uAE30 \uC67C\uCABD \uB05D \uAD6C\uC2AC\uB9CC +34deg\uB85C \uAE30\uC6B8\uC774\uACE0 320ms\uB9C8\uB2E4 [\uC67C\uCABD +34deg\u2192\uBAA8\uB450 0deg\u2192\uC624\uB978\uCABD -34deg\u2192\uBAA8\uB450 0deg]\uC758 4\uB2E8\uACC4\uB97C \uC21C\uD658\uD574 \uC918. \uC911\uC559 3\uAC1C\uB294 \uACE0\uC815\uD558\uACE0 \uD074\uB9AD\uD574\uB3C4 \uD55C \uB2E8\uACC4 \uC9C4\uD589\uD574 \uC918. \uD68C\uC804\uC740 0.3\uCD08, \uBC14\uAE65\uCABD \uC2A4\uC719\uC740 cubic-bezier(0.215,0.61,0.355,1), \uBCF5\uADC0\uB294 cubic-bezier(0.55,0.055,0.675,0.19)\uB97C \uC0AC\uC6A9\uD574 \uC918. \uC2E4\uC81C \uBB3C\uB9AC \uC2DC\uBBAC\uB808\uC774\uC158\uC774 \uC544\uB2CC \uC0C1\uD0DC \uAE30\uBC18 \uC2DC\uC5F0\uC774\uC57C."
3615
3615
  },
3616
+ {
3617
+ id: "mg-dice-roll-3d",
3618
+ domain: "motion",
3619
+ category: "physics",
3620
+ vibeTag: "\uAD74\uB7EC\uAC00\uBA70 \uD68C\uC804\uD558\uB2E4 \uD55C \uBA74\uC73C\uB85C \uCC29\uC9C0\uD558\uB294 3D \uC8FC\uC0AC\uC704",
3621
+ vibeKeywords: ["\uC8FC\uC0AC\uC704 \uB358\uC9C0\uAE30", "\uC8FC\uC0AC\uC704 \uAD74\uB9AC\uAE30", "3D \uC8FC\uC0AC\uC704", "\uB2E4\uC774\uC2A4 \uB864", "\uC8FC\uC0AC\uC704 \uBB3C\uB9AC"],
3622
+ titleKo: "3D \uC8FC\uC0AC\uC704 \uAD74\uB9AC\uAE30",
3623
+ titleEn: "3D Dice Roll Physics",
3624
+ summary: "\uD074\uB9AD \uC2DC 3D \uACF5\uAC04\uC5D0\uC11C \uD140\uBE14\uB9C1 \uD68C\uC804\uACFC \uBC14\uC6B4\uC2A4\uB97C \uAC70\uCCD0 \uC784\uC758\uC758 \uB208\uAE08\uC73C\uB85C \uC548\uCC29\uD558\uB294 \uC8FC\uC0AC\uC704",
3625
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 \uD074\uB9AD\uC73C\uB85C \uAD74\uB9AC\uB294 CSS 3D \uC8FC\uC0AC\uC704\uB97C \uAD6C\uD604\uD574 \uC918. perspective: 800px \uBB34\uB300\uC5D0 64\xD764px \uD050\uBE0C\uB97C \uB450\uACE0, 1~6\uAC1C\uC758 \uC810\uC774 \uC788\uB294 \uC5EC\uC12F \uBA74\uC744 translateZ(32px)\uC640 rotateX/Y\uB85C \uC870\uB9BD\uD558\uBA70 preserve-3d\uB97C \uC720\uC9C0\uD574 \uC918. \uAE30\uBCF8 \uBB34\uB300 \uAC01\uB3C4\uB294 rotateX(-40deg) rotateY(26deg), \uCD08\uAE30 \uACB0\uACFC\uB294 6\uC774\uC57C. \uBCC4\uB3C4 \uB358\uC9C0\uAE30 \uBC84\uD2BC \uC5C6\uC774 \uC7A5\uBA74 \uC804\uCCB4\uB97C \uD0A4\uBCF4\uB4DC\uB85C\uB3C4 \uB204\uB97C \uC218 \uC788\uB294 \uBC84\uD2BC\uC73C\uB85C \uB9CC\uB4E4\uACE0, \uD074\uB9AD \uC2DC 1~6 \uC911 \uC784\uC758 \uAC12\uC744 \uBF51\uB418 \uC9C1\uC804\uACFC \uAC19\uC73C\uBA74 (\uC9C1\uC804 \uAC12 % 6) + 1\uB85C \uBC14\uAFD4 \uC918. \uACB0\uACFC \uBC30\uC9C0\uB294 \uC2DC\uC791 \uC989\uC2DC \uAC31\uC2E0\uD558\uACE0, \uC120\uD0DD\uD55C \uAC12\uC758 \uBAA9\uD45C \uD68C\uC804\uAC01\uC5D0 \uB9E4\uD68C X\uCD95 720deg\xB7Y\uCD95 1080deg\uB97C \uB204\uC801\uD574 0.85\uCD08 cubic-bezier(0.22, 1, 0.36, 1)\uB85C \uD68C\uC804\uC2DC\uCF1C \uC918. \uAC19\uC740 \uC2DC\uAC04 \uB3D9\uC548 \uCD5C\uB300 translateY(-44px) \uB3C4\uC57D, \uCC29\uC9C0 \uC555\uCD95, -8px \uC7AC\uB3C4\uC57D \uD6C4 \uBCF5\uADC0\uB97C \uC5F0\uCD9C\uD558\uACE0, \uAD6C\uB974\uB294 \uB3D9\uC548 \uBC14\uB2E5 \uADF8\uB9BC\uC790\uB294 \uC791\uACE0 \uD750\uB9AC\uAC8C \uD588\uB2E4\uAC00 \uBCF5\uC6D0\uD574 \uC918. 850ms \uB3D9\uC548 \uCD94\uAC00 \uC785\uB825\uC744 \uB9C9\uACE0, \uCC29\uC9C0 \uD6C4 \uACB0\uACFC \uBC30\uC9C0\uB9CC 300ms \uD655\uB300\uD588\uB2E4\uAC00 \uC6D0\uB798 \uD06C\uAE30\uB85C \uB3CC\uB824 \uC918. \uBAA8\uC158 \uAC10\uC18C \uC124\uC815\uC5D0\uC11C\uB294 CSS \uC804\uD658\xB7\uD0A4\uD504\uB808\uC784\uC744 \uC0DD\uB7B5\uD558\uB418 \uC785\uB825 \uC7A0\uAE08\uACFC \uBC30\uC9C0 \uD0C0\uC774\uBA38\uB294 \uC720\uC9C0\uD574 \uC918. \uC5B8\uB9C8\uC6B4\uD2B8 \uC2DC \uD0C0\uC774\uBA38\uB97C \uD574\uC81C\uD574 \uC918."
3626
+ },
3627
+ {
3628
+ id: "mg-marble-board",
3629
+ domain: "motion",
3630
+ category: "physics",
3631
+ vibeTag: "\uAC8C\uC774\uC9C0 \uC30D\uC8FC\uC0AC\uC704, \uB9D0 \uC774\uB3D9, \uB79C\uB4DC\uB9C8\uD06C \uAC74\uC124\uC774 \uC5F0\uC1C4 \uBC1C\uB3D9\uD558\uB294 \uBBF8\uB2C8 \uBCF4\uB4DC",
3632
+ vibeKeywords: ["\uBCF4\uB4DC\uAC8C\uC784", "\uC8FC\uC0AC\uC704 \uAC8C\uC784", "\uC30D\uC8FC\uC0AC\uC704", "\uB354\uBE14", "\uB79C\uB4DC\uB9C8\uD06C", "\uC8FC\uC0AC\uC704 \uCEE8\uD2B8\uB864", "\uCC2C\uC2A4 \uCE74\uB4DC"],
3633
+ titleKo: "\uBCF4\uB4DC\uAC8C\uC784 \uC8FC\uC0AC\uC704 & \uD0C0\uC77C \uC778\uD130\uB799\uC158",
3634
+ titleEn: "Board Game Dice & Tile Micro-interactions",
3635
+ summary: "\uAC8C\uC774\uC9C0\uBC14 \uD0C0\uC774\uBC0D\uC73C\uB85C \uC30D\uC8FC\uC0AC\uC704\uB97C \uAD74\uB824 \uB354\uBE14 \uC5F0\uCD9C, \uB9D0\uC758 \uD0C0\uC77C \uC810\uD504, \uB79C\uB4DC\uB9C8\uD06C \uC2A4\uD0EC\uD504\uC640 \uCF54\uC778 \uBD84\uC218\uAC00 \uC5F0\uC1C4 \uBC1C\uB3D9\uD558\uB294 \uBBF8\uB2C8 \uBCF4\uB4DC\uAC8C\uC784",
3636
+ promptSnippet: "\uCE90\uC8FC\uC5BC \uBCF4\uB4DC\uAC8C\uC784\uC758 \uC8FC\uC0AC\uC704\u2192\uB9D0 \uC774\uB3D9\u2192\uB3C4\uCC29 \uD6A8\uACFC\uB97C \uAD6C\uD604\uD574 \uC918. 4\uC5F4\xD73\uD589 \uC678\uACFD\uC5D0 \uC2DC\uC791\xB7\uC11C\uC6B8\xB7\uB3C4\uCFC4\xB7\uCC2C\uC2A4\xB7\uD30C\uB9AC\xB7\uBB34\uC778\uB3C4\xB7\uB274\uC695\xB7\uAD6D\uC138\uCCAD\xB7\uB7F0\uB358\xB7\uC5EC\uD589 \uC21C\uC11C\uC758 \uC21C\uD658 \uD0C0\uC77C 10\uAC1C\uB97C \uB193\uACE0, \uB9D0\uC740 \uC2DC\uC791 \uCE78, \uC30D\uC8FC\uC0AC\uC704\uB294 3\xB73, \uB3C4\uC2DC\uB294 \uBBF8\uAC74\uC124 \uC0C1\uD0DC\uB85C \uC2DC\uC791\uD574 \uC918. \uBCF4\uB4DC \uC804\uCCB4\uB97C \uD074\uB9AD\uD558\uBA74 \uC774\uC804 \uBC30\uB108\xB7\uB3C4\uCC29 \uD6A8\uACFC\uB97C \uC9C0\uC6B0\uACE0, phase=(Date.now()%1400)/1400, power=round(20+75*abs(sin(phase*PI)))\uB85C \uD30C\uC6CC\uB97C \uC815\uD574 \uC918. \uB300\uAE30\xB7\uC774\uB3D9 \uC911 \uAC8C\uC774\uC9C0\uB294 65%\uB85C \uACE0\uC815\uD558\uACE0 \uAD6C\uB974\uB294 \uB3D9\uC548\uB9CC \uC774\uBC88 \uD30C\uC6CC\uB97C \uD45C\uC2DC\uD574 \uC918. power>70\uC774\uBA74 \uAC01 \uC8FC\uC0AC\uC704\uB97C 4~6, power<35\uC774\uBA74 1~3\uC5D0\uC11C \uBF51\uACE0, \uADF8 \uC678\uC5D0\uB294 55% \uD655\uB960\uB85C \uAC19\uC740 1~6 \uAC12\uC744 \uB450 \uAC1C\uC5D0 \uC801\uC6A9\uD558\uBA70 \uB098\uBA38\uC9C0\uB294 \uAC01\uAC01 1~6\uC744 \uBF51\uC544 \uC918. preserve-3d\uC778 30px \uC8FC\uC0AC\uC704 \uB450 \uAC1C\uB97C perspective: 500px, rotateX(-40deg) rotateY(26deg) \uBB34\uB300\uC5D0\uC11C 750ms \uB3D9\uC548 \uB204\uC801 \uD68C\uC804\xB7\uB3C4\uC57D\xB7\uCC29\uC9C0\uC2DC\uCF1C \uC918. \uC774\uD6C4 \uAC19\uC740 \uB208\uAE08\uC774\uBA74 DOUBLE \uBC30\uB108\uB97C \uB744\uC6B0\uACE0, \uB9D0\uC740 \uD569\uACC4\uB9CC\uD07C 160ms\uB9C8\uB2E4 \uD55C \uCE78\uC529 \uC544\uD06C \uC810\uD504\uB85C \uC774\uB3D9\uD558\uBA70 \uB05D \uCE78\uC5D0\uC11C \uCC98\uC74C \uCE78\uC73C\uB85C \uC21C\uD658\uD574 \uC918. \uAD74\uB9BC\xB7\uC774\uB3D9 \uC911 \uCD94\uAC00 \uC785\uB825\uC744 \uB9C9\uC544 \uC918. \uB3C4\uC2DC \uB3C4\uCC29 \uC2DC \uC778\uC218 \uC2A4\uD0EC\uD504\uB97C \uB744\uC6B0\uACE0 \uD574\uB2F9 \uB3C4\uC2DC \uAC74\uBB3C\uC744 \uC9D1\u2192\uBE4C\uB529\u2192\uC131\u2192\uC9D1 \uC21C\uC11C\uB85C \uBC29\uBB38\uB9C8\uB2E4 \uBC14\uAFB8\uBA70 \uB2E4\uC74C \uAD74\uB9BC\uC5D0\uB3C4 \uBCF4\uC874\uD574 \uC918. \uCC2C\uC2A4\uC5D0\uC11C\uB294 3D \uCE74\uB4DC \uB4A4\uC9D1\uAE30, \uAD6D\uC138\uCCAD\uC5D0\uC11C\uB294 \uCF54\uC778 5\uAC1C\uC758 \uBD84\uC218 \uD6A8\uACFC\uB97C \uC7AC\uC0DD\uD574 \uC918. \uB354\uBE14\xB7\uC2A4\uD0EC\uD504\xB7\uCC2C\uC2A4 \uD45C\uC2DC\uC640 \uCF54\uC778 \uC694\uC18C\uB294 \uB2E4\uC74C \uAD74\uB9BC \uC2DC\uC791 \uC2DC \uC9C0\uC6CC \uC918. \uBB34\uC778\uB3C4\xB7\uC5EC\uD589\uC740 \uC774\uB984\uC774 \uC788\uB294 \uC815\uC9C0 \uCE78\uC774\uBA70 \uBCC4\uB3C4 \uD134\xB7\uC774\uB3D9 \uADDC\uCE59\uC740 \uC5C6\uC5B4. \uC2E4\uC81C \uC7AC\uD654\xB7\uC18C\uC720\uAD8C \uAC70\uB798\uAC00 \uC5C6\uB294 \uC0C1\uD0DC \uAE30\uBC18 \uC2DC\uC5F0\uC73C\uB85C \uB9CC\uB4E4\uACE0 \uC5B8\uB9C8\uC6B4\uD2B8 \uC2DC \uC9C0\uC5F0\xB7\uC774\uB3D9 \uD0C0\uC774\uBA38\uB97C \uC815\uB9AC\uD574 \uC918."
3637
+ },
3638
+ {
3639
+ id: "mg-treasure-chest-3d",
3640
+ domain: "motion",
3641
+ category: "physics",
3642
+ vibeTag: "\uB69C\uAED1\uC774 \uC5F4\uB9AC\uBA70 \uD669\uAE08\uBE5B \uBE54\uACFC \uBCF4\uC11D\uC774 \uC19F\uC544\uC624\uB974\uB294 3D \uBCF4\uBB3C\uC0C1\uC790",
3643
+ vibeKeywords: ["\uBCF4\uBB3C\uC0C1\uC790", "\uC0C1\uC790 \uC5F4\uAE30", "\uB8E8\uD2B8 \uBC15\uC2A4", "\uAC00\uCC60 \uC5F0\uCD9C", "3D \uC0C1\uC790", "\uD669\uAE08\uBE5B \uBE54", "\uBCF4\uC11D \uD31D\uC5C5"],
3644
+ titleKo: "3D \uBCF4\uBB3C\uC0C1\uC790 \uB8E8\uD305 \uC5F0\uCD9C",
3645
+ titleEn: "3D Treasure Chest Loot Open",
3646
+ summary: "\uD074\uB9AD \uC2DC \uB4A4\uCABD \uD78C\uC9C0\uB85C \uB69C\uAED1\uC774 \uC5F4\uB9AC\uACE0 \uD669\uAE08\uBE5B \uAD11\uC120\uACFC \uBD80\uC720\uD558\uB294 \uBCF4\uC11D\uC774 \uB098\uD0C0\uB098\uBA70, \uB2E4\uC2DC \uD074\uB9AD\uD558\uBA74 \uB2EB\uD788\uB294 \uAC8C\uC784 \uC5F0\uCD9C",
3647
+ promptSnippet: "\uD074\uB9AD\uC73C\uB85C \uC5F4\uACE0 \uB2EB\uB294 CSS 3D \uBCF4\uBB3C\uC0C1\uC790 \uB8E8\uD305 \uC5F0\uCD9C\uC744 \uAD6C\uD604\uD574 \uC918. perspective: 700px \uBB34\uB300\uC5D0 rotateX(-20deg) rotateY(-24deg)\uB85C \uAE30\uC6B8\uC778 \uBAA9\uC7AC\xB7\uAE08\uC18D \uC0C1\uC790\uB97C \uB9CC\uB4E4\uACE0 preserve-3d\uB97C \uC720\uC9C0\uD574 \uC918. \uBAB8\uCCB4\uC640 \uB69C\uAED1\uC758 \uC678\uBCBD\uBFD0 \uC544\uB2C8\uB77C \uC548\uCABD \uBCBD\xB7\uD14C\uB450\uB9AC\xB7\uB69C\uAED1 \uC548\uAC10\uACFC \uBCF4\uBB3C\uC774 \uB193\uC778 \uB0B4\uBD80 \uBC14\uB2E5\uB3C4 \uC870\uB9BD\uD574 \uC5F4\uB9B0 \uC0C1\uD0DC\uC5D0\uC11C \uBE48 \uBA74\uC774 \uBCF4\uC774\uC9C0 \uC54A\uAC8C \uD574 \uC918. \uCD08\uAE30\uC5D0\uB294 \uB2EB\uD78C \uC0C1\uD0DC\uC774\uBA70, \uC7A5\uBA74 \uC804\uCCB4\uB97C \uD0A4\uBCF4\uB4DC\uB85C\uB3C4 \uB204\uB97C \uC218 \uC788\uB294 \uBC84\uD2BC\uC73C\uB85C \uB9CC\uB4E4\uC5B4 \uD074\uB9AD\uD558\uBA74 \uC989\uC2DC \uC5F4\uB9BC \uC0C1\uD0DC\uB85C \uC804\uD658\uD574 \uC918. 100\xD718px \uB69C\uAED1\uC758 \uB4A4\uCABD \uD78C\uC9C0\uB294 transform-origin: 50px 18px -30px\uC774\uACE0 rotateX(115deg)\uB85C 0.6\uCD08 cubic-bezier(0.34, 1.45, 0.64, 1) \uC804\uD658\uD574 \uC918. \uB3D9\uC2DC\uC5D0 \uC0C1\uC790\uB97C 0.45\uCD08 \uBC14\uC6B4\uC2A4\uC2DC\uD0A4\uACE0, \uBC29\uC0AC\uD615 conic-gradient \uD669\uAE08 \uAD11\uC120\uC740 12\uCD08 \uC8FC\uAE30\uB85C \uD68C\uC804\uC2DC\uD0A4\uBA70 \uBCF4\uB77C\uC0C9 \uBCF4\uC11D\uC740 \uC704\uB85C \uB098\uD0C0\uB098 2.2\uCD08\uC529 \uC655\uBCF5 \uBD80\uC720\uD558\uACE0 \uC791\uC740 \uAE30\uC6B8\uAE30 \uBCC0\uD654\xB7\uD6C4\uAD11\xB7\uBC18\uC9DD\uC784\uC744 \uC720\uC9C0\uD574 \uC918. \uCD5C\uCD08 500ms \uB3D9\uC548 \uCD94\uAC00 \uD074\uB9AD\uC744 \uBB34\uC2DC\uD558\uACE0 \uC774\uD6C4 \uC5F4\uB9BC \uC0C1\uD0DC\uB97C \uC720\uC9C0\uD558\uBA70, \uB2E4\uC2DC \uD074\uB9AD\uD558\uBA74 \uB2EB\uACE0 \uAD11\uC120\xB7\uBCF4\uC11D\uC744 \uC228\uACA8 \uC7AC\uC0AC\uC6A9\uD560 \uC218 \uC788\uAC8C \uD574 \uC918. \uB9E4\uBC88 \uAC19\uC740 \uBCF4\uC11D\uC744 \uBCF4\uC5EC \uC8FC\uB294 \uC2DC\uAC01 \uC2DC\uC5F0\uC774\uBA70 \uC2E4\uC81C \uC544\uC774\uD15C \uC9C0\uAE09\xB7\uBB34\uC791\uC704 \uBCF4\uC0C1 \uCD94\uCCA8\uC740 \uC5C6\uC5B4. \uC5B8\uB9C8\uC6B4\uD2B8 \uC2DC \uC5F4\uB9BC \uD0C0\uC774\uBA38\uB97C \uD574\uC81C\uD574 \uC918."
3648
+ },
3649
+ {
3650
+ id: "mg-lucky-wheel-3d",
3651
+ domain: "motion",
3652
+ category: "physics",
3653
+ vibeTag: "\uAC10\uC18D \uBB3C\uB9AC\uC640 \uD540 \uD295\uAE40\uC774 \uC0B4\uC544\uC788\uB294 \uC785\uCCB4 3D \uB7ED\uD0A4 \uD720 \uB8F0\uB81B",
3654
+ vibeKeywords: ["\uB7ED\uD0A4 \uD720", "\uB8F0\uB81B", "\uD589\uC6B4\uC758 \uBC14\uD034", "\uB3CC\uB9BC\uD310", "\uC2A4\uD540 \uD720", "\uBB3C\uB9AC \uAC10\uC18D", "\uBCF4\uC0C1 \uD68D\uB4DD"],
3655
+ titleKo: "3D \uB7ED\uD0A4 \uD720 \uB8F0\uB81B",
3656
+ titleEn: "3D Lucky Wheel Roulette",
3657
+ summary: "\uC644\uB9CC\uD558\uAC8C \uAE30\uC6B8\uC778 8\uCE78 \uD68C\uC804\uD310\uC774 \uAC10\uC18D\uD558\uBA70 \uBA48\uCD94\uACE0 \uACE0\uC815 \uD3EC\uC778\uD130 \uC544\uB798\uC758 \uBCF4\uC0C1\uC744 \uD45C\uC2DC\uD558\uB294 \uB8F0\uB81B",
3658
+ promptSnippet: "\uCE90\uC8FC\uC5BC \uAC8C\uC784\uC774\uB098 \uB9AC\uC6CC\uB4DC \uC774\uBCA4\uD2B8\uC6A9 CSS 3D \uB7ED\uD0A4 \uD720\uC744 \uAD6C\uD604\uD574 \uC918. rotateX(16deg)\uB85C \uC644\uB9CC\uD558\uAC8C \uAE30\uC6B8\uC778 \uC870\uB9BD\uCCB4 \uC548\uC5D0 \uD06C\uAE30\uAC00 \uBA85\uC2DC\uB41C \uC815\uC0AC\uAC01\uD615 display: block \uD68C\uC804\uD310\uC744 \uB450\uACE0, \uB2E4\uC774\uC544\xB7\uACE8\uB4DC\xB7\uC7AD\uD31F\xB7\uD2F0\uCF13\xB7\uBCF4\uBB3C\uC0C1\uC790\xB72\uBC30\xB7\uACBD\uD5D8\uCE58\xB7\uB7ED\uD0A4\uBC15\uC2A4 \uC21C\uC11C\uC758 45deg \uCEEC\uB7EC \uC139\uD130 8\uAC1C\uB97C \uBC30\uCE58\uD574 \uC918. 0\uBC88 \uC139\uD130 \uC911\uC2EC\uC744 \uC704\uCABD 0deg\uB85C \uC7A1\uACE0 i\uBC88 \uC911\uC2EC\uC744 i*45deg\uC5D0 \uB450\uBA70, \uC544\uC774\uCF58\uC740 rotate(i*45deg) translateY(-r) rotate(-i*45deg)\uB85C \uAC01 \uCE78 \uC911\uC559\uC5D0 \uB193\uACE0 \uC678\uACFD \uD540\uACFC \uD568\uAED8 \uAC19\uC740 \uD68C\uC804\uD310\uC5D0\uC11C \uD68C\uC804\uC2DC\uCF1C \uC918. \uCD08\uAE30 \uD68C\uC804\uC740 270deg\uB85C \uC7AD\uD31F\uC774 \uC704\uC5D0 \uC624\uAC8C \uD558\uACE0, \uC0C1\uB2E8\uC5D0\uB294 \uD68C\uC804\uD310\uACFC \uBD84\uB9AC\uB41C \uC791\uC740 \uACE0\uC815\uBD80\uC640 \uC9E7\uC740 \uD654\uC0B4\uCD09\uC744 \uB46C. \uC7A5\uBA74 \uC804\uCCB4\uB97C \uD0A4\uBCF4\uB4DC\uB85C\uB3C4 \uB204\uB97C \uC218 \uC788\uB294 \uBC84\uD2BC\uC73C\uB85C \uB9CC\uB4E4\uACE0 \uD074\uB9AD \uC2DC next=(\uC774\uC804 \uCE78+floor(random*5)+2)%8\uB85C \uB2E4\uC74C \uCE78\uC744 \uC120\uD0DD\uD574 \uC918. \uD604\uC7AC \uAC01\uB3C4\uC758 \uB098\uBA38\uC9C0\uC5D0\uC11C \uBAA9\uD45C \uB098\uBA38\uC9C0 (360-next*45)%360\uAE4C\uC9C0 \uC2DC\uACC4 \uBC29\uD5A5 \uCC28\uC774\uB97C \uACC4\uC0B0\uD558\uACE0, \uAE30\uC874 \uB204\uC801 \uAC01\uB3C4\uC5D0 1440deg\uC640 \uADF8 \uCC28\uC774\uB97C \uB354\uD574 \uC5ED\uD68C\uC804 \uC5C6\uC774 \uCD5C\uC18C 4\uBC14\uD034 \uB3CC\uB824 \uC918. 2.8\uCD08 cubic-bezier(0.12, 0.86, 0.2, 1)\uB85C \uAC10\uC18D\uC2DC\uD0A4\uACE0 \uAC19\uC740 \uC2DC\uAC04 \uB3D9\uC548 \uCD94\uAC00 \uD074\uB9AD\uC744 \uB9C9\uC544 \uC918. \uD3EC\uC778\uD130\uB294 \uC2DC\uAC04 \uAE30\uBC18 \uD0A4\uD504\uB808\uC784\uC73C\uB85C \uD295\uAE40 \uAC04\uACA9\uC774 \uB298\uACE0 \uC9C4\uD3ED\uC774 \uC904\uB2E4\uAC00 \uC815\uC9C0\uD558\uAC8C \uD574 \uC918. 2800ms \uD6C4 \uD3EC\uC778\uD130\uC640 \uC815\uB82C\uB41C \uCE78\uC758 \uB2F9\uCCA8 \uBC30\uC9C0\uB97C 3\uCD08\uAC04 \uD45C\uC2DC\uD558\uACE0 \uC7AD\uD31F\uC5D0\uB9CC \uD384\uC2A4\uB97C \uC801\uC6A9\uD574 \uC918. \uBC30\uC9C0\uAC00 \uC0AC\uB77C\uC838\uB3C4 \uD68C\uC804\uAC01\uACFC \uB9C8\uC9C0\uB9C9 \uCE78\uC740 \uC720\uC9C0\uD558\uACE0 \uB2E4\uC74C \uD074\uB9AD\uC73C\uB85C \uB2E4\uC2DC \uB3CC\uB9B4 \uC218 \uC788\uAC8C \uD574 \uC918. \uBAA8\uC158 \uAC10\uC18C \uC124\uC815\uC5D0\uC11C\uB294 CSS \uC804\uD658\xB7\uBC18\uBCF5 \uD6A8\uACFC\uB97C \uC0DD\uB7B5\uD558\uB418 \uACB0\uACFC \uD0C0\uC774\uBA38\uB294 \uC720\uC9C0\uD558\uBA70, \uC5B8\uB9C8\uC6B4\uD2B8 \uC2DC \uD0C0\uC774\uBA38\uB97C \uD574\uC81C\uD574 \uC918."
3659
+ },
3616
3660
  /* =====================================================================
3617
3661
  * DOMAIN 3: 레이아웃 (20종)
3618
3662
  * ===================================================================== */
@@ -6253,7 +6297,7 @@ var ENGLISH_TECHNIQUES = {
6253
6297
  "Random symbols resolve into the original text from left to right.",
6254
6298
  "Symbols decode into a message",
6255
6299
  "scramble|decode|cipher|random symbols|text reveal",
6256
- "Play Scramble Decode when the specified text first appears, on mouse enter, and on click. Update random symbols (!<>-_\\/[]{}\u2014=+*^?#01) every 35ms while preserving spaces. Lock each character to the original when frame > index * 2, decoding from left to right. Stop the timer when frame exceeds twice the total character count. Clean up the previous timer before replaying."
6300
+ "Play Scramble Decode when the specified text first appears and on click. Update random symbols (!<>-_\\/[]{}\u2014=+*^?#01) every 35ms while preserving spaces. Lock each character to the original when frame > index * 2, decoding from left to right. Stop the timer when frame exceeds twice the total character count. Clean up the previous timer before replaying."
6257
6301
  ),
6258
6302
  "gradient-flow-text": text(
6259
6303
  "A multicolor gradient flows continuously inside text.",
@@ -6525,6 +6569,30 @@ var ENGLISH_TECHNIQUES = {
6525
6569
  "newton cradle|pendulum|swing|momentum demo",
6526
6570
  "Hang five balls from a top support in the specified graphic with transform-origin: top center. Initially tilt only the leftmost ball by +34deg. Every 320ms, cycle through four steps: left +34deg, all 0deg, right -34deg, all 0deg. Keep the middle three fixed; clicking also advances one step. Use 0.3s rotations, cubic-bezier(0.215,0.61,0.355,1) for outward swings and cubic-bezier(0.55,0.055,0.675,0.19) for returns. This is a state-driven demo, not a real physics simulation."
6527
6571
  ),
6572
+ "mg-dice-roll-3d": text(
6573
+ "A 3D dice tumbles and bounces on click, settling to reveal a random face.",
6574
+ "A 3D dice tumbles and settles on a face",
6575
+ "dice roll|3D dice|rolling dice|tumbling dice|dice physics",
6576
+ "Implement a click-to-roll CSS 3D die in the specified area. Use perspective: 800px and a 64x64px cube, assembling six faces with one to six pips using translateZ(32px), rotateX/Y, and preserve-3d. Set the resting stage to rotateX(-40deg) rotateY(26deg) and the initial result to 6. Make the whole scene a keyboard-operable button. On click, pick a value from 1 to 6; if it matches the previous value, replace it with (previous % 6) + 1. Update the result badge immediately and add cumulative X-axis 720deg and Y-axis 1080deg turns per roll to the chosen target orientation. Animate for 0.85s with cubic-bezier(0.22, 1, 0.36, 1), including a translateY(-44px) peak, landing squash, a -8px rebound, and a return to rest. Shrink and fade the ground shadow while rolling, then restore it. Block further input for 850ms and enlarge only the result badge for 300ms after landing before restoring its size. Under reduced motion, skip CSS transitions and keyframes while retaining the input lock and badge timers. Clear timers on unmount."
6577
+ ),
6578
+ "mg-marble-board": text(
6579
+ "A mini board game uniting dual dice rolls, pawn tile hops, landmark construction stamps, and coin fountain FX.",
6580
+ "A casual board game cascades micro-interactions",
6581
+ "board game|dice game|double dice|pawn hop|landmark pop|chance card|coin fountain",
6582
+ "Implement a casual board game sequence: dice roll, pawn movement, then landing effects. Arrange ten looping tiles around a 4-column, 3-row perimeter in this order: Start, Seoul, Tokyo, Chance, Paris, Island, New York, Tax, London, Tour. Initially place the pawn at Start, show dice values 3 and 3, and leave cities unbuilt. Clicking anywhere on the board clears previous banners and landing effects, then samples phase=(Date.now()%1400)/1400 and power=round(20+75*abs(sin(phase*PI))). Keep the gauge fixed at 65% while idle or moving and show the sampled power only during the roll. For power>70 pick each die from 4 to 6; for power<35 pick from 1 to 3. Otherwise, with 55% probability assign the same random 1-to-6 value to both dice; in the remaining branch pick each independently from 1 to 6. Use two 30px preserve-3d dice on a perspective: 500px stage at rotateX(-40deg) rotateY(26deg), with 750ms cumulative tumbling, leaping, and landing. Then display a DOUBLE banner for matching values and move the pawn one tile every 160ms with an arc hop, for the sum of the dice, wrapping around the track. Block input during rolling and movement. Landing on a city shows an acquisition stamp and cycles that city through house, office, castle, then house on successive visits; preserve buildings across rolls. Chance triggers a 3D card flip and Tax triggers a five-coin fountain. Clear double, stamp, chance, and coin elements at the start of the next roll. Island and Tour are named stopping tiles without extra turn or travel rules. This is a state-driven visual demo without real currency or ownership transactions. Clear delay and movement timers on unmount."
6583
+ ),
6584
+ "mg-treasure-chest-3d": text(
6585
+ "A chest opens around its rear hinge to reveal golden rays and a floating gem; clicking again closes it.",
6586
+ "A 3D treasure chest opens with loot",
6587
+ "treasure chest|loot box|gacha open|3D chest|gem float|god rays",
6588
+ "Implement a click-to-toggle CSS 3D treasure chest loot animation. Use perspective: 700px and a wood-and-metal chest tilted at rotateX(-20deg) rotateY(-24deg), maintaining preserve-3d. Assemble outer and inner walls, rims, a lined lid underside, and an interior floor with treasure so opening reveals solid surfaces. Start closed and make the whole scene a keyboard-operable button. Clicking immediately enters the open state. For a 100x18px lid, place the rear hinge at transform-origin: 50px 18px -30px and transition to rotateX(115deg) over 0.6s with cubic-bezier(0.34, 1.45, 0.64, 1). Simultaneously bounce the chest for 0.45s, rotate radial conic-gradient golden rays on a 12s loop, and reveal a purple gem that bobs on alternating 2.2s cycles with a small tilt change, halo, and sparkles. Ignore further clicks for the first 500ms, then keep the chest open until another click closes it and hides the rays and gem for reuse. Show the same gem each time as a visual demo without actual item grants or random loot selection. Clear the opening timer on unmount."
6589
+ ),
6590
+ "mg-lucky-wheel-3d": text(
6591
+ "A gently tilted eight-sector wheel decelerates and displays the reward beneath a fixed pointer.",
6592
+ "A 3D lucky wheel spins to a reward",
6593
+ "lucky wheel|roulette|fortune wheel|spin wheel|wheel physics|reward wheel",
6594
+ "Implement a CSS 3D lucky wheel for casual games or reward events. Inside an assembly gently tilted at rotateX(16deg), use an explicitly sized square display: block disc containing eight 45deg colored sectors ordered as gems, gold, jackpot, ticket, chest, double reward, experience, and lucky box. Center sector 0 at the top at 0deg and sector i at i*45deg. Position each icon with rotate(i*45deg) translateY(-r) rotate(-i*45deg), centered in its sector, and rotate the icons and perimeter pegs with the same disc. Start at 270deg so jackpot is at the top. Place a small fixed mount and short arrowhead above and separate from the disc. Make the whole scene a keyboard-operable button. On click choose next=(previousSector+floor(random*5)+2)%8. Calculate the clockwise difference from the current angle modulo 360 to (360-next*45)%360; add that difference and 1440deg to the cumulative angle for at least four forward turns. Decelerate for 2.8s with cubic-bezier(0.12, 0.86, 0.2, 1) and block additional clicks during that interval. Use time-based pointer keyframes with increasing gaps and decreasing deflection until it rests. After 2800ms display the aligned sector reward badge for three seconds, pulsing only jackpot results. Preserve the angle and last sector after the badge disappears so another click can spin again. Under reduced motion skip CSS transitions and repeating effects while retaining result timers. Clear timers on unmount."
6595
+ ),
6528
6596
  "ly-bento-grid": text(
6529
6597
  "A large main tile and three supporting tiles form a compact bento grid.",
6530
6598
  "Content fits like a bento box",
@@ -9670,6 +9738,10 @@ var SEARCH_METADATA = {
9670
9738
  "mg-morphing-grid-wave": m(["background", "shape"], ["auto", "click"], "\uD0C0\uC77C \uACA9\uC790\uC5D0 \uB300\uAC01\uC120 \uD30C\uB3C4 \uC804\uB2EC", "Send diagonal waves across a tile grid"),
9671
9739
  "mg-prism-rainbow-refraction": m(["shape"], ["click"], "\uD504\uB9AC\uC998\uC758 \uBB34\uC9C0\uAC1C \uAD11\uC120 \uBD84\uC0B0 \uC2DC\uC5F0", "Demonstrate rainbow beam dispersion with an SVG prism"),
9672
9740
  "mg-gravity-newton-cradle": m(["shape"], ["auto", "click"], "\uB274\uD134\uC758 \uC694\uB78C \uC9C4\uC790 \uC6B4\uB3D9 \uBAA8\uC591 \uC2DC\uC5F0", "Demonstrate a timed Newton cradle pendulum sequence"),
9741
+ "mg-dice-roll-3d": m(["shape", "card"], ["click"], "3D \uC8FC\uC0AC\uC704 \uAD74\uB9AC\uAE30\uC640 \uB208\uAE08 \uC548\uCC29 \uC2DC\uC5F0", "Tumble and roll a 3D dice landing on a random face"),
9742
+ "mg-marble-board": m(["shape", "card", "navigation"], ["click"], "\uCE90\uC8FC\uC5BC \uBCF4\uB4DC\uAC8C\uC784 \uC8FC\uC0AC\uC704\uC640 \uB9D0 \uC774\uB3D9 \uC2DC\uC5F0", "Play a mini board game with dual dice, pawn hops, and landmark animations"),
9743
+ "mg-treasure-chest-3d": m(["shape", "card"], ["click"], "3D \uBCF4\uBB3C\uC0C1\uC790 \uC5F4\uAE30\uC640 \uD669\uAE08\uBE5B \uBE54 \uB8E8\uD305 \uC2DC\uC5F0", "Open a 3D treasure chest to reveal radiant beams and floating loot"),
9744
+ "mg-lucky-wheel-3d": m(["shape", "button"], ["click"], "3D \uB7ED\uD0A4 \uD720 \uB8F0\uB81B \uD68C\uC804\uACFC \uAC10\uC18D \uBB3C\uB9AC \uC2DC\uC5F0", "Spin a 3D lucky wheel roulette with deceleration physics and pin flapper"),
9673
9745
  "ly-bento-grid": m(["panel", "card"], ["click"], "\uB300\uD615\uACFC \uBCF4\uC870 \uCF58\uD150\uCE20 \uD0C0\uC77C \uBC30\uCE58", "Arrange primary and supporting content tiles in a bento grid"),
9674
9746
  "ly-masonry-waterfall": m(["list", "card"], ["click"], "\uB192\uC774\uAC00 \uB2E4\uB978 \uCE74\uB4DC\uC758 \uC6CC\uD130\uD3F4 \uBC30\uCE58", "Arrange variable-height cards in fixed waterfall columns"),
9675
9747
  "ly-editorial-asymmetric": m(["image", "card"], ["hover", "click"], "\uBE44\uC8FC\uC5BC\uACFC \uC815\uBCF4 \uCE74\uB4DC\uC758 \uD3B8\uC9D1\uD615 \uACB9\uCE68", "Overlap a large visual and a small editorial card"),
@@ -9764,8 +9836,12 @@ var SEARCH_SYNONYMS = [
9764
9836
  ["shimmer", "\uC2DC\uBA38", "\uAD11\uD0DD"],
9765
9837
  ["glow", "\uAE00\uB85C\uC6B0", "\uBC1C\uAD11", "\uBE5B\uB098\uB294"],
9766
9838
  ["neon", "\uB124\uC628"],
9767
- ["flip", "\uD50C\uB9BD", "\uB4A4\uC9D1\uAE30", "\uB4A4\uC9D1\uB294", "\uB4A4\uC9D1\uC5B4"],
9839
+ ["flip", "flips", "flipped", "flipping", "\uD50C\uB9BD", "\uB4A4\uC9D1\uAE30", "\uB4A4\uC9D1\uB294", "\uB4A4\uC9D1\uC5B4"],
9768
9840
  ["tilt", "\uD2F8\uD2B8", "\uAE30\uC6B8\uC5B4\uC9C0\uB294", "\uAE30\uC6B8\uC5B4\uC9D0", "\uAE30\uC6B8\uC774\uAE30"],
9841
+ ["scroll", "scrolling", "scrolled", "\uC2A4\uD06C\uB864"],
9842
+ ["continuous", "continuously", "continually", "\uACC4\uC18D", "\uB04A\uC784\uC5C6\uC774"],
9843
+ ["blur", "blurred", "blurring", "\uBE14\uB7EC", "\uD750\uB9BC", "\uD750\uB9AC\uAC8C"],
9844
+ ["face", "\uC5BC\uAD74", "\uC5BC\uAD74\uB9CC"],
9769
9845
  ["glass", "glassmorphism", "\uAE00\uB798\uC2A4\uBAA8\uD53C\uC998", "\uAE00\uB798\uC2A4", "\uC720\uB9AC"],
9770
9846
  ["spring", "\uC2A4\uD504\uB9C1", "\uD0C4\uC131"],
9771
9847
  ["bounce", "\uBC14\uC6B4\uC2A4", "\uD1B5\uD1B5", "\uD280\uB294"],
@@ -9877,7 +9953,6 @@ function rank(item, query, queryTokens) {
9877
9953
  const exact = allEntries.find((entry) => entry.field !== "prompt" && entry.value.normalize("NFKC").trim().toLowerCase() === normalizedQuery);
9878
9954
  if (!queryTokens.length && !exact) return null;
9879
9955
  const matchedOn = [];
9880
- let score = 0;
9881
9956
  const covered = /* @__PURE__ */ new Set();
9882
9957
  const best = /* @__PURE__ */ new Map();
9883
9958
  for (const entry of allEntries) {
@@ -9890,7 +9965,7 @@ function rank(item, query, queryTokens) {
9890
9965
  if (!matchedOn.some((match) => match.field === entry.field)) matchedOn.push({ field: entry.field, value: entry.value });
9891
9966
  }
9892
9967
  if (!exact && covered.size < Math.max(1, Math.ceil(queryTokens.length * 0.6))) return null;
9893
- score = [...best.values()].reduce((sum, weight) => sum + weight, 0);
9968
+ let score = [...best.values()].reduce((sum, weight) => sum + weight, 0);
9894
9969
  score += queryTokens.length ? Math.round(20 * covered.size / queryTokens.length) : 0;
9895
9970
  if (exact) {
9896
9971
  score += exact.field === "title" ? 150 : 100;
@@ -9915,7 +9990,7 @@ function searchTechniques(options = {}) {
9915
9990
  // package.json
9916
9991
  var package_default = {
9917
9992
  name: "@keke1933/vibe-dictionary-mcp",
9918
- version: "0.2.0",
9993
+ version: "0.3.0",
9919
9994
  license: "MIT",
9920
9995
  author: "leejh96",
9921
9996
  description: "Read-only local MCP for searching Vibe Dictionary techniques and retrieving implementation prompts",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keke1933/vibe-dictionary-mcp",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "author": "leejh96",
6
6
  "description": "Read-only local MCP for searching Vibe Dictionary techniques and retrieving implementation prompts",