# Send Linux to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- 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.
## Suggested prompts
### New install

```text
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.
```
### Upgrade existing

```text
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.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "linux",
    "name": "Linux",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/linux",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/linux",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/linux",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=linux",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "linux",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-05T00:38:39.904Z",
      "expiresAt": "2026-05-12T00:38:39.904Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=linux",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=linux",
        "contentDisposition": "attachment; filename=\"linux-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "linux"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/linux"
    },
    "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."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/linux",
    "downloadUrl": "https://openagent3.xyz/downloads/linux",
    "agentUrl": "https://openagent3.xyz/skills/linux/agent",
    "manifestUrl": "https://openagent3.xyz/skills/linux/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/linux/agent.md"
  }
}
```
## Documentation

### Permission Traps

chmod 777 fixes nothing, breaks everything — find the actual owner/group issue
Setuid on scripts is ignored for security — only works on binaries
chown -R follows symlinks outside target directory — use --no-dereference
Default umask 022 makes files world-readable — set 077 for sensitive systems
ACLs override traditional permissions silently — check with getfacl

### Process Gotchas

kill sends SIGTERM by default, not SIGKILL — process can ignore it
nohup doesn't work if process already running — use disown instead
Background job with & still dies on terminal close without disown or nohup
Zombie processes can't be killed — parent must call wait() or be killed
kill -9 skips cleanup handlers — data loss possible, use SIGTERM first

### Filesystem Traps

Deleting open file doesn't free space until process closes it — check lsof +L1
rm -rf /path / with accidental space = disaster — use rm -rf /path/ trailing slash
Inodes exhausted while disk shows space free — many small files problem
Symlink loops cause infinite recursion — find -L follows them
/tmp cleared on reboot — don't store persistent data there

### Disk Space Mysteries

Deleted files held open by processes — lsof +L1 shows them, restart process to free
Reserved blocks (5% default) only for root — tune2fs -m 1 to reduce
Journal eating space — journalctl --vacuum-size=500M
Docker overlay eating space — docker system prune -a
Snapshots consuming space — check LVM, ZFS, or cloud provider snapshots

### Networking

localhost and 127.0.0.1 may resolve differently — check /etc/hosts
Firewall rules flushed on reboot unless saved — iptables-save or use firewalld/ufw persistence
netstat deprecated — use ss instead
Port below 1024 requires root — use setcap for capability instead
TCP TIME_WAIT exhaustion under load — tune net.ipv4.tcp_tw_reuse

### SSH Traps

Wrong permissions on ~/.ssh = silent auth failure — 700 for dir, 600 for keys
Agent forwarding exposes your keys to remote admins — avoid on untrusted servers
Known hosts hash doesn't match after server rebuild — remove old entry with ssh-keygen -R
SSH config Host blocks: first match wins — put specific hosts before wildcards
Connection timeout on idle — add ServerAliveInterval 60 to config

### Systemd

systemctl enable doesn't start service — also need start
restart vs reload: restart drops connections, reload doesn't (if supported)
Journal logs lost on reboot by default — set Storage=persistent in journald.conf
Failed service doesn't retry by default — add Restart=on-failure to unit
Dependency on network: After=network.target isn't enough — use network-online.target

### Cron Pitfalls

Cron has minimal PATH — use absolute paths or set PATH in crontab
Output goes to mail by default — redirect to file or /dev/null
Cron uses system timezone, not user's — set TZ in crontab if needed
Crontab lost if edited incorrectly — crontab -l > backup before editing
@reboot runs on daemon restart too, not just system reboot

### Memory and OOM

OOM killer picks "best" victim, often not the offender — check dmesg for kills
Swap thrashing worse than OOM — monitor with vmstat
Memory usage in free includes cache — "available" is what matters
Process memory in /proc/[pid]/status — VmRSS is actual usage
cgroups limit respected before system OOM — containers die first

### Commands That Lie

df shows filesystem capacity, not physical disk — check underlying device
du doesn't count sparse files correctly — file appears smaller than disk usage
ps aux memory percentage can exceed 100% (shared memory counted multiple times)
uptime load average includes uninterruptible I/O wait — not just CPU
top CPU percentage is per-core — 400% means 4 cores maxed
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: ivangdavila
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-05T00:38:39.904Z
- Expires at: 2026-05-12T00:38:39.904Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/linux)
- [Send to Agent page](https://openagent3.xyz/skills/linux/agent)
- [JSON manifest](https://openagent3.xyz/skills/linux/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/linux/agent.md)
- [Download page](https://openagent3.xyz/downloads/linux)