{
  "schemaVersion": "1.0",
  "item": {
    "slug": "swift-programming",
    "name": "swift-programming",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/saitamawtf/swift-programming",
    "canonicalUrl": "https://clawhub.ai/saitamawtf/swift-programming",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/swift-programming",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=swift-programming",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/swift-programming"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/swift-programming",
    "agentPageUrl": "https://openagent3.xyz/skills/swift-programming/agent",
    "manifestUrl": "https://openagent3.xyz/skills/swift-programming/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/swift-programming/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Swift Programming Skill",
        "body": "Learn and program in Swift - Apple's programming language for iOS, macOS, watchOS, and tvOS."
      },
      {
        "title": "Variables & Constants",
        "body": "var nombre = \"Juan\"          // Variable\nlet edad = 25                 // Constante\nvar mensaje: String = \"Hola\"  // Con tipo explícito"
      },
      {
        "title": "Tipos de Datos",
        "body": "String       // Texto\nInt           // Entero\nDouble        // Decimal\nBool          // true/false\nArray         // Lista\nDictionary    // clave-valor\nOptional      // puede ser nil"
      },
      {
        "title": "Funciones",
        "body": "func saludar(nombre: String) -> String {\n    return \"Hola, \\(nombre)!\"\n}\n\n// Parametro con valor por defecto\nfunc greet(_ name: String = \"Mundo\") -> String {\n    return \"Hola, \\(name)\"\n}"
      },
      {
        "title": "Clases",
        "body": "class Persona {\n    var nombre: String\n    var edad: Int\n    \n    init(nombre: String, edad: Int) {\n        self.nombre = nombre\n        self.edad = edad\n    }\n    \n    func presentar() -> String {\n        return \"Soy \\(nombre) y tengo \\(edad) años\"\n    }\n}"
      },
      {
        "title": "Estructuras",
        "body": "struct Punto {\n    var x: Double\n    var y: Double\n    \n    func distancia() -> Double {\n        return sqrt(x*x + y*y)\n    }\n}"
      },
      {
        "title": "Enums",
        "body": "enum Direction {\n    case north, south, east, west\n}\n\nenum Status {\n    case success(String)\n    case failure(Error)\n}"
      },
      {
        "title": "Optionals",
        "body": "var nombre: String? = nil  // Puede ser nil\n\n// unwrap seguro\nif let nombre = nombre {\n    print(nombre)\n}\n\n// nil coalescing\nlet nombreDefecto = nombre ?? \"Anonimo\"\n\n// optional chaining\nlet longitud = nombre?.count ?? 0"
      },
      {
        "title": "Closures",
        "body": "let suma = { (a: Int, b: Int) -> Int in\n    return a + b\n}\n\n// Syntaxis reducida\nlet multiplicar: (Int, Int) -> Int = { $0 * $1 }"
      },
      {
        "title": "Protocolos",
        "body": "protocol Naming {\n    var name: String { get }\n    func greet() -> String\n}\n\nstruct User: Naming {\n    var name: String\n    \n    func greet() -> String {\n        return \"Hola, \\(name)!\"\n    }\n}"
      },
      {
        "title": "Async/Await",
        "body": "func fetchData() async throws -> Data {\n    let url = URL(string: \"https://api.example.com\")!\n    let (data, _) = try await URLSession.shared.data(from: url)\n    return data\n}\n\n// Llamar\nTask {\n    do {\n        let data = try await fetchData()\n    } catch {\n        print(\"Error: \\(error)\")\n    }\n}"
      },
      {
        "title": "SwiftUI Basics",
        "body": "import SwiftUI\n\nstruct ContentView: View {\n    @State private var count = 0\n    \n    var body: some View {\n        VStack {\n            Text(\"Contador: \\(count)\")\n            Button(\"Incrementar\") {\n                count += 1\n            }\n        }\n    }\n}"
      },
      {
        "title": "Recursos",
        "body": "Apple Swift Docs: https://docs.swift.org/swift-book/\nHacking with Swift: https://www.hackingwithswift.com"
      }
    ],
    "body": "Swift Programming Skill\n\nLearn and program in Swift - Apple's programming language for iOS, macOS, watchOS, and tvOS.\n\nQuick Reference\nVariables & Constants\nvar nombre = \"Juan\"          // Variable\nlet edad = 25                 // Constante\nvar mensaje: String = \"Hola\"  // Con tipo explícito\n\nTipos de Datos\nString       // Texto\nInt           // Entero\nDouble        // Decimal\nBool          // true/false\nArray         // Lista\nDictionary    // clave-valor\nOptional      // puede ser nil\n\nFunciones\nfunc saludar(nombre: String) -> String {\n    return \"Hola, \\(nombre)!\"\n}\n\n// Parametro con valor por defecto\nfunc greet(_ name: String = \"Mundo\") -> String {\n    return \"Hola, \\(name)\"\n}\n\nClases\nclass Persona {\n    var nombre: String\n    var edad: Int\n    \n    init(nombre: String, edad: Int) {\n        self.nombre = nombre\n        self.edad = edad\n    }\n    \n    func presentar() -> String {\n        return \"Soy \\(nombre) y tengo \\(edad) años\"\n    }\n}\n\nEstructuras\nstruct Punto {\n    var x: Double\n    var y: Double\n    \n    func distancia() -> Double {\n        return sqrt(x*x + y*y)\n    }\n}\n\nEnums\nenum Direction {\n    case north, south, east, west\n}\n\nenum Status {\n    case success(String)\n    case failure(Error)\n}\n\nOptionals\nvar nombre: String? = nil  // Puede ser nil\n\n// unwrap seguro\nif let nombre = nombre {\n    print(nombre)\n}\n\n// nil coalescing\nlet nombreDefecto = nombre ?? \"Anonimo\"\n\n// optional chaining\nlet longitud = nombre?.count ?? 0\n\nClosures\nlet suma = { (a: Int, b: Int) -> Int in\n    return a + b\n}\n\n// Syntaxis reducida\nlet multiplicar: (Int, Int) -> Int = { $0 * $1 }\n\nProtocolos\nprotocol Naming {\n    var name: String { get }\n    func greet() -> String\n}\n\nstruct User: Naming {\n    var name: String\n    \n    func greet() -> String {\n        return \"Hola, \\(name)!\"\n    }\n}\n\nAsync/Await\nfunc fetchData() async throws -> Data {\n    let url = URL(string: \"https://api.example.com\")!\n    let (data, _) = try await URLSession.shared.data(from: url)\n    return data\n}\n\n// Llamar\nTask {\n    do {\n        let data = try await fetchData()\n    } catch {\n        print(\"Error: \\(error)\")\n    }\n}\n\nSwiftUI Basics\nimport SwiftUI\n\nstruct ContentView: View {\n    @State private var count = 0\n    \n    var body: some View {\n        VStack {\n            Text(\"Contador: \\(count)\")\n            Button(\"Incrementar\") {\n                count += 1\n            }\n        }\n    }\n}\n\nRecursos\nApple Swift Docs: https://docs.swift.org/swift-book/\nHacking with Swift: https://www.hackingwithswift.com"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/saitamawtf/swift-programming",
    "publisherUrl": "https://clawhub.ai/saitamawtf/swift-programming",
    "owner": "saitamawtf",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/swift-programming",
    "downloadUrl": "https://openagent3.xyz/downloads/swift-programming",
    "agentUrl": "https://openagent3.xyz/skills/swift-programming/agent",
    "manifestUrl": "https://openagent3.xyz/skills/swift-programming/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/swift-programming/agent.md"
  }
}