[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7C00K3WWVXWHMHC5RYRWJS6":3,"skill-same:01M7C00K3WWVXWHMHC5RYRWJS6":45},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7C00K3WWVXWHMHC5RYRWJS6","python-scala-collections",null,"Guide for translating Python collection operations to idiomatic Scala. Use when converting Python code that uses lists, dictionaries, sets, or involves collection transformations like map, filter, reduce, sorting, and aggregations.","linyouxue\u002Fskill-repair-benchmark","linyouxue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F216151464?v=4","01M7BJEVCXKD74KH6FG9CBVSQB","林宥学","01M7BJEVE02NP217V93BKZFC0J",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillHone\u002Fevaluator_runs\u002Fskillhone-v2\u002Fpython-scala-translation-skillhone-v2-vllm-verifier900-20260922T024153Z\u002Finputs\u002Fskills\u002Fskills\u002Fpython-scala-collections\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: python-scala-collections\ndescription: Guide for translating Python collection operations to idiomatic Scala. Use when converting Python code that uses lists, dictionaries, sets, or involves collection transformations like map, filter, reduce, sorting, and aggregations.\n---\n\n# Python to Scala Collections Translation\n\n## Collection Creation\n\n### Lists\n\n```python\n# Python\nempty = []\nnums = [1, 2, 3]\nrepeated = [0] * 5\nfrom_range = list(range(1, 11))\n```\n\n```scala\n\u002F\u002F Scala\nval empty = List.empty[Int]  \u002F\u002F or List[Int]()\nval nums = List(1, 2, 3)\nval repeated = List.fill(5)(0)\nval fromRange = (1 to 10).toList\n```\n\n### Dictionaries → Maps\n\n```python\n# Python\nempty = {}\nperson = {\"name\": \"Alice\", \"age\": 30}\nfrom_pairs = dict([(\"a\", 1), (\"b\", 2)])\n```\n\n```scala\n\u002F\u002F Scala\nval empty = Map.empty[String, Int]\nval person = Map(\"name\" -> \"Alice\", \"age\" -> 30)\nval fromPairs = List((\"a\", 1), (\"b\", 2)).toMap\n```\n\n### Sets\n\n```python\n# Python\nempty = set()\nnums = {1, 2, 3}\nfrom_list = set([1, 2, 2, 3])\n```\n\n```scala\n\u002F\u002F Scala\nval empty = Set.empty[Int]\nval nums = Set(1, 2, 3)\nval fromList = List(1, 2, 2, 3).toSet\n```\n\n## Transformation Operations\n\n### Map\n\n```python\n# Python\ndoubled = [x * 2 for x in nums]\ndoubled = list(map(lambda x: x * 2, nums))\n```\n\n```scala\n\u002F\u002F Scala\nval doubled = nums.map(_ * 2)\nval doubled = nums.map(x => x * 2)\n```\n\n### Filter\n\n```python\n# Python\nevens = [x for x in nums if x % 2 == 0]\nevens = list(filter(lambda x: x % 2 == 0, nums))\n```\n\n```scala\n\u002F\u002F Scala\nval evens = nums.filter(_ % 2 == 0)\nval evens = nums.filter(x => x % 2 == 0)\n```\n\n### Reduce\u002FFold\n\n```python\n# Python\nfrom functools import reduce\ntotal = reduce(lambda a, b: a + b, nums)\ntotal = sum(nums)\nproduct = reduce(lambda a, b: a * b, nums, 1)\n```\n\n```scala\n\u002F\u002F Scala\nval total = nums.reduce(_ + _)\nval total = nums.sum\nval product = nums.foldLeft(1)(_ * _)\n\u002F\u002F Use foldLeft when you need an initial value\n```\n\n### FlatMap\n\n```python\n# Python\nnested = [[1, 2], [3, 4]]\nflat = [x for sublist in nested for x in sublist]\n```\n\n```scala\n\u002F\u002F Scala\nval nested = List(List(1, 2), List(3, 4))\nval flat = nested.flatten\n\u002F\u002F or with transformation:\nval flat = nested.flatMap(identity)\n```\n\n## Common Operations\n\n### Length\u002FSize\n\n| Python | Scala |\n|--------|-------|\n| `len(lst)` | `lst.length` or `lst.size` |\n| `len(dct)` | `map.size` |\n\n### Access\n\n| Python | Scala |\n|--------|-------|\n| `lst[0]` | `lst(0)` or `lst.head` |\n| `lst[-1]` | `lst.last` |\n| `lst[1:3]` | `lst.slice(1, 3)` |\n| `lst[:3]` | `lst.take(3)` |\n| `lst[3:]` | `lst.drop(3)` |\n| `dct[\"key\"]` | `map(\"key\")` (throws if missing) |\n| `dct.get(\"key\")` | `map.get(\"key\")` (returns Option) |\n| `dct.get(\"key\", default)` | `map.getOrElse(\"key\", default)` |\n\n### Membership\n\n```python\n# Python\nif x in lst: ...\nif key in dct: ...\n```\n\n```scala\n\u002F\u002F Scala\nif (lst.contains(x)) ...\nif (map.contains(key)) ...\n```\n\n### Concatenation\n\n```python\n# Python\ncombined = list1 + list2\nmerged = {**dict1, **dict2}\n```\n\n```scala\n\u002F\u002F Scala\nval combined = list1 ++ list2\nval merged = map1 ++ map2\n```\n\n### Sorting\n\n```python\n# Python\nsorted_list = sorted(items)\nsorted_desc = sorted(items, reverse=True)\nsorted_by_key = sorted(items, key=lambda x: x.name)\nitems.sort()  # in-place\n```\n\n```scala\n\u002F\u002F Scala\nval sortedList = items.sorted\nval sortedDesc = items.sorted(Ordering[Int].reverse)\nval sortedByKey = items.sortBy(_.name)\n\u002F\u002F Note: Scala collections are immutable by default, no in-place sort\n```\n\n### Grouping\n\n```python\n# Python\nfrom itertools import groupby\nfrom collections import defaultdict\n\n# Group by key\ngrouped = defaultdict(list)\nfor item in items:\n    grouped[item.category].append(item)\n```\n\n```scala\n\u002F\u002F Scala\nval grouped = items.groupBy(_.category)\n\u002F\u002F Returns Map[Category, List[Item]]\n```\n\n### Aggregations\n\n```python\n# Python\ntotal = sum(nums)\nminimum = min(nums)\nmaximum = max(nums)\naverage = sum(nums) \u002F len(nums)\n```\n\n```scala\n\u002F\u002F Scala\nval total = nums.sum\nval minimum = nums.min\nval maximum = nums.max\nval average = nums.sum.toDouble \u002F nums.length\n```\n\n### Finding Elements\n\n```python\n# Python\nfirst_even = next((x for x in nums if x % 2 == 0), None)\nall_evens = all(x % 2 == 0 for x in nums)\nany_even = any(x % 2 == 0 for x in nums)\n```\n\n```scala\n\u002F\u002F Scala\nval firstEven = nums.find(_ % 2 == 0)  \u002F\u002F Returns Option[Int]\nval allEvens = nums.forall(_ % 2 == 0)\nval anyEven = nums.exists(_ % 2 == 0)\n```\n\n### Zipping\n\n```python\n# Python\npairs = list(zip(list1, list2))\nindexed = list(enumerate(items))\n```\n\n```scala\n\u002F\u002F Scala\nval pairs = list1.zip(list2)\nval indexed = items.zipWithIndex\n```\n\n## Dictionary\u002FMap Operations\n\n```python\n# Python\nkeys = list(dct.keys())\nvalues = list(dct.values())\nitems = list(dct.items())\n\nfor key, value in dct.items():\n    process(key, value)\n\n# Update\ndct[\"new_key\"] = value\nupdated = {**dct, \"new_key\": value}\n```\n\n```scala\n\u002F\u002F Scala\nval keys = map.keys.toList\nval values = map.values.toList\nval items = map.toList  \u002F\u002F List[(K, V)]\n\nfor ((key, value) \u003C- map) {\n  process(key, value)\n}\n\n\u002F\u002F Update (creates new map, immutable)\nval updated = map + (\"new_key\" -> value)\nval updated = map.updated(\"new_key\", value)\n```\n\n## Mutable vs Immutable\n\nPython collections are mutable by default. Scala defaults to immutable.\n\n```python\n# Python - mutable\nlst.append(4)\nlst.extend([5, 6])\ndct[\"key\"] = value\n```\n\n```scala\n\u002F\u002F Scala - immutable (creates new collection)\nval newList = lst :+ 4\nval newList = lst ++ List(5, 6)\nval newMap = map + (\"key\" -> value)\n\n\u002F\u002F Scala - mutable (when needed)\nimport scala.collection.mutable\nval mutableList = mutable.ListBuffer(1, 2, 3)\nmutableList += 4\nmutableList ++= List(5, 6)\n```\n\n## enum type\n\nUse UPPERCASE for enum and constant names in Scala (same as in Python) E.g.\n\n```python\nclass TokenType(Enum):\n    STRING = \"string\"\n    NUMERIC = \"numeric\"\n    TEMPORAL = \"temporal\"\n    STRUCTURED = \"structured\"\n    BINARY = \"binary\"\n    NULL = \"null\"\n```\n\n```scala\nobject BaseType {\n  case object STRING extends BaseType { val value = \"string\" }\n  case object NUMERIC extends BaseType { val value = \"numeric\" }\n  case object TEMPORAL extends BaseType { val value = \"temporal\" }\n  case object STRUCTURED extends BaseType { val value = \"structured\" }\n  case object BINARY extends BaseType { val value = \"binary\" }\n}\n```\n\nDo not use PascalCase. E.g. the following is against the principle:\n\n```scala\nobject BaseType {\n  case object String extends BaseType { val value = \"string\" }\n}\n```\n","# Python to Scala Collections Translation\n\n## Collection Creation\n\n### Lists\n\n```python\n# Python\nempty = []\nnums = [1, 2, 3]\nrepeated = [0] * 5\nfrom_range = list(range(1, 11))\n```\n\n```scala\n\u002F\u002F Scala\nval empty = List.empty[Int]  \u002F\u002F or List[Int]()\nval nums = List(1, 2, 3)\nval repeated = List.fill(5)(0)\nval fromRange = (1 to 10).toList\n```\n\n### Dictionaries → Maps\n\n```python\n# Python\nempty = {}\nperson = {\"name\": \"Alice\", \"age\": 30}\nfrom_pairs = dict([(\"a\", 1), (\"b\", 2)])\n```\n\n```scala\n\u002F\u002F Scala\nval empty = Map.empty[String, Int]\nval person = Map(\"name\" -> \"Alice\", \"age\" -> 30)\nval fromPairs = List((\"a\", 1), (\"b\", 2)).toMap\n```\n\n### Sets\n\n```python\n# Python\nempty = set()\nnums = {1, 2, 3}\nfrom_list = set([1, 2, 2, 3])\n```\n\n```scala\n\u002F\u002F Scala\nval empty = Set.empty[Int]\nval nums = Set(1, 2, 3)\nval fromList = List(1, 2, 2, 3).toSet\n```\n\n## Transformation Operations\n\n### Map\n\n```python\n# Python\ndoubled = [x * 2 for x in nums]\ndoubled = list(map(lambda x: x * 2, nums))\n```\n\n```scala\n\u002F\u002F Scala\nval doubled = nums.map(_ * 2)\nval doubled = nums.map(x => x * 2)\n```\n\n### Filter\n\n```python\n# Python\nevens = [x for x in nums if x % 2 == 0]\nevens = list(filter(lambda x: x % 2 == 0, nums))\n```\n\n```scala\n\u002F\u002F Scala\nval evens = nums.filter(_ % 2 == 0)\nval evens = nums.filter(x => x % 2 == 0)\n```\n\n### Reduce\u002FFold\n\n```python\n# Python\nfrom functools import reduce\ntotal = reduce(lambda a, b: a + b, nums)\ntotal = sum(nums)\nproduct = reduce(lambda a, b: a * b, nums, 1)\n```\n\n```scala\n\u002F\u002F Scala\nval total = nums.reduce(_ + _)\nval total = nums.sum\nval product = nums.foldLeft(1)(_ * _)\n\u002F\u002F Use foldLeft when you need an initial value\n```\n\n### FlatMap\n\n```python\n# Python\nnested = [[1, 2], [3, 4]]\nflat = [x for sublist in nested for x in sublist]\n```\n\n```scala\n\u002F\u002F Scala\nval nested = List(List(1, 2), List(3, 4))\nval flat = nested.flatten\n\u002F\u002F or with transformation:\nval flat = nested.flatMap(identity)\n```\n\n## Common Operations\n\n### Length\u002FSize\n\n| Python | Scala |\n|--------|-------|\n| `len(lst)` | `lst.length` or `lst.size` |\n| `len(dct)` | `map.size` |\n\n### Access\n\n| Python | Scala |\n|--------|-------|\n| `lst[0]` | `lst(0)` or `lst.head` |\n| `lst[-1]` | `lst.last` |\n| `lst[1:3]` | `lst.slice(1, 3)` |\n| `lst[:3]` | `lst.take(3)` |\n| `lst[3:]` | `lst.drop(3)` |\n| `dct[\"key\"]` | `map(\"key\")` (throws if missing) |\n| `dct.get(\"key\")` | `map.get(\"key\")` (returns Option) |\n| `dct.get(\"key\", default)` | `map.getOrElse(\"key\", default)` |\n\n### Membership\n\n```python\n# Python\nif x in lst: ...\nif key in dct: ...\n```\n\n```scala\n\u002F\u002F Scala\nif (lst.contains(x)) ...\nif (map.contains(key)) ...\n```\n\n### Concatenation\n\n```python\n# Python\ncombined = list1 + list2\nmerged = {**dict1, **dict2}\n```\n\n```scala\n\u002F\u002F Scala\nval combined = list1 ++ list2\nval merged = map1 ++ map2\n```\n\n### Sorting\n\n```python\n# Python\nsorted_list = sorted(items)\nsorted_desc = sorted(items, reverse=True)\nsorted_by_key = sorted(items, key=lambda x: x.name)\nitems.sort()  # in-place\n```\n\n```scala\n\u002F\u002F Scala\nval sortedList = items.sorted\nval sortedDesc = items.sorted(Ordering[Int].reverse)\nval sortedByKey = items.sortBy(_.name)\n\u002F\u002F Note: Scala collections are immutable by default, no in-place sort\n```\n\n### Grouping\n\n```python\n# Python\nfrom itertools import groupby\nfrom collections import defaultdict\n\n# Group by key\ngrouped = defaultdict(list)\nfor item in items:\n    grouped[item.category].append(item)\n```\n\n```scala\n\u002F\u002F Scala\nval grouped = items.groupBy(_.category)\n\u002F\u002F Returns Map[Category, List[Item]]\n```\n\n### Aggregations\n\n```python\n# Python\ntotal = sum(nums)\nminimum = min(nums)\nmaximum = max(nums)\naverage = sum(nums) \u002F len(nums)\n```\n\n```scala\n\u002F\u002F Scala\nval total = nums.sum\nval minimum = nums.min\nval maximum = nums.max\nval average = nums.sum.toDouble \u002F nums.length\n```\n\n### Finding Elements\n\n```python\n# Python\nfirst_even = next((x for x in nums if x % 2 == 0), None)\nall_evens = all(x % 2 == 0 for x in nums)\nany_even = any(x % 2 == 0 for x in nums)\n```\n\n```scala\n\u002F\u002F Scala\nval firstEven = nums.find(_ % 2 == 0)  \u002F\u002F Returns Option[Int]\nval allEvens = nums.forall(_ % 2 == 0)\nval anyEven = nums.exists(_ % 2 == 0)\n```\n\n### Zipping\n\n```python\n# Python\npairs = list(zip(list1, list2))\nindexed = list(enumerate(items))\n```\n\n```scala\n\u002F\u002F Scala\nval pairs = list1.zip(list2)\nval indexed = items.zipWithIndex\n```\n\n## Dictionary\u002FMap Operations\n\n```python\n# Python\nkeys = list(dct.keys())\nvalues = list(dct.values())\nitems = list(dct.items())\n\nfor key, value in dct.items():\n    process(key, value)\n\n# Update\ndct[\"new_key\"] = value\nupdated = {**dct, \"new_key\": value}\n```\n\n```scala\n\u002F\u002F Scala\nval keys = map.keys.toList\nval values = map.values.toList\nval items = map.toList  \u002F\u002F List[(K, V)]\n\nfor ((key, value) \u003C- map) {\n  process(key, value)\n}\n\n\u002F\u002F Update (creates new map, immutable)\nval updated = map + (\"new_key\" -> value)\nval updated = map.updated(\"new_key\", value)\n```\n\n## Mutable vs Immutable\n\nPython collections are mutable by default. Scala defaults to immutable.\n\n```python\n# Python - mutable\nlst.append(4)\nlst.extend([5, 6])\ndct[\"key\"] = value\n```\n\n```scala\n\u002F\u002F Scala - immutable (creates new collection)\nval newList = lst :+ 4\nval newList = lst ++ List(5, 6)\nval newMap = map + (\"key\" -> value)\n\n\u002F\u002F Scala - mutable (when needed)\nimport scala.collection.mutable\nval mutableList = mutable.ListBuffer(1, 2, 3)\nmutableList += 4\nmutableList ++= List(5, 6)\n```\n\n## enum type\n\nUse UPPERCASE for enum and constant names in Scala (same as in Python) E.g.\n\n```python\nclass TokenType(Enum):\n    STRING = \"string\"\n    NUMERIC = \"numeric\"\n    TEMPORAL = \"temporal\"\n    STRUCTURED = \"structured\"\n    BINARY = \"binary\"\n    NULL = \"null\"\n```\n\n```scala\nobject BaseType {\n  case object STRING extends BaseType { val value = \"string\" }\n  case object NUMERIC extends BaseType { val value = \"numeric\" }\n  case object TEMPORAL extends BaseType { val value = \"temporal\" }\n  case object STRUCTURED extends BaseType { val value = \"structured\" }\n  case object BINARY extends BaseType { val value = \"binary\" }\n}\n```\n\nDo not use PascalCase. E.g. the following is against the principle:\n\n```scala\nobject BaseType {\n  case object String extends BaseType { val value = \"string\" }\n}\n```\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FSkillHone\u002Fevaluator_runs\u002Fskillhone-v2\u002Fpython-scala-translation-skillhone-v2-vllm-verifier900-20260922T024153Z\u002Finputs\u002Fskills\u002Fskills\u002Fpython-scala-collections",1,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark","https:\u002F\u002Fgithub.com\u002Flinyouxue","2026-11-14 20:28:35",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add linyouxue\u002Fskill-repair-benchmark --skill python-scala-collections",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill python-scala-collections",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill python-scala-collections","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FSkillHone\u002Fevaluator_runs\u002Fskillhone-v2\u002Fpython-scala-translation-skillhone-v2-vllm-verifier900-20260922T024153Z\u002Finputs\u002Fskills\u002Fskills\u002Fpython-scala-collections\u002FSKILL.md",true,[],[46,53,60,67,72,77],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M7E1HGVRY73NBJ022CJG13X6","video-frame-extraction","Extract frames from video files and save them as images using OpenCV","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":19},"01M7E1HAG5R7CJ9C8NYJS771MB","openai-vision","Analyze images and multi-frame sequences using OpenAI GPT vision models","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M7E1H7DADKB6QBWKC2KQ63SZ","image-ocr","Extract text content from images using Tesseract OCR via Python, including structured field extraction from receipts and forms","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[],{"skillNo":68,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7E1H0WBNT43TENGQY7AVZHD","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":73,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M7E1GTC7D4N4Q2EF03875J9E","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":78,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7E1GQ92CWFMGH53KSSE4WER","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[]]