[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H9AHQGF3RVBXEY1ATZGTBF":3,"skill-same:01M6H9AHQGF3RVBXEY1ATZGTBF":71},{"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":23,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6H9AHQGF3RVBXEY1ATZGTBF","Kotlin",null,"Modern, statically-typed programming language that runs on the JVM and targets Android development with full Java interoperability.","NeuralBlitz\u002FMito","NeuralBlitz","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F79354388?v=4","01M6H8T2TFH477HRS0KTSTKR2E","David Riggs","01M6H8T2YQQDXPYM092P670Z21",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fcomputer-science\u002Fkotlin\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"kotlin","android","development","java","programming language","interoperability","stack","android development","programming","backend","language","full","jvm","programming languages","targets","with","2026-11-10 10:12:30",false,"---\nname: Kotlin\ndescription: Modern, statically-typed programming language that runs on the JVM and targets Android development with full Java interoperability.\nlicense: Apache License 2.0\ncompatibility: Kotlin 1.8+\naudience: Android developers, backend developers, full-stack developers\ncategory: Programming Languages\n---\n\n# Kotlin\n\n## What I do\n\nI am a modern, statically-typed programming language developed by JetBrains, first released in 2011. I run on the JVM, Android, and JavaScript (Kotlin\u002FJS), providing full interoperability with existing Java codebases. I offer concise syntax, null safety, extension functions, data classes, coroutines for asynchronous programming, and smart type inference. I am the officially supported language for Android development and widely used for backend development with Ktor, Spring Boot, and other frameworks.\n\n## When to use me\n\nUse Kotlin when building Android applications, backend APIs with Ktor\u002FSpring Boot, multi-platform applications (JVM, JS, Native), when you need Java interoperability with modern language features, or when building applications with coroutine-based concurrency.\n\n## Core Concepts\n\n- **Null Safety**: Types are non-nullable by default, nullable types use ? suffix, safe calls with ?., Elvis operator ?:\n- **Data Classes**: Classes with automatically generated equals, hashCode, toString, and copy methods.\n- **Extension Functions**: Add methods to existing classes without modifying source code or inheritance.\n- **Lambda Expressions**: Concise syntax for anonymous functions, used extensively in collections.\n- **Smart Casts**: Type checks automatically cast within conditional blocks.\n- **Sealed Classes**: Restricted class hierarchies for representing restricted type hierarchies.\n- **Coroutines**: Asynchronous programming with suspend functions, async\u002Fawait patterns.\n- **Delegation**: Composition over inheritance with by keyword for property delegation.\n- **Type Inference**: Compiler infers types in most situations, reducing verbosity.\n- **Interoperability**: 100% interoperable with Java, can call Java code and vice versa.\n\n## Code Examples\n\n**Null Safety and Smart Casts:**\n```kotlin\nfun main() {\n    val name: String? = null\n    val length: Int = name?.length ?: 0\n    println(\"Length: $length\")\n    \n    val items: List\u003CString?> = listOf(\"hello\", null, \"world\")\n    \n    items.forEach { item ->\n        item?.let {\n            println(\"Item: ${it.uppercase()}\")\n        }\n    }\n    \n    val result = items.mapNotNull { it?.uppercase() }\n    println(\"Result: $result\")\n    \n    fun printLength(str: String?) {\n        if (str != null) {\n            println(\"Length: ${str.length}\")  \u002F\u002F Smart cast to String\n        } else {\n            println(\"String is null\")\n        }\n    }\n    \n    printLength(\"Kotlin\")\n    printLength(null)\n    \n    val value: Any = \"Hello\"\n    if (value is String) {\n        println(\"Length: ${value.length}\")  \u002F\u002F Smart cast\n    }\n    \n    val message: String? = null\n    val nonNullMessage: String = message ?: throw IllegalArgumentException(\"Message required\")\n    println(\"Message: $nonNullMessage\")\n}\n```\n\n**Data Classes and Destructuring:**\n```kotlin\ndata class User(\n    val id: Long,\n    val name: String,\n    val email: String,\n    val age: Int = 0\n)\n\nfun main() {\n    val user = User(1, \"Alice\", \"alice@example.com\", 30)\n    \n    println(user)\n    println(\"Name: ${user.name}\")\n    println(\"Copy with new email: ${user.copy(email = \"new@example.com\")}\")\n    \n    val (id, name, email, age) = user\n    println(\"Destructured: $id, $name, $email, $age\")\n    \n    val users = listOf(\n        User(1, \"Alice\", \"alice@example.com\", 30),\n        User(2, \"Bob\", \"bob@example.com\", 25),\n        User(3, \"Charlie\", \"charlie@example.com\", 35)\n    )\n    \n    users.forEach { (id, name) ->\n        println(\"User $id: $name\")\n    }\n    \n    val updatedUsers = users.map { it.copy(age = it.age + 1) }\n    val sortedByAge = users.sortedByDescending { it.age }\n    val groupedByAge = users.groupBy { it.age \u002F 10 * 10 }\n    \n    println(\"Grouped: $groupedByAge\")\n    \n    data class Point(val x: Int, val y: Int)\n    \n    operator fun Point.plus(other: Point) = Point(x + other.x, y + other.y)\n    val p1 = Point(1, 2)\n    val p2 = Point(3, 4)\n    val p3 = p1 + p2\n    println(\"Point: $p3\")\n}\n```\n\n**Coroutines and Async Programming:**\n```kotlin\nimport kotlinx.coroutines.*\nimport kotlin.system.measureTimeMillis\n\nsuspend fun fetchData(id: Int): String {\n    delay(100)\n    return \"Data for $id\"\n}\n\nsuspend fun fetchMultiple(ids: List\u003CInt>): List\u003CString> = coroutineScope {\n    ids.map { id ->\n        async { fetchData(id) }\n    }.awaitAll()\n}\n\nfun main() = runBlocking {\n    val time = measureTimeMillis {\n        val result = fetchMultiple(listOf(1, 2, 3, 4, 5))\n        println(\"Result: $result\")\n    }\n    println(\"Time: ${time}ms\")\n    \n    launch {\n        for (i in 1..5) {\n            delay(100)\n            println(\"Coroutine: $i\")\n        }\n    }\n    \n    val job = launch {\n        try {\n            repeat(10) { i ->\n                delay(50)\n                if (i == 3) throw CancellationException()\n                println(\"Task: $i\")\n            }\n        } finally {\n            println(\"Cleanup\")\n        }\n    }\n    \n    job.join()\n    \n    withTimeoutOrNull(200) {\n        repeat(10) { i ->\n            delay(30)\n            println(\"Timeout task: $i\")\n        }\n    } ?: println(\"Timed out\")\n    \n    val asyncResult = async {\n        delay(100)\n        \"Async result\"\n    }\n    println(\"Result: ${asyncResult.await()}\")\n}\n```\n\n**Extension Functions and Interfaces:**\n```kotlin\nfun String.uppercaseFirst(): String {\n    return if (isNotEmpty()) {\n        this[0].uppercaseChar().toString() + substring(1)\n    } else {\n        this\n    }\n}\n\nfun \u003CT> List\u003CT>.second(): T? = getOrNull(1)\n\nfun Int.isEven(): Boolean = this % 2 == 0\n\nfun ClosedRange\u003CInt>.random(): Int = (this.first..this.last).random()\n\ninterface Logger {\n    fun log(message: String)\n}\n\nclass ConsoleLogger : Logger {\n    override fun log(message: String) {\n        println(\"[${java.time.LocalDateTime.now()}] $message\")\n    }\n}\n\nclass User(\n    val id: Long,\n    val name: String\n) {\n    private val logger: Logger by lazy { ConsoleLogger() }\n    \n    fun save() {\n        logger.log(\"Saving user $id\")\n    }\n}\n\ninterface Repository\u003CT> {\n    fun findById(id: Long): T?\n    fun save(entity: T): T\n}\n\nclass InMemoryRepository\u003CT : HasId> : Repository\u003CT> {\n    private val map = mutableMapOf\u003CLong, T>()\n    \n    override fun findById(id: Long): T? = map[id]\n    \n    override fun save(entity: T): T {\n        map[entity.id] = entity\n        return entity\n    }\n}\n\ninterface HasId {\n    val id: Long\n}\n\nfun main() {\n    println(\"hello\".uppercaseFirst())\n    println(listOf(1, 2, 3).second())\n    println(4.isEven())\n    println((1..10).random())\n    \n    val user = User(1, \"Alice\")\n    user.save()\n}\n```\n\n## Best Practices\n\n1. **Use val by Default**: Use val for immutable properties, var only when reassignment is necessary.\n2. **Prefer Data Classes Over Lombok**: Use Kotlin data classes instead of Lombok annotations for cleaner code.\n3. **Use Extension Functions Wisely**: Use extensions to add utility methods without modifying original classes.\n4. **Leverage Default Arguments**: Use default arguments instead of function overloads.\n5. **Use Coroutines for Async**: Prefer coroutines and suspend functions over callbacks and threads.\n6. **Use sealed Classes for State**: Use sealed classes to represent UI states or state machines.\n7. **Use lateinit for late Initialization**: Use lateinit for properties initialized after construction.\n8. **Prefer apply\u002Flet\u002Frun**: Use appropriate scope functions (apply, let, run, with, also) for cleaner code.\n9. **Use Type Aliases for Readability**: Create type aliases for frequently used function types.\n10. **Write Tests with JUnit 5\u002FKotest**: Use JUnit 5 or Kotest for unit and property-based testing.\n","# Kotlin\n\n## What I do\n\nI am a modern, statically-typed programming language developed by JetBrains, first released in 2011. I run on the JVM, Android, and JavaScript (Kotlin\u002FJS), providing full interoperability with existing Java codebases. I offer concise syntax, null safety, extension functions, data classes, coroutines for asynchronous programming, and smart type inference. I am the officially supported language for Android development and widely used for backend development with Ktor, Spring Boot, and other frameworks.\n\n## When to use me\n\nUse Kotlin when building Android applications, backend APIs with Ktor\u002FSpring Boot, multi-platform applications (JVM, JS, Native), when you need Java interoperability with modern language features, or when building applications with coroutine-based concurrency.\n\n## Core Concepts\n\n- **Null Safety**: Types are non-nullable by default, nullable types use ? suffix, safe calls with ?., Elvis operator ?:\n- **Data Classes**: Classes with automatically generated equals, hashCode, toString, and copy methods.\n- **Extension Functions**: Add methods to existing classes without modifying source code or inheritance.\n- **Lambda Expressions**: Concise syntax for anonymous functions, used extensively in collections.\n- **Smart Casts**: Type checks automatically cast within conditional blocks.\n- **Sealed Classes**: Restricted class hierarchies for representing restricted type hierarchies.\n- **Coroutines**: Asynchronous programming with suspend functions, async\u002Fawait patterns.\n- **Delegation**: Composition over inheritance with by keyword for property delegation.\n- **Type Inference**: Compiler infers types in most situations, reducing verbosity.\n- **Interoperability**: 100% interoperable with Java, can call Java code and vice versa.\n\n## Code Examples\n\n**Null Safety and Smart Casts:**\n```kotlin\nfun main() {\n    val name: String? = null\n    val length: Int = name?.length ?: 0\n    println(\"Length: $length\")\n    \n    val items: List\u003CString?> = listOf(\"hello\", null, \"world\")\n    \n    items.forEach { item ->\n        item?.let {\n            println(\"Item: ${it.uppercase()}\")\n        }\n    }\n    \n    val result = items.mapNotNull { it?.uppercase() }\n    println(\"Result: $result\")\n    \n    fun printLength(str: String?) {\n        if (str != null) {\n            println(\"Length: ${str.length}\")  \u002F\u002F Smart cast to String\n        } else {\n            println(\"String is null\")\n        }\n    }\n    \n    printLength(\"Kotlin\")\n    printLength(null)\n    \n    val value: Any = \"Hello\"\n    if (value is String) {\n        println(\"Length: ${value.length}\")  \u002F\u002F Smart cast\n    }\n    \n    val message: String? = null\n    val nonNullMessage: String = message ?: throw IllegalArgumentException(\"Message required\")\n    println(\"Message: $nonNullMessage\")\n}\n```\n\n**Data Classes and Destructuring:**\n```kotlin\ndata class User(\n    val id: Long,\n    val name: String,\n    val email: String,\n    val age: Int = 0\n)\n\nfun main() {\n    val user = User(1, \"Alice\", \"alice@example.com\", 30)\n    \n    println(user)\n    println(\"Name: ${user.name}\")\n    println(\"Copy with new email: ${user.copy(email = \"new@example.com\")}\")\n    \n    val (id, name, email, age) = user\n    println(\"Destructured: $id, $name, $email, $age\")\n    \n    val users = listOf(\n        User(1, \"Alice\", \"alice@example.com\", 30),\n        User(2, \"Bob\", \"bob@example.com\", 25),\n        User(3, \"Charlie\", \"charlie@example.com\", 35)\n    )\n    \n    users.forEach { (id, name) ->\n        println(\"User $id: $name\")\n    }\n    \n    val updatedUsers = users.map { it.copy(age = it.age + 1) }\n    val sortedByAge = users.sortedByDescending { it.age }\n    val groupedByAge = users.groupBy { it.age \u002F 10 * 10 }\n    \n    println(\"Grouped: $groupedByAge\")\n    \n    data class Point(val x: Int, val y: Int)\n    \n    operator fun Point.plus(other: Point) = Point(x + other.x, y + other.y)\n    val p1 = Point(1, 2)\n    val p2 = Point(3, 4)\n    val p3 = p1 + p2\n    println(\"Point: $p3\")\n}\n```\n\n**Coroutines and Async Programming:**\n```kotlin\nimport kotlinx.coroutines.*\nimport kotlin.system.measureTimeMillis\n\nsuspend fun fetchData(id: Int): String {\n    delay(100)\n    return \"Data for $id\"\n}\n\nsuspend fun fetchMultiple(ids: List\u003CInt>): List\u003CString> = coroutineScope {\n    ids.map { id ->\n        async { fetchData(id) }\n    }.awaitAll()\n}\n\nfun main() = runBlocking {\n    val time = measureTimeMillis {\n        val result = fetchMultiple(listOf(1, 2, 3, 4, 5))\n        println(\"Result: $result\")\n    }\n    println(\"Time: ${time}ms\")\n    \n    launch {\n        for (i in 1..5) {\n            delay(100)\n            println(\"Coroutine: $i\")\n        }\n    }\n    \n    val job = launch {\n        try {\n            repeat(10) { i ->\n                delay(50)\n                if (i == 3) throw CancellationException()\n                println(\"Task: $i\")\n            }\n        } finally {\n            println(\"Cleanup\")\n        }\n    }\n    \n    job.join()\n    \n    withTimeoutOrNull(200) {\n        repeat(10) { i ->\n            delay(30)\n            println(\"Timeout task: $i\")\n        }\n    } ?: println(\"Timed out\")\n    \n    val asyncResult = async {\n        delay(100)\n        \"Async result\"\n    }\n    println(\"Result: ${asyncResult.await()}\")\n}\n```\n\n**Extension Functions and Interfaces:**\n```kotlin\nfun String.uppercaseFirst(): String {\n    return if (isNotEmpty()) {\n        this[0].uppercaseChar().toString() + substring(1)\n    } else {\n        this\n    }\n}\n\nfun \u003CT> List\u003CT>.second(): T? = getOrNull(1)\n\nfun Int.isEven(): Boolean = this % 2 == 0\n\nfun ClosedRange\u003CInt>.random(): Int = (this.first..this.last).random()\n\ninterface Logger {\n    fun log(message: String)\n}\n\nclass ConsoleLogger : Logger {\n    override fun log(message: String) {\n        println(\"[${java.time.LocalDateTime.now()}] $message\")\n    }\n}\n\nclass User(\n    val id: Long,\n    val name: String\n) {\n    private val logger: Logger by lazy { ConsoleLogger() }\n    \n    fun save() {\n        logger.log(\"Saving user $id\")\n    }\n}\n\ninterface Repository\u003CT> {\n    fun findById(id: Long): T?\n    fun save(entity: T): T\n}\n\nclass InMemoryRepository\u003CT : HasId> : Repository\u003CT> {\n    private val map = mutableMapOf\u003CLong, T>()\n    \n    override fun findById(id: Long): T? = map[id]\n    \n    override fun save(entity: T): T {\n        map[entity.id] = entity\n        return entity\n    }\n}\n\ninterface HasId {\n    val id: Long\n}\n\nfun main() {\n    println(\"hello\".uppercaseFirst())\n    println(listOf(1, 2, 3).second())\n    println(4.isEven())\n    println((1..10).random())\n    \n    val user = User(1, \"Alice\")\n    user.save()\n}\n```\n\n## Best Practices\n\n1. **Use val by Default**: Use val for immutable properties, var only when reassignment is necessary.\n2. **Prefer Data Classes Over Lombok**: Use Kotlin data classes instead of Lombok annotations for cleaner code.\n3. **Use Extension Functions Wisely**: Use extensions to add utility methods without modifying original classes.\n4. **Leverage Default Arguments**: Use default arguments instead of function overloads.\n5. **Use Coroutines for Async**: Prefer coroutines and suspend functions over callbacks and threads.\n6. **Use sealed Classes for State**: Use sealed classes to represent UI states or state machines.\n7. **Use lateinit for late Initialization**: Use lateinit for properties initialized after construction.\n8. **Prefer apply\u002Flet\u002Frun**: Use appropriate scope functions (apply, let, run, with, also) for cleaner code.\n9. **Use Type Aliases for Readability**: Create type aliases for frequently used function types.\n10. **Write Tests with JUnit 5\u002FKotest**: Use JUnit 5 or Kotest for unit and property-based testing.\n",{"name":5,"license":45,"audience":46,"category":47,"description":7,"compatibility":48},"Apache License 2.0","Android developers, backend developers, full-stack developers","Programming Languages","Kotlin 1.8+","main","2ea764e153842704d24a2e9aa4170441a7f03081",".opencode\u002Fskills\u002Fcomputer-science\u002Fkotlin","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito","https:\u002F\u002Fgithub.com\u002FNeuralBlitz","nuralnexus.org","Independent Multidisciplinary Researcher, Creative Producer, and AI Systems Architect\r\nAn independent creator and research-driven systems designer.","2026-11-12 03:13:05",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add NeuralBlitz\u002FMito --skill Kotlin",{"tool":63,"command":64},"bunx","bunx skills add NeuralBlitz\u002FMito --skill Kotlin",{"tool":66,"command":67},"pnpm","pnpm dlx skills add NeuralBlitz\u002FMito --skill Kotlin","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fcomputer-science\u002Fkotlin\u002FSKILL.md",true,[],[72,90,103,116,124,147],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":40},"01M6HAZSAQK1S27CEZYAYJTQDX","wireless-communications","Wireless systems, mobile networks, and 5G\u002F6G","MIT","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fwireless-communications\u002FSKILL.md",[],[80,81,82,83,84,85,86,87,88,89],"communications","wireless communications","wireless","systems","engineering","networks","5G","students","opencode","mobile",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":40},"01M6HAZFX6E8NK3WZWDX5YCKYY","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fwebassembly\u002Fwebsockets\u002FSKILL.md",[],[92,97,98,99,88,100,101,102],"websocket implementation","time","implementation","real-time","websocket","best practices",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":40},"01M6HAZ6DAXBQ7QHXXM1EM7715","vulnerability-auditing","Vulnerability assessment and auditing","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fvulnerability-auditing\u002FSKILL.md",[],[110,111,112,113,88,114,115],"vulnerability","vulnerability auditing","security","vulnerability assessment","cybersecurity","assessment",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":40},"01M6HAZ3FKF3CS9Z3J96RVE2ZE","vulnerability-assessment","Finding and assessing security vulnerabilities","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fvue\u002Fvulnerability-assessment\u002FSKILL.md",[],[113,110,115,112,123,88],"vulnerabilities",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":138,"publishedAt":40},"01M6HAYSHM6HKRKEHFP0SGZQX7","vlsi-design","Very-Large-Scale Integration circuit design and semiconductor engineering","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fvlsi-design\u002FSKILL.md",[130,135],{"categoryNo":131,"categoryName":132,"taxonomyType":133,"taxonomyTypeDesc":134},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":136,"categoryName":137,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000032","设计师",[139,140,141,142,143,84,144,88,145,87,146],"vlsi design","VLSI","design","hardware","integration","computer","scale","circuit",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":40},"01M6HAYPQ30FFE2JXD7WQJ8R6C","unsupervised","Unsupervised learning concepts","https:\u002F\u002Fgithub.com\u002FNeuralBlitz\u002FMito\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fvisualization\u002Funsupervised\u002FSKILL.md",[],[149,154,88,155,156,157,158,159],"learning","intelligence","unsupervised learning","machine","concepts","machine-learning"]