{
  "schemaVersion": "1.0",
  "item": {
    "slug": "wps-punchclock",
    "name": "dxh141130",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dxh141130/wps-punchclock",
    "canonicalUrl": "https://clawhub.ai/dxh141130/wps-punchclock",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/wps-punchclock",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=wps-punchclock",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "references/PUNCHCLOCK_RUNBOOK.md",
      "scripts/setup.mjs",
      "scripts/punchclock.mjs",
      "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/wps-punchclock"
    },
    "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/wps-punchclock",
    "agentPageUrl": "https://openagent3.xyz/skills/wps-punchclock/agent",
    "manifestUrl": "https://openagent3.xyz/skills/wps-punchclock/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/wps-punchclock/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": "WPS Time / NetTime Punchclock",
        "body": "Run the bundled Playwright script to log into WPS Time NetTime using macOS Keychain credentials, perform the requested punch action (or status check), take a screenshot, and report results."
      },
      {
        "title": "Inputs → actions",
        "body": "Map user intent to the script --action:"
      },
      {
        "title": "Setup / credentials",
        "body": "setup punchclock / configure punchclock / set up time clock → run setup flow"
      },
      {
        "title": "Punch actions",
        "body": "clock in → clock-in\nclock out → clock-out\nstart break → start-break\nend break → end-break (implemented as Clock In (end break) in script)\nstart lunch → start-lunch\nend lunch → end-lunch (implemented as Clock In (end lunch) in script)\nstatus / check status → status"
      },
      {
        "title": "Option A (recommended): local terminal setup (password never enters chat logs)",
        "body": "Run the interactive setup script to store credentials in macOS Keychain:\n\ncd {baseDir}/scripts\nnode ./setup.mjs\n\nThis stores credentials locally under Keychain services:\n\nwpstime-punchclock.company (secret = company/common id)\nwpstime-punchclock (account = username, secret = password)"
      },
      {
        "title": "Option B: chat wizard setup (includes password; higher risk)",
        "body": "Only use if the user explicitly asks for chat-based setup and accepts that the password will appear in chat history/logs.\n\nWorkflow:\n\nWarn clearly:\n\nthe password will be sent via chat and may be stored by the chat platform + gateway logs.\nrecommend Option A instead.\n\n\nIf they still confirm, collect 3 fields in separate turns:\n\ncompanyId\nusername\npassword\n\n\nStore into macOS Keychain on the SAME machine running the gateway using security add-generic-password -U:\n\nsecurity add-generic-password -U -s \"wpstime-punchclock.company\" -a \"company\" -w \"<companyId>\"\nsecurity add-generic-password -U -s \"wpstime-punchclock\" -a \"<username>\" -w \"<password>\"\n\nNever echo the password back. After storing, run status to verify login works."
      },
      {
        "title": "Workflow",
        "body": "Run the punch script (headless by default):\n\nnode {baseDir}/scripts/punchclock.mjs --action <action>\n\nOptional flags:\n\n--headless 0 for debugging\n--outDir <path> to control screenshot output\n\nParse stdout JSON.\n\nOn success: read performed, screenshotPath, and (optionally) pull key fields from snippet.\nOn failure: report error and do not claim the punch succeeded.\n\nReply to the requesting channel with:\n\none-line confirmation (what was performed)\neffective status/time if present (best-effort)\nattach the screenshot at screenshotPath\n\nIf the user asks to clock in/out but they may already be in that state, prefer running status first or immediately after to confirm and avoid double-punch confusion."
      },
      {
        "title": "Credentials (macOS Keychain)",
        "body": "Do not store secrets in files or prompts. Use Keychain.\n\nPreferred services (used by setup.mjs):\n\nService wpstime-punchclock.company → secret = company/common id\nService wpstime-punchclock → account = username, secret = password\n\nBackward-compat (older OpenClaw setups):\n\nopenclaw.wpstime.company\nopenclaw.wpstime\n\nIf missing, the punch script throws an error. When that happens, guide the user to run:\n\ncd {baseDir}/scripts\nnode ./setup.mjs\n\nThen retry the requested action."
      },
      {
        "title": "Reference",
        "body": "If you need the longer operational runbook, read:\n\nreferences/PUNCHCLOCK_RUNBOOK.md"
      }
    ],
    "body": "WPS Time / NetTime Punchclock\n\nRun the bundled Playwright script to log into WPS Time NetTime using macOS Keychain credentials, perform the requested punch action (or status check), take a screenshot, and report results.\n\nInputs → actions\n\nMap user intent to the script --action:\n\nSetup / credentials\nsetup punchclock / configure punchclock / set up time clock → run setup flow\nPunch actions\nclock in → clock-in\nclock out → clock-out\nstart break → start-break\nend break → end-break (implemented as Clock In (end break) in script)\nstart lunch → start-lunch\nend lunch → end-lunch (implemented as Clock In (end lunch) in script)\nstatus / check status → status\nFirst-time setup (per machine / per user)\nOption A (recommended): local terminal setup (password never enters chat logs)\n\nRun the interactive setup script to store credentials in macOS Keychain:\n\ncd {baseDir}/scripts\nnode ./setup.mjs\n\n\nThis stores credentials locally under Keychain services:\n\nwpstime-punchclock.company (secret = company/common id)\nwpstime-punchclock (account = username, secret = password)\nOption B: chat wizard setup (includes password; higher risk)\n\nOnly use if the user explicitly asks for chat-based setup and accepts that the password will appear in chat history/logs.\n\nWorkflow:\n\nWarn clearly:\nthe password will be sent via chat and may be stored by the chat platform + gateway logs.\nrecommend Option A instead.\nIf they still confirm, collect 3 fields in separate turns:\ncompanyId\nusername\npassword\nStore into macOS Keychain on the SAME machine running the gateway using security add-generic-password -U:\nsecurity add-generic-password -U -s \"wpstime-punchclock.company\" -a \"company\" -w \"<companyId>\"\nsecurity add-generic-password -U -s \"wpstime-punchclock\" -a \"<username>\" -w \"<password>\"\n\nNever echo the password back. After storing, run status to verify login works.\nWorkflow\nRun the punch script (headless by default):\nnode {baseDir}/scripts/punchclock.mjs --action <action>\n\n\nOptional flags:\n\n--headless 0 for debugging\n--outDir <path> to control screenshot output\nParse stdout JSON.\nOn success: read performed, screenshotPath, and (optionally) pull key fields from snippet.\nOn failure: report error and do not claim the punch succeeded.\nReply to the requesting channel with:\none-line confirmation (what was performed)\neffective status/time if present (best-effort)\nattach the screenshot at screenshotPath\nIf the user asks to clock in/out but they may already be in that state, prefer running status first or immediately after to confirm and avoid double-punch confusion.\nCredentials (macOS Keychain)\n\nDo not store secrets in files or prompts. Use Keychain.\n\nPreferred services (used by setup.mjs):\n\nService wpstime-punchclock.company → secret = company/common id\nService wpstime-punchclock → account = username, secret = password\n\nBackward-compat (older OpenClaw setups):\n\nopenclaw.wpstime.company\nopenclaw.wpstime\n\nIf missing, the punch script throws an error. When that happens, guide the user to run:\n\ncd {baseDir}/scripts\nnode ./setup.mjs\n\n\nThen retry the requested action.\n\nReference\n\nIf you need the longer operational runbook, read:\n\nreferences/PUNCHCLOCK_RUNBOOK.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dxh141130/wps-punchclock",
    "publisherUrl": "https://clawhub.ai/dxh141130/wps-punchclock",
    "owner": "dxh141130",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/wps-punchclock",
    "downloadUrl": "https://openagent3.xyz/downloads/wps-punchclock",
    "agentUrl": "https://openagent3.xyz/skills/wps-punchclock/agent",
    "manifestUrl": "https://openagent3.xyz/skills/wps-punchclock/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/wps-punchclock/agent.md"
  }
}