{
  "schemaVersion": "1.0",
  "item": {
    "slug": "kernel",
    "name": "Kernel",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/ivangdavila/kernel",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/kernel",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/kernel",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=kernel",
    "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-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/kernel"
    },
    "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/kernel",
    "agentPageUrl": "https://openagent3.xyz/skills/kernel/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kernel/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kernel/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": "Atomic Context Traps",
        "body": "spin_lock held = cannot sleep — no kmalloc(GFP_KERNEL), no mutex_lock, no copy_from_user\nInterrupt can take same spinlock — must use spin_lock_irqsave, not plain spin_lock\nrcu_read_lock() section cannot sleep — no blocking calls inside RCU read-side\nmight_sleep() annotation — add to functions that may sleep, catches bugs with CONFIG_DEBUG_ATOMIC_SLEEP"
      },
      {
        "title": "Allocation Failures",
        "body": "GFP_ATOMIC can return NULL — always check, don't assume success\nvmalloc memory not physically contiguous — cannot use for DMA\nkzalloc over kmalloc — uninitialized memory leaks kernel info to userspace\nAllocation in loop risks OOM — preallocate or use memory pool"
      },
      {
        "title": "User Pointer Handling",
        "body": "copy_from_user returns bytes NOT copied — 0 means success, not failure\nNever use %s with user pointer in printk — kernel crash or info leak\nUser memory can change during syscall — copy to kernel buffer, validate the copy\n__user annotation is documentation — doesn't enforce anything, you must use copy functions"
      },
      {
        "title": "Memory Ordering",
        "body": "READ_ONCE/WRITE_ONCE for lockless shared data — prevents compiler from caching/reordering\nSpinlock release has implicit barrier — but check-then-act patterns still need care\nsmp_wmb() before publishing pointer — ensures data visible before pointer is"
      },
      {
        "title": "Module Error Paths",
        "body": "Init fails midway — must undo everything already done\nReverse order cleanup — unregister in opposite order of register\ngoto err_* pattern standard — cleaner than nested ifs\nCheck what's actually initialized — don't free/unregister what wasn't set up"
      },
      {
        "title": "Locking Mistakes",
        "body": "Same lock acquired twice = deadlock — even in different functions\nInconsistent lock ordering — document order, acquire in same sequence everywhere\nmutex_trylock returns 1 on success — opposite of pthread_mutex_trylock\nReader-writer locks rarely worth it — contention overhead usually exceeds benefit"
      }
    ],
    "body": "Atomic Context Traps\nspin_lock held = cannot sleep — no kmalloc(GFP_KERNEL), no mutex_lock, no copy_from_user\nInterrupt can take same spinlock — must use spin_lock_irqsave, not plain spin_lock\nrcu_read_lock() section cannot sleep — no blocking calls inside RCU read-side\nmight_sleep() annotation — add to functions that may sleep, catches bugs with CONFIG_DEBUG_ATOMIC_SLEEP\nAllocation Failures\nGFP_ATOMIC can return NULL — always check, don't assume success\nvmalloc memory not physically contiguous — cannot use for DMA\nkzalloc over kmalloc — uninitialized memory leaks kernel info to userspace\nAllocation in loop risks OOM — preallocate or use memory pool\nUser Pointer Handling\ncopy_from_user returns bytes NOT copied — 0 means success, not failure\nNever use %s with user pointer in printk — kernel crash or info leak\nUser memory can change during syscall — copy to kernel buffer, validate the copy\n__user annotation is documentation — doesn't enforce anything, you must use copy functions\nMemory Ordering\nREAD_ONCE/WRITE_ONCE for lockless shared data — prevents compiler from caching/reordering\nSpinlock release has implicit barrier — but check-then-act patterns still need care\nsmp_wmb() before publishing pointer — ensures data visible before pointer is\nModule Error Paths\nInit fails midway — must undo everything already done\nReverse order cleanup — unregister in opposite order of register\ngoto err_* pattern standard — cleaner than nested ifs\nCheck what's actually initialized — don't free/unregister what wasn't set up\nLocking Mistakes\nSame lock acquired twice = deadlock — even in different functions\nInconsistent lock ordering — document order, acquire in same sequence everywhere\nmutex_trylock returns 1 on success — opposite of pthread_mutex_trylock\nReader-writer locks rarely worth it — contention overhead usually exceeds benefit"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/kernel",
    "publisherUrl": "https://clawhub.ai/ivangdavila/kernel",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/kernel",
    "downloadUrl": "https://openagent3.xyz/downloads/kernel",
    "agentUrl": "https://openagent3.xyz/skills/kernel/agent",
    "manifestUrl": "https://openagent3.xyz/skills/kernel/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/kernel/agent.md"
  }
}