[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BS8MXB08FDXYAMT07RV9ZK":3,"skill-same:01M7BS8MXB08FDXYAMT07RV9ZK":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},"01M7BS8MXB08FDXYAMT07RV9ZK","python-scala-oop",null,"Guide for translating Python classes, inheritance, and object-oriented patterns to Scala. Use when converting Python code with classes, dataclasses, abstract classes, inheritance, properties, static methods, class methods, or design patterns.","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\u002FHumanAnnotated-CrossModel-10Tasks-20261008\u002Fgemini31\u002Ftasks\u002Fpython-scala-translation\u002Foriginal_skill\u002Fpython-scala-oop\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: python-scala-oop\ndescription: Guide for translating Python classes, inheritance, and object-oriented patterns to Scala. Use when converting Python code with classes, dataclasses, abstract classes, inheritance, properties, static methods, class methods, or design patterns.\n---\n\n# Python to Scala OOP Translation\n\n## Basic Classes\n\n```python\n# Python\nclass Person:\n    def __init__(self, name: str, age: int):\n        self.name = name\n        self.age = age\n\n    def greet(self) -> str:\n        return f\"Hello, I'm {self.name}\"\n```\n\n```scala\n\u002F\u002F Scala\nclass Person(val name: String, val age: Int) {\n  def greet: String = s\"Hello, I'm $name\"\n}\n\n\u002F\u002F Usage\nval person = new Person(\"Alice\", 30)  \u002F\u002F 'new' required for class\n```\n\n## Data Classes → Case Classes\n\n```python\n# Python\nfrom dataclasses import dataclass\n\n@dataclass\nclass Point:\n    x: float\n    y: float\n\n@dataclass(frozen=True)\nclass ImmutablePoint:\n    x: float\n    y: float\n```\n\n```scala\n\u002F\u002F Scala - case class is idiomatic\ncase class Point(x: Double, y: Double)\n\n\u002F\u002F Case classes are immutable by default\n\u002F\u002F They auto-generate: equals, hashCode, toString, copy, apply\n\n\u002F\u002F Usage\nval p = Point(1.0, 2.0)  \u002F\u002F No 'new' needed for case class\nval p2 = p.copy(x = 3.0)  \u002F\u002F Creates new instance with x changed\n```\n\n## Properties\n\n```python\n# Python\nclass Circle:\n    def __init__(self, radius: float):\n        self._radius = radius\n\n    @property\n    def radius(self) -> float:\n        return self._radius\n\n    @radius.setter\n    def radius(self, value: float):\n        if value \u003C 0:\n            raise ValueError(\"Radius must be non-negative\")\n        self._radius = value\n\n    @property\n    def area(self) -> float:\n        return 3.14159 * self._radius ** 2\n```\n\n```scala\n\u002F\u002F Scala\nclass Circle(private var _radius: Double) {\n  require(_radius >= 0, \"Radius must be non-negative\")\n\n  def radius: Double = _radius\n\n  def radius_=(value: Double): Unit = {\n    require(value >= 0, \"Radius must be non-negative\")\n    _radius = value\n  }\n\n  def area: Double = math.Pi * _radius * _radius\n}\n\n\u002F\u002F Idiomatic Scala: prefer immutable case class\ncase class Circle(radius: Double) {\n  require(radius >= 0, \"Radius must be non-negative\")\n  def area: Double = math.Pi * radius * radius\n}\n```\n\n## Inheritance\n\n```python\n# Python\nclass Animal:\n    def __init__(self, name: str):\n        self.name = name\n\n    def speak(self) -> str:\n        raise NotImplementedError\n\nclass Dog(Animal):\n    def speak(self) -> str:\n        return f\"{self.name} says woof!\"\n\nclass Cat(Animal):\n    def speak(self) -> str:\n        return f\"{self.name} says meow!\"\n```\n\n```scala\n\u002F\u002F Scala\nabstract class Animal(val name: String) {\n  def speak: String  \u002F\u002F Abstract method\n}\n\nclass Dog(name: String) extends Animal(name) {\n  override def speak: String = s\"$name says woof!\"\n}\n\nclass Cat(name: String) extends Animal(name) {\n  override def speak: String = s\"$name says meow!\"\n}\n```\n\n## Abstract Classes and Interfaces\n\n```python\n# Python\nfrom abc import ABC, abstractmethod\n\nclass Shape(ABC):\n    @abstractmethod\n    def area(self) -> float:\n        pass\n\n    @abstractmethod\n    def perimeter(self) -> float:\n        pass\n\n    def describe(self) -> str:\n        return f\"Area: {self.area()}, Perimeter: {self.perimeter()}\"\n```\n\n```scala\n\u002F\u002F Scala - abstract class\nabstract class Shape {\n  def area: Double\n  def perimeter: Double\n  def describe: String = s\"Area: $area, Perimeter: $perimeter\"\n}\n\n\u002F\u002F Scala - trait (preferred for interfaces)\ntrait Shape {\n  def area: Double\n  def perimeter: Double\n  def describe: String = s\"Area: $area, Perimeter: $perimeter\"\n}\n\n\u002F\u002F Implementation\ncase class Rectangle(width: Double, height: Double) extends Shape {\n  def area: Double = width * height\n  def perimeter: Double = 2 * (width + height)\n}\n```\n\n## Multiple Inheritance → Traits\n\n```python\n# Python\nclass Flyable:\n    def fly(self) -> str:\n        return \"Flying!\"\n\nclass Swimmable:\n    def swim(self) -> str:\n        return \"Swimming!\"\n\nclass Duck(Animal, Flyable, Swimmable):\n    def speak(self) -> str:\n        return \"Quack!\"\n```\n\n```scala\n\u002F\u002F Scala - use traits for mixins\ntrait Flyable {\n  def fly: String = \"Flying!\"\n}\n\ntrait Swimmable {\n  def swim: String = \"Swimming!\"\n}\n\nclass Duck(name: String) extends Animal(name) with Flyable with Swimmable {\n  override def speak: String = \"Quack!\"\n}\n```\n\n## Static Methods and Class Methods\n\n```python\n# Python\nclass MathUtils:\n    PI = 3.14159\n\n    @staticmethod\n    def add(a: int, b: int) -> int:\n        return a + b\n\n    @classmethod\n    def from_string(cls, s: str) -> \"MathUtils\":\n        return cls()\n```\n\n```scala\n\u002F\u002F Scala - use companion object\nclass MathUtils {\n  \u002F\u002F Instance methods here\n}\n\nobject MathUtils {\n  val PI: Double = 3.14159\n\n  def add(a: Int, b: Int): Int = a + b\n\n  def fromString(s: String): MathUtils = new MathUtils()\n}\n\n\u002F\u002F Usage\nMathUtils.add(1, 2)\nMathUtils.PI\n```\n\n## Factory Pattern\n\n```python\n# Python\nclass Shape:\n    @staticmethod\n    def create(shape_type: str) -> \"Shape\":\n        if shape_type == \"circle\":\n            return Circle()\n        elif shape_type == \"rectangle\":\n            return Rectangle()\n        raise ValueError(f\"Unknown shape: {shape_type}\")\n```\n\n```scala\n\u002F\u002F Scala - companion object with apply\nsealed trait Shape\n\ncase class Circle(radius: Double) extends Shape\ncase class Rectangle(width: Double, height: Double) extends Shape\n\nobject Shape {\n  def apply(shapeType: String): Shape = shapeType match {\n    case \"circle\" => Circle(1.0)\n    case \"rectangle\" => Rectangle(1.0, 1.0)\n    case other => throw new IllegalArgumentException(s\"Unknown shape: $other\")\n  }\n}\n\n\u002F\u002F Usage\nval shape = Shape(\"circle\")\n```\n\n## Enums\n\n```python\n# Python\nfrom enum import Enum, auto\n\nclass Color(Enum):\n    RED = auto()\n    GREEN = auto()\n    BLUE = auto()\n\nclass Status(Enum):\n    PENDING = \"pending\"\n    APPROVED = \"approved\"\n    REJECTED = \"rejected\"\n```\n\n```scala\n\u002F\u002F Scala 3\nenum Color:\n  case Red, Green, Blue\n\nenum Status(val value: String):\n  case Pending extends Status(\"pending\")\n  case Approved extends Status(\"approved\")\n  case Rejected extends Status(\"rejected\")\n\n\u002F\u002F Scala 2 - sealed trait pattern\nsealed trait Color\nobject Color {\n  case object Red extends Color\n  case object Green extends Color\n  case object Blue extends Color\n}\n```\n\n## Singleton\n\n```python\n# Python\nclass Singleton:\n    _instance = None\n\n    def __new__(cls):\n        if cls._instance is None:\n            cls._instance = super().__new__(cls)\n        return cls._instance\n```\n\n```scala\n\u002F\u002F Scala - object is a singleton\nobject Singleton {\n  def doSomething(): Unit = println(\"I'm a singleton!\")\n}\n\n\u002F\u002F Usage\nSingleton.doSomething()\n```\n\n## Special Methods (Dunder Methods)\n\n| Python | Scala |\n|--------|-------|\n| `__init__` | Primary constructor |\n| `__str__` | `toString` |\n| `__repr__` | `toString` (case classes auto-generate) |\n| `__eq__` | `equals` (case classes auto-generate) |\n| `__hash__` | `hashCode` (case classes auto-generate) |\n| `__len__` | `length` or `size` method |\n| `__getitem__` | `apply` method |\n| `__setitem__` | `update` method |\n| `__iter__` | Extend `Iterable` trait |\n| `__add__` | `+` method |\n| `__lt__`, `__le__`, etc. | Extend `Ordered` trait |\n\n```python\n# Python\nclass Vector:\n    def __init__(self, x, y):\n        self.x = x\n        self.y = y\n\n    def __add__(self, other):\n        return Vector(self.x + other.x, self.y + other.y)\n\n    def __str__(self):\n        return f\"Vector({self.x}, {self.y})\"\n```\n\n```scala\n\u002F\u002F Scala\ncase class Vector(x: Double, y: Double) {\n  def +(other: Vector): Vector = Vector(x + other.x, y + other.y)\n  \u002F\u002F toString auto-generated by case class\n}\n```\n","# Python to Scala OOP Translation\n\n## Basic Classes\n\n```python\n# Python\nclass Person:\n    def __init__(self, name: str, age: int):\n        self.name = name\n        self.age = age\n\n    def greet(self) -> str:\n        return f\"Hello, I'm {self.name}\"\n```\n\n```scala\n\u002F\u002F Scala\nclass Person(val name: String, val age: Int) {\n  def greet: String = s\"Hello, I'm $name\"\n}\n\n\u002F\u002F Usage\nval person = new Person(\"Alice\", 30)  \u002F\u002F 'new' required for class\n```\n\n## Data Classes → Case Classes\n\n```python\n# Python\nfrom dataclasses import dataclass\n\n@dataclass\nclass Point:\n    x: float\n    y: float\n\n@dataclass(frozen=True)\nclass ImmutablePoint:\n    x: float\n    y: float\n```\n\n```scala\n\u002F\u002F Scala - case class is idiomatic\ncase class Point(x: Double, y: Double)\n\n\u002F\u002F Case classes are immutable by default\n\u002F\u002F They auto-generate: equals, hashCode, toString, copy, apply\n\n\u002F\u002F Usage\nval p = Point(1.0, 2.0)  \u002F\u002F No 'new' needed for case class\nval p2 = p.copy(x = 3.0)  \u002F\u002F Creates new instance with x changed\n```\n\n## Properties\n\n```python\n# Python\nclass Circle:\n    def __init__(self, radius: float):\n        self._radius = radius\n\n    @property\n    def radius(self) -> float:\n        return self._radius\n\n    @radius.setter\n    def radius(self, value: float):\n        if value \u003C 0:\n            raise ValueError(\"Radius must be non-negative\")\n        self._radius = value\n\n    @property\n    def area(self) -> float:\n        return 3.14159 * self._radius ** 2\n```\n\n```scala\n\u002F\u002F Scala\nclass Circle(private var _radius: Double) {\n  require(_radius >= 0, \"Radius must be non-negative\")\n\n  def radius: Double = _radius\n\n  def radius_=(value: Double): Unit = {\n    require(value >= 0, \"Radius must be non-negative\")\n    _radius = value\n  }\n\n  def area: Double = math.Pi * _radius * _radius\n}\n\n\u002F\u002F Idiomatic Scala: prefer immutable case class\ncase class Circle(radius: Double) {\n  require(radius >= 0, \"Radius must be non-negative\")\n  def area: Double = math.Pi * radius * radius\n}\n```\n\n## Inheritance\n\n```python\n# Python\nclass Animal:\n    def __init__(self, name: str):\n        self.name = name\n\n    def speak(self) -> str:\n        raise NotImplementedError\n\nclass Dog(Animal):\n    def speak(self) -> str:\n        return f\"{self.name} says woof!\"\n\nclass Cat(Animal):\n    def speak(self) -> str:\n        return f\"{self.name} says meow!\"\n```\n\n```scala\n\u002F\u002F Scala\nabstract class Animal(val name: String) {\n  def speak: String  \u002F\u002F Abstract method\n}\n\nclass Dog(name: String) extends Animal(name) {\n  override def speak: String = s\"$name says woof!\"\n}\n\nclass Cat(name: String) extends Animal(name) {\n  override def speak: String = s\"$name says meow!\"\n}\n```\n\n## Abstract Classes and Interfaces\n\n```python\n# Python\nfrom abc import ABC, abstractmethod\n\nclass Shape(ABC):\n    @abstractmethod\n    def area(self) -> float:\n        pass\n\n    @abstractmethod\n    def perimeter(self) -> float:\n        pass\n\n    def describe(self) -> str:\n        return f\"Area: {self.area()}, Perimeter: {self.perimeter()}\"\n```\n\n```scala\n\u002F\u002F Scala - abstract class\nabstract class Shape {\n  def area: Double\n  def perimeter: Double\n  def describe: String = s\"Area: $area, Perimeter: $perimeter\"\n}\n\n\u002F\u002F Scala - trait (preferred for interfaces)\ntrait Shape {\n  def area: Double\n  def perimeter: Double\n  def describe: String = s\"Area: $area, Perimeter: $perimeter\"\n}\n\n\u002F\u002F Implementation\ncase class Rectangle(width: Double, height: Double) extends Shape {\n  def area: Double = width * height\n  def perimeter: Double = 2 * (width + height)\n}\n```\n\n## Multiple Inheritance → Traits\n\n```python\n# Python\nclass Flyable:\n    def fly(self) -> str:\n        return \"Flying!\"\n\nclass Swimmable:\n    def swim(self) -> str:\n        return \"Swimming!\"\n\nclass Duck(Animal, Flyable, Swimmable):\n    def speak(self) -> str:\n        return \"Quack!\"\n```\n\n```scala\n\u002F\u002F Scala - use traits for mixins\ntrait Flyable {\n  def fly: String = \"Flying!\"\n}\n\ntrait Swimmable {\n  def swim: String = \"Swimming!\"\n}\n\nclass Duck(name: String) extends Animal(name) with Flyable with Swimmable {\n  override def speak: String = \"Quack!\"\n}\n```\n\n## Static Methods and Class Methods\n\n```python\n# Python\nclass MathUtils:\n    PI = 3.14159\n\n    @staticmethod\n    def add(a: int, b: int) -> int:\n        return a + b\n\n    @classmethod\n    def from_string(cls, s: str) -> \"MathUtils\":\n        return cls()\n```\n\n```scala\n\u002F\u002F Scala - use companion object\nclass MathUtils {\n  \u002F\u002F Instance methods here\n}\n\nobject MathUtils {\n  val PI: Double = 3.14159\n\n  def add(a: Int, b: Int): Int = a + b\n\n  def fromString(s: String): MathUtils = new MathUtils()\n}\n\n\u002F\u002F Usage\nMathUtils.add(1, 2)\nMathUtils.PI\n```\n\n## Factory Pattern\n\n```python\n# Python\nclass Shape:\n    @staticmethod\n    def create(shape_type: str) -> \"Shape\":\n        if shape_type == \"circle\":\n            return Circle()\n        elif shape_type == \"rectangle\":\n            return Rectangle()\n        raise ValueError(f\"Unknown shape: {shape_type}\")\n```\n\n```scala\n\u002F\u002F Scala - companion object with apply\nsealed trait Shape\n\ncase class Circle(radius: Double) extends Shape\ncase class Rectangle(width: Double, height: Double) extends Shape\n\nobject Shape {\n  def apply(shapeType: String): Shape = shapeType match {\n    case \"circle\" => Circle(1.0)\n    case \"rectangle\" => Rectangle(1.0, 1.0)\n    case other => throw new IllegalArgumentException(s\"Unknown shape: $other\")\n  }\n}\n\n\u002F\u002F Usage\nval shape = Shape(\"circle\")\n```\n\n## Enums\n\n```python\n# Python\nfrom enum import Enum, auto\n\nclass Color(Enum):\n    RED = auto()\n    GREEN = auto()\n    BLUE = auto()\n\nclass Status(Enum):\n    PENDING = \"pending\"\n    APPROVED = \"approved\"\n    REJECTED = \"rejected\"\n```\n\n```scala\n\u002F\u002F Scala 3\nenum Color:\n  case Red, Green, Blue\n\nenum Status(val value: String):\n  case Pending extends Status(\"pending\")\n  case Approved extends Status(\"approved\")\n  case Rejected extends Status(\"rejected\")\n\n\u002F\u002F Scala 2 - sealed trait pattern\nsealed trait Color\nobject Color {\n  case object Red extends Color\n  case object Green extends Color\n  case object Blue extends Color\n}\n```\n\n## Singleton\n\n```python\n# Python\nclass Singleton:\n    _instance = None\n\n    def __new__(cls):\n        if cls._instance is None:\n            cls._instance = super().__new__(cls)\n        return cls._instance\n```\n\n```scala\n\u002F\u002F Scala - object is a singleton\nobject Singleton {\n  def doSomething(): Unit = println(\"I'm a singleton!\")\n}\n\n\u002F\u002F Usage\nSingleton.doSomething()\n```\n\n## Special Methods (Dunder Methods)\n\n| Python | Scala |\n|--------|-------|\n| `__init__` | Primary constructor |\n| `__str__` | `toString` |\n| `__repr__` | `toString` (case classes auto-generate) |\n| `__eq__` | `equals` (case classes auto-generate) |\n| `__hash__` | `hashCode` (case classes auto-generate) |\n| `__len__` | `length` or `size` method |\n| `__getitem__` | `apply` method |\n| `__setitem__` | `update` method |\n| `__iter__` | Extend `Iterable` trait |\n| `__add__` | `+` method |\n| `__lt__`, `__le__`, etc. | Extend `Ordered` trait |\n\n```python\n# Python\nclass Vector:\n    def __init__(self, x, y):\n        self.x = x\n        self.y = y\n\n    def __add__(self, other):\n        return Vector(self.x + other.x, self.y + other.y)\n\n    def __str__(self):\n        return f\"Vector({self.x}, {self.y})\"\n```\n\n```scala\n\u002F\u002F Scala\ncase class Vector(x: Double, y: Double) {\n  def +(other: Vector): Vector = Vector(x + other.x, y + other.y)\n  \u002F\u002F toString auto-generated by case class\n}\n```\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","evaluation\u002Fresults\u002FHumanAnnotated-CrossModel-10Tasks-20261008\u002Fgemini31\u002Ftasks\u002Fpython-scala-translation\u002Foriginal_skill\u002Fpython-scala-oop",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-oop",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill python-scala-oop",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill python-scala-oop","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fevaluation\u002Fresults\u002FHumanAnnotated-CrossModel-10Tasks-20261008\u002Fgemini31\u002Ftasks\u002Fpython-scala-translation\u002Foriginal_skill\u002Fpython-scala-oop\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",[],[]]