{
  "schemaVersion": "1.0",
  "item": {
    "slug": "ironclaw-pipeline-analytics",
    "name": "Ironclaw Pipeline Analytics",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/aspenas/ironclaw-pipeline-analytics",
    "canonicalUrl": "https://clawhub.ai/aspenas/ironclaw-pipeline-analytics",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/ironclaw-pipeline-analytics",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=ironclaw-pipeline-analytics",
    "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/ironclaw-pipeline-analytics"
    },
    "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/ironclaw-pipeline-analytics",
    "agentPageUrl": "https://openagent3.xyz/skills/ironclaw-pipeline-analytics/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ironclaw-pipeline-analytics/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ironclaw-pipeline-analytics/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": "Pipeline Analytics — NL → SQL → Interactive Charts",
        "body": "Transform natural language questions into DuckDB queries and render results as interactive Recharts dashboards inline in chat."
      },
      {
        "title": "Workflow",
        "body": "User asks question in plain English\n→ Translate to DuckDB SQL against workspace pivot views (v_*)\n→ Execute query\n→ Format results as report-json\n→ Render as interactive Recharts components"
      },
      {
        "title": "Discovery — What objects exist?",
        "body": "-- List all objects and their entry counts\nSELECT o.name, o.display_name, COUNT(e.id) as entries\nFROM objects o\nLEFT JOIN entries e ON e.object_id = o.id\nGROUP BY o.name, o.display_name\nORDER BY entries DESC;\n\n-- List fields for an object\nSELECT f.name, f.field_type, f.display_name\nFROM fields f\nJOIN objects o ON f.object_id = o.id\nWHERE o.name = 'leads'\nORDER BY f.position;\n\n-- Available pivot views\nSELECT table_name FROM information_schema.tables\nWHERE table_name LIKE 'v_%';"
      },
      {
        "title": "Common Analytics Queries",
        "body": "Pipeline Funnel\n\nSELECT \"Status\", COUNT(*) as count\nFROM v_leads\nGROUP BY \"Status\"\nORDER BY CASE \"Status\"\n  WHEN 'New' THEN 1\n  WHEN 'Contacted' THEN 2\n  WHEN 'Qualified' THEN 3\n  WHEN 'Demo Scheduled' THEN 4\n  WHEN 'Proposal' THEN 5\n  WHEN 'Closed Won' THEN 6\n  WHEN 'Closed Lost' THEN 7\n  ELSE 99\nEND;\n\nOutreach Activity Over Time\n\nSELECT DATE_TRUNC('week', \"Last Outreach\"::DATE) as week,\n       \"Outreach Channel\",\n       COUNT(*) as messages_sent\nFROM v_leads\nWHERE \"Last Outreach\" IS NOT NULL\nGROUP BY week, \"Outreach Channel\"\nORDER BY week;\n\nConversion Rates by Source\n\nSELECT \"Source\",\n       COUNT(*) as total,\n       COUNT(*) FILTER (WHERE \"Status\" = 'Qualified') as qualified,\n       COUNT(*) FILTER (WHERE \"Status\" IN ('Closed Won', 'Converted')) as converted,\n       ROUND(100.0 * COUNT(*) FILTER (WHERE \"Status\" = 'Qualified') / COUNT(*), 1) as qual_rate,\n       ROUND(100.0 * COUNT(*) FILTER (WHERE \"Status\" IN ('Closed Won', 'Converted')) / COUNT(*), 1) as conv_rate\nFROM v_leads\nGROUP BY \"Source\"\nORDER BY total DESC;\n\nReply Rate Analysis\n\nSELECT \"Outreach Channel\",\n       COUNT(*) as sent,\n       COUNT(*) FILTER (WHERE \"Reply Received\" = true) as replied,\n       ROUND(100.0 * COUNT(*) FILTER (WHERE \"Reply Received\" = true) / COUNT(*), 1) as reply_rate\nFROM v_leads\nWHERE \"Outreach Status\" IS NOT NULL\nGROUP BY \"Outreach Channel\";\n\nTime-to-Convert\n\nSELECT \"Source\",\n       AVG(DATEDIFF('day', created_at, \"Converted At\"::DATE)) as avg_days_to_convert,\n       MEDIAN(DATEDIFF('day', created_at, \"Converted At\"::DATE)) as median_days\nFROM v_leads\nWHERE \"Status\" = 'Converted' AND \"Converted At\" IS NOT NULL\nGROUP BY \"Source\";"
      },
      {
        "title": "Report-JSON Format",
        "body": "Generate Recharts-compatible report cards:\n\n{\n  \"type\": \"report\",\n  \"title\": \"Pipeline Analytics — February 2026\",\n  \"generated_at\": \"2026-02-17T14:30:00Z\",\n  \"panels\": [\n    {\n      \"title\": \"Pipeline Funnel\",\n      \"type\": \"funnel\",\n      \"data\": [\n        {\"name\": \"New Leads\", \"value\": 200},\n        {\"name\": \"Contacted\", \"value\": 145},\n        {\"name\": \"Qualified\", \"value\": 67},\n        {\"name\": \"Demo Scheduled\", \"value\": 31},\n        {\"name\": \"Closed Won\", \"value\": 13}\n      ]\n    },\n    {\n      \"title\": \"Outreach Activity\",\n      \"type\": \"area\",\n      \"xKey\": \"week\",\n      \"series\": [\n        {\"key\": \"linkedin\", \"name\": \"LinkedIn\", \"color\": \"#0A66C2\"},\n        {\"key\": \"email\", \"name\": \"Email\", \"color\": \"#EA4335\"}\n      ],\n      \"data\": [\n        {\"week\": \"Feb 3\", \"linkedin\": 25, \"email\": 40},\n        {\"week\": \"Feb 10\", \"linkedin\": 30, \"email\": 35}\n      ]\n    },\n    {\n      \"title\": \"Lead Source Breakdown\",\n      \"type\": \"donut\",\n      \"data\": [\n        {\"name\": \"LinkedIn Scrape\", \"value\": 95, \"color\": \"#0A66C2\"},\n        {\"name\": \"YC Directory\", \"value\": 45, \"color\": \"#FF6600\"},\n        {\"name\": \"Referral\", \"value\": 30, \"color\": \"#10B981\"},\n        {\"name\": \"Inbound\", \"value\": 20, \"color\": \"#8B5CF6\"}\n      ]\n    },\n    {\n      \"title\": \"Reply Rates by Channel\",\n      \"type\": \"bar\",\n      \"xKey\": \"channel\",\n      \"series\": [{\"key\": \"rate\", \"name\": \"Reply Rate %\", \"color\": \"#3B82F6\"}],\n      \"data\": [\n        {\"channel\": \"LinkedIn\", \"rate\": 32},\n        {\"channel\": \"Email\", \"rate\": 18},\n        {\"channel\": \"Multi-Channel\", \"rate\": 41}\n      ]\n    }\n  ]\n}"
      },
      {
        "title": "Chart Types Available",
        "body": "TypeUse CaseRecharts ComponentbarComparisons, categoriesBarChartlineTrends over timeLineChartareaVolume over timeAreaChartpieDistribution (single level)PieChartdonutDistribution (with center metric)PieChart (innerRadius)funnelStage progressionFunnelChartscatterCorrelation (2 variables)ScatterChartradarMulti-dimension comparisonRadarChart"
      },
      {
        "title": "1. Pipeline Overview",
        "body": "Funnel: Lead → Contacted → Qualified → Demo → Closed\nDonut: Lead source breakdown\nNumber cards: Total leads, conversion rate, avg deal size"
      },
      {
        "title": "2. Outreach Performance",
        "body": "Area: Messages sent over time (by channel)\nBar: Reply rates by channel\nLine: Conversion trend week-over-week\nNumber cards: Total sent, reply rate, meetings booked"
      },
      {
        "title": "3. Rep Performance (if multi-user)",
        "body": "Bar: Leads contacted per rep\nBar: Reply rate per rep\nBar: Conversions per rep\nScatter: Activity volume vs. conversion rate"
      },
      {
        "title": "4. Cohort Analysis",
        "body": "Heatmap-style: Conversion rate by signup week × time elapsed\nLine: Retention/engagement curves by cohort"
      },
      {
        "title": "Natural Language Mapping",
        "body": "User SaysSQL PatternChart Type\"show me pipeline\"GROUP BY Statusfunnel\"outreach stats\"COUNT by channel + statusbar + area\"how are we converting\"conversion ratesfunnel + line\"compare sources\"GROUP BY Sourcebar\"weekly trend\"DATE_TRUNC + GROUP BYline / area\"who replied\"FILTER Reply Receivedtable\"best performing\"ORDER BY conversion DESCbar\"lead breakdown\"GROUP BY any dimensionpie / donut"
      },
      {
        "title": "Saving Reports",
        "body": "Reports can be saved as .report.json files in the workspace:\n\n~/.openclaw/workspace/reports/\n  pipeline-overview.report.json\n  weekly-outreach.report.json\n  monthly-review.report.json\n\nThese render as live dashboards in the Ironclaw web UI when opened."
      },
      {
        "title": "Cron Integration",
        "body": "Auto-generate weekly/monthly reports:\n\n{\n  \"name\": \"Weekly Pipeline Report\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 9 * * MON\", \"tz\": \"America/Denver\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Generate weekly pipeline analytics report. Query DuckDB for this week's data. Create report-json with: funnel, outreach activity (area), reply rates (bar), source breakdown (donut). Save to workspace/reports/ and announce summary.\"\n  }\n}"
      }
    ],
    "body": "Pipeline Analytics — NL → SQL → Interactive Charts\n\nTransform natural language questions into DuckDB queries and render results as interactive Recharts dashboards inline in chat.\n\nWorkflow\nUser asks question in plain English\n→ Translate to DuckDB SQL against workspace pivot views (v_*)\n→ Execute query\n→ Format results as report-json\n→ Render as interactive Recharts components\n\nDuckDB Query Patterns\nDiscovery — What objects exist?\n-- List all objects and their entry counts\nSELECT o.name, o.display_name, COUNT(e.id) as entries\nFROM objects o\nLEFT JOIN entries e ON e.object_id = o.id\nGROUP BY o.name, o.display_name\nORDER BY entries DESC;\n\n-- List fields for an object\nSELECT f.name, f.field_type, f.display_name\nFROM fields f\nJOIN objects o ON f.object_id = o.id\nWHERE o.name = 'leads'\nORDER BY f.position;\n\n-- Available pivot views\nSELECT table_name FROM information_schema.tables\nWHERE table_name LIKE 'v_%';\n\nCommon Analytics Queries\nPipeline Funnel\nSELECT \"Status\", COUNT(*) as count\nFROM v_leads\nGROUP BY \"Status\"\nORDER BY CASE \"Status\"\n  WHEN 'New' THEN 1\n  WHEN 'Contacted' THEN 2\n  WHEN 'Qualified' THEN 3\n  WHEN 'Demo Scheduled' THEN 4\n  WHEN 'Proposal' THEN 5\n  WHEN 'Closed Won' THEN 6\n  WHEN 'Closed Lost' THEN 7\n  ELSE 99\nEND;\n\nOutreach Activity Over Time\nSELECT DATE_TRUNC('week', \"Last Outreach\"::DATE) as week,\n       \"Outreach Channel\",\n       COUNT(*) as messages_sent\nFROM v_leads\nWHERE \"Last Outreach\" IS NOT NULL\nGROUP BY week, \"Outreach Channel\"\nORDER BY week;\n\nConversion Rates by Source\nSELECT \"Source\",\n       COUNT(*) as total,\n       COUNT(*) FILTER (WHERE \"Status\" = 'Qualified') as qualified,\n       COUNT(*) FILTER (WHERE \"Status\" IN ('Closed Won', 'Converted')) as converted,\n       ROUND(100.0 * COUNT(*) FILTER (WHERE \"Status\" = 'Qualified') / COUNT(*), 1) as qual_rate,\n       ROUND(100.0 * COUNT(*) FILTER (WHERE \"Status\" IN ('Closed Won', 'Converted')) / COUNT(*), 1) as conv_rate\nFROM v_leads\nGROUP BY \"Source\"\nORDER BY total DESC;\n\nReply Rate Analysis\nSELECT \"Outreach Channel\",\n       COUNT(*) as sent,\n       COUNT(*) FILTER (WHERE \"Reply Received\" = true) as replied,\n       ROUND(100.0 * COUNT(*) FILTER (WHERE \"Reply Received\" = true) / COUNT(*), 1) as reply_rate\nFROM v_leads\nWHERE \"Outreach Status\" IS NOT NULL\nGROUP BY \"Outreach Channel\";\n\nTime-to-Convert\nSELECT \"Source\",\n       AVG(DATEDIFF('day', created_at, \"Converted At\"::DATE)) as avg_days_to_convert,\n       MEDIAN(DATEDIFF('day', created_at, \"Converted At\"::DATE)) as median_days\nFROM v_leads\nWHERE \"Status\" = 'Converted' AND \"Converted At\" IS NOT NULL\nGROUP BY \"Source\";\n\nReport-JSON Format\n\nGenerate Recharts-compatible report cards:\n\n{\n  \"type\": \"report\",\n  \"title\": \"Pipeline Analytics — February 2026\",\n  \"generated_at\": \"2026-02-17T14:30:00Z\",\n  \"panels\": [\n    {\n      \"title\": \"Pipeline Funnel\",\n      \"type\": \"funnel\",\n      \"data\": [\n        {\"name\": \"New Leads\", \"value\": 200},\n        {\"name\": \"Contacted\", \"value\": 145},\n        {\"name\": \"Qualified\", \"value\": 67},\n        {\"name\": \"Demo Scheduled\", \"value\": 31},\n        {\"name\": \"Closed Won\", \"value\": 13}\n      ]\n    },\n    {\n      \"title\": \"Outreach Activity\",\n      \"type\": \"area\",\n      \"xKey\": \"week\",\n      \"series\": [\n        {\"key\": \"linkedin\", \"name\": \"LinkedIn\", \"color\": \"#0A66C2\"},\n        {\"key\": \"email\", \"name\": \"Email\", \"color\": \"#EA4335\"}\n      ],\n      \"data\": [\n        {\"week\": \"Feb 3\", \"linkedin\": 25, \"email\": 40},\n        {\"week\": \"Feb 10\", \"linkedin\": 30, \"email\": 35}\n      ]\n    },\n    {\n      \"title\": \"Lead Source Breakdown\",\n      \"type\": \"donut\",\n      \"data\": [\n        {\"name\": \"LinkedIn Scrape\", \"value\": 95, \"color\": \"#0A66C2\"},\n        {\"name\": \"YC Directory\", \"value\": 45, \"color\": \"#FF6600\"},\n        {\"name\": \"Referral\", \"value\": 30, \"color\": \"#10B981\"},\n        {\"name\": \"Inbound\", \"value\": 20, \"color\": \"#8B5CF6\"}\n      ]\n    },\n    {\n      \"title\": \"Reply Rates by Channel\",\n      \"type\": \"bar\",\n      \"xKey\": \"channel\",\n      \"series\": [{\"key\": \"rate\", \"name\": \"Reply Rate %\", \"color\": \"#3B82F6\"}],\n      \"data\": [\n        {\"channel\": \"LinkedIn\", \"rate\": 32},\n        {\"channel\": \"Email\", \"rate\": 18},\n        {\"channel\": \"Multi-Channel\", \"rate\": 41}\n      ]\n    }\n  ]\n}\n\nChart Types Available\nType\tUse Case\tRecharts Component\nbar\tComparisons, categories\tBarChart\nline\tTrends over time\tLineChart\narea\tVolume over time\tAreaChart\npie\tDistribution (single level)\tPieChart\ndonut\tDistribution (with center metric)\tPieChart (innerRadius)\nfunnel\tStage progression\tFunnelChart\nscatter\tCorrelation (2 variables)\tScatterChart\nradar\tMulti-dimension comparison\tRadarChart\nPre-Built Report Templates\n1. Pipeline Overview\nFunnel: Lead → Contacted → Qualified → Demo → Closed\nDonut: Lead source breakdown\nNumber cards: Total leads, conversion rate, avg deal size\n2. Outreach Performance\nArea: Messages sent over time (by channel)\nBar: Reply rates by channel\nLine: Conversion trend week-over-week\nNumber cards: Total sent, reply rate, meetings booked\n3. Rep Performance (if multi-user)\nBar: Leads contacted per rep\nBar: Reply rate per rep\nBar: Conversions per rep\nScatter: Activity volume vs. conversion rate\n4. Cohort Analysis\nHeatmap-style: Conversion rate by signup week × time elapsed\nLine: Retention/engagement curves by cohort\nNatural Language Mapping\nUser Says\tSQL Pattern\tChart Type\n\"show me pipeline\"\tGROUP BY Status\tfunnel\n\"outreach stats\"\tCOUNT by channel + status\tbar + area\n\"how are we converting\"\tconversion rates\tfunnel + line\n\"compare sources\"\tGROUP BY Source\tbar\n\"weekly trend\"\tDATE_TRUNC + GROUP BY\tline / area\n\"who replied\"\tFILTER Reply Received\ttable\n\"best performing\"\tORDER BY conversion DESC\tbar\n\"lead breakdown\"\tGROUP BY any dimension\tpie / donut\nSaving Reports\n\nReports can be saved as .report.json files in the workspace:\n\n~/.openclaw/workspace/reports/\n  pipeline-overview.report.json\n  weekly-outreach.report.json\n  monthly-review.report.json\n\n\nThese render as live dashboards in the Ironclaw web UI when opened.\n\nCron Integration\n\nAuto-generate weekly/monthly reports:\n\n{\n  \"name\": \"Weekly Pipeline Report\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 9 * * MON\", \"tz\": \"America/Denver\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"Generate weekly pipeline analytics report. Query DuckDB for this week's data. Create report-json with: funnel, outreach activity (area), reply rates (bar), source breakdown (donut). Save to workspace/reports/ and announce summary.\"\n  }\n}"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/aspenas/ironclaw-pipeline-analytics",
    "publisherUrl": "https://clawhub.ai/aspenas/ironclaw-pipeline-analytics",
    "owner": "aspenas",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/ironclaw-pipeline-analytics",
    "downloadUrl": "https://openagent3.xyz/downloads/ironclaw-pipeline-analytics",
    "agentUrl": "https://openagent3.xyz/skills/ironclaw-pipeline-analytics/agent",
    "manifestUrl": "https://openagent3.xyz/skills/ironclaw-pipeline-analytics/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/ironclaw-pipeline-analytics/agent.md"
  }
}