{
  "schemaVersion": "1.0",
  "item": {
    "slug": "otta-cli",
    "name": "otta-cli",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/mekedron/otta-cli",
    "canonicalUrl": "https://clawhub.ai/mekedron/otta-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/otta-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=otta-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "agents/openai.yaml",
      "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/otta-cli"
    },
    "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/otta-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/otta-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/otta-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/otta-cli/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": "Otta CLI",
        "body": "Use this skill to execute Otta time-tracking tasks end-to-end with repeatable CLI commands.\n\nMain repository: https://github.com/mekedron/otta-cli"
      },
      {
        "title": "Quick Start",
        "body": "Use the otta binary directly.\n\n\nVerify command surface and storage paths.\n\notta --help\notta config path\notta config cache-path\n\nAuthenticate and hydrate cache.\n\notta auth login --username \"$OTTA_CLI_USERNAME\" --password \"$OTTA_CLI_PASSWORD\" --format json\notta status --format json\n\nstatus updates cached user metadata (for user and worktimegroup fallbacks used by worktimes/holidays/calendar commands).\nFor non-interactive automation, prefer --password-stdin or secret env handling to reduce shell history exposure."
      },
      {
        "title": "Command Recipes",
        "body": "Use explicit dates/times in YYYY-MM-DD and HH:MM formats.\n\nList worktimes:\n\notta worktimes list --date 2026-02-20 --format json\n\nAdd worktime:\n\notta worktimes add \\\n  --date 2026-02-20 \\\n  --start 09:00 \\\n  --end 17:00 \\\n  --pause 30 \\\n  --project <project-id> \\\n  --worktype <worktype-id> \\\n  --description \"Example task description\" \\\n  --format json\n\n--user is optional if OTTA_CLI_USER_ID or cached user ID exists.\n\nUpdate worktime:\n\notta worktimes update --id <worktime-id> --start 10:00 --end 18:00 --format json\n\nSend at least one changed field with --id.\n\nDelete worktime:\n\notta worktimes delete --id <worktime-id> --format json\n\nFetch holidays/workday calendar:\n\notta holidays \\\n  --from 2026-02-20 \\\n  --to 2026-02-29 \\\n  --worktimegroup <worktimegroup-id> \\\n  --format json\n\n--worktimegroup is optional if OTTA_CLI_WORKTIMEGROUP_ID or cached value exists.\n\nBrowse absences:\n\notta absence browse \\\n  --from 2026-02-01 \\\n  --to 2026-02-28 \\\n  --format json\n\nFetch current cumulative saldo:\n\notta saldo --format json\n\nGenerate combined calendar overview:\n\notta calendar overview \\\n  --from 2026-02-01 \\\n  --to 2026-02-28 \\\n  --format json\n\nGenerate detailed calendar day-by-day report:\n\notta calendar detailed \\\n  --from 2026-02-01 \\\n  --to 2026-02-28 \\\n  --format json\n\nUse alternate duration units when totals are minute-based:\n\notta calendar detailed --from 2026-02-01 --to 2026-02-28 --format json --duration-format hours\notta worktimes browse --from 2026-02-01 --to 2026-02-28 --format json --duration-format days\n\n--duration-format values: minutes (default), hours, days, hhmm\nday conversion is fixed at 1 day = 24h = 1440 minutes\n\nGenerate absence comment text:\n\notta absence comment \\\n  --type sick \\\n  --from 2026-02-20 \\\n  --to 2026-02-20 \\\n  --details \"Flu symptoms\" \\\n  --format json"
      },
      {
        "title": "Environment Variables",
        "body": "Use these variables when running in CI/non-interactive environments:\n\nOTTA_CLI_CONFIG_PATH\nOTTA_CLI_CACHE_PATH\nOTTA_CLI_API_BASE_URL\nOTTA_CLI_CLIENT_ID\nOTTA_CLI_USERNAME\nOTTA_CLI_PASSWORD\nOTTA_CLI_ACCESS_TOKEN\nOTTA_CLI_TOKEN_TYPE\nOTTA_CLI_REFRESH_TOKEN\nOTTA_CLI_TOKEN_SCOPE\nOTTA_CLI_USER_ID\nOTTA_CLI_WORKTIMEGROUP_ID"
      },
      {
        "title": "Agent Operating Rules",
        "body": "Prefer --format json for all data-producing commands and parse response fields instead of scraping text output.\nworktimes list/browse/report are worktime-only and never include absences; do not infer absences from empty worktime rows.\nFor user schedule checks/log interpretation, prefer calendar detailed --format json first; use calendar overview as lighter fallback.\nUse --duration-format when users request non-minute output; keep raw minute values for auditability.\nRun status --format json before operations that rely on cached user/worktimegroup metadata.\nValidate dates/times before command execution (YYYY-MM-DD, HH:MM).\nRun worktimes list before update or delete when IDs are not explicitly known.\nReturn exact command, exit code, and concise stderr message when failures happen.\nNever print raw credentials or tokens in summaries."
      },
      {
        "title": "Failure Recovery",
        "body": "no access token configured (run \\otta auth login`)`\n\nRun auth login, then rerun status.\n\n\nusername is required (use --username)\n\nPass --username or set OTTA_CLI_USERNAME.\n\n\n--worktimegroup is required (...)\n\nPass --worktimegroup, set OTTA_CLI_WORKTIMEGROUP_ID, or run status to refresh cache.\n\n\n--date must be YYYY-MM-DD, --start must be HH:MM, --to must be greater than or equal to --from\n\nCorrect input format/order, rerun command.\n\n\ndirectory ... is contained in a module that is not one of the workspace modules listed in go.work\n\nBuild/run with GOWORK=off in this repository context."
      }
    ],
    "body": "Otta CLI\n\nUse this skill to execute Otta time-tracking tasks end-to-end with repeatable CLI commands.\n\nMain repository: https://github.com/mekedron/otta-cli\n\nQuick Start\n\nUse the otta binary directly.\n\nVerify command surface and storage paths.\n\notta --help\notta config path\notta config cache-path\n\nAuthenticate and hydrate cache.\notta auth login --username \"$OTTA_CLI_USERNAME\" --password \"$OTTA_CLI_PASSWORD\" --format json\notta status --format json\n\nstatus updates cached user metadata (for user and worktimegroup fallbacks used by worktimes/holidays/calendar commands).\nFor non-interactive automation, prefer --password-stdin or secret env handling to reduce shell history exposure.\nCommand Recipes\n\nUse explicit dates/times in YYYY-MM-DD and HH:MM formats.\n\nList worktimes:\n\notta worktimes list --date 2026-02-20 --format json\n\n\nAdd worktime:\n\notta worktimes add \\\n  --date 2026-02-20 \\\n  --start 09:00 \\\n  --end 17:00 \\\n  --pause 30 \\\n  --project <project-id> \\\n  --worktype <worktype-id> \\\n  --description \"Example task description\" \\\n  --format json\n\n--user is optional if OTTA_CLI_USER_ID or cached user ID exists.\n\nUpdate worktime:\n\notta worktimes update --id <worktime-id> --start 10:00 --end 18:00 --format json\n\nSend at least one changed field with --id.\n\nDelete worktime:\n\notta worktimes delete --id <worktime-id> --format json\n\n\nFetch holidays/workday calendar:\n\notta holidays \\\n  --from 2026-02-20 \\\n  --to 2026-02-29 \\\n  --worktimegroup <worktimegroup-id> \\\n  --format json\n\n--worktimegroup is optional if OTTA_CLI_WORKTIMEGROUP_ID or cached value exists.\n\nBrowse absences:\n\notta absence browse \\\n  --from 2026-02-01 \\\n  --to 2026-02-28 \\\n  --format json\n\n\nFetch current cumulative saldo:\n\notta saldo --format json\n\n\nGenerate combined calendar overview:\n\notta calendar overview \\\n  --from 2026-02-01 \\\n  --to 2026-02-28 \\\n  --format json\n\n\nGenerate detailed calendar day-by-day report:\n\notta calendar detailed \\\n  --from 2026-02-01 \\\n  --to 2026-02-28 \\\n  --format json\n\n\nUse alternate duration units when totals are minute-based:\n\notta calendar detailed --from 2026-02-01 --to 2026-02-28 --format json --duration-format hours\notta worktimes browse --from 2026-02-01 --to 2026-02-28 --format json --duration-format days\n\n--duration-format values: minutes (default), hours, days, hhmm\nday conversion is fixed at 1 day = 24h = 1440 minutes\n\nGenerate absence comment text:\n\notta absence comment \\\n  --type sick \\\n  --from 2026-02-20 \\\n  --to 2026-02-20 \\\n  --details \"Flu symptoms\" \\\n  --format json\n\nEnvironment Variables\n\nUse these variables when running in CI/non-interactive environments:\n\nOTTA_CLI_CONFIG_PATH\nOTTA_CLI_CACHE_PATH\nOTTA_CLI_API_BASE_URL\nOTTA_CLI_CLIENT_ID\nOTTA_CLI_USERNAME\nOTTA_CLI_PASSWORD\nOTTA_CLI_ACCESS_TOKEN\nOTTA_CLI_TOKEN_TYPE\nOTTA_CLI_REFRESH_TOKEN\nOTTA_CLI_TOKEN_SCOPE\nOTTA_CLI_USER_ID\nOTTA_CLI_WORKTIMEGROUP_ID\nAgent Operating Rules\nPrefer --format json for all data-producing commands and parse response fields instead of scraping text output.\nworktimes list/browse/report are worktime-only and never include absences; do not infer absences from empty worktime rows.\nFor user schedule checks/log interpretation, prefer calendar detailed --format json first; use calendar overview as lighter fallback.\nUse --duration-format when users request non-minute output; keep raw minute values for auditability.\nRun status --format json before operations that rely on cached user/worktimegroup metadata.\nValidate dates/times before command execution (YYYY-MM-DD, HH:MM).\nRun worktimes list before update or delete when IDs are not explicitly known.\nReturn exact command, exit code, and concise stderr message when failures happen.\nNever print raw credentials or tokens in summaries.\nFailure Recovery\nno access token configured (run \\otta auth login`)`\nRun auth login, then rerun status.\nusername is required (use --username)\nPass --username or set OTTA_CLI_USERNAME.\n--worktimegroup is required (...)\nPass --worktimegroup, set OTTA_CLI_WORKTIMEGROUP_ID, or run status to refresh cache.\n--date must be YYYY-MM-DD, --start must be HH:MM, --to must be greater than or equal to --from\nCorrect input format/order, rerun command.\ndirectory ... is contained in a module that is not one of the workspace modules listed in go.work\nBuild/run with GOWORK=off in this repository context."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mekedron/otta-cli",
    "publisherUrl": "https://clawhub.ai/mekedron/otta-cli",
    "owner": "mekedron",
    "version": "0.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/otta-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/otta-cli",
    "agentUrl": "https://openagent3.xyz/skills/otta-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/otta-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/otta-cli/agent.md"
  }
}