{
  "schemaVersion": "1.0",
  "item": {
    "slug": "printer",
    "name": "Printer skill",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/DhvanilPatel/printer",
    "canonicalUrl": "https://clawhub.ai/DhvanilPatel/printer",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/printer",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=printer",
    "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",
      "slug": "printer",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T02:24:24.796Z",
      "expiresAt": "2026-05-08T02:24:24.796Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=printer",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=printer",
        "contentDisposition": "attachment; filename=\"printer-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "printer"
      },
      "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/printer"
    },
    "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/printer",
    "agentPageUrl": "https://openagent3.xyz/skills/printer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/printer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/printer/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": "Printer (CUPS)",
        "body": "Control printers on macOS using built-in CUPS commands. No external CLI needed."
      },
      {
        "title": "Discover printers",
        "body": "# Network printers (Bonjour/AirPrint)\ndns-sd -B _ipp._tcp . 2>/dev/null & sleep 3; kill $! 2>/dev/null\n\n# Get printer details (host, port, resource path)\ndns-sd -L \"Printer Name\" _ipp._tcp . 2>/dev/null & sleep 3; kill $! 2>/dev/null\n\n# CUPS-native discovery\nlpstat -e                         # available network destinations\nlpinfo --include-schemes dnssd -v # dnssd backends\n\n# IPP discovery\nippfind --timeout 5"
      },
      {
        "title": "Add a printer (driverless IPP Everywhere)",
        "body": "# Recommended: driverless queue\nlpadmin -p MyPrinter -E -v \"ipp://printer.local:631/ipp/print\" -m everywhere\n\n# Set as default\nlpadmin -d MyPrinter\n\n# Enable SNMP supply reporting (toner levels)\nsudo lpadmin -p MyPrinter -o cupsSNMPSupplies=true"
      },
      {
        "title": "Print files",
        "body": "lp filename.pdf                      # to default printer\nlp -d MyPrinter filename.pdf         # specific printer\nlp -d MyPrinter -n 2 file.pdf        # 2 copies\nlp -d MyPrinter -o sides=two-sided-long-edge file.pdf  # duplex\nlp -d MyPrinter -o media=letter file.pdf\nlp -d MyPrinter -o ColorModel=Gray file.pdf  # grayscale\n\n# Print text directly\necho \"Hello World\" | lp -d MyPrinter"
      },
      {
        "title": "Queue management",
        "body": "# Check status\nlpstat -p MyPrinter        # printer status\nlpstat -o MyPrinter        # queued jobs\nlpstat -t                  # everything\nlpq -P MyPrinter           # BSD-style queue view\n\n# Cancel jobs\ncancel JOB_ID\ncancel -a MyPrinter        # cancel all\n\n# Enable/disable\ncupsenable MyPrinter       # resume printing\ncupsdisable MyPrinter      # pause printer\ncupsaccept MyPrinter       # accept new jobs\ncupsreject MyPrinter       # reject new jobs"
      },
      {
        "title": "Printer options",
        "body": "# List available options for a printer\nlpoptions -p MyPrinter -l\n\n# Set default options (per-user)\nlpoptions -p MyPrinter -o sides=two-sided-long-edge\n\n# Set server-side defaults\nsudo lpadmin -p MyPrinter -o sides-default=two-sided-long-edge"
      },
      {
        "title": "Status and diagnostics",
        "body": "# IPP status query (detailed)\nipptool -t ipp://PRINTER_IP/ipp/print get-printer-attributes.test\n\n# Filter for key info\nipptool -t ipp://PRINTER_IP/ipp/print get-printer-attributes.test \\\n  | grep -iE 'printer-state|marker|supply|media|error'"
      },
      {
        "title": "Wake printer from sleep",
        "body": "# IPP poke (usually wakes the printer)\nipptool -q -T 5 ipp://PRINTER_IP/ipp/print get-printer-attributes.test\n\n# HTTP poke (wakes web UI stack)\ncurl -s -m 5 http://PRINTER_IP/ >/dev/null\n\n# TCP connect test\nnc -zw2 PRINTER_IP 631"
      },
      {
        "title": "Keep-alive (prevent deep sleep)",
        "body": "# Poll every 5 minutes (runs in foreground)\nipptool -q -T 3 -i 300 ipp://PRINTER_IP/ipp/print get-printer-attributes.test\n\nFor persistent keep-alive, create a launchd agent."
      },
      {
        "title": "Toner levels via SNMP",
        "body": "Requires brew install net-snmp:\n\nsnmpwalk -v2c -c public PRINTER_IP 1.3.6.1.2.1.43.11.1.1\n\nNote: SNMP may be disabled on the printer. Check Remote UI settings."
      },
      {
        "title": "Remote UI (web interface)",
        "body": "Most network printers expose a web UI at http://PRINTER_IP/ for:\n\nSleep/timer settings (Settings > Timer Settings > Auto Sleep Time)\nNetwork protocol config (enable/disable IPP, SNMP, raw 9100)\nConsumables status"
      },
      {
        "title": "Troubleshooting",
        "body": "# Printer stuck/disabled? Re-enable it\ncupsenable MyPrinter\n\n# Check device URI\nlpstat -v MyPrinter\n\n# Remove and re-add printer\nlpadmin -x MyPrinter\nlpadmin -p MyPrinter -E -v \"ipp://...\" -m everywhere\n\n# CUPS error log\ntail -f /var/log/cups/error_log"
      },
      {
        "title": "Notes",
        "body": "Prefer ipp:// or ipps:// URIs over raw 9100 or LPD\n-m everywhere auto-configures from printer's IPP capabilities\nOption names vary by printer; use lpoptions -l to discover\nSleep settings are best configured via printer's Remote UI\nAuto-sleep (1 min) keeps services alive - print jobs wake the printer automatically\nIf the printer is completely unresponsive (IPP port closed, HTTP timeout), it's likely in deep sleep or powered off. Message the user to check/wake the printer physically."
      }
    ],
    "body": "Printer (CUPS)\n\nControl printers on macOS using built-in CUPS commands. No external CLI needed.\n\nDiscover printers\n# Network printers (Bonjour/AirPrint)\ndns-sd -B _ipp._tcp . 2>/dev/null & sleep 3; kill $! 2>/dev/null\n\n# Get printer details (host, port, resource path)\ndns-sd -L \"Printer Name\" _ipp._tcp . 2>/dev/null & sleep 3; kill $! 2>/dev/null\n\n# CUPS-native discovery\nlpstat -e                         # available network destinations\nlpinfo --include-schemes dnssd -v # dnssd backends\n\n# IPP discovery\nippfind --timeout 5\n\nAdd a printer (driverless IPP Everywhere)\n# Recommended: driverless queue\nlpadmin -p MyPrinter -E -v \"ipp://printer.local:631/ipp/print\" -m everywhere\n\n# Set as default\nlpadmin -d MyPrinter\n\n# Enable SNMP supply reporting (toner levels)\nsudo lpadmin -p MyPrinter -o cupsSNMPSupplies=true\n\nPrint files\nlp filename.pdf                      # to default printer\nlp -d MyPrinter filename.pdf         # specific printer\nlp -d MyPrinter -n 2 file.pdf        # 2 copies\nlp -d MyPrinter -o sides=two-sided-long-edge file.pdf  # duplex\nlp -d MyPrinter -o media=letter file.pdf\nlp -d MyPrinter -o ColorModel=Gray file.pdf  # grayscale\n\n# Print text directly\necho \"Hello World\" | lp -d MyPrinter\n\nQueue management\n# Check status\nlpstat -p MyPrinter        # printer status\nlpstat -o MyPrinter        # queued jobs\nlpstat -t                  # everything\nlpq -P MyPrinter           # BSD-style queue view\n\n# Cancel jobs\ncancel JOB_ID\ncancel -a MyPrinter        # cancel all\n\n# Enable/disable\ncupsenable MyPrinter       # resume printing\ncupsdisable MyPrinter      # pause printer\ncupsaccept MyPrinter       # accept new jobs\ncupsreject MyPrinter       # reject new jobs\n\nPrinter options\n# List available options for a printer\nlpoptions -p MyPrinter -l\n\n# Set default options (per-user)\nlpoptions -p MyPrinter -o sides=two-sided-long-edge\n\n# Set server-side defaults\nsudo lpadmin -p MyPrinter -o sides-default=two-sided-long-edge\n\nStatus and diagnostics\n# IPP status query (detailed)\nipptool -t ipp://PRINTER_IP/ipp/print get-printer-attributes.test\n\n# Filter for key info\nipptool -t ipp://PRINTER_IP/ipp/print get-printer-attributes.test \\\n  | grep -iE 'printer-state|marker|supply|media|error'\n\nWake printer from sleep\n# IPP poke (usually wakes the printer)\nipptool -q -T 5 ipp://PRINTER_IP/ipp/print get-printer-attributes.test\n\n# HTTP poke (wakes web UI stack)\ncurl -s -m 5 http://PRINTER_IP/ >/dev/null\n\n# TCP connect test\nnc -zw2 PRINTER_IP 631\n\nKeep-alive (prevent deep sleep)\n# Poll every 5 minutes (runs in foreground)\nipptool -q -T 3 -i 300 ipp://PRINTER_IP/ipp/print get-printer-attributes.test\n\n\nFor persistent keep-alive, create a launchd agent.\n\nToner levels via SNMP\n\nRequires brew install net-snmp:\n\nsnmpwalk -v2c -c public PRINTER_IP 1.3.6.1.2.1.43.11.1.1\n\n\nNote: SNMP may be disabled on the printer. Check Remote UI settings.\n\nRemote UI (web interface)\n\nMost network printers expose a web UI at http://PRINTER_IP/ for:\n\nSleep/timer settings (Settings > Timer Settings > Auto Sleep Time)\nNetwork protocol config (enable/disable IPP, SNMP, raw 9100)\nConsumables status\nTroubleshooting\n# Printer stuck/disabled? Re-enable it\ncupsenable MyPrinter\n\n# Check device URI\nlpstat -v MyPrinter\n\n# Remove and re-add printer\nlpadmin -x MyPrinter\nlpadmin -p MyPrinter -E -v \"ipp://...\" -m everywhere\n\n# CUPS error log\ntail -f /var/log/cups/error_log\n\nNotes\nPrefer ipp:// or ipps:// URIs over raw 9100 or LPD\n-m everywhere auto-configures from printer's IPP capabilities\nOption names vary by printer; use lpoptions -l to discover\nSleep settings are best configured via printer's Remote UI\nAuto-sleep (1 min) keeps services alive - print jobs wake the printer automatically\nIf the printer is completely unresponsive (IPP port closed, HTTP timeout), it's likely in deep sleep or powered off. Message the user to check/wake the printer physically."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/DhvanilPatel/printer",
    "publisherUrl": "https://clawhub.ai/DhvanilPatel/printer",
    "owner": "DhvanilPatel",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/printer",
    "downloadUrl": "https://openagent3.xyz/downloads/printer",
    "agentUrl": "https://openagent3.xyz/skills/printer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/printer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/printer/agent.md"
  }
}