{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clscli",
    "name": "Tencent Cloud Log Service",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dbwang0130/clscli",
    "canonicalUrl": "https://clawhub.ai/dbwang0130/clscli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clscli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clscli",
    "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-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/clscli"
    },
    "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/clscli",
    "agentPageUrl": "https://openagent3.xyz/skills/clscli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clscli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clscli/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": "CLS Skill",
        "body": "Query and analyze Tencent Cloud CLS logs."
      },
      {
        "title": "Setup",
        "body": "Install clscli (Homebrew):\nbrew tap dbwang0130/clscli\nbrew install dbwang0130/clscli/clscli\n\n\nGet credentials and region list: https://cloud.tencent.com/document/api/614/56474\nSet environment variables (same as Tencent Cloud API common parameters):\nexport TENCENTCLOUD_SECRET_ID=\"your-secret-id\"\nexport TENCENTCLOUD_SECRET_KEY=\"your-secret-key\"\n\n\nSpecify region via --region (e.g. ap-guangzhou)."
      },
      {
        "title": "Usage",
        "body": "!IMPORTANT: If you do not know the log topic, list topics first."
      },
      {
        "title": "List log topics",
        "body": "List topics in a region to determine which --region and topic ID to use for query/context.\n\nclscli topics --region <region> [--topic-name name] [--logset-name name] [--logset-id id] [--limit 20] [--offset 0]\n\nExamples: --output=json, --output=csv, -o topics.csv\n\nOptionRequiredDescription--regionyesCLS region, e.g. ap-guangzhou--topic-namenoFilter by topic name (fuzzy match)--logset-namenoFilter by logset name (fuzzy match)--logset-idnoFilter by logset ID--limitnoPage size, default 20, max 100--offsetnoPagination offset, default 0--output, -onoOutput: json, csv, or file path\n\nOutput columns: Region, TopicId, TopicName, LogsetId, CreateTime, StorageType."
      },
      {
        "title": "Get log by query",
        "body": "clscli query -q \"[query condition] | [SQL statement]\" --region <region> -t <TopicId> --last 1h\n\nExamples:\n\nTime: --last 1h, --last 30m; or --from/--to (Unix ms)\nMultiple topics: --topics <id1>,<id2> or multiple -t <id>\nAuto pagination and cap: --max 5000 (paginate until 5000 logs or ListOver)\nOutput: --output=json, --output=csv, -o result.json (write to file)\n\nOptionRequiredDescription--regionyesCLS region, e.g. ap-guangzhou-q, --queryyesQuery condition or SQL, e.g. level:ERROR or * | select count(*) as cnt-t, --topicone of -t/--topicsSingle log topic ID--topicsone of -t/--topicsComma-separated topic IDs, max 50--lastone of --last/--from/--toTime range, e.g. 1h, 30m, 24h--from, --toone of --last/--from/--toStart/end time (Unix ms)--limitnoLogs per request, default 100, max 1000--maxnoMax total logs; when non-zero, auto-paginate until reached or ListOver--output, -onoOutput: json, csv, or file path--sortnoSort: asc or desc, default desc\n\nQuery condition syntax\n\nTwo syntaxes are supported:\n\nCQL (CLS Query Language): CLS-specific query syntax for logs, easy to use, recommended.\nLucene: Open-source Lucene syntax; not designed for log search, has more restrictions on special chars, case, wildcards; not recommended.\n\nCQL syntax\n\nSyntaxDescriptionkey:valueKey-value search; logs where field (key) contains value, e.g. level:ERRORvalueFull-text search; logs containing value, e.g. ERRORANDLogical AND, case-insensitive, e.g. level:ERROR AND pid:1234ORLogical OR, case-insensitive, e.g. level:ERROR OR level:WARNING, level:(ERROR OR WARNING)NOTLogical NOT, case-insensitive, e.g. level:ERROR NOT pid:1234, level:ERROR AND NOT pid:1234()Grouping for precedence, e.g. level:(ERROR OR WARNING) AND pid:1234. Note: AND has higher precedence than OR when no parentheses.\"  \"Phrase search; double-quoted string, words and order must match, e.g. name:\"john Smith\". No logical operators inside phrase.'  'Phrase search; single quotes, same as \"\"; use when phrase contains double quotes, e.g. body:'user_name:\"bob\"'*Wildcard; zero or more chars, e.g. host:www.test*.com. No prefix wildcard.>, >=, <, <=, =Range operators for numeric values, e.g. status>400, status:>=400\\Escape; escaped char is literal. Escape space, :, (), >, =, <, \", ', * in values.key:*text: field exists (any value). long/double: field exists and is numeric, e.g. response_time:*key:\"\"text: field exists and is empty. long/double: value is not numeric or field missing, e.g. response_time:\"\"\n\nSQL statement syntax\n\nSyntaxDescriptionSELECTSelect from table; data from current log topic matching query conditionASAlias for column (KEY)GROUP BYWith aggregate functions, group by one or more columns (KEY)ORDER BYSort result set by KEYLIMITLimit rows, default 100, max 1MWHEREFilter raw dataHAVINGFilter after GROUP BY, before ORDER BY; WHERE filters raw dataNested subqueryOne SELECT inside another for multi-step analysisSQL functionsRicher analysis: IP geo, time format, string split/join, JSON extract, math, distinct count, etc."
      },
      {
        "title": "Describe log context",
        "body": "Retrieve log context around a given log.\n\nclscli context <PkgId> <PkgLogId> --region <region> -t <TopicId>\n\nExamples: --output=json, --output=csv, -o context.json (write to file)\n\nOptionRequiredTypeDescriptionExample--regionyesStringCLS regionap-guangzhou-t, --topicyesStringLog topic ID-PkgIdyesStringLog package ID, i.e. SearchLog Results[].PkgId528C1318606EFEB8-1A7PkgLogIdyesIntegerIndex within package, i.e. SearchLog Results[].PkgLogId65536--output, -ono-Output: json, csv, or file path-"
      }
    ],
    "body": "CLS Skill\n\nQuery and analyze Tencent Cloud CLS logs.\n\nSetup\nInstall clscli (Homebrew):\nbrew tap dbwang0130/clscli\nbrew install dbwang0130/clscli/clscli\n\nGet credentials and region list: https://cloud.tencent.com/document/api/614/56474\nSet environment variables (same as Tencent Cloud API common parameters):\nexport TENCENTCLOUD_SECRET_ID=\"your-secret-id\"\nexport TENCENTCLOUD_SECRET_KEY=\"your-secret-key\"\n\nSpecify region via --region (e.g. ap-guangzhou).\nUsage\n\n!IMPORTANT: If you do not know the log topic, list topics first.\n\nList log topics\n\nList topics in a region to determine which --region and topic ID to use for query/context.\n\nclscli topics --region <region> [--topic-name name] [--logset-name name] [--logset-id id] [--limit 20] [--offset 0]\n\n\nExamples: --output=json, --output=csv, -o topics.csv\n\nOption\tRequired\tDescription\n--region\tyes\tCLS region, e.g. ap-guangzhou\n--topic-name\tno\tFilter by topic name (fuzzy match)\n--logset-name\tno\tFilter by logset name (fuzzy match)\n--logset-id\tno\tFilter by logset ID\n--limit\tno\tPage size, default 20, max 100\n--offset\tno\tPagination offset, default 0\n--output, -o\tno\tOutput: json, csv, or file path\n\nOutput columns: Region, TopicId, TopicName, LogsetId, CreateTime, StorageType.\n\nGet log by query\nclscli query -q \"[query condition] | [SQL statement]\" --region <region> -t <TopicId> --last 1h\n\n\nExamples:\n\nTime: --last 1h, --last 30m; or --from/--to (Unix ms)\nMultiple topics: --topics <id1>,<id2> or multiple -t <id>\nAuto pagination and cap: --max 5000 (paginate until 5000 logs or ListOver)\nOutput: --output=json, --output=csv, -o result.json (write to file)\nOption\tRequired\tDescription\n--region\tyes\tCLS region, e.g. ap-guangzhou\n-q, --query\tyes\tQuery condition or SQL, e.g. level:ERROR or * | select count(*) as cnt\n-t, --topic\tone of -t/--topics\tSingle log topic ID\n--topics\tone of -t/--topics\tComma-separated topic IDs, max 50\n--last\tone of --last/--from/--to\tTime range, e.g. 1h, 30m, 24h\n--from, --to\tone of --last/--from/--to\tStart/end time (Unix ms)\n--limit\tno\tLogs per request, default 100, max 1000\n--max\tno\tMax total logs; when non-zero, auto-paginate until reached or ListOver\n--output, -o\tno\tOutput: json, csv, or file path\n--sort\tno\tSort: asc or desc, default desc\nQuery condition syntax\n\nTwo syntaxes are supported:\n\nCQL (CLS Query Language): CLS-specific query syntax for logs, easy to use, recommended.\nLucene: Open-source Lucene syntax; not designed for log search, has more restrictions on special chars, case, wildcards; not recommended.\nCQL syntax\nSyntax\tDescription\nkey:value\tKey-value search; logs where field (key) contains value, e.g. level:ERROR\nvalue\tFull-text search; logs containing value, e.g. ERROR\nAND\tLogical AND, case-insensitive, e.g. level:ERROR AND pid:1234\nOR\tLogical OR, case-insensitive, e.g. level:ERROR OR level:WARNING, level:(ERROR OR WARNING)\nNOT\tLogical NOT, case-insensitive, e.g. level:ERROR NOT pid:1234, level:ERROR AND NOT pid:1234\n()\tGrouping for precedence, e.g. level:(ERROR OR WARNING) AND pid:1234. Note: AND has higher precedence than OR when no parentheses.\n\" \"\tPhrase search; double-quoted string, words and order must match, e.g. name:\"john Smith\". No logical operators inside phrase.\n' '\tPhrase search; single quotes, same as \"\"; use when phrase contains double quotes, e.g. body:'user_name:\"bob\"'\n*\tWildcard; zero or more chars, e.g. host:www.test*.com. No prefix wildcard.\n>, >=, <, <=, =\tRange operators for numeric values, e.g. status>400, status:>=400\n\\\tEscape; escaped char is literal. Escape space, :, (), >, =, <, \", ', * in values.\nkey:*\ttext: field exists (any value). long/double: field exists and is numeric, e.g. response_time:*\nkey:\"\"\ttext: field exists and is empty. long/double: value is not numeric or field missing, e.g. response_time:\"\"\nSQL statement syntax\nSyntax\tDescription\nSELECT\tSelect from table; data from current log topic matching query condition\nAS\tAlias for column (KEY)\nGROUP BY\tWith aggregate functions, group by one or more columns (KEY)\nORDER BY\tSort result set by KEY\nLIMIT\tLimit rows, default 100, max 1M\nWHERE\tFilter raw data\nHAVING\tFilter after GROUP BY, before ORDER BY; WHERE filters raw data\nNested subquery\tOne SELECT inside another for multi-step analysis\nSQL functions\tRicher analysis: IP geo, time format, string split/join, JSON extract, math, distinct count, etc.\nDescribe log context\n\nRetrieve log context around a given log.\n\nclscli context <PkgId> <PkgLogId> --region <region> -t <TopicId>\n\n\nExamples: --output=json, --output=csv, -o context.json (write to file)\n\nOption\tRequired\tType\tDescription\tExample\n--region\tyes\tString\tCLS region\tap-guangzhou\n-t, --topic\tyes\tString\tLog topic ID\t-\nPkgId\tyes\tString\tLog package ID, i.e. SearchLog Results[].PkgId\t528C1318606EFEB8-1A7\nPkgLogId\tyes\tInteger\tIndex within package, i.e. SearchLog Results[].PkgLogId\t65536\n--output, -o\tno\t-\tOutput: json, csv, or file path\t-"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dbwang0130/clscli",
    "publisherUrl": "https://clawhub.ai/dbwang0130/clscli",
    "owner": "dbwang0130",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clscli",
    "downloadUrl": "https://openagent3.xyz/downloads/clscli",
    "agentUrl": "https://openagent3.xyz/skills/clscli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clscli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clscli/agent.md"
  }
}