@keke1933/vibe-dictionary-mcp 0.4.0 → 0.5.1

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 +274 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -7,6 +7,124 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
7
7
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
8
  import * as z from "zod/v4";
9
9
 
10
+ // ../../packages/catalog/src/additions/graphic-studio.ts
11
+ var GRAPHIC_STUDIO_ADDITIONS = [
12
+ {
13
+ id: "mg-halftone-dot-shading",
14
+ domain: "motion",
15
+ category: "graphic",
16
+ titleKo: "\uD558\uD504\uD1A4 \uB3C4\uD2B8 \uC74C\uC601",
17
+ titleEn: "Halftone Dot Shading",
18
+ summary: "\uC810\uC758 \uAC04\uACA9\uC740 \uC720\uC9C0\uD558\uACE0 \uBC18\uC9C0\uB984\uC744 \uC790\uB3D9\uC73C\uB85C \uBC14\uAFD4 \uAD6C\uCCB4\uC758 \uBE5B\uACFC \uC74C\uC601\uC744 \uD45C\uD604\uD558\uB294 \uBCA1\uD130 \uD558\uD504\uD1A4",
19
+ vibeTag: "\uC791\uC740 \uC810\uC73C\uB85C \uB9CC\uB4DC\uB294 \uAE4A\uC740 \uC74C\uC601",
20
+ vibeKeywords: ["\uD558\uD504\uD1A4", "\uB3C4\uD2B8 \uC74C\uC601", "\uB9DD\uC810", "\uC778\uC1C4 \uADF8\uB798\uD53D"],
21
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 SVG \uD558\uD504\uD1A4 \uAD6C\uCCB4\uB97C \uB9CC\uB4E4\uC5B4 \uC918. viewBox 260\xD7132\uC5D0 21\uC5F4\xD711\uD589\uC758 \uC810\uC744 10 \uAC04\uACA9\uC73C\uB85C \uBC30\uCE58\uD558\uACE0, \uC911\uC2EC (130,66)\xB7\uAC00\uB85C \uBC18\uACBD 96\xB7\uC138\uB85C \uBC18\uACBD 54\uC778 \uD0C0\uC6D0 \uBC16\uC740 \uBC18\uC9C0\uB984 0.5\uC758 \uC605\uC740 \uC810\uC73C\uB85C \uB0A8\uACA8 \uC918. \uC548\uCABD\uC740 nx=(x-130)/96, ny=(y-66)/54, light=max(0,1-hypot(nx+0.35,ny+0.4)/1.8), r=0.9+(1-light)^(1.9-contrast/70)\xD73.6\uC73C\uB85C \uBC18\uC9C0\uB984\uC744 \uACC4\uC0B0\uD574 \uC67C\uCABD \uC704\uC5D0\uC11C \uBE5B\uC744 \uBC1B\uC740 \uB4EF \uD45C\uD604\uD574 \uC918. \uC810 \uB300\uBE44\uB294 \uCD08\uAE30 55\uC5D0\uC11C \uC99D\uAC00\uD558\uBA70 0~100 \uC0AC\uC774\uB97C \uC655\uBCF5\uD558\uACE0 8\uCD08\uB9C8\uB2E4 \uCC98\uC74C \uAC12\uC73C\uB85C \uB3CC\uC544\uC624\uB294 \uC5F0\uC18D \uC790\uB3D9 \uC2DC\uC5F0\uC73C\uB85C \uC810 \uD06C\uAE30\uB9CC \uAC31\uC2E0\uD574 \uC918. \uBCF4\uB77C\uC0C9 \uC810\uC740 \uB2E4\uD06C \uBAA8\uB4DC\uC5D0\uC11C \uBC1D\uAC8C \uBC14\uAFB8\uACE0 \uAC04\uACA9\xB7\uC704\uCE58\uB294 \uC720\uC9C0\uD574 \uC918. \uACE0\uC815 \uC218\uC2DD\uC73C\uB85C \uADF8\uB9B0 \uB3C4\uD615\uC774\uBA70 \uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC\xB7\uD53D\uC140 \uBD84\uC11D\uC740 \uC5C6\uC5B4. \uC2AC\uB77C\uC774\uB354\uB294 \uB450\uC9C0 \uB9D0\uACE0 \uB370\uBAA8 \uD074\uB9AD \uC2DC \uC774\uC804 \uC2DC\uACC4\uB97C \uCD08\uAE30\uD654\uD574 \uCC98\uC74C\uBD80\uD130 \uC7AC\uC0DD\uD574 \uC918. \uD654\uBA74 \uBC16\xB7\uC228\uACA8\uC9C4 \uD0ED\uC5D0\uC11C\uB294 \uC2DC\uACC4\uB97C \uBA48\uCD94\uACE0 \uBAA8\uC158 \uAC10\uC18C \uC124\uC815\uC5D0\uC11C\uB294 \uCD08\uAE30 \uC815\uC9C0 \uD654\uBA74\uC744 \uBCF4\uC5EC \uC918. \uC811\uADFC\uC131 \uC774\uB984\xB7\uC591\uD14C\uB9C8\xB7\uC881\uC740 \uD3ED\uC744 \uC9C0\uC6D0\uD574 \uC918."
22
+ },
23
+ {
24
+ id: "mg-isometric-voxel-landscape",
25
+ domain: "motion",
26
+ category: "graphic",
27
+ titleKo: "\uC544\uC774\uC18C\uBA54\uD2B8\uB9AD \uBCF5\uC140 \uC9C0\uD615",
28
+ titleEn: "Isometric Voxel Landscape",
29
+ summary: "\uC791\uC740 \uBE14\uB85D 36\uAC1C\uC758 \uB192\uC774\uAC00 \uC790\uB3D9\uC73C\uB85C \uC624\uB974\uB0B4\uB9AC\uBA70 \uD3C9\uD3C9\uD55C \uD0C0\uC77C\uBD80\uD130 \uBD09\uC6B0\uB9AC\uAE4C\uC9C0 \uBC14\uB00C\uB294 SVG \uC9C0\uD615",
30
+ vibeTag: "\uD3C9\uBA74 \uC704\uC5D0 \uC313\uC544 \uC62C\uB9B0 \uC791\uC740 \uC138\uACC4",
31
+ vibeKeywords: ["\uBCF5\uC140", "\uC544\uC774\uC18C\uBA54\uD2B8\uB9AD \uC9C0\uD615", "\uB4F1\uAC01 \uBE14\uB85D", "\uBE14\uB85D \uC9C0\uD615"],
32
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 SVG\uB85C 6\xD76 \uC544\uC774\uC18C\uBA54\uD2B8\uB9AD \uBE14\uB85D \uC9C0\uD615\uC744 \uB9CC\uB4E4\uC5B4 \uC918. viewBox 260\xD7132\uC5D0\uC11C row,col 0~5\uB97C x=130+(col-row)\xD717, y=34+(col+row)\xD78\uC5D0 \uD22C\uC601\uD558\uACE0 row+col \uC624\uB984\uCC28\uC21C\uC73C\uB85C \uB4A4\uC5D0\uC11C \uC55E\uC73C\uB85C \uADF8\uB824 \uC918. \uAC01 \uBE14\uB85D\uC758 \uB192\uC774\uB294 4+height/100\xD7(8+37\xD7exp(-((col-2.5)^2+(row-2.5)^2)/4))\uB85C \uC911\uC2EC\uC774 \uC19F\uAC8C \uACC4\uC0B0\uD574 \uC918. \uBC18\uD3ED 17\xB7\uBC18\uB192\uC774 8\uC758 \uB9C8\uB984\uBAA8 \uC717\uBA74\uACFC \uB450 \uC606\uBA74\uC744 \uB530\uB85C \uADF8\uB9AC\uACE0 \uC88C\uBA74 \uC9C4\uD55C \uCCAD\uB85D\xB7\uC6B0\uBA74 \uD30C\uB791\xB7\uC717\uBA74 \uBC1D\uC740 \uBBFC\uD2B8\uB85C \uAD6C\uBD84\uD574 \uC918. \uC9C0\uD615 \uB192\uC774\uB294 \uCD08\uAE30 65\uC5D0\uC11C \uC99D\uAC00\uD558\uBA70 0~100 \uC0AC\uC774\uB97C \uC655\uBCF5\uD558\uACE0 8\uCD08\uB9C8\uB2E4 \uCC98\uC74C \uAC12\uC73C\uB85C \uB3CC\uC544\uC624\uB3C4\uB85D \uBAA8\uB4E0 \uBA74 \uC88C\uD45C\uB97C \uC790\uB3D9 \uAC31\uC2E0\uD574 \uC918. 0\uC5D0\uC11C\uB3C4 \uAE30\uBCF8 \uB450\uAED8 4\uB97C \uC720\uC9C0\uD574 \uC918. \uC2E4\uC81C 3D \uC5D4\uC9C4\xB7\uCE74\uBA54\uB77C \uD68C\uC804\xB7\uC678\uBD80 \uC9C0\uB3C4 \uB370\uC774\uD130\uB294 \uC5C6\uB294 2D \uBCA1\uD130 \uB370\uBAA8\uC57C. \uC2AC\uB77C\uC774\uB354 \uC5C6\uC774 \uC790\uB3D9 \uC2DC\uC5F0\uD558\uACE0 \uB370\uBAA8 \uD074\uB9AD \uC2DC \uC774\uC804 \uC2DC\uACC4\uB97C \uCD08\uAE30\uD654\uD574 \uCC98\uC74C\uBD80\uD130 \uC7AC\uC0DD\uD574 \uC918. \uD654\uBA74 \uBC16\xB7\uC228\uACA8\uC9C4 \uD0ED\uC5D0\uC11C\uB294 \uBA48\uCD94\uACE0 \uBAA8\uC158 \uAC10\uC18C \uC124\uC815\uC5D0\uC11C\uB294 \uCD08\uAE30 \uC815\uC9C0 \uD654\uBA74\uC744 \uBCF4\uC5EC \uC918. \uC591\uD14C\uB9C8\xB7\uC811\uADFC\uC131 \uC774\uB984\xB7\uC881\uC740 \uD654\uBA74\uC744 \uC9C0\uC6D0\uD574 \uC918."
33
+ },
34
+ {
35
+ id: "mg-ribbon-over-under-weave",
36
+ domain: "motion",
37
+ category: "graphic",
38
+ titleKo: "\uAD50\uCC28 \uB9AC\uBCF8 \uC9C1\uC870",
39
+ titleEn: "Over Under Ribbon Weave",
40
+ summary: "\uAC00\uB85C\xB7\uC138\uB85C \uB9AC\uBCF8\uC774 \uAD50\uCC28\uC810\uB9C8\uB2E4 \uC704\uC544\uB798\uB85C \uBC88\uAC08\uC544 \uC9C0\uB098\uAC00\uBA70 4\uCD08\uB9C8\uB2E4 \uC9C1\uC870 \uC21C\uC11C\uAC00 \uC790\uB3D9 \uBC18\uC804",
41
+ vibeTag: "\uACB9\uCE58\uB294 \uC21C\uC11C\uB9CC\uC73C\uB85C \uC0B4\uC544\uB098\uB294 \uC9DC\uC784",
42
+ vibeKeywords: ["\uB9AC\uBCF8 \uC9C1\uC870", "\uAD50\uCC28 \uD328\uD134", "\uC704\uC544\uB798 \uACB9\uCE68", "\uC9C1\uBB3C \uADF8\uB798\uD53D"],
43
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 \uBCF4\uB77C\uC0C9 \uAC00\uB85C \uB9AC\uBCF8 4\uAC1C\uC640 \uAE08\uC0C9 \uC138\uB85C \uB9AC\uBCF8 4\uAC1C\uAC00 \uAD50\uCC28\uD558\uB294 SVG \uC9C1\uC870 \uADF8\uB798\uD53D\uC744 \uB9CC\uB4E4\uC5B4 \uC918. viewBox 260\xD7132, \uB9AC\uBCF8 \uD3ED 17, \uC138\uB85C \uB9AC\uBCF8 x=81+col\xD727, \uAC00\uB85C \uB9AC\uBCF8 y=20+row\xD726\uC73C\uB85C \uBC30\uCE58\uD558\uACE0 \uC804\uCCB4\uB97C \uC911\uC2EC (130,66)\uC5D0\uC11C -12\uB3C4 \uD68C\uC804\uD574 \uC918. \uC138\uB85C \uB9AC\uBCF8\uC744 \uBA3C\uC800 \uADF8\uB9AC\uACE0 \uAC00\uB85C \uB9AC\uBCF8\uC744 \uACB9\uCE5C \uB2E4\uC74C (row+col)%2\uAC00 0\uC778 \uAD50\uCC28\uC810\uB9CC \uAE08\uC0C9 \uB36E\uAC1C\uC640 \uC587\uC740 \uD558\uC774\uB77C\uC774\uD2B8\xB7\uC591\uC606 \uADF8\uB9BC\uC790\uB97C \uC5B9\uC5B4 \uC138\uB85C\uAC00 \uC704\uB97C \uD1B5\uACFC\uD558\uAC8C \uD574 \uC918. \uBC18\uC804 \uBC84\uD2BC \uC5C6\uC774 4\uCD08\uB9C8\uB2E4 \uC9DD\uC218\xB7\uD640\uC218 \uAD50\uCC28 \uC870\uAC74\uC744 \uC804\uD658\uD558\uACE0 8\uCD08\uB9C8\uB2E4 \uC6D0\uB798 \uC9DC\uC784\uC73C\uB85C \uB3CC\uC544\uC624\uAC8C \uD574 \uC918. \uB370\uBAA8 \uD074\uB9AD \uC2DC \uC774\uC804 \uC2DC\uACC4\uB97C \uCD08\uAE30\uD654\uD574 \uC9DD\uC218 \uAD50\uCC28\uBD80\uD130 \uB2E4\uC2DC \uC7AC\uC0DD\uD574 \uC918. \uD654\uBA74 \uBC16\xB7\uC228\uACA8\uC9C4 \uD0ED\uC5D0\uC11C\uB294 \uBA48\uCD94\uACE0 \uBAA8\uC158 \uAC10\uC18C \uC124\uC815\uC5D0\uC11C\uB294 \uCD08\uAE30 \uC9DC\uC784\uC744 \uC815\uC9C0 \uC0C1\uD0DC\uB85C \uBCF4\uC5EC \uC918. \uB4DC\uB798\uADF8\xB7\uBB3C\uB9AC \uC2DC\uBBAC\uB808\uC774\uC158\uC740 \uC5C6\uC5B4. \uC811\uADFC\uC131 \uC774\uB984\xB7\uC591\uD14C\uB9C8\xB7\uBAA8\uBC14\uC77C \uD3ED\uC744 \uC9C0\uC6D0\uD574 \uC918."
44
+ },
45
+ {
46
+ id: "mg-guilloche-curve-engraving",
47
+ domain: "motion",
48
+ category: "graphic",
49
+ titleKo: "\uAE30\uC694\uC170 \uACE1\uC120 \uBB38\uC591",
50
+ titleEn: "Guilloche Curve Engraving",
51
+ summary: "\uAC00\uB290\uB2E4\uB780 \uD3D0\uACE1\uC120\uC744 \uD06C\uAE30\uC640 \uAC01\uB3C4\uB97C \uC870\uAE08\uC529 \uB2EC\uB9AC\uD574 \uACB9\uCE58\uACE0 \uAD74\uACE1 \uAC1C\uC218\uAC00 \uC790\uB3D9 \uBCC0\uD654\uD558\uB294 \uC815\uAD50\uD55C \uBB38\uC591",
52
+ vibeTag: "\uC778\uC99D\uC11C\uC640 \uD328\uD0A4\uC9C0\uC5D0 \uC5B4\uC6B8\uB9AC\uB294 \uACE1\uC120 \uAC01\uC778",
53
+ vibeKeywords: ["\uAE30\uC694\uC170", "\uAE38\uB85C\uC170", "\uACE1\uC120 \uAC01\uC778", "\uC778\uC99D\uC11C \uBB38\uC591"],
54
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 SVG \uAE30\uC694\uC170 \uBB38\uC591\uC744 \uB9CC\uB4E4\uC5B4 \uC918. viewBox 260\xD7132\uC5D0\uC11C t=0~2\u03C0\uB97C 1440\uAD6C\uAC04\uC73C\uB85C \uC0D8\uD50C\uB9C1\uD558\uACE0 r=41+16\xD7cos(lobes\xD7t), x=130+1.8\xD7r\xD7cos(t), y=66+r\xD7sin(t)\uB85C \uB2EB\uD78C \uACE1\uC120\uC744 \uC0DD\uC131\uD574 \uC918. \uC774 \uACE1\uC120\uC744 9\uACB9 \uADF8\uB9AC\uB418 i\uBC88\uC9F8\uB294 \uC911\uC2EC (130,66) \uAE30\uC900 \uBC30\uC728 1-i\xD70.035\xB7\uD68C\uC804 i\xD71.5\uB3C4\xB7\uBD88\uD22C\uBA85\uB3C4 1-i\xD70.055\uB97C \uC801\uC6A9\uD574 \uC918. \uCC44\uC6C0 \uC5C6\uC774 0.65 \uB450\uAED8\uC758 \uCCAD\uB85D\u2192\uBCF4\uB77C \uC120\uD615 \uADF8\uB77C\uB370\uC774\uC158 \uC120\uC744 \uC0AC\uC6A9\uD558\uACE0 SVG \uADF8\uB77C\uB370\uC774\uC158 ID\uB294 \uC778\uC2A4\uD134\uC2A4\uBCC4\uB85C \uBD84\uB9AC\uD574 \uC918. \uAD74\uACE1 \uAC1C\uC218\uB294 \uCD08\uAE30 9\uC5D0\uC11C \uC99D\uAC00\uD558\uBA70 \uC815\uC218 5~14 \uC0AC\uC774\uB97C \uC655\uBCF5\uD558\uACE0 8\uCD08\uB9C8\uB2E4 \uCC98\uC74C \uAC12\uC73C\uB85C \uB3CC\uC544\uC624\uB3C4\uB85D \uACE1\uC120\uC744 \uC790\uB3D9 \uAC31\uC2E0\uD574 \uC918. \uC5F0\uC18D \uC655\uBCF5\uAC12\uC744 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC815\uC218\uB85C \uBC18\uC62C\uB9BC\uD574 \uB2EB\uD78C \uACE1\uC120\uC744 \uC720\uC9C0\uD574 \uC918. \uC7A5\uC2DD\uC6A9 \uBB38\uC591\uC73C\uB85C \uC704\uC870 \uBC29\uC9C0 \uBCF4\uC548 \uAE30\uB2A5\uC740 \uC5C6\uC5B4. \uC2AC\uB77C\uC774\uB354 \uC5C6\uC774 \uC790\uB3D9 \uC2DC\uC5F0\uD558\uACE0 \uB370\uBAA8 \uD074\uB9AD \uC2DC \uC774\uC804 \uC2DC\uACC4\uB97C \uCD08\uAE30\uD654\uD574 \uCC98\uC74C\uBD80\uD130 \uC7AC\uC0DD\uD574 \uC918. \uD654\uBA74 \uBC16\xB7\uC228\uACA8\uC9C4 \uD0ED\uC5D0\uC11C\uB294 \uBA48\uCD94\uACE0 \uBAA8\uC158 \uAC10\uC18C \uC124\uC815\uC5D0\uC11C\uB294 \uCD08\uAE30 \uC815\uC9C0 \uBB38\uC591\uC744 \uBCF4\uC5EC \uC918. \uC811\uADFC\uC131 \uC774\uB984\xB7\uC591\uD14C\uB9C8\xB7\uC881\uC740 \uD3ED\uC744 \uC9C0\uC6D0\uD574 \uC918."
55
+ },
56
+ {
57
+ id: "mg-gradient-stroke-ribbon",
58
+ domain: "motion",
59
+ category: "graphic",
60
+ titleKo: "\uADF8\uB77C\uB370\uC774\uC158 \uACE1\uC120 \uB9AC\uBCF8",
61
+ titleEn: "Gradient Stroke Ribbon",
62
+ summary: "\uCCAD\uB85D\xB7\uBCF4\uB77C\xB7\uBD84\uD64D \uC0C9 \uD750\uB984\uACFC \uD558\uC774\uB77C\uC774\uD2B8\uB97C \uAC00\uC9C4 \uB450\uAEBC\uC6B4 \uACE1\uC120\uC774 \uC790\uB3D9\uC73C\uB85C \uAD7D\uD600\uC9C0\uB294 \uBCA1\uD130 \uB9AC\uBCF8",
63
+ vibeTag: "\uD55C \uC904\uC758 \uACE1\uC120\uC73C\uB85C \uB9CC\uB4DC\uB294 \uCEEC\uB7EC \uC624\uBE0C\uC81D\uD2B8",
64
+ vibeKeywords: ["\uADF8\uB77C\uB370\uC774\uC158 \uB9AC\uBCF8", "\uACE1\uC120 \uC2A4\uD2B8\uB85C\uD06C", "\uCEEC\uB7EC \uB9AC\uBCF8", "\uBE0C\uB79C\uB4DC \uADF8\uB798\uD53D"],
65
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 SVG \uADF8\uB77C\uB370\uC774\uC158 \uB9AC\uBCF8\uC744 \uB9CC\uB4E4\uC5B4 \uC918. viewBox 260\xD7132\uC5D0\uC11C \uC2DC\uC791 (35,98), \uB05D (225,34), \uC81C\uC5B4\uC810 (65+bend/3,98-bend\xD71.25)\uC640 (185-bend/3,34+bend\xD71.25)\uC758 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120\uC744 \uC0AC\uC6A9\uD574 \uC918. \uCC44\uC6C0 \uC5C6\uC774 \uB450\uAED8 28\xB7\uB465\uADFC \uB05D\uC73C\uB85C \uADF8\uB9AC\uACE0 userSpaceOnUse \uC120\uD615 \uADF8\uB77C\uB370\uC774\uC158\uC744 \uC591 \uB05D \uC88C\uD45C\uC5D0 \uACE0\uC815\uD574 \uCCAD\uB85D\u2192\uBCF4\uB77C\u2192\uBD84\uD64D\uC73C\uB85C \uCE60\uD574 \uC918. \uAC19\uC740 \uACBD\uB85C\uB97C \uC544\uB798 7 \uC774\uB3D9\xB7\uBD88\uD22C\uBA85\uB3C4 0.18\uC758 \uBCF4\uB77C \uADF8\uB9BC\uC790\uB85C \uAE54\uACE0, \uC704 7 \uC774\uB3D9\xB7\uB450\uAED8 1.5\xB7\uBD88\uD22C\uBA85\uB3C4 0.5\uC758 \uD770 \uD558\uC774\uB77C\uC774\uD2B8\uB97C \uC5B9\uC5B4 \uC918. \uB450 \uB05D\uC5D0\uB294 \uBC1D\uC740 \uBC18\uC9C0\uB984 4 \uC6D0\uC744 \uD45C\uC2DC\uD574 \uC918. \uB9AC\uBCF8 \uAD7D\uD798\uC740 \uCD08\uAE30 60\uC5D0\uC11C \uC99D\uAC00\uD558\uBA70 0~100 \uC0AC\uC774\uB97C \uC655\uBCF5\uD558\uACE0 8\uCD08\uB9C8\uB2E4 \uCC98\uC74C \uAC12\uC73C\uB85C \uB3CC\uC544\uC624\uB3C4\uB85D \uC81C\uC5B4\uC810\uB9CC \uC790\uB3D9 \uAC31\uC2E0\uD558\uACE0 \uB05D\uC810\uC740 \uC720\uC9C0\uD574 \uC918. \uADF8\uB77C\uB370\uC774\uC158 ID\uB294 \uC778\uC2A4\uD134\uC2A4\uBCC4\uB85C \uBD84\uB9AC\uD574 \uC918. \uC2AC\uB77C\uC774\uB354 \uC5C6\uC774 \uC790\uB3D9 \uC2DC\uC5F0\uD558\uACE0 \uB370\uBAA8 \uD074\uB9AD \uC2DC \uC774\uC804 \uC2DC\uACC4\uB97C \uCD08\uAE30\uD654\uD574 \uCC98\uC74C\uBD80\uD130 \uC7AC\uC0DD\uD574 \uC918. \uD654\uBA74 \uBC16\xB7\uC228\uACA8\uC9C4 \uD0ED\uC5D0\uC11C\uB294 \uBA48\uCD94\uACE0 \uBAA8\uC158 \uAC10\uC18C \uC124\uC815\uC5D0\uC11C\uB294 \uCD08\uAE30 \uC815\uC9C0 \uD654\uBA74\uC744 \uBCF4\uC5EC \uC918. \uC2E4\uC81C 3D \uC7AC\uC9C8\xB7\uBB3C\uB9AC \uC2DC\uBBAC\uB808\uC774\uC158\uC740 \uC5C6\uC5B4. \uC811\uADFC\uC131 \uC774\uB984\xB7\uC591\uD14C\uB9C8\xB7\uC881\uC740 \uD3ED\uC744 \uC9C0\uC6D0\uD574 \uC918."
66
+ }
67
+ ];
68
+
69
+ // ../../packages/catalog/src/additions/workflows.ts
70
+ var WORKFLOW_ADDITIONS = [
71
+ {
72
+ id: "billing-cycle-pricing-card",
73
+ domain: "ui",
74
+ category: "card",
75
+ titleKo: "\uC6D4\uAC04\xB7\uC5F0\uAC04 \uC694\uAE08 \uBE44\uAD50 \uCE74\uB4DC",
76
+ titleEn: "Billing Cycle Pricing Card",
77
+ summary: "\uACB0\uC81C \uC8FC\uAE30 \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \uC6D4 \uD658\uC0B0 \uAC00\uACA9\xB7\uC2E4\uC81C \uCCAD\uAD6C \uAE08\uC561\xB7\uC5F0\uAC04 \uC808\uC57D\uC561\uC774 \uD568\uAED8 \uBC14\uB00C\uB294 \uC694\uAE08 \uCE74\uB4DC",
78
+ vibeTag: "\uAC00\uACA9\uACFC \uACB0\uC81C \uC870\uAC74\uC744 \uD55C\uB208\uC5D0",
79
+ vibeKeywords: ["\uC694\uAE08\uC81C", "\uACB0\uC81C \uC8FC\uAE30", "\uC5F0\uAC04 \uD560\uC778", "\uAC00\uACA9 \uBE44\uAD50 \uCE74\uB4DC"],
80
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 Studio \uC694\uAE08 \uCE74\uB4DC\uC640 \uC6D4\uAC04\xB7\uC5F0\uAC04 \uB450 \uBC84\uD2BC\uC744 \uB9CC\uB4E4\uC5B4 \uC918. \uC6D4\uAC04\uC744 \uCD08\uAE30 \uC120\uD0DD\uD558\uACE0 \uC6D4 $20\xB7\uB9E4\uC6D4 $20 \uCCAD\uAD6C\uB97C \uD45C\uC2DC\uD574 \uC918. \uC5F0\uAC04 \uC120\uD0DD \uC2DC \uC6D4 \uD658\uC0B0 $16\xB7\uC5F0 $192 \uCCAD\uAD6C\xB7\uC5F0 $48 \uC808\uC57D\uC73C\uB85C \uD568\uAED8 \uBC14\uAFD4 \uC918. \uC0C1\uB2E8\uC5D0\uB294 \uC5F0\uAC04 20% \uC808\uC57D \uBC30\uC9C0\uB97C \uB450\uACE0 \uC6D4 \uD658\uC0B0\uC561\uACFC \uC2E4\uC81C \uCCAD\uAD6C \uC8FC\uAE30\uB97C \uAD6C\uBD84\uD574 \uC918. \uC120\uD0DD \uBC84\uD2BC\uC758 aria-pressed\uC640 \uBC1D\uC740 \uD544 \uBC30\uACBD\uC744 \uB3D9\uAE30\uD654\uD558\uACE0 \uAC00\uACA9\uC740 aria-live polite\uB85C \uC54C\uB824 \uC918. \uBC84\uD2BC\uC740 Enter\xB7Space\uB85C \uC791\uB3D9\uD558\uBA70 \uC120\uD0DD\uC740 \uC790\uB3D9\uC73C\uB85C \uBC14\uB00C\uC9C0 \uC54A\uC544. \uB370\uBAA8\uC6A9 USD \uACE0\uC815 \uAE08\uC561\uC774\uBA70 \uC2E4\uC81C \uACB0\uC81C\xB7\uAC00\uC785\xB7\uD658\uC728\xB7\uC138\uAE08 \uACC4\uC0B0\uC740 \uC5C6\uC5B4. \uC881\uC740 \uCE74\uB4DC\xB7\uD55C\uC601 \uBB38\uAD6C\xB7\uB77C\uC774\uD2B8/\uB2E4\uD06C \uB300\uBE44\uC640 \uD3EC\uCEE4\uC2A4 \uC724\uACFD\uC744 \uC9C0\uC6D0\uD574 \uC918."
81
+ },
82
+ {
83
+ id: "faceted-filter-chips",
84
+ domain: "ui",
85
+ category: "control",
86
+ titleKo: "\uB2E4\uC911 \uC870\uAC74 \uD544\uD130 \uCE69",
87
+ titleEn: "Faceted Filter Chips",
88
+ summary: "\uB514\uC790\uC778\xB7\uC900\uBE44 \uC644\uB8CC \uC870\uAC74\uC744 \uC870\uD569\uD558\uBA74 \uBAA9\uB85D\uACFC \uACB0\uACFC \uAC1C\uC218\uAC00 \uBC14\uB00C\uACE0 \uCE69 \uC7AC\uD074\uB9AD\uC774\uB098 \uCD08\uAE30\uD654\uB85C \uC870\uAC74\uC744 \uD574\uC81C",
89
+ vibeTag: "\uD544\uC694\uD55C \uC870\uAC74\uB9CC \uB0A8\uAE30\uB294 \uC791\uC740 \uCE69",
90
+ vibeKeywords: ["\uD544\uD130 \uCE69", "\uB2E4\uC911 \uC870\uAC74", "\uD328\uC2EF \uAC80\uC0C9", "\uD544\uD130 \uCD08\uAE30\uD654"],
91
+ promptSnippet: "\uC9C0\uC815\uD55C \uCE74\uB4DC\uC5D0 \uC790\uB8CC \uBAA9\uB85D\xB7\uACB0\uACFC \uAC1C\uC218\xB7\uB514\uC790\uC778\uACFC \uC900\uBE44 \uC644\uB8CC \uD544\uD130 \uCE69\uC744 \uB9CC\uB4E4\uC5B4 \uC918. \uCD08\uAE30\uC5D0\uB294 \uC870\uAC74 \uC5C6\uC774 \uBE0C\uB79C\uB4DC \uAE30\uD68D\uC11C(\uB514\uC790\uC778\xB7\uC900\uBE44 \uC644\uB8CC), \uC0AC\uC6A9\uC790 \uC870\uC0AC(\uC900\uBE44 \uC644\uB8CC), \uC544\uC774\uCF58 \uC5D0\uC14B(\uB514\uC790\uC778\xB7\uCD08\uC548) \uC138 \uD589\uC744 \uBCF4\uC5EC \uC918. \uB450 \uD544\uD130\uB294 \uB3C5\uB9BD boolean\uC774\uBA70 \uB3D9\uC2DC\uC5D0 \uCF1C\uBA74 AND \uC870\uAC74\uC73C\uB85C \uBE0C\uB79C\uB4DC \uAE30\uD68D\uC11C\uB9CC \uB0A8\uACA8 \uC918. \uD65C\uC131 \uCE69\uC740 \uC0C9\uC0C1\xB7\uD14C\uB450\uB9AC\xB7X \uC544\uC774\uCF58\uACFC aria-pressed\uB85C \uD45C\uC2DC\uD558\uACE0 \uCE69 \uC804\uCCB4 \uC7AC\uD074\uB9AD\uC73C\uB85C \uD574\uB2F9 \uC870\uAC74\uC744 \uD574\uC81C\uD574 \uC918. \uC804\uCCB4 \uCD08\uAE30\uD654\uB294 \uB450 \uC870\uAC74\uC744 \uB044\uACE0 \uC870\uAC74\uC774 \uC5C6\uC73C\uBA74 \uBE44\uD65C\uC131\uD654\uD574 \uC918. \uACB0\uACFC \uAC1C\uC218\uB294 aria-live polite\uB85C \uC54C\uB9AC\uACE0 \uD589\uC5D0\uB294 \uC0C1\uD0DC \uC810\uC758 \uC811\uADFC\uC131 \uC774\uB984\uC744 \uC81C\uACF5\uD574 \uC918. \uBAA9\uB85D \uACF5\uAC04\uC744 \uC720\uC9C0\uD574 \uCE74\uB4DC\uAC00 \uD280\uC9C0 \uC54A\uAC8C \uD558\uBA70 \uBC84\uD2BC\uC740 \uD0A4\uBCF4\uB4DC\uB85C \uC870\uC791 \uAC00\uB2A5\uD558\uAC8C \uD574 \uC918. \uB85C\uCEEC \uACE0\uC815 \uB370\uC774\uD130\uB9CC \uC0AC\uC6A9\uD558\uBA70 \uB124\uD2B8\uC6CC\uD06C \uAC80\uC0C9\xB7\uC790\uB3D9 \uD544\uD130 \uBCC0\uACBD\uC740 \uC5C6\uC5B4. \uC591\uD14C\uB9C8\uC640 \uBAA8\uBC14\uC77C \uD3ED\uC744 \uC9C0\uC6D0\uD574 \uC918."
92
+ },
93
+ {
94
+ id: "bulk-selection-action-bar",
95
+ domain: "layout",
96
+ category: "panel",
97
+ titleKo: "\uC120\uD0DD \uD56D\uBAA9 \uC77C\uAD04 \uC791\uC5C5 \uBC14",
98
+ titleEn: "Bulk Selection Action Bar",
99
+ summary: "\uBB38\uC11C\uB97C \uC120\uD0DD\uD558\uBA74 \uC120\uD0DD \uAC1C\uC218\uC640 \uBCF4\uAD00 \uBC84\uD2BC\uC774 \uB098\uD0C0\uB098\uBA70 \uC77C\uBD80 \uC120\uD0DD\xB7\uC804\uCCB4 \uC120\uD0DD\xB7\uC791\uC5C5 \uD6C4 \uC120\uD0DD \uD574\uC81C\uB97C \uC5F0\uACB0",
100
+ vibeTag: "\uC120\uD0DD\uD55C \uD56D\uBAA9\uC5D0\uB9CC \uB098\uD0C0\uB098\uB294 \uC791\uC5C5 \uB3C4\uAD6C",
101
+ vibeKeywords: ["\uC77C\uAD04 \uC791\uC5C5", "\uB2E4\uC911 \uC120\uD0DD", "\uC120\uD0DD \uC561\uC158 \uBC14", "\uC77C\uAD04 \uBCF4\uAD00"],
102
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 \uBB38\uC11C \uC138 \uD589\uACFC \uB124\uC774\uD2F0\uBE0C \uCCB4\uD06C\uBC15\uC2A4, \uC804\uCCB4 \uC120\uD0DD \uCCB4\uD06C\uBC15\uC2A4\uB97C \uB9CC\uB4E4\uC5B4 \uC918. \uCD08\uAE30\uC5D0\uB294 \uC120\uD0DD\uC774 \uC5C6\uC73C\uBA70 \uC77C\uBD80 \uC120\uD0DD \uC2DC \uC804\uCCB4 \uCCB4\uD06C\uBC15\uC2A4\uC758 indeterminate\uB97C \uC124\uC815\uD558\uACE0 \uBAA8\uB450 \uC120\uD0DD \uC2DC checked\uB97C \uCF1C \uC918. \uD558\uB098 \uC774\uC0C1 \uC120\uD0DD\uD558\uBA74 \uC544\uB798 \uC608\uC57D \uACF5\uAC04\uC5D0 \uC120\uD0DD \uAC1C\uC218\uC640 \uBCF4\uAD00 \uBC84\uD2BC\uC744 \uAC00\uC9C4 \uC561\uC158 \uBC14\uB97C opacity 0\xB7translateY(5px)\uC5D0\uC11C 180ms ease-out\uC73C\uB85C \uB098\uD0C0\uB0B4 \uC918. \uBCF4\uAD00\uC740 \uC120\uD0DD\uD55C \uD589\uB9CC \uB85C\uCEEC \uBAA9\uB85D\uC5D0\uC11C \uC81C\uAC70\uD558\uACE0 \uB204\uC801 \uBCF4\uAD00 \uAC1C\uC218\uB97C \uC54C\uB9AC\uBA70 \uC120\uD0DD\uC744 \uBE44\uC6CC \uC561\uC158 \uBC14\uB97C \uAC10\uCDB0 \uC918. \uBCF4\uAD00 \uD6C4 \uC804\uCCB4 \uC120\uD0DD\uC73C\uB85C \uD3EC\uCEE4\uC2A4\uB97C \uC62E\uAE30\uACE0 \uBE48 \uBAA9\uB85D\uC774\uBA74 \uCD08\uAE30\uD654 \uBC84\uD2BC\uC73C\uB85C \uC62E\uACA8 \uC918. \uC120\uD0DD\uC774 \uC5C6\uC73C\uBA74 \uC791\uC5C5\uC744 \uCC28\uB2E8\uD558\uACE0 \uBE48 \uBAA9\uB85D\uC758 \uC804\uCCB4 \uC120\uD0DD\uC744 \uBE44\uD65C\uC131\uD654\uD574 \uC918. \uCD08\uAE30\uD654\uB294 \uC6D0\uB798 \uC138 \uD589\xB7\uC120\uD0DD \uC5C6\uC74C\xB7\uBCF4\uAD00 0\uC73C\uB85C \uBCF5\uADC0\uD574 \uC918. \uC11C\uBC84 \uBCF4\uAD00\xB7\uC601\uC18D \uC800\uC7A5\xB7\uC790\uB3D9 \uC120\uD0DD\uC740 \uC5C6\uC5B4. \uB124\uC774\uD2F0\uBE0C \uD0A4\uBCF4\uB4DC \uC870\uC791, status \uC548\uB0B4, \uB77C\uC774\uD2B8/\uB2E4\uD06C, \uC881\uC740 \uD3ED\uACFC \uBAA8\uC158 \uAC10\uC18C\uB97C \uC9C0\uC6D0\uD574 \uC918."
103
+ },
104
+ {
105
+ id: "undo-delete-snackbar",
106
+ domain: "ui",
107
+ category: "feedback",
108
+ titleKo: "\uC2E4\uD589 \uCDE8\uC18C \uC2A4\uB0B5\uBC14",
109
+ titleEn: "Undo Delete Snackbar",
110
+ summary: "\uBB38\uC11C\uB97C \uC0AD\uC81C\uD558\uBA74 \uC2E4\uD589 \uCDE8\uC18C \uC561\uC158\uC774 \uB098\uD0C0\uB098\uACE0 \uB9C8\uC9C0\uB9C9\uC73C\uB85C \uC0AD\uC81C\uD55C \uD56D\uBAA9\uC744 \uC6D0\uB798 \uC21C\uC11C\uB85C \uBCF5\uAD6C",
111
+ vibeTag: "\uC2E4\uC218\uD55C \uC21C\uAC04 \uBC14\uB85C \uB418\uB3CC\uB9B4 \uC218 \uC788\uAC8C",
112
+ vibeKeywords: ["\uC2E4\uD589 \uCDE8\uC18C", "\uC0AD\uC81C \uBCF5\uAD6C", "\uC2A4\uB0B5\uBC14", "\uB418\uB3CC\uB9AC\uAE30 \uC54C\uB9BC"],
113
+ promptSnippet: "\uC9C0\uC815\uD55C \uCE74\uB4DC\uC5D0 \uBE0C\uB79C\uB4DC \uAE30\uD68D\uC11C\xB7\uC0AC\uC6A9\uC790 \uC870\uC0AC\xB7\uC544\uC774\uCF58 \uC5D0\uC14B \uC138 \uD589\uACFC \uAC01\uAC01 \uC0AD\uC81C \uBC84\uD2BC\uC744 \uB9CC\uB4E4\uC5B4 \uC918. \uC0AD\uC81C\uB294 \uB85C\uCEEC \uBAA9\uB85D\uC5D0\uC11C \uD574\uB2F9 \uD589\uC744 \uC81C\uAC70\uD558\uACE0 \uCE74\uB4DC \uC544\uB798 \uC608\uC57D \uACF5\uAC04\uC5D0 \uC0AD\uC81C \uBB38\uC11C \uC774\uB984\uACFC \uC2E4\uD589 \uCDE8\uC18C \uBC84\uD2BC\uC744 \uAC00\uC9C4 \uC2A4\uB0B5\uBC14\uB97C \uBCF4\uC5EC \uC918. \uC2A4\uB0B5\uBC14\uB294 180ms ease-out\uC73C\uB85C opacity 0\xB7\uC544\uB798 5px\uC5D0\uC11C \uB4F1\uC7A5\uD558\uBA70 \uC0AD\uC81C \uD6C4 \uC2E4\uD589 \uCDE8\uC18C \uBC84\uD2BC\uC73C\uB85C \uD3EC\uCEE4\uC2A4\uB97C \uC62E\uACA8 \uC918. \uB9C8\uC9C0\uB9C9 \uC0AD\uC81C ID \uD558\uB098\uB9CC \uBCF4\uAD00\uD558\uACE0 \uB2E4\uC74C \uC0AD\uC81C\uAC00 \uC774\uC804 \uBCF5\uAD6C \uB300\uC0C1\uC744 \uB300\uCCB4\uD574 \uC918. \uC2E4\uD589 \uCDE8\uC18C\uB294 \uADF8 \uD56D\uBAA9\uB9CC \uC6D0\uB798 \uC21C\uC11C\uB85C \uBCF5\uAD6C\uD558\uACE0 \uC2A4\uB0B5\uBC14\uB97C \uB2EB\uC740 \uB4A4 \uCD08\uAE30\uD654 \uBC84\uD2BC\uC5D0 \uD3EC\uCEE4\uC2A4\uB97C \uC62E\uACA8 \uC918. \uC790\uB3D9 \uB9CC\uB8CC \uD0C0\uC774\uBA38\uB294 \uC5C6\uACE0 \uCD08\uAE30\uD654\uB294 \uBAA8\uB4E0 \uD589\uACFC \uC0AD\uC81C \uAE30\uB85D\uC744 \uC6D0\uB798\uB300\uB85C \uB3CC\uB824 \uC918. \uC0AD\uC81C \uC548\uB0B4\uB294 role status\uB85C \uC77D\uACE0 \uBC84\uD2BC \uC774\uB984\uC5D0\uB294 \uBB38\uC11C \uC774\uB984\uC744 \uD3EC\uD568\uD574 \uC918. \uC2E4\uC81C \uD30C\uC77C \uC0AD\uC81C\xB7\uC11C\uBC84 \uC694\uCCAD\xB7\uC601\uC18D \uC800\uC7A5\uC740 \uC5C6\uC5B4. \uD0A4\uBCF4\uB4DC\xB7\uC591\uD14C\uB9C8\xB7\uC881\uC740 \uD3ED\xB7\uBAA8\uC158 \uAC10\uC18C\uB97C \uC9C0\uC6D0\uD574 \uC918."
114
+ },
115
+ {
116
+ id: "onboarding-progress-checklist",
117
+ domain: "ui",
118
+ category: "layout",
119
+ titleKo: "\uC628\uBCF4\uB529 \uC9C4\uD589 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8",
120
+ titleEn: "Onboarding Progress Checklist",
121
+ summary: "\uC2DC\uC791 \uB2E8\uACC4\uB9C8\uB2E4 \uC644\uB8CC \uD45C\uC2DC\uB97C \uD1A0\uAE00\uD558\uBA74 \uC9C4\uD589 \uB9C9\uB300\uC640 \uC644\uB8CC \uAC1C\uC218\uAC00 \uD568\uAED8 \uBC14\uB00C\uACE0 \uBAA8\uB450 \uB9C8\uCE58\uBA74 \uC644\uB8CC \uC548\uB0B4",
122
+ vibeTag: "\uCC98\uC74C \uC2DC\uC791\uD558\uB294 \uACFC\uC815\uC744 \uC791\uC740 \uC131\uCDE8\uB85C",
123
+ vibeKeywords: ["\uC628\uBCF4\uB529 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8", "\uC2DC\uC791 \uAC00\uC774\uB4DC", "\uC124\uC815 \uC9C4\uD589\uB960", "\uC644\uB8CC \uB2E8\uACC4"],
124
+ promptSnippet: "\uC9C0\uC815\uD55C \uC601\uC5ED\uC5D0 \uC2DC\uC791\uD558\uAE30 \uCE74\uB4DC, \uC644\uB8CC \uAC1C\uC218 \uBC30\uC9C0, \uB124\uC774\uD2F0\uBE0C progress \uB9C9\uB300, \uD504\uB85C\uD544 \uC124\uC815\xB7\uD300\uC6D0 \uCD08\uB300\xB7\uCCAB \uD504\uB85C\uC81D\uD2B8 \uC138 \uB2E8\uACC4 \uBC84\uD2BC\uC744 \uB9CC\uB4E4\uC5B4 \uC918. \uCD08\uAE30\uC5D0\uB294 0/3\uC774\uBA70 \uC21C\uC11C \uC81C\uD55C \uC5C6\uC774 \uBC84\uD2BC\uC744 \uB204\uB974\uBA74 \uC644\uB8CC ID\uB97C \uCD94\uAC00\xB7\uC81C\uAC70\uD574 \uC918. \uC644\uB8CC \uB2E8\uACC4\uB294 \uC22B\uC790 \uC6D0\uC744 \uCCB4\uD06C \uC6D0\uC73C\uB85C \uBC14\uAFB8\uACE0 \uBB38\uAD6C\uC5D0 \uCDE8\uC18C\uC120\uC744 \uD45C\uC2DC\uD558\uBA70 aria-pressed\uB97C \uB9DE\uCDB0 \uC918. progress\uC758 max\uB294 3, value\uB294 \uC644\uB8CC \uAC1C\uC218\uB85C \uB450\uACE0 \uCC44\uC6C0 \uB108\uBE44\uB294 200ms\uB85C \uC804\uD658\uD574 \uC918. 3/3\uC774\uBA74 \uC900\uBE44 \uC644\uB8CC \uC548\uB0B4\uB97C \uD45C\uC2DC\uD558\uACE0 \uD558\uB098\uB77C\uB3C4 \uD574\uC81C\uD558\uBA74 \uB2E8\uACC4 \uC120\uD0DD \uC548\uB0B4\uB85C \uB3CC\uC544\uAC00 \uC918. \uC9C4\uD589 \uBC30\uC9C0\uC640 \uC644\uB8CC \uC548\uB0B4\uB97C \uC811\uADFC\uC131 \uB77C\uC774\uBE0C \uC601\uC5ED\uC73C\uB85C \uC81C\uACF5\uD558\uBA70 \uC790\uB3D9 \uC9C4\uD589\uC740 \uC5C6\uC5B4. \uB370\uBAA8\uC5D0\uC11C \uC9C1\uC811 \uC644\uB8CC \uD45C\uC2DC\uB9CC \uBC14\uAFB8\uBA70 \uC2E4\uC81C \uD504\uB85C\uD544 \uBCC0\uACBD\xB7\uCD08\uB300 \uBC1C\uC1A1\xB7\uD504\uB85C\uC81D\uD2B8 \uC0DD\uC131\xB7\uC601\uC18D \uC800\uC7A5\uC740 \uC5C6\uC5B4. \uB77C\uC774\uD2B8/\uB2E4\uD06C, \uBAA8\uBC14\uC77C, \uD0A4\uBCF4\uB4DC \uD3EC\uCEE4\uC2A4\uC640 \uBAA8\uC158 \uAC10\uC18C\uB97C \uC9C0\uC6D0\uD574 \uC918."
125
+ }
126
+ ];
127
+
10
128
  // ../../packages/catalog/src/additions/patterns.ts
11
129
  var PATTERN_ADDITIONS = [
12
130
  {
@@ -2959,6 +3077,8 @@ var CATEGORY_LABEL_MAP = Object.fromEntries(
2959
3077
  ].map((c) => [c.id, c.label])
2960
3078
  );
2961
3079
  var TECHNIQUES = [
3080
+ ...WORKFLOW_ADDITIONS,
3081
+ ...GRAPHIC_STUDIO_ADDITIONS,
2962
3082
  ...PATTERN_ADDITIONS,
2963
3083
  ...TACTILE_ADDITIONS,
2964
3084
  ...RETRO_ADDITIONS,
@@ -4400,6 +4520,74 @@ var TECHNIQUES = [
4400
4520
  }
4401
4521
  ];
4402
4522
 
4523
+ // ../../packages/catalog/src/translations/additions/graphic-studio.ts
4524
+ var EN_GRAPHIC_STUDIO_TECHNIQUES = {
4525
+ "mg-halftone-dot-shading": {
4526
+ summary: "Fixed-spacing dots automatically vary in radius to animate the shading of a vector sphere.",
4527
+ vibeTag: "Depth made from tiny dots",
4528
+ vibeKeywords: ["halftone", "dot shading", "print dots", "print graphics"],
4529
+ promptSnippet: "Create an SVG halftone sphere in the specified area. Use a 260\xD7132 viewBox with 21 columns and 11 rows of dots spaced by 10. Outside an ellipse centered at (130,66) with radii 96 and 54, keep faint dots of radius 0.5. Inside it use nx=(x-130)/96, ny=(y-66)/54, light=max(0,1-hypot(nx+0.35,ny+0.4)/1.8), and r=0.9+(1-light)^(1.9-contrast/70)\xD73.6 to suggest upper-left lighting. Animate contrast from 55 upward, bouncing between 0 and 100 and returning to its starting value every 8 seconds; update dot radii while keeping positions and spacing fixed. Use purple dots, brightened in dark mode. This is a formula-based shape, without image upload or pixel analysis. Omit sliders. Clicking the demo resets its previous clock and restarts from the initial state. Pause offscreen and in hidden tabs; show the initial still frame for reduced motion. Support accessible names, both themes and narrow widths."
4530
+ },
4531
+ "mg-isometric-voxel-landscape": {
4532
+ summary: "The heights of 36 blocks automatically rise and fall between a flat tile field and an isometric hill.",
4533
+ vibeTag: "A tiny world built on a flat canvas",
4534
+ vibeKeywords: ["voxel", "isometric terrain", "isometric blocks", "block landscape"],
4535
+ promptSnippet: "Create a 6\xD76 SVG isometric block terrain in the specified area. In a 260\xD7132 viewBox project row,col 0\u20135 to x=130+(col-row)\xD717, y=34+(col+row)\xD78. Paint back to front in ascending row+col order. Compute block height as 4+height/100\xD7(8+37\xD7exp(-((col-2.5)^2+(row-2.5)^2)/4)) for a central hill. Draw a diamond top with half-width 17 and half-height 8 plus separate side faces: dark teal left, blue right, bright mint top. Animate terrain height from 65 upward, bouncing between 0 and 100 and returning to its starting value every 8 seconds; recalculate all face coordinates. Keep base thickness 4 at zero. This is a 2D vector demo without a 3D engine, camera rotation or external map data. Omit sliders and autoplay the terrain. Clicking the demo resets its previous clock and restarts from the initial state. Pause offscreen and in hidden tabs; show the initial still frame for reduced motion. Support accessible names, both themes and narrow screens."
4536
+ },
4537
+ "mg-ribbon-over-under-weave": {
4538
+ summary: "Alternate over and under at each ribbon intersection, automatically reversing the weave every 4 seconds.",
4539
+ vibeTag: "Interlacing created by paint order",
4540
+ vibeKeywords: ["ribbon weave", "interlacing pattern", "over under", "woven graphics"],
4541
+ promptSnippet: "Create an SVG weave of four purple horizontal and four gold vertical ribbons in the specified area. Use a 260\xD7132 viewBox, width 17, vertical x=81+col\xD727 and horizontal y=20+row\xD726. Rotate the group -12 degrees around (130,66). Paint vertical ribbons first, then horizontal ribbons; at crossings where (row+col)%2 equals 0, repaint a gold cover with a thin highlight and side shadows so vertical ribbons pass above. Without a reversal button, switch between even and odd intersections every 4 seconds and return to the original weave every 8 seconds. Clicking the demo resets its previous clock and restarts at even crossings. Pause offscreen and in hidden tabs; show the initial still weave for reduced motion. Omit dragging and physics simulation. Support accessible names, both themes and mobile widths."
4542
+ },
4543
+ "mg-guilloche-curve-engraving": {
4544
+ summary: "Layer thin closed curves at slightly different scales and angles while their lobe count changes automatically.",
4545
+ vibeTag: "Fine engraved curves for certificates and packaging",
4546
+ vibeKeywords: ["guilloche", "curve engraving", "certificate ornament", "fine line pattern"],
4547
+ promptSnippet: "Create an SVG guilloche ornament in the specified area. In a 260\xD7132 viewBox sample t=0\u20132\u03C0 in 1440 intervals, with r=41+16\xD7cos(lobes\xD7t), x=130+1.8\xD7r\xD7cos(t), y=66+r\xD7sin(t), and close the path. Draw nine copies. For copy i, scale by 1-i\xD70.035 and rotate i\xD71.5 degrees about (130,66), with opacity 1-i\xD70.055. Use no fill and a 0.65-width teal-to-purple linear-gradient stroke, with a unique gradient ID per instance. Animate the lobe count from 9 upward, bouncing between 5 and 14 and returning to its starting value every 8 seconds. Round the continuous value to the nearest integer to keep the curves closed. This is decorative artwork without anti-counterfeiting security. Omit sliders and autoplay the ornament. Clicking the demo resets its previous clock and restarts from the initial state. Pause offscreen and in hidden tabs; show the initial still ornament for reduced motion. Support accessible names, both themes and narrow widths."
4548
+ },
4549
+ "mg-gradient-stroke-ribbon": {
4550
+ summary: "A thick cyan, purple and pink curve with a highlight and shadow bends automatically.",
4551
+ vibeTag: "A colorful object from a single curve",
4552
+ vibeKeywords: ["gradient ribbon", "curved stroke", "color ribbon", "brand graphics"],
4553
+ promptSnippet: "Create an SVG gradient ribbon in the specified area. Use a 260\xD7132 viewBox and a cubic Bezier from (35,98) to (225,34), with control points (65+bend/3,98-bend\xD71.25) and (185-bend/3,34+bend\xD71.25). Draw with no fill, stroke width 28 and round caps. Fix a userSpaceOnUse cyan-to-purple-to-pink linear gradient to the endpoint coordinates. Paint the same curve beneath it, translated down 7 with purple at opacity 0.18 as a shadow. Overlay a white highlight translated up 7, width 1.5 and opacity 0.5. Mark each endpoint with a bright circle of radius 4. Animate bend from 60 upward, bouncing between 0 and 100 and returning to its starting value every 8 seconds; update control points while preserving endpoints. Give each instance a unique gradient ID. Omit sliders and autoplay the ribbon. Clicking the demo resets its previous clock and restarts from the initial state. Pause offscreen and in hidden tabs; show the initial still frame for reduced motion. Omit real 3D materials and physics simulation. Support accessible names, both themes and narrow widths."
4554
+ }
4555
+ };
4556
+
4557
+ // ../../packages/catalog/src/translations/additions/workflows.ts
4558
+ var EN_WORKFLOW_TECHNIQUES = {
4559
+ "billing-cycle-pricing-card": {
4560
+ summary: "Switch billing periods to update the monthly equivalent, actual bill, and annual savings together.",
4561
+ vibeTag: "Price and billing terms at a glance",
4562
+ vibeKeywords: ["pricing card", "billing cycle", "annual discount", "subscription pricing"],
4563
+ promptSnippet: "Build a Studio pricing card with Monthly and Annual buttons in the target area. Start on Monthly: $20 per month, billed $20 monthly. Annual shows a $16 monthly equivalent, $192 billed yearly, and $48 annual savings. Keep an annual 20% savings badge above and distinguish the monthly equivalent from the actual billing period. Synchronize aria-pressed and a raised pill background with selection, and announce price changes with aria-live polite. Support Enter and Space without automatic switching. These are fixed demo USD amounts; do not implement checkout, signup, currency conversion, or tax calculations. Support narrow cards, Korean and English text, light/dark contrast, and visible keyboard focus."
4564
+ },
4565
+ "faceted-filter-chips": {
4566
+ summary: "Combine Design and Ready filters to update results and counts, then remove individual conditions or reset all.",
4567
+ vibeTag: "Small chips that narrow the list",
4568
+ vibeKeywords: ["filter chips", "faceted filtering", "multiple filters", "clear filters"],
4569
+ promptSnippet: "Build a resource list with a result count and Design and Ready filter chips. Initially show Brand brief (design and ready), User research (ready), and Icon assets (design and draft). Keep the two filters as independent booleans; combine active conditions with AND so both leave only Brand brief. Mark active chips with a tinted background, border, X icon, and aria-pressed. Clicking the entire chip again removes that condition. Reset clears both and is disabled when neither is active. Announce result counts with aria-live polite and give status dots accessible names. Reserve list height to avoid card jumps, and use keyboard-operable buttons. Use fixed local data without network search or automatic filtering. Support both themes and mobile widths."
4570
+ },
4571
+ "bulk-selection-action-bar": {
4572
+ summary: "Selecting documents reveals an action bar with a count and Archive action, including mixed and select-all states.",
4573
+ vibeTag: "Actions appear for the selected items",
4574
+ vibeKeywords: ["bulk actions", "multi select", "selection toolbar", "batch archive"],
4575
+ promptSnippet: "Build three document rows with native checkboxes and a select-all checkbox. Start with no selection. Set the header checkbox indeterminate for partial selection and checked when all visible rows are selected. When at least one is selected, reveal a reserved bottom action bar with the count and Archive button, using opacity 0 and translateY(5px) to normal over 180ms ease-out. Archive removes only selected rows from local state, announces the cumulative archived count, clears selection, and hides the bar. Move focus to select-all after archiving, or to Reset if the list is empty. Guard against empty selection and disable select-all for an empty list. Reset restores all three rows, no selection, and zero archived count. Do not use server storage, persistence, or automatic selection. Support native keyboard controls, status announcements, light/dark themes, narrow widths, and reduced motion."
4576
+ },
4577
+ "undo-delete-snackbar": {
4578
+ summary: "Deleting a document reveals an Undo action that restores the most recently deleted item in its original order.",
4579
+ vibeTag: "A quick way back after a mistake",
4580
+ vibeKeywords: ["undo delete", "snackbar", "restore item", "undo notification"],
4581
+ promptSnippet: "Build Brand brief, User research, and Icon assets rows with individual Delete buttons. Delete removes that row from local state and shows a snackbar in reserved bottom space with the document name and Undo. Animate from opacity 0 and translateY(5px) over 180ms ease-out and move focus to Undo after deletion. Store only the last deleted ID; another deletion replaces the previous recovery target. Undo restores only that item in original order, closes the snackbar, and focuses Reset. There is no expiration timer. Reset restores all rows and clears deletion history. Announce deletion with role status and include document names in Delete button labels. Do not delete actual files, make server requests, or persist state. Support keyboard use, both themes, narrow widths, and reduced motion."
4582
+ },
4583
+ "onboarding-progress-checklist": {
4584
+ summary: "Toggle setup steps to update a progress bar and completion count, with a finished message when every step is checked.",
4585
+ vibeTag: "Turn getting started into small wins",
4586
+ vibeKeywords: ["onboarding checklist", "getting started", "setup progress", "completion steps"],
4587
+ promptSnippet: "Build a Get started card with a completion badge, native progress bar, and Set up profile, Invite teammates, and First project buttons. Start at 0/3. Allow steps in any order and toggle completed IDs on click. Replace each completed step number with a check icon, strike through its label, and synchronize aria-pressed. Set progress max to 3 and value to the completed count; transition fill width over 200ms. At 3/3 show a ready message; unchecking any step restores the selection hint. Provide accessible live announcements for the badge and completion message. Do not auto-progress. This demo only toggles completion markers; it does not change profiles, send invites, create projects, or persist state. Support light/dark themes, mobile widths, keyboard focus, and reduced motion."
4588
+ }
4589
+ };
4590
+
4403
4591
  // ../../packages/catalog/src/translations/additions/broadcast.ts
4404
4592
  var EN_BROADCAST_TECHNIQUES = {
4405
4593
  "vd-word-highlight-subtitles": {
@@ -6266,6 +6454,8 @@ var EN_PATTERN_TECHNIQUES = {
6266
6454
  // ../../packages/catalog/src/translations/en.ts
6267
6455
  var text = (summary, vibeTag, keywords, promptSnippet) => ({ summary, vibeTag, vibeKeywords: keywords.split("|"), promptSnippet });
6268
6456
  var ENGLISH_TECHNIQUES = {
6457
+ ...EN_WORKFLOW_TECHNIQUES,
6458
+ ...EN_GRAPHIC_STUDIO_TECHNIQUES,
6269
6459
  ...EN_PATTERN_TECHNIQUES,
6270
6460
  ...EN_BROADCAST_TECHNIQUES,
6271
6461
  ...EN_CAMERA_TECHNIQUES,
@@ -7069,6 +7259,74 @@ var DOMAIN_NAMES = {
7069
7259
  en: { ui: "UI", motion: "Graphics", layout: "Layout", style: "Style", video: "Motion video" }
7070
7260
  };
7071
7261
 
7262
+ // ../../packages/catalog/src/search-metadata/additions/graphic-studio.ts
7263
+ var GRAPHIC_STUDIO_SEARCH_METADATA = {
7264
+ "mg-halftone-dot-shading": {
7265
+ targets: ["shape", "image", "background"],
7266
+ triggers: ["auto", "click"],
7267
+ useCases: { ko: ["\uD3EC\uC2A4\uD130\uC640 \uC778\uC1C4\uD48D \uBC30\uACBD\uC5D0\uC11C \uC810 \uD06C\uAE30\uB85C \uBA85\uC554\uC744 \uD45C\uD604\uD560 \uB54C"], en: ["Shade poster artwork and print-inspired backgrounds using dot sizes"] },
7268
+ aliases: { ko: ["\uD558\uD504\uD1A4 \uC74C\uC601", "\uB9DD\uC810 \uC74C\uC601", "\uC810 \uD06C\uAE30 \uBA85\uC554"], en: ["halftone dot shading", "dot size shading", "screen tone"] }
7269
+ },
7270
+ "mg-isometric-voxel-landscape": {
7271
+ targets: ["scene", "shape"],
7272
+ triggers: ["auto", "click"],
7273
+ useCases: { ko: ["\uAC8C\uC784 \uC18C\uAC1C\uB098 \uB370\uC774\uD130 \uD50C\uB7AB\uD3FC \uD788\uC5B4\uB85C\uC5D0 \uC791\uC740 \uBE14\uB85D \uC9C0\uD615\uC744 \uB123\uC744 \uB54C"], en: ["Build a block terrain illustration for game or data platform hero areas"] },
7274
+ aliases: { ko: ["\uC544\uC774\uC18C\uBA54\uD2B8\uB9AD \uBCF5\uC140", "\uB4F1\uAC01 \uBE14\uB85D \uC9C0\uD615", "\uBCF5\uC140 \uD48D\uACBD"], en: ["isometric voxel landscape", "voxel terrain", "isometric block hill"] }
7275
+ },
7276
+ "mg-ribbon-over-under-weave": {
7277
+ targets: ["shape", "background", "logo"],
7278
+ triggers: ["auto", "click"],
7279
+ useCases: { ko: ["\uBE0C\uB79C\uB4DC \uC7A5\uC2DD\uACFC \uC9C1\uBB3C \uC18C\uAC1C\uC5D0\uC11C \uB9AC\uBCF8\uC774 \uC5EE\uC774\uB294 \uD328\uD134\uC744 \uBCF4\uC5EC \uC904 \uB54C"], en: ["Show interlacing ribbons in brand ornaments and textile presentations"] },
7280
+ aliases: { ko: ["\uAD50\uCC28 \uB9AC\uBCF8 \uC9C1\uC870", "\uC704\uC544\uB798 \uC9C1\uC870", "\uB9AC\uBCF8 \uC9DC\uC784"], en: ["over under ribbon weave", "interlaced ribbons", "woven ribbon pattern"] }
7281
+ },
7282
+ "mg-guilloche-curve-engraving": {
7283
+ targets: ["shape", "background"],
7284
+ triggers: ["auto", "click"],
7285
+ useCases: { ko: ["\uC778\uC99D\uC11C\uC640 \uD328\uD0A4\uC9C0\uC5D0 \uAC00\uB294 \uACE1\uC120 \uC7A5\uC2DD \uBB38\uC591\uC744 \uB123\uC744 \uB54C"], en: ["Add fine decorative curve engraving to certificates and packaging"] },
7286
+ aliases: { ko: ["\uAE30\uC694\uC170 \uACE1\uC120", "\uAE38\uB85C\uC170 \uBB38\uC591", "\uC778\uC99D\uC11C \uACE1\uC120 \uC7A5\uC2DD"], en: ["guilloche curve engraving", "guilloche ornament", "certificate linework"] }
7287
+ },
7288
+ "mg-gradient-stroke-ribbon": {
7289
+ targets: ["shape", "logo", "background"],
7290
+ triggers: ["auto", "click"],
7291
+ useCases: { ko: ["\uBE0C\uB79C\uB4DC \uD788\uC5B4\uB85C\uC640 \uBC30\uB108\uC5D0 \uBD80\uB4DC\uB7EC\uC6B4 \uCEEC\uB7EC \uB9AC\uBCF8 \uC624\uBE0C\uC81D\uD2B8\uB97C \uB123\uC744 \uB54C"], en: ["Create a colorful ribbon object for brand heroes and banners"] },
7292
+ aliases: { ko: ["\uADF8\uB77C\uB370\uC774\uC158 \uACE1\uC120 \uB9AC\uBCF8", "\uCEEC\uB7EC \uC2A4\uD2B8\uB85C\uD06C", "\uBCA0\uC9C0\uC5B4 \uB9AC\uBCF8"], en: ["gradient stroke ribbon", "color ribbon curve", "bezier ribbon"] }
7293
+ }
7294
+ };
7295
+
7296
+ // ../../packages/catalog/src/search-metadata/additions/workflows.ts
7297
+ var WORKFLOW_SEARCH_METADATA = {
7298
+ "billing-cycle-pricing-card": {
7299
+ targets: ["card"],
7300
+ triggers: ["click"],
7301
+ useCases: { ko: ["\uAD6C\uB3C5 \uC11C\uBE44\uC2A4\uC758 \uC6D4\uAC04 \uC694\uAE08\uACFC \uC5F0\uAC04 \uD560\uC778\xB7\uCCAD\uAD6C\uC561\uC744 \uBE44\uAD50\uD560 \uB54C"], en: ["Compare monthly and annual subscription billing with transparent savings"] },
7302
+ aliases: { ko: ["\uC694\uAE08 \uBE44\uAD50 \uCE74\uB4DC", "\uC6D4\uAC04 \uC5F0\uAC04 \uC694\uAE08", "\uACB0\uC81C \uC8FC\uAE30 \uD1A0\uAE00"], en: ["billing cycle pricing", "monthly yearly pricing", "pricing toggle"] }
7303
+ },
7304
+ "faceted-filter-chips": {
7305
+ targets: ["list", "input"],
7306
+ triggers: ["click"],
7307
+ useCases: { ko: ["\uC790\uB8CC \uBAA9\uB85D\uC5D0 \uC5EC\uB7EC \uC870\uAC74\uC744 \uC870\uD569\uD558\uACE0 \uD544\uD130\uB97C \uAC1C\uBCC4 \uD574\uC81C\uD560 \uB54C"], en: ["Combine resource filters and clear conditions individually"] },
7308
+ aliases: { ko: ["\uB2E4\uC911 \uC870\uAC74 \uD544\uD130", "\uD544\uD130 \uCE69", "\uD328\uC2EF \uD544\uD130"], en: ["faceted filter chips", "filter chips", "faceted search"] }
7309
+ },
7310
+ "bulk-selection-action-bar": {
7311
+ targets: ["list", "panel"],
7312
+ triggers: ["click", "input"],
7313
+ useCases: { ko: ["\uBB38\uC11C\uB97C \uC5EC\uB7EC \uAC1C \uC120\uD0DD\uD574 \uD55C \uBC88\uC5D0 \uBCF4\uAD00\uD558\uACE0 \uC120\uD0DD \uAC1C\uC218\uB97C \uC54C\uB9B4 \uB54C"], en: ["Select documents and archive them together using a contextual action bar"] },
7314
+ aliases: { ko: ["\uC77C\uAD04 \uC791\uC5C5 \uBC14", "\uB2E4\uC911 \uC120\uD0DD \uD234\uBC14", "\uC77C\uAD04 \uBCF4\uAD00"], en: ["bulk selection action bar", "bulk actions", "batch archive toolbar"] }
7315
+ },
7316
+ "undo-delete-snackbar": {
7317
+ targets: ["list", "panel"],
7318
+ triggers: ["click"],
7319
+ useCases: { ko: ["\uBAA9\uB85D\uC5D0\uC11C \uC2E4\uC218\uB85C \uC0AD\uC81C\uD55C \uB9C8\uC9C0\uB9C9 \uD56D\uBAA9\uC744 \uC6D0\uB798 \uC704\uCE58\uC5D0 \uBCF5\uAD6C\uD560 \uB54C"], en: ["Undo the last accidental deletion and restore original list order"] },
7320
+ aliases: { ko: ["\uC2E4\uD589 \uCDE8\uC18C \uC2A4\uB0B5\uBC14", "\uC0AD\uC81C \uBCF5\uAD6C", "\uB418\uB3CC\uB9AC\uAE30 \uC54C\uB9BC"], en: ["undo delete snackbar", "undo snackbar", "restore deleted item"] }
7321
+ },
7322
+ "onboarding-progress-checklist": {
7323
+ targets: ["card", "list"],
7324
+ triggers: ["click"],
7325
+ useCases: { ko: ["\uCD08\uAE30 \uC124\uC815 \uB2E8\uACC4\uB97C \uC644\uB8CC \uD45C\uC2DC\uD558\uACE0 \uB0A8\uC740 \uC9C4\uD589 \uC0C1\uD669\uC744 \uD655\uC778\uD560 \uB54C"], en: ["Mark onboarding steps complete and see remaining setup progress"] },
7326
+ aliases: { ko: ["\uC628\uBCF4\uB529 \uCCB4\uD06C\uB9AC\uC2A4\uD2B8", "\uC2DC\uC791\uD558\uAE30 \uBAA9\uB85D", "\uC124\uC815 \uC9C4\uD589\uB960"], en: ["onboarding checklist", "setup checklist", "getting started checklist"] }
7327
+ }
7328
+ };
7329
+
7072
7330
  // ../../packages/catalog/src/search-metadata/additions/patterns.ts
7073
7331
  var PATTERN_SEARCH_METADATA = {
7074
7332
  "zoom-lightbox-gallery": {
@@ -9780,6 +10038,8 @@ var m = (targets, triggers, ko, en, aliasesKo = "", aliasesEn = "") => ({
9780
10038
  aliases: { ko: aliasesKo ? aliasesKo.split("|") : [], en: aliasesEn ? aliasesEn.split("|") : [] }
9781
10039
  });
9782
10040
  var SEARCH_METADATA = {
10041
+ ...WORKFLOW_SEARCH_METADATA,
10042
+ ...GRAPHIC_STUDIO_SEARCH_METADATA,
9783
10043
  ...PATTERN_SEARCH_METADATA,
9784
10044
  ...BROADCAST_SEARCH_METADATA,
9785
10045
  ...CAMERA_SEARCH_METADATA,
@@ -10120,7 +10380,7 @@ function searchTechniques(options = {}) {
10120
10380
  // package.json
10121
10381
  var package_default = {
10122
10382
  name: "@keke1933/vibe-dictionary-mcp",
10123
- version: "0.4.0",
10383
+ version: "0.5.1",
10124
10384
  license: "MIT",
10125
10385
  author: "leejh96",
10126
10386
  description: "Read-only local MCP for searching Vibe Dictionary techniques and retrieving implementation prompts",
@@ -10208,13 +10468,22 @@ function result(output) {
10208
10468
  }
10209
10469
  function createServer() {
10210
10470
  const server = new McpServer({ name: package_default.name, version: package_default.version }, {
10211
- instructions: "Find UI, graphics, layout, style and video techniques. Search for a few candidates, compare summaries, useCases and matchedOn fields, then get_technique by exact ID only for the selected prompts. Search is bilingual weighted keyword/alias matching, not semantic AI search. Extract concrete effects and targets from a request; omit uncertain filters. Use target/trigger filters only for required demo inputs. If results are poor, reformulate or ask for clarification; scores are not probabilities and no result is guaranteed suitable. locale selects output language independently of search language. These read-only tools return reference data only."
10471
+ instructions: [
10472
+ "Find UI, graphics, layout, style and video techniques. Search for a few candidates, compare summaries, useCases and matchedOn fields, then get_technique by exact ID only for the selected prompts.",
10473
+ "Search is bilingual weighted keyword/alias matching, not semantic AI search. Extract concrete effects and targets from a request; omit uncertain filters. For broad requests such as a clean or premium webpage, use the stated purpose and preferences to form concrete search candidates; do not equate an adjective with one fixed style. Ask for clarification when missing context prevents a meaningful choice.",
10474
+ "For requests combining techniques, search distinct needs such as style, layout and interaction separately. Retrieve the selected prompts, then decide where each technique applies and compare their visual treatment, inputs and timing for conflicts. The tools do not compose techniques or check compatibility; the calling assistant makes those judgments.",
10475
+ "Use target/trigger filters only for required demo inputs. If results are poor, reformulate or ask for clarification; scores are not probabilities and no result is guaranteed suitable. locale selects output language independently of search language. These read-only tools return reference data only."
10476
+ ].join(" ")
10212
10477
  });
10213
10478
  server.registerTool("search_techniques", {
10214
10479
  title: "Search techniques / \uAE30\uBC95 \uAC80\uC0C9",
10215
- description: "Search Korean/English names, aliases and use cases. Prefer concrete effect words; query may contain multiple words, with partial matches ranked by coverage and field importance. Names and aliases outrank prompts. Use domain/category and optional target/trigger to narrow required properties. Start with limit 5. Nonempty queries return relevance order with score (not confidence) and matchedOn field names; empty query browses catalog order. Responses exclude full prompts. locale defaults to ko; use en for English output. An empty result means reformulate, broaden filters or ask the user. Some demos simulate scroll/drag/audio using clicks/timers; check triggers and the original prompt.",
10480
+ description: [
10481
+ "Search Korean/English names, aliases and use cases. Convert the relevant part of the user request into concrete effect words or a use situation instead of copying a broad page-building request verbatim.",
10482
+ 'Use multiple words to describe one desired technique; search independent techniques separately. For example, if minimal style and bento layout fit the request, search "minimal" with domain "style" and "bento grid" with domain "layout" in separate calls, not "minimal bento grid hover" in one query. Partial matches are ranked by coverage and field importance; unrelated words can exclude otherwise useful candidates. Names and aliases outrank prompts.',
10483
+ "Use domain/category and optional target/trigger to narrow required properties. Start with limit 5. Nonempty queries return relevance order with score (not confidence) and matchedOn field names; empty query browses catalog order. Responses exclude full prompts. locale defaults to ko; use en for English output. An empty result means reformulate, broaden filters or ask the user. Some demos simulate scroll/drag/audio using clicks/timers; check triggers and the original prompt."
10484
+ ].join(" "),
10216
10485
  inputSchema: {
10217
- query: z.string().max(500).default("").describe("Concrete effect words, aliases or use situation; omit to browse."),
10486
+ query: z.string().max(500).default("").describe("Concrete effect words, aliases or use situation for one desired technique. Search independent techniques separately; omit to browse."),
10218
10487
  domain: domainSchema.optional(),
10219
10488
  category: categorySchema.optional(),
10220
10489
  target: targetSchema.optional().describe("Required target type, e.g. button or card."),
@@ -10241,7 +10510,7 @@ function createServer() {
10241
10510
  });
10242
10511
  server.registerTool("get_technique", {
10243
10512
  title: "Get technique prompt / \uAE30\uBC95 \uC6D0\uBB38 \uC870\uD68C",
10244
- description: "Get one technique by exact ID from search_techniques, with the original reference prompt in the selected locale (ko default, en supported), aliases and use cases. Translation preserves inputs, timings and demo limitations. titleKo/titleEn retain both canonical names for compatibility. Returns reference text only; does not execute it or modify files. Unknown IDs return an error; search again.",
10513
+ description: "Get one technique by exact ID from search_techniques, with the original reference prompt in the selected locale (ko default, en supported), aliases and use cases. Before combining selected techniques, read each prompt and compare application areas, visual treatment, inputs and timing; search rank does not establish compatibility. Translation preserves inputs, timings and demo limitations. titleKo/titleEn retain both canonical names for compatibility. Returns reference text only; does not execute it or modify files. Unknown IDs return an error; search again.",
10245
10514
  inputSchema: { id: z.string().trim().min(1).max(200), locale: localeSchema },
10246
10515
  outputSchema: { ...summaryShape, aliases: z.array(z.string()), vibeKeywords: z.array(z.string()), promptSnippet: z.string() },
10247
10516
  annotations: readOnlyAnnotations
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keke1933/vibe-dictionary-mcp",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "license": "MIT",
5
5
  "author": "leejh96",
6
6
  "description": "Read-only local MCP for searching Vibe Dictionary techniques and retrieving implementation prompts",