{
  "schemaVersion": "1.0",
  "item": {
    "slug": "influxdb",
    "name": "InfluxDB",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/ivangdavila/influxdb",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/influxdb",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/influxdb",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=influxdb",
    "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-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/influxdb"
    },
    "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/influxdb",
    "agentPageUrl": "https://openagent3.xyz/skills/influxdb/agent",
    "manifestUrl": "https://openagent3.xyz/skills/influxdb/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/influxdb/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": "Version Differences",
        "body": "InfluxDB 2.x uses Flux query language, 1.x uses InfluxQL—syntax completely different\n2.x: buckets, organizations, tokens; 1.x: databases, retention policies, users\nDon't mix documentation—check version before copying queries"
      },
      {
        "title": "Tags vs Fields (Critical)",
        "body": "Tags are indexed, fields are not—filter on tags, aggregate on fields\nTag values must be strings—numbers as tags work but waste index space\nFields support numbers, strings, booleans—store metrics as fields\nWrong choice kills query performance—can't change after data written"
      },
      {
        "title": "Cardinality Trap",
        "body": "High-cardinality tags destroy performance—unique user IDs as tags = disaster\nCardinality = unique combinations of tag values—grows multiplicatively\nCheck with SHOW CARDINALITY (1.x) or influx bucket inspect (2.x)\nRule of thumb: <100K series per measurement; millions = problems"
      },
      {
        "title": "Line Protocol",
        "body": "Format: measurement,tag1=v1,tag2=v2 field1=1,field2=\"str\" timestamp\nNo spaces around = in tags—space separates tags from fields\nString fields need quotes, tag values don't—field=\"text\" vs tag=text\nTimestamps in nanoseconds by default—specify precision to avoid mistakes"
      },
      {
        "title": "Timestamps",
        "body": "Default precision is nanoseconds—sending seconds without precision flag = year 2000 data\nSpecify on write: precision=s for seconds, precision=ms for milliseconds\nMissing timestamp uses server time—usually fine for real-time ingestion\nTimestamps are UTC—client timezone doesn't matter"
      },
      {
        "title": "Retention and Downsampling",
        "body": "Set retention policy/bucket duration—data older than retention auto-deleted\nRaw data at 10s intervals for 7 days, downsample to 1min for 30 days, 1h for 1 year\n2.x: Tasks for downsampling; 1.x: Continuous Queries\nWithout downsampling, storage grows forever and queries slow down"
      },
      {
        "title": "Flux Query Patterns (2.x)",
        "body": "Always start with from(bucket:) then |> range(start:)—range is required\n|> filter(fn: (r) => r._measurement == \"cpu\") for filtering\n|> aggregateWindow(every: 1h, fn: mean) for time-based aggregation\nChain transforms with |> pipe operator—order matters for performance"
      },
      {
        "title": "InfluxQL Patterns (1.x)",
        "body": "SELECT mean(\"value\") FROM \"measurement\" WHERE time > now() - 1h GROUP BY time(5m)\nDouble quotes for identifiers, single quotes for string literals\nGROUP BY time() for time-based aggregation—required for most dashboards\nFILL(none) to skip empty intervals, FILL(previous) to carry forward"
      },
      {
        "title": "Schema Design",
        "body": "Measurement name = table name—one per metric type (cpu, memory, requests)\nTag for dimensions you filter/group by—host, region, service\nField for values you aggregate—usage_percent, count, latency_ms\nAvoid encoding data in measurement names—cpu.host1 wrong, cpu + host=host1 right"
      },
      {
        "title": "Write Performance",
        "body": "Batch writes—individual points have HTTP overhead\nTelegraf for production ingestion—handles batching, buffering, retry\nWrite to localhost if possible—network latency adds up at high throughput\nasync writes in client libraries—don't block on each write"
      },
      {
        "title": "Query Performance",
        "body": "Always include time range—unbounded queries scan everything\nFilter on tags before fields—tags use index, fields scan data\nLimit results with LIMIT or |> limit()—dashboard doesn't need 1M points\nUse GROUP BY / aggregateWindow to reduce data before returning"
      },
      {
        "title": "Common Errors",
        "body": "\"partial write: field type conflict\"—same field with different types; fix at source\n\"max-values-per-tag limit exceeded\"—cardinality too high; redesign schema\n\"database not found\"—2.x uses buckets, not databases; check API version\nQuery timeout—add narrower time range or aggregate more aggressively"
      }
    ],
    "body": "Version Differences\nInfluxDB 2.x uses Flux query language, 1.x uses InfluxQL—syntax completely different\n2.x: buckets, organizations, tokens; 1.x: databases, retention policies, users\nDon't mix documentation—check version before copying queries\nTags vs Fields (Critical)\nTags are indexed, fields are not—filter on tags, aggregate on fields\nTag values must be strings—numbers as tags work but waste index space\nFields support numbers, strings, booleans—store metrics as fields\nWrong choice kills query performance—can't change after data written\nCardinality Trap\nHigh-cardinality tags destroy performance—unique user IDs as tags = disaster\nCardinality = unique combinations of tag values—grows multiplicatively\nCheck with SHOW CARDINALITY (1.x) or influx bucket inspect (2.x)\nRule of thumb: <100K series per measurement; millions = problems\nLine Protocol\nFormat: measurement,tag1=v1,tag2=v2 field1=1,field2=\"str\" timestamp\nNo spaces around = in tags—space separates tags from fields\nString fields need quotes, tag values don't—field=\"text\" vs tag=text\nTimestamps in nanoseconds by default—specify precision to avoid mistakes\nTimestamps\nDefault precision is nanoseconds—sending seconds without precision flag = year 2000 data\nSpecify on write: precision=s for seconds, precision=ms for milliseconds\nMissing timestamp uses server time—usually fine for real-time ingestion\nTimestamps are UTC—client timezone doesn't matter\nRetention and Downsampling\nSet retention policy/bucket duration—data older than retention auto-deleted\nRaw data at 10s intervals for 7 days, downsample to 1min for 30 days, 1h for 1 year\n2.x: Tasks for downsampling; 1.x: Continuous Queries\nWithout downsampling, storage grows forever and queries slow down\nFlux Query Patterns (2.x)\nAlways start with from(bucket:) then |> range(start:)—range is required\n|> filter(fn: (r) => r._measurement == \"cpu\") for filtering\n|> aggregateWindow(every: 1h, fn: mean) for time-based aggregation\nChain transforms with |> pipe operator—order matters for performance\nInfluxQL Patterns (1.x)\nSELECT mean(\"value\") FROM \"measurement\" WHERE time > now() - 1h GROUP BY time(5m)\nDouble quotes for identifiers, single quotes for string literals\nGROUP BY time() for time-based aggregation—required for most dashboards\nFILL(none) to skip empty intervals, FILL(previous) to carry forward\nSchema Design\nMeasurement name = table name—one per metric type (cpu, memory, requests)\nTag for dimensions you filter/group by—host, region, service\nField for values you aggregate—usage_percent, count, latency_ms\nAvoid encoding data in measurement names—cpu.host1 wrong, cpu + host=host1 right\nWrite Performance\nBatch writes—individual points have HTTP overhead\nTelegraf for production ingestion—handles batching, buffering, retry\nWrite to localhost if possible—network latency adds up at high throughput\nasync writes in client libraries—don't block on each write\nQuery Performance\nAlways include time range—unbounded queries scan everything\nFilter on tags before fields—tags use index, fields scan data\nLimit results with LIMIT or |> limit()—dashboard doesn't need 1M points\nUse GROUP BY / aggregateWindow to reduce data before returning\nCommon Errors\n\"partial write: field type conflict\"—same field with different types; fix at source\n\"max-values-per-tag limit exceeded\"—cardinality too high; redesign schema\n\"database not found\"—2.x uses buckets, not databases; check API version\nQuery timeout—add narrower time range or aggregate more aggressively"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/influxdb",
    "publisherUrl": "https://clawhub.ai/ivangdavila/influxdb",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/influxdb",
    "downloadUrl": "https://openagent3.xyz/downloads/influxdb",
    "agentUrl": "https://openagent3.xyz/skills/influxdb/agent",
    "manifestUrl": "https://openagent3.xyz/skills/influxdb/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/influxdb/agent.md"
  }
}